Open Source Repository

Home /csv/supercsv-1.52 | Repository Home


org/supercsv/cellprocessor/constraint/RequireSubStr.java
/**
 *
 */
package org.supercsv.cellprocessor.constraint;

import java.util.List;

import org.supercsv.cellprocessor.CellProcessorAdaptor;
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;

/**
 * Convert to string and ensure the input string must contain any of the specified sub strings.
 
 @since 1.10
 @author Kasper B. Graversen
 */
public class RequireSubStr extends CellProcessorAdaptor implements StringCellProcessor {
String[] requiredSubStrings;

public RequireSubStr(final List<String> requiredSubStrings, final CellProcessor next) {
  this(requiredSubStrings.toArray(new String[0]), next);
}

public RequireSubStr(final String... requiredSubStrings) {
  super();
  this.requiredSubStrings = requiredSubStrings.clone();
}

public RequireSubStr(final String requiredSubStrings, final CellProcessor next) {
  this(new String[] { requiredSubStrings }, next);
}

public RequireSubStr(final String[] requiredSubStrings, final CellProcessor next) {
  super(next);
  this.requiredSubStrings = requiredSubStrings.clone();
}

/**
 * {@inheritDoc}
 
 @throws ClassCastException
 *             is the parameter value cannot be cast to a String
 @throws SuperCSVException
 *             if none of the substrings are found in the input
 @return the argument value
 */
@Override
public Object execute(final Object value, final CSVContext contextthrows SuperCSVException, ClassCastException {
  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
  
  boolean found = false;
  forfinal String required : requiredSubStrings ) {
    ifsval.indexOf(required!= -) {
      found = true;
      break;
    }
  }
  iffound == false ) { throw new SuperCSVException("Entry \"" + value + "\" on line " + context.lineNumber
    " column " + context.columnNumber + " doesn't contain any of the required substrings", context, this)}
  
  return next.execute(value, context);
}
}