Search in sources :

Example 1 with Strainer

use of com.cinchapi.concourse.etl.Strainer in project concourse by cinchapi.

the class DelimitedLineImporter method parseObject.

/**
 * Transform the delimited line into an object where each field is mapped as
 * a value from the analogous key in the {@link #header}. Each key/value
 * mapping is subject to processing by the {@link #transformer}.
 *
 * @param line
 * @return the parsed object
 */
protected Multimap<String, Object> parseObject(String line) {
    StringSplitter it = new QuoteAwareStringSplitter(line, delimiter, SplitOption.TRIM_WHITESPACE);
    Multimap<String, Object> object = LinkedHashMultimap.create();
    Strainer strainer = new Strainer((key, value) -> object.put(key, value));
    int col = 0;
    while (it.hasNext()) {
        String key = header.get(col++);
        String value = it.next();
        Map<String, Object> transformed = transformer.transform(key, (Object) value);
        if (transformed != null) {
            strainer.process(transformed);
        } else {
            strainer.process(key, value);
        }
    }
    return object;
}
Also used : QuoteAwareStringSplitter(com.cinchapi.common.base.QuoteAwareStringSplitter) StringSplitter(com.cinchapi.common.base.StringSplitter) Strainer(com.cinchapi.concourse.etl.Strainer) QuoteAwareStringSplitter(com.cinchapi.common.base.QuoteAwareStringSplitter)

Aggregations

QuoteAwareStringSplitter (com.cinchapi.common.base.QuoteAwareStringSplitter)1 StringSplitter (com.cinchapi.common.base.StringSplitter)1 Strainer (com.cinchapi.concourse.etl.Strainer)1