Open Source Repository

Home /csv/supercsv-1.52 | Repository Home



org/supercsv/cellprocessor/constraint/StrMinMax.java
package org.supercsv.cellprocessor.constraint;

import org.supercsv.cellprocessor.CellProcessorAdaptor;
import org.supercsv.cellprocessor.NullObjectPattern;
import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.cellprocessor.ift.StringCellProcessor;
import org.supercsv.exception.NullInputException;
import org.supercsv.exception.SuperCSVException;
import org.supercsv.util.CSVContext;

/**
 * This constraint ensures that the input data has a string length between <code>MIN</code> or <code>MAX</code>
 * (both inclusive). Should the input be anything different from a String, it will be converted to a string using the
 * input's <code>toString()</code> method.
 
 @author Kasper B. Graversen
 */
public class StrMinMax extends CellProcessorAdaptor implements StringCellProcessor {
protected long min, max;

public StrMinMax(final long min, final long max) {
  super(NullObjectPattern.INSTANCE);
  ifmax < min ) { throw new SuperCSVException("max < min in the arguments " + min + " " + max, this)}
  ifmin < ) { throw new SuperCSVException("min length must be >= 0, is " + min, this)}
  
  this.min = min;
  this.max = max;
}

public StrMinMax(final long min, final long max, final CellProcessor next) {
  super(next);
  ifmax < min ) { throw new SuperCSVException("max < min in the arguments " + min + " " + max, this)}
  this.min = min;
  this.max = max;
}

/**
 * {@inheritDoc}
 */
@Override
public Object execute(final Object value, final CSVContext contextthrows NumberFormatException {
  ifvalue == null ) { throw new NullInputException("Input cannot be null on line " + context.lineNumber + " at column " + context.columnNumber, context, this)}
  final String sval = value.toString()// cast
  ifsval.length() < min || sval.length() > max ) { throw new SuperCSVException("Entry \"" + value + "\" on line "
    + context.lineNumber + " column " + context.columnNumber + " is not within the string sizes " + min + " - "
    + max, context, this)}
  
  return next.execute(sval, context);
}
}