Package no.priv.garshol.duke.datasources

Source Code of no.priv.garshol.duke.datasources.RecordBuilder

package no.priv.garshol.duke.datasources;

import java.util.Collection;

import no.priv.garshol.duke.Record;
import no.priv.garshol.duke.Cleaner;
import no.priv.garshol.duke.RecordImpl;
import no.priv.garshol.duke.CompactRecord;
import no.priv.garshol.duke.ModifiableRecord;

/**
* Helper class for building records, to avoid having to copy all the
* cleaning logic etc in each single data source.
*/
public class RecordBuilder {
  private ColumnarDataSource source;
  private ModifiableRecord record;

  public RecordBuilder(ColumnarDataSource source) {
    this.source = source;
  }

  public void newRecord() {
    record = new CompactRecord();
  }

  public boolean isRecordEmpty() {
    return record.isEmpty();
  }
   
  public void addValue(String column, String value) {
    Collection<Column> cols = source.getColumn(column);
    if (cols == null || cols.isEmpty())
      return;
    Column col = cols.iterator().next();
    addValue(col, value);
  }

  public void addValue(Column col, String value) {
    if (value == null || value.equals(""))
      return;
   
    String prop = col.getProperty();
    Cleaner cleaner = col.getCleaner();
    if (col.isSplit()) {
      for (String v : col.split(value)) {
        if (cleaner != null)
          v = cleaner.clean(v);
        if (v != null && !v.equals(""))
          record.addValue(prop, v);
      }
    } else {
      if (cleaner != null)
        value = cleaner.clean(value);
      if (value != null && !value.equals(""))
        record.addValue(prop, value);
    }
  }

  // FIXME: probably we should just get rid of these
  public void setValue(String column, String value) {
    Collection<Column> cols = source.getColumn(column);
    Column col = cols.iterator().next();
    setValue(col, value);
  }

  public void setValue(Column col, String value) {
    if (col.getCleaner() != null)
      value = col.getCleaner().clean(value);
    if (value == null || value.equals(""))
      return; // nothing here, move on
   
    record.addValue(col.getProperty(), value);
  }
 
  public Record getRecord() {
    return record;
  }
}
TOP

Related Classes of no.priv.garshol.duke.datasources.RecordBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.