/* * Apache License * Version 2.0, January 2004 * http://www.apache.org/licenses/ * * Copyright 2013 Aurelian Tutuianu * Copyright 2014 Aurelian Tutuianu * Copyright 2015 Aurelian Tutuianu * Copyright 2016 Aurelian Tutuianu * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package rapaio.io.json; import rapaio.io.json.stream.JsonSpliterator; import rapaio.io.json.tree.JsonValue; import java.io.*; import java.util.*; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.StreamSupport; /** * Created by <a href="mailto:padreati@yahoo.com">Aurelian Tutuianu</a> at 2/20/15. */ public final class Json { public static JsonStream stream(File root, FileFilter ff) { return new JsonStream(Json.stream(root, ff, msg -> { }, Json.allFilter())); } public static JsonStream stream(File root, FileFilter ff, Predicate<String> propFilter) { return new JsonStream(Json.stream(root, ff, msg -> { }, propFilter)); } public static JsonStream stream(File root, FileFilter ff, Consumer<String> ph, Predicate<String> propFilter) { List<File> files = new ArrayList<>(); if (root.isDirectory()) { File[] listFiles = root.listFiles(); if (listFiles == null) { return new JsonStream(Stream.empty()); } files = Arrays.asList(listFiles).stream().filter(ff::accept).collect(Collectors.toList()); } else { files.add(root); } JsonSpliterator spliterator = new JsonSpliterator(files, ph, propFilter); return new JsonStream(StreamSupport.stream(spliterator, spliterator.isParallel())); } public static void write(OutputStream os, JsonValue js) throws IOException { Writer w = new OutputStreamWriter(os); w.append(js.toString()).append('\n'); w.flush(); } public static Predicate<String> allFilter() { return key -> true; } public static Predicate<String> inFilter(String... keys) { final HashSet<String> allow = new HashSet<>(); Collections.addAll(allow, keys); return key -> allow.isEmpty() || allow.contains(key); } }