public String getDatePattern(String columnId) { String pattern = getPattern(columnId); return (pattern == null) ? datePattern : pattern; }
public String getNumberPattern(String columnId) { String pattern = getPattern(columnId); return (pattern == null) ? numberPattern : pattern; }
public String getDatePattern(String columnId) { String pattern = getPattern(columnId); return (pattern == null) ? datePattern : pattern; }
public String getNumberPattern(String columnId) { String pattern = getPattern(columnId); return (pattern == null) ? numberPattern : pattern; }
public char getNumberGroupSeparator(String columnId) { String pattern = getPattern(columnId); if (pattern == null) pattern = numberPattern; if (pattern.length() < 2) return ','; else return pattern.charAt(1); }
public char getNumberDecimalSeparator(String columnId) { String pattern = getPattern(columnId); if (pattern == null) pattern = numberPattern; if (pattern.length() < 6) return '.'; else return pattern.charAt(5); }
public char getNumberDecimalSeparator(String columnId) { String pattern = getPattern(columnId); if (pattern == null) pattern = numberPattern; if (pattern.length() < 6) return '.'; else return pattern.charAt(5); }
public char getNumberGroupSeparator(String columnId) { String pattern = getPattern(columnId); if (pattern == null) pattern = numberPattern; if (pattern.length() < 2) return ','; else return pattern.charAt(1); }
protected Object parseValue(DataColumn column, String value) throws Exception { ColumnType type = column.getColumnType(); try { if (type.equals(ColumnType.DATE)) { String pattern = dataSetDef.getPattern(column.getId()); // Handle special date pattern "epoch" if (pattern != null && DATE_FORMAT_EPOCH.equalsIgnoreCase(pattern)) { Double _epoch = Double.parseDouble(value); return new Date(_epoch.longValue() * 1000); } else { DateFormat dateFormat = getDateFormat(column.getId()); return dateFormat.parse(value); } } else if (type.equals(ColumnType.NUMBER)) { DecimalFormat numberFormat = getNumberFormat(column.getId()); return numberFormat.parse(value).doubleValue(); } else { return value; } } catch (ParseException e) { String msg = "Error parsing value: " + value + ", " + e.getMessage() + ". Check column\u0027s data type consistency!"; throw new Exception(msg); } }
@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); } }
@Test public void testParseCSVJson() throws Exception { URL fileURL = Thread.currentThread().getContextClassLoader().getResource("expenseReports.dset"); String json = IOUtils.toString(fileURL); 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); } }