All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.univocity.parsers.common.processor.core.AbstractObjectListProcessor Maven / Gradle / Ivy

Go to download

uniVocity's open source parsers for processing different text formats using a consistent API

There is a newer version: 2.9.1
Show newest version
/*******************************************************************************
 * Copyright 2014 uniVocity Software Pty Ltd
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package com.univocity.parsers.common.processor.core;

import com.univocity.parsers.common.*;

import java.util.*;

/**
 * A convenience {@link Processor} implementation for storing all rows parsed and converted to Object arrays into a list.
 * A typical use case of this class will be:
 *
 * 
{@code
 *
 * ObjectRowListProcessor processor = new ObjectRowListProcessor();
 * processor.convertIndexes(Conversions.toBigDecimal()).set(4, 6);
 * parserSettings.setRowProcessor(new ObjectRowListProcessor());
 * parser.parse(reader); // will invoke the {@link AbstractObjectListProcessor#rowProcessed(Object[], T)} method for each parsed record.
 *
 * String[] headers = rowProcessor.getHeaders();
 * List<Object[]> rows = rowProcessor.getRows();
 * BigDecimal value1 = (BigDecimal) row.get(4);
 * BigDecimal value2 = (BigDecimal) row.get(6);
 * }

* * @author uniVocity Software Pty Ltd - [email protected] * @see AbstractParser * @see Processor * @see AbstractProcessor * @see AbstractObjectProcessor */ public abstract class AbstractObjectListProcessor extends AbstractObjectProcessor { private List rows; private String[] headers; private int expectedRowCount; /** * Creates a new processor of {@code Object[]} rows with varying types. */ public AbstractObjectListProcessor() { this(0); } /** * Creates a new processor of {@code Object[]} rows with varying types. * * @param expectedRowCount expected number of rows to be parsed from the input. * Used to pre-allocate the size of the output {@link List} returned by {@link #getRows()} */ public AbstractObjectListProcessor(int expectedRowCount) { this.expectedRowCount = expectedRowCount <= 0 ? 10000 : expectedRowCount; } @Override public void processStarted(T context) { super.processStarted(context); rows = new ArrayList(expectedRowCount); } /** * Stores the row extracted by the parser and them converted to an Object array into a list. * * @param row the data extracted by the parser for an individual record and converted to an Object array. * @param context A contextual object with information and controls over the current state of the parsing process */ @Override public void rowProcessed(Object[] row, T context) { rows.add(row); } @Override public void processEnded(T context) { super.processEnded(context); this.headers = context.headers(); } /** * Returns the list of parsed and converted records * * @return the list of parsed and converted records */ public List getRows() { return rows == null ? Collections.emptyList() : rows; } /** * Returns the record headers. This can be either the headers defined in {@link CommonSettings#getHeaders()} or the headers parsed in the file when {@link CommonSettings#getHeaders()} equals true * * @return the headers of all records parsed. */ public String[] getHeaders() { return headers; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy