use of org.supercsv.prefs.CsvPreference in project waltz by khartec.
the class BaseDataExtractor method writeFile.
protected Object writeFile(String suggestedFilename, CSVSerializer extractor, Response response) throws Exception {
response.type(MimeTypes.Type.TEXT_PLAIN.name());
response.header("Content-disposition", "attachment; filename=" + suggestedFilename);
StringWriter bodyWriter = new StringWriter();
CsvPreference csvPreference = CsvPreference.EXCEL_PREFERENCE;
CsvListWriter csvWriter = new CsvListWriter(bodyWriter, csvPreference);
csvWriter.write("sep=" + Character.toString((char) csvPreference.getDelimiterChar()));
extractor.accept(csvWriter);
csvWriter.flush();
return bodyWriter.toString();
}
use of org.supercsv.prefs.CsvPreference in project hive by apache.
the class SeparatedValuesOutputFormat method print.
@Override
public int print(Rows rows) {
CsvPreference csvPreference = getCsvPreference();
CsvListWriter writer = new CsvListWriter(this.buffer, csvPreference);
int count = 0;
Rows.Row labels = (Rows.Row) rows.next();
if (beeLine.getOpts().getShowHeader()) {
fillBuffer(writer, labels);
String line = getLine(this.buffer);
beeLine.output(line);
}
while (rows.hasNext()) {
fillBuffer(writer, (Rows.Row) rows.next());
String line = getLine(this.buffer);
beeLine.output(line);
count++;
}
return count;
}
use of org.supercsv.prefs.CsvPreference in project photon-model by vmware.
the class AWSCsvBillParser method parseDetailedCsvBill.
private void parseDetailedCsvBill(InputStream inputStream, Collection<String> ignorableInvoiceCharge, Set<String> configuredAccounts, BiConsumer<Map<String, AwsAccountDetailDto>, String> hourlyStatsConsumer, Consumer<Map<String, AwsAccountDetailDto>> monthlyStatsConsumer) throws IOException {
final CsvPreference STANDARD_SKIP_COMMENTS = new CsvPreference.Builder(CsvPreference.STANDARD_PREFERENCE).skipComments(new CommentStartsWith(AWS_SKIP_COMMENTS)).build();
try (InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
ICsvMapReader mapReader = new CsvMapReader(reader, STANDARD_SKIP_COMMENTS)) {
final String[] header = mapReader.getHeader(true);
List<CellProcessor> processorList = new ArrayList<>();
final CellProcessor[] basicProcessors = getDetailedProcessors(header);
processorList.addAll(Arrays.asList(basicProcessors));
List<String> tagHeaders = new ArrayList<>();
// Add new cell-processors for each extra tag column
int numberOfTags = header.length - basicProcessors.length;
if (numberOfTags > 0) {
for (int i = 0; i < numberOfTags; i++) {
processorList.add(new Optional());
tagHeaders.add(header[basicProcessors.length + i]);
}
}
CellProcessor[] cellProcessorArray = new CellProcessor[processorList.size()];
Map<String, AwsAccountDetailDto> monthlyBill = new HashMap<>();
cellProcessorArray = processorList.toArray(cellProcessorArray);
Map<String, Object> rowMap;
Long prevRowTime = null;
Long prevRowEndTime;
String interval = null;
while ((rowMap = mapReader.read(header, cellProcessorArray)) != null) {
LocalDateTime currRowLocalDateTime = (LocalDateTime) rowMap.get(DetailedCsvHeaders.USAGE_START_DATE);
Long curRowTime = getMillisForHour(currRowLocalDateTime);
if (prevRowTime != null && curRowTime != null && !prevRowTime.equals(curRowTime) && !StringUtils.contains(interval, "-")) {
// This indicates that we have processed all rows belonging to a corresponding hour in the
// current month bill. Consume the batch
hourlyStatsConsumer.accept(monthlyBill, interval);
}
try {
readRow(rowMap, monthlyBill, tagHeaders, ignorableInvoiceCharge, configuredAccounts);
} catch (Exception e) {
this.logger.warning(String.format("Got error while parsing a row in aws bill of %s", getStringFieldValue(rowMap, DetailedCsvHeaders.PAYER_ACCOUNT_ID) + e));
}
if (curRowTime != null) {
prevRowTime = curRowTime;
prevRowEndTime = getMillisForHour((LocalDateTime) rowMap.get(DetailedCsvHeaders.USAGE_END_DATE));
interval = createInterval(prevRowTime, prevRowEndTime);
}
}
// Consume the final batch of parsed rows
hourlyStatsConsumer.accept(monthlyBill, interval);
monthlyStatsConsumer.accept(monthlyBill);
}
}
use of org.supercsv.prefs.CsvPreference in project photon-model by vmware.
the class TestUtils method extractAndParseCsvFile.
private static List<Map<String, Object>> extractAndParseCsvFile(Path filePath) throws IOException {
List<Map<String, Object>> csvRows = new ArrayList<>();
String AWS_SKIP_COMMENTS = "Don't see your tags in the report";
AWSCsvBillParser.unzip(filePath.toString(), filePath.getParent().toString());
String unzippedCsvFilePathStr = filePath.toString().substring(0, filePath.toString().lastIndexOf('.'));
final CsvPreference STANDARD_SKIP_COMMENTS = new CsvPreference.Builder(CsvPreference.STANDARD_PREFERENCE).skipComments(new CommentStartsWith(AWS_SKIP_COMMENTS)).build();
try (InputStreamReader reader = new InputStreamReader(new FileInputStream(Paths.get(unzippedCsvFilePathStr).toFile()), "UTF-8");
ICsvMapReader mapReader = new CsvMapReader(reader, STANDARD_SKIP_COMMENTS)) {
final String[] header = mapReader.getHeader(true);
List<CellProcessor> processorList = new ArrayList<>();
final CellProcessor[] basicProcessors = AWSCsvBillParser.getDetailedProcessors(header);
processorList.addAll(Arrays.asList(basicProcessors));
// Add new cell-processors for each extra tag column
int numberOfTags = header.length - basicProcessors.length;
if (numberOfTags > 0) {
for (int i = 0; i < numberOfTags; i++) {
processorList.add(new org.supercsv.cellprocessor.Optional());
}
}
CellProcessor[] cellProcessorArray = new CellProcessor[processorList.size()];
cellProcessorArray = processorList.toArray(cellProcessorArray);
Map<String, Object> row;
while ((row = mapReader.read(header, cellProcessorArray)) != null) {
csvRows.add(row);
}
return csvRows;
} catch (Exception e) {
throw e;
}
}
use of org.supercsv.prefs.CsvPreference in project openscoring by openscoring.
the class CsvUtil method createFormat.
private static CsvPreference createFormat(char delimiter, char quote) {
CsvPreference.Builder builder = new CsvPreference.Builder(quote, delimiter, "\n");
builder.useEncoder(new DefaultCsvEncoder());
return builder.build();
}
Aggregations