public void setFieldNames(final String header) { try { setFieldNames(parseLine(header)); } catch (Exception e) { throw new ParseException(e, "Unable to parse header [%s]", header); } }
@Override public List<String> getFieldNames() { return delegate.getFieldNames(); } }
@Override public Parser<String, Object> makeParser() { return new CSVParser(listDelimiter, columns, hasHeaderRow, skipHeaderRows); }
@Test public void testRejectDuplicates() { List<JSONPathFieldSpec> fields = new ArrayList<>(); fields.add(new JSONPathFieldSpec(JSONPathFieldType.PATH, "met-array", "$.met.a")); fields.add(new JSONPathFieldSpec(JSONPathFieldType.PATH, "met-array", "$.met.a")); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("Cannot have duplicate field definition: met-array"); final Parser<String, Object> jsonParser = new JSONPathParser(new JSONPathSpec(false, fields), null); jsonParser.parseToMap(nestedJson); }
public Parser<String, Object> get(FlatTextFormat format, boolean hasHeaderRow, int maxSkipHeaderRows) { switch (format) { case CSV: return new CSVParser(null, hasHeaderRow, maxSkipHeaderRows); case DELIMITED: return new DelimitedParser("\t", null, hasHeaderRow, maxSkipHeaderRows); default: throw new IAE("Unknown format[%s]", format); } }
/** * Constructor * * @param flattenSpec Provide a path spec for flattening and field discovery. * @param mapper Optionally provide an ObjectMapper, used by the parser for reading the input JSON. */ public JSONPathParser(JSONPathSpec flattenSpec, ObjectMapper mapper) { this.mapper = mapper == null ? new ObjectMapper() : mapper; this.flattener = ObjectFlatteners.create(flattenSpec, new JSONFlattenerMaker()); }
public static JSONPathFieldSpec createJqField(String name, String expr) { return new JSONPathFieldSpec(JSONPathFieldType.JQ, name, expr); }
@Override public Parser<String, Object> makeParser() { return new DelimitedParser( delimiter, listDelimiter, columns, hasHeaderRow, skipHeaderRows ); }
@Test public void testValidHeader() { final String header = concat(format, "time", "value1", "value2"); final Parser<String, Object> parser = parserFactory.get(format, header); Assert.assertEquals(ImmutableList.of("time", "value1", "value2"), parser.getFieldNames()); }
@Override public boolean hasNext() { return iterator.hasNext(); }
public RegexParser( final String pattern, final Optional<String> listDelimiter, final Iterable<String> fieldNames ) { this(pattern, listDelimiter); setFieldNames(fieldNames); }
@Override public Parser<String, Object> makeParser() { return new JSONToLowerParser(objectMapper, null, null); }
public JavaScriptParser( final String function ) { this.fn = compile(function); }
@Override protected List<String> parseLine(String input) { return splitToList(input); }
@Override public void setFieldNames(Iterable<String> fieldNames) { delegate.setFieldNames(fieldNames); }
public Parser<String, Object> get(FlatTextFormat format) { return get(format, false, 0); }
@Test public void testRejectDuplicates2() { List<JSONPathFieldSpec> fields = new ArrayList<>(); fields.add(new JSONPathFieldSpec(JSONPathFieldType.PATH, "met-array", "$.met.a")); fields.add(new JSONPathFieldSpec(JSONPathFieldType.JQ, "met-array", ".met.a")); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("Cannot have duplicate field definition: met-array"); final Parser<String, Object> jsonParser = new JSONPathParser(new JSONPathSpec(false, fields), null); jsonParser.parseToMap(nestedJson); }
public Parser<String, Object> get(FlatTextFormat format, String header) { switch (format) { case CSV: return new CSVParser(null, header); case DELIMITED: return new DelimitedParser("\t", null, header); default: throw new IAE("Unknown format[%s]", format); } } }
public static JSONPathFieldSpec createNestedField(String name, String expr) { return new JSONPathFieldSpec(JSONPathFieldType.PATH, name, expr); }
public static JSONPathFieldSpec createRootField(String name) { return new JSONPathFieldSpec(JSONPathFieldType.ROOT, name, null); }