Open Source Repository

Home /csv/supercsv-1.52 | Repository Home


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

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

/**
 * This processor checks if the input is 'null' or an empty string, and raises an exception in that case. In all other
 * cases, the next processor in the chain is invoked.
 <p>
 * You should only use this processor, when a column must be non-null, but you do not need to apply any other processor
 * to the column.
 <P>
 * If you apply other processors to the column, you can safely omit this processor as all other processors should do a
 * null-check on its input.
 
 @since 1.50
 @author Dominique De Vito
 */
public class StrNotNullOrEmpty extends CellProcessorAdaptor implements StringCellProcessor {

public StrNotNullOrEmpty() {
  super();
}

public StrNotNullOrEmpty(final CellProcessor next) {
  super(next);
}

/**
 * {@inheritDoc}
 
 @throws SuperCSVException
 *             upon receiving a 'null' value or an empty string.
 @return the argument value transformed by next processors
 */
@Override
public Object execute(final Object value, final CSVContext context) {
  ifvalue == null ) { throw new NullInputException("Input cannot be null on line " + context.lineNumber
    " at column " + context.columnNumber, context, this)}
  ifvalue instanceof String ) {
    String svalue = (Stringvalue;
    ifsvalue.length() == ) { throw new SuperCSVException("unexpected empty string", context, this)}
  else {
    throw new ClassCastInputCSVException(value, String.class, context, this);
  }
  
  return next.execute(value, context);
}
}