Open Source Repository

Home /csv/supercsv-1.52 | Repository Home



org/supercsv/cellprocessor/HashMapper.java
package org.supercsv.cellprocessor;

import java.util.Map;

import org.supercsv.cellprocessor.ift.BoolCellProcessor;
import org.supercsv.cellprocessor.ift.DateCellProcessor;
import org.supercsv.cellprocessor.ift.DoubleCellProcessor;
import org.supercsv.cellprocessor.ift.LongCellProcessor;
import org.supercsv.cellprocessor.ift.StringCellProcessor;
import org.supercsv.exception.NullInputException;
import org.supercsv.exception.SuperCSVException;
import org.supercsv.util.CSVContext;

/**
 * Translate a value into another one, given some value mapping.
 
 @since 1.50
 @author Dominique De Vito
 */
public class HashMapper extends CellProcessorAdaptor implements BoolCellProcessor, DateCellProcessor,
  DoubleCellProcessor, LongCellProcessor, StringCellProcessor {

private final Map<Object, Object> mapping;
private final Object defaultValue;

public HashMapper(final Map<Object, Object> mapping) {
  super();
  this.mapping = mapping;
  this.defaultValue = null;
}

public HashMapper(final Map<Object, Object> mapping, final Object defaultValue) {
  super();
  this.mapping = mapping;
  this.defaultValue = defaultValue;
}

public HashMapper(final Map<Object, Object> mapping, final BoolCellProcessor next) {
  this(mapping, null, next);
}

public HashMapper(final Map<Object, Object> mapping, final Object defaultValue, final BoolCellProcessor next) {
  super(next);
  this.mapping = mapping;
  this.defaultValue = defaultValue;
  ifmapping == null ) { throw new NullInputException("Mapping cannot be null"this)}
}

/**
 * {@inheritDoc}
 */
@Override
public Object execute(final Object value, final CSVContext contextthrows SuperCSVException {
  ifvalue == null ) { throw new NullInputException("Input cannot be null on line " + context.lineNumber
    " at column " + context.columnNumber, context, this)}
  Object result = mapping.get(value);
  ifresult == null ) {
    result = defaultValue;
  }
  return next.execute(result, context);
}
}