@Override public DataSetDef clone() { CSVDataSetDef def = new CSVDataSetDef(); clone(def); def.setFilePath(getFilePath()); def.setFileURL(getFileURL()); def.setSeparatorChar(getSeparatorChar()); def.setQuoteChar(getQuoteChar()); def.setEscapeChar(getEscapeChar()); def.setDatePattern(getDatePattern()); def.setNumberPattern(getNumberPattern()); return def; }
protected boolean isColumnIncluded(String columnId) { if (dataSetDef.isAllColumnsEnabled()) return true; if (dataSetDef.getColumns() == null) return false; return dataSetDef.getColumnById(columnId) != null; }
public String getDatePattern(String columnId) { String pattern = getPattern(columnId); return (pattern == null) ? datePattern : pattern; }
protected DecimalFormat getNumberFormat(String columnId) { DecimalFormat format = _numberFormatMap.get(columnId); if (format == null) { DecimalFormatSymbols numberSymbols = new DecimalFormatSymbols(); numberSymbols.setGroupingSeparator(dataSetDef.getNumberGroupSeparator(columnId)); numberSymbols.setDecimalSeparator(dataSetDef.getNumberDecimalSeparator(columnId)); format = new DecimalFormat(dataSetDef.getNumberPattern(columnId), numberSymbols); _numberFormatMap.put(columnId, format); } return format; } }
String json = getFileAsString(CSV_DEF_PATH); CSVDataSetDef def = (CSVDataSetDef) jsonMarshaller.fromJson(json); assertEquals(def.getColumns().size(), 5); DataColumnDef column1 = def.getColumnById("office"); DataColumnDef column2 = def.getColumnById("department"); DataColumnDef column3 = def.getColumnById("employee"); DataColumnDef column4 = def.getColumnById("amount"); DataColumnDef column5 = def.getColumnById("date"); assertNotNull(column1); assertNotNull(column2); assertEquals(column5.getColumnType(), ColumnType.DATE); assertEquals(def.getFilePath(), "expenseReports.csv"); assertNull(def.getFileURL()); assertEquals(def.getDatePattern(), "MM-dd-yyyy"); assertEquals(def.getNumberPattern(), "#,###.##"); assertEquals(def.getDatePattern("date"), "MM-dd-yyyy"); assertEquals(def.getNumberPattern("amount"), "#,###.##"); assertEquals(def.getSeparatorChar(), Character.valueOf(';')); assertEquals(def.getQuoteChar(), Character.valueOf('\"'));
@Override public void toJson(CSVDataSetDef dataSetDef, JsonObject json) { // File. if (dataSetDef.getFilePath() != null) { json.put(FILEPATH, dataSetDef.getFilePath()); } if (dataSetDef.getFileURL() != null) { json.put(FILEURL, dataSetDef.getFileURL()); } // Separator. json.put(SEPARATORCHAR, String.valueOf(dataSetDef.getSeparatorChar())); // Quote. json.put(QUOTECHAR, String.valueOf(dataSetDef.getQuoteChar())); // Escape. json.put(ESCAPECHAR, String.valueOf(dataSetDef.getEscapeChar())); // Date pattern. json.put(DATEPATTERN, dataSetDef.getDatePattern()); // Number pattern. json.put(NUMBERPATTERN, dataSetDef.getNumberPattern()); // All columns flag. json.put(ALL_COLUMNS, dataSetDef.isAllColumnsEnabled()); } }
@Test public void testParseCSVJson() throws Exception { URL fileURL = Thread.currentThread().getContextClassLoader().getResource("expenseReports.dset"); String json = IOUtils.toString(fileURL, StandardCharsets.UTF_8); DataSetDef def = jsonMarshaller.fromJson(json); assertThat(def.getProvider()).isEqualTo(DataSetProviderType.CSV); assertThat(def.isPublic()).isEqualTo(true); assertThat(def.isPushEnabled()).isEqualTo(true); assertThat(def.getPushMaxSize()).isEqualTo(1024); CSVDataSetDef csvDef = (CSVDataSetDef) def; assertThat(csvDef.getSeparatorChar()).isEqualTo(';'); assertThat(csvDef.getEscapeChar()).isEqualTo('\\'); assertThat(csvDef.getQuoteChar()).isEqualTo('\"'); assertThat(csvDef.getDatePattern()).isEqualTo("MM-dd-yyyy"); assertThat(csvDef.getNumberPattern()).isEqualTo("#,###.##"); assertThat(csvDef.getPattern("date")).isEqualTo("MM-dd-yyyy"); assertThat(csvDef.getPattern("amount")).isEqualTo("#,###.##"); assertThat(csvDef.getColumnById("id").getColumnType()).isEqualTo(ColumnType.LABEL); assertThat(csvDef.getColumnById("amount").getColumnType()).isEqualTo(ColumnType.NUMBER); assertThat(csvDef.getColumnById("date").getColumnType()).isEqualTo(ColumnType.DATE); } }
@Override protected void afterFlush() { super.afterFlush(); if (!editor.isUsingFilePath()) { dataSetDef.setFilePath(null); } else { dataSetDef.setFileURL(null); } } }
@Test public void testSetValueUsingFilePath() { final CSVDataSetDef dataSetDef = mock(CSVDataSetDef.class); when(dataSetDef.getUUID()).thenReturn("uuid1"); when(dataSetDef.getName()).thenReturn("name1"); when(dataSetDef.getProvider()).thenReturn(DataSetProviderType.CSV); when(dataSetDef.getFileURL()).thenReturn(null); when(dataSetDef.getFilePath()).thenReturn("filePath"); presenter.setValue(dataSetDef); assertEquals(true, presenter.isUsingFilePath()); verify(view, times(0)).init(presenter); verify(view, times(0)).initWidgets(any(ValueBoxEditor.View.class), any(IsWidget.class),any(ValueBoxEditor.View.class), any(ValueBoxEditor.View.class), any(ValueBoxEditor.View.class), any(ValueBoxEditor.View.class), any(ValueBoxEditor.View.class)); verify(view, times(1)).showFilePathInput(); verify(view, times(0)).showFileURLInput(); }
def.setFileURL(fileURL); def.setFilePath(filePath); def.setSeparatorChar(separatorChar.charAt(0)); def.setQuoteChar(quoteChar.charAt(0)); def.setEscapeChar(escapeChar.charAt(0)); def.setNumberPattern(numberPattern); def.setDatePattern(datePattern);
protected void configureColumnSettings(Displayer displayer, CSVDataSetDef csvDataSetDef) { DataSet dataSet = displayer.getDataSetHandler().getLastDataSet(); dataSet.getColumns().stream().forEach(column -> { if (column.getColumnType().equals(ColumnType.DATE)) { String pattern = csvDataSetDef.getDatePattern(column.getId()); if (pattern != null) { displayer.getDisplayerSettings().setColumnValuePattern(column.getId(), pattern); } } else if (column.getColumnType().equals(ColumnType.NUMBER)) { String pattern = csvDataSetDef.getNumberPattern(column.getId()); if (pattern != null) { displayer.getDisplayerSettings().setColumnValuePattern(column.getId(), pattern); } } }); }
try { BufferedReader br = new BufferedReader(new InputStreamReader(is)); CSVReader csvReader = new CSVReader(br, dataSetDef.getSeparatorChar(), dataSetDef.getQuoteChar(), dataSetDef.getEscapeChar());
protected InputStream getCSVInputStream() throws Exception { String url = dataSetDef.getFileURL(); if (!StringUtils.isBlank(url)) { return new URL(url).openStream(); } String path = dataSetDef.getFilePath(); if (!StringUtils.isBlank(path)) { File f = new File(path); if (f.exists()) { return new FileInputStream(f); } } if (csvStorage != null) { InputStream is = csvStorage.getCSVInputStream(dataSetDef); if (is != null) { return is; } } throw new IllegalArgumentException("CSV content not found: " + dataSetDef); }
public File getCSVFile(CSVDataSetDef def) throws Exception { String path = def.getFilePath(); if (StringUtils.isBlank(path)) return null; File f = new File(path); if (f.exists()) return f; f = new File(directory, path); if (f.exists()) return f; return null; } }
public CSVDataSetDefBuilderImpl filePath(String path) { ((CSVDataSetDef) def).setFilePath(path); return this; }
protected ColumnType calculateType(String columnId, String value) { DataColumnDef column = dataSetDef.getColumnById(columnId); if (column != null) return column.getColumnType(); try { DateFormat dateFormat = getDateFormat(columnId); dateFormat.parse(value); return ColumnType.DATE; } catch (Exception e) { DecimalFormat numberParser = getNumberFormat(columnId); if (canBeParsedAsNumber(numberParser, value)) { return ColumnType.NUMBER; } else { return ColumnType.LABEL; } } }
protected DateFormat getDateFormat(String columnId) { DateFormat format = _dateFormatMap.get(columnId); if (format == null) { format = new SimpleDateFormat(dataSetDef.getDatePattern(columnId)); _dateFormatMap.put(columnId, format); } return format; }
@Override public void setValue(final CSVDataSetDef value) { this.value = value; if (value != null && value.getFileURL() != null) { useFileURL(); } else { useFilePath(); } }
String json = getFileAsString(CSV_DEF_PATH); CSVDataSetDef def = (CSVDataSetDef) jsonMarshaller.fromJson(json); assertEquals(def.getColumns().size(), 5); DataColumnDef column1 = def.getColumnById("office"); DataColumnDef column2 = def.getColumnById("department"); DataColumnDef column3 = def.getColumnById("employee"); DataColumnDef column4 = def.getColumnById("amount"); DataColumnDef column5 = def.getColumnById("date"); assertNotNull(column1); assertNotNull(column2); assertEquals(column5.getColumnType(), ColumnType.DATE); assertEquals(def.getFilePath(), "expenseReports.csv"); assertNull(def.getFileURL()); assertEquals(def.getDatePattern(), "MM-dd-yyyy"); assertEquals(def.getNumberPattern(), "#,###.##"); assertEquals(def.getDatePattern("date"), "MM-dd-yyyy"); assertEquals(def.getNumberPattern("amount"), "#,###.##"); assertEquals(def.getSeparatorChar(), Character.valueOf(';')); assertEquals(def.getQuoteChar(), Character.valueOf('\"'));
@Override public void toJson(CSVDataSetDef dataSetDef, JsonObject json) { // File. if (dataSetDef.getFilePath() != null) { json.put(FILEPATH, dataSetDef.getFilePath()); } if (dataSetDef.getFileURL() != null) { json.put(FILEURL, dataSetDef.getFileURL()); } // Separator. json.put(SEPARATORCHAR, String.valueOf(dataSetDef.getSeparatorChar())); // Quote. json.put(QUOTECHAR, String.valueOf(dataSetDef.getQuoteChar())); // Escape. json.put(ESCAPECHAR, String.valueOf(dataSetDef.getEscapeChar())); // Date pattern. json.put(DATEPATTERN, dataSetDef.getDatePattern()); // Number pattern. json.put(NUMBERPATTERN, dataSetDef.getNumberPattern()); // All columns flag. json.put(ALL_COLUMNS, dataSetDef.isAllColumnsEnabled()); } }