From 1cfb08779ea0e00be69e072a940b3063e049fe6b Mon Sep 17 00:00:00 2001 From: Ofir Sonsino Date: Wed, 31 Jan 2018 17:19:00 +0200 Subject: org.onap migration Change-Id: I52f0b2851f2c765752b6d21f49b32136d7d72a3d Issue-ID: VID-86 Signed-off-by: Ofir Sonsino --- .../java/org/onap/vid/services/CsvServiceImpl.java | 250 +++++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 vid-app-common/src/main/java/org/onap/vid/services/CsvServiceImpl.java (limited to 'vid-app-common/src/main/java/org/onap/vid/services/CsvServiceImpl.java') diff --git a/vid-app-common/src/main/java/org/onap/vid/services/CsvServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/CsvServiceImpl.java new file mode 100644 index 000000000..8152dae04 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/services/CsvServiceImpl.java @@ -0,0 +1,250 @@ +//package org.onap.vid.services; +// +////import com.opencsv.CSVReader; +//import org.json.JSONArray; +//import org.json.JSONObject; +//import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; +//import org.springframework.stereotype.Service; +//import org.springframework.web.multipart.MultipartFile; +// +//import javax.ws.rs.BadRequestException; +//import java.io.FileNotFoundException; +//import java.io.FileReader; +//import java.io.IOException; +//import java.io.InputStreamReader; +//import java.util.ArrayList; +//import java.util.Arrays; +//import java.util.List; +// +//import static org.onap.vid.utils.Logging.getMethodName; +// +//@Service +//public class CsvServiceImpl implements CsvService{ +// +// +// /** The logger. */ +// static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(CsvServiceImpl.class); +// +// private static final String arrayRegex = "\\[(.*?)\\]"; +// +// +// /** +// * In UTF-8 the first line starts with "\uFEFF" so need to remove it +// * @param line is first line contains BOM +// * @return line after change +// */ +// private String [] removeBOMFromCsv(String [] line){ +// if (line.length>0) +// line[0] = line[0].replaceFirst("\uFEFF","").replaceFirst("",""); +// return line; +// } +// +// /** +// * read a csv file and puts its content in list of string arrays (without the empty lines) +// * @param filePath - the path of file to read +// * @return the content of file +// * @throws IOException +// */ +// /*@Override +// public List readCsv(String filePath) throws IOException { +// CSVReader reader = new CSVReader(new FileReader(filePath)); +// return readCsv(reader); +// } +// +// @Override +// public List readCsv(MultipartFile file) throws IOException { +// CSVReader reader = new CSVReader(new InputStreamReader(file.getInputStream())); +// return readCsv(reader); +// } +// +// private List addLineWithoutSpaces(List myEntries, String [] line){ +// line = Arrays.stream(line).filter(x -> !"".equals(x)).toArray(String[]::new); +// if(line.length > 0) +// myEntries.add(line); +// return myEntries; +// } +// +// +// private List readCsv(CSVReader reader) throws IOException { +// try { +// List myEntries = new ArrayList<>() ; +// String [] line; +// Boolean firstLine = true; +// while ((line = reader.readNext())!= null) { +// if (firstLine) { +// line = removeBOMFromCsv(line); +// firstLine = false; +// } +// myEntries = addLineWithoutSpaces(myEntries, line); +// } +// return myEntries; +// } +// catch (Exception e){ +// logger.error("error during reading CSV file. exception:" + e.getMessage()); +// throw e; +// } +// +// }*/ +// +// /** +// * main function that call to the recursive function with initial parameters +// * @param myEntries - the matrix with file content +// * @return the json +// * @throws IOException +// * @throws InstantiationException +// * @throws IllegalAccessException +// */ +// @Override +// public JSONObject convertCsvToJson (List myEntries) throws InstantiationException, IllegalAccessException { +// try { +// return buildJSON(myEntries, 0, 0, myEntries.size(), JSONObject.class); +// } +// catch (Exception e){ +// logger.error("error during parsing CSV file. exception:" + e.getMessage()); +// throw e; +// } +// +// } +// +// /** +// * it goes over the matrix column while the values are the same and returns the index of changed value +// * @param myEntries the matrix +// * @param i row index refer to the whole matrix +// * @param j column index +// * @param numLines the length of the current inner matrix +// * @param startLine row index of inner matrix +// * @return the index of changed line +// */ +// private int findIndexOfChangedLine(List myEntries, final int i, final int j, final int numLines, final int startLine) { +// int k; +// for(k = 0; k + i - startLine < numLines && myEntries.get(i)[j].equals(myEntries.get(k + i)[j]) ; k++); +// return k; +// } +// +// /** +// * check in array if its first element or if the key already exist in the previous item +// * @param jsonArray - the array to search in +// * @param key - the key to check +// * @return if exists or first element return true, otherwise- false +// */ +// private Boolean keyExistsOrFirstElement( JSONArray jsonArray,String key){ +// Boolean exists = false; +// Boolean first = false; +// JSONObject lastItem = lastItemInArray(jsonArray); +// if (lastItem == null) { +// first = true; +// } +// else { +// if (lastItem.has(key)) { +// exists = true; +// } +// } +// return exists||first; +// } +// +// /** +// * return last json in json array +// * @param jsonArray +// * @return last item or null if the array is empty +// */ +// private JSONObject lastItemInArray(JSONArray jsonArray){ +// JSONObject lastItem = null; +// if(jsonArray.length()>0) { +// lastItem = (JSONObject) jsonArray.get(jsonArray.length() - 1); +// } +// return lastItem; +// } +// +// /** +// * append current json to the main json +// * @param json - the main json to append to it +// * @param key - key to append +// * @param values - value(s) to append +// * @param can be JSONObject or JSONArray +// * @param string or jsonObject or jsonArray +// * @return json after put +// * @throws IllegalAccessException +// * @throws InstantiationException +// */ +// private T putJson(T json, String key, E values) throws IllegalAccessException, InstantiationException { +// if (json instanceof JSONArray){ +// JSONArray currentJson= ((JSONArray)json); +// if (values == null) //array of strings (for last item) +// { +// currentJson.put(key); +// } +// else { +// if (keyExistsOrFirstElement(currentJson, key)) { +// currentJson.put(new JSONObject().put(key, values)); +// } else { +// JSONObject lastItem = lastItemInArray(currentJson); +// lastItem.put(key, values); +// } +// } +// } +// if (json instanceof JSONObject){ +// if (values == null) +// throw new BadRequestException("Invalid csv file"); +// ((JSONObject)json).put(key,values); +// } +// return json; +// } +// +// +// /** +// * recursive function to build JSON. Each time it counts the same values in left and send the smaller matrix +// * (until the changed value) to the next time. +// * +// * @param myEntries - the whole matrix +// * @param i- row index of the whole matrix +// * @param j - column index +// * @param numLines - number of lines of inner matrix (num of same values in the left column) +// * @param clazz JSONArray or JSONObject +// * @param JSONArray or JSONObject +// * @return the json object +// * @throws IllegalAccessException +// * @throws InstantiationException +// */ +// private T buildJSON(List myEntries, int i, final int j, final int numLines, Class clazz) throws IllegalAccessException, InstantiationException { +// logger.debug(EELFLoggerDelegate.debugLogger, "start {}({}, {}, {})", getMethodName(), i, j, numLines); +// T json = clazz.newInstance(); +// int startLine = i; +// while(i < numLines + startLine){ +// String[] currentRow = myEntries.get(i); +// int length = currentRow.length; +// int currentDuplicateRows = findIndexOfChangedLine(myEntries,i,j,numLines, startLine); +// String key = currentRow[j]; +// if (j == length-1) { +// json = putJson(json,currentRow[j],null); +// +// } +// else +// { +// if (key.matches(arrayRegex)){ +// JSONArray arrayObjects = buildJSON(myEntries, i, j + 1, currentDuplicateRows, JSONArray.class); +// json = putJson(json,key.replaceAll("\\[","").replaceAll("]",""),arrayObjects); +// } +// else { +// if (j < length - 2) { +// json = putJson(json, currentRow[j], buildJSON(myEntries, i, j + 1, currentDuplicateRows, JSONObject.class)); +// } +// else +// { +// if (j == length - 2)//last object +// { +// if(currentDuplicateRows > 1) { +// throw new BadRequestException("Invalid csv file"); +// } +// json = putJson(json, currentRow[j], currentRow[j + 1]); +// } +// } +// } +// } +// i += currentDuplicateRows; +// } +// logger.debug(EELFLoggerDelegate.debugLogger, "end {} json = {}", getMethodName(), json); +// return json; +// } +// +//} +// -- cgit 1.2.3-korg