Java tutorial
/* * Copyright 2015 by Thomas Lottermann * * 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 notaql.engines.csv.datamodel; import notaql.datamodel.*; import org.apache.commons.csv.CSVRecord; import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * Provides the tools to convert to and from CSV */ public class ValueConverter { /** * Generates ObjectValues from a given csv record. * @param result * @return */ public static Value convertToNotaQL(CSVRecord result) { final ObjectValue object = new ObjectValue(); for (Map.Entry<String, String> cell : result.toMap().entrySet()) { object.put(new Step<>(cell.getKey()), ValueUtils.parse(cell.getValue())); } return object; } /** * Provides conversion from notaql's inner representation of rows (i.e. ObjectValues) to a list of columns. * @param object The "row" * @param table The column names of the output - in the right order * @return list of entries * @throws IOException */ public static List<String> convertFromNotaQL(ObjectValue object, String[] table) throws IOException { final List<String> strings = new LinkedList<>(); for (String key : table) { final Value value = object.get(new Step<>(key)); if (value == null) { strings.add(""); continue; } if (value instanceof AtomValue<?>) { strings.add(((AtomValue<?>) value).getValue().toString()); } else { strings.add(value.toString()); } } return strings; } public static boolean isEmpty(ObjectValue object) { return object.size() == 0; } }