package com.constellio.app.modules.complementary.esRmRobots.services;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.IOUtils;
import com.constellio.model.entities.records.Content;
import com.constellio.model.services.contents.ContentManager;
import org.apache.commons.lang3.StringUtils;
public class CSVReader {
ContentManager contentManager;
public CSVReader(ContentManager contentManager) {
this.contentManager = contentManager;
}
public List<Map<String, String>> readCSVContent(Content csv) {
List<Map<String, String>> entries = new ArrayList<>();
// BufferedLineReaderInputStream input = new BufferedLineReaderInputStream(contentManager.getContentInputStream(csv.getId(),"csvInputStream"),1024);
String contentId = csv.getCurrentVersion().getHash();
BufferedReader reader = new BufferedReader(
new InputStreamReader(contentManager.getContentInputStream(contentId, "csvInputStream")));
try {
String line = reader.readLine();
if (StringUtils.startsWithIgnoreCase(line, "sep=,")) {
//Skip sep
line = reader.readLine();
}
String[] headers = line.split(",");
while ((line = reader.readLine()) != null) {
Map<String, String> entry = new HashMap<>();
String[] values = line.split(",");
for (int i = 0; i < headers.length; i++) {
if (values.length > i) {
entry.put(headers[i], values[i]);
} else {
entry.put(headers[i], "");
}
}
entries.add(entry);
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
IOUtils.closeQuietly(reader);
}
return entries;
}
}