Open Source Repository

Home /csv/supercsv-1.52 | Repository Home



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

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;

/**
 * String replacer.
 
 @author Kasper B. Graversen
 @author Dominique De Vito
 */
public class StrReplace extends CellProcessorAdaptor implements BoolCellProcessor, DateCellProcessor,
  DoubleCellProcessor, LongCellProcessor, StringCellProcessor {
private String searchText, replaceText;

/**
 * String relpace
 
 @param searchText
 *            text to search for
 @param replaceText
 *            tetx to replace with
 */
public StrReplace(final String searchText, final String replaceText) {
  super();
  handleArguments(searchText, replaceText);
}

public StrReplace(final String searchText, final String replaceText, final StringCellProcessor next) {
  super(next);
  handleArguments(searchText, replaceText);
}

/**
 * {@inheritDoc}
 */
@Override
public Object execute(final Object value, final CSVContext contextthrows SuperCSVException {
  ifvalue == null ) {
    throw new NullInputException("Input cannot be null", context, this);
  }
  String result = value.toString().replaceAll(searchText, replaceText);
  return next.execute(result, context);
}

private void handleArguments(final String searchText, final String replaceTextthrows IllegalArgumentException {
  ifsearchText == null ) {
    throw new NullInputException("searchtext cannot be null"this);
  }
  ifreplaceText == null ) {
    throw new NullInputException("replacettext cannot be null"this);
  }
  ifsearchText.equals("") ) {
    throw new SuperCSVException("argument searchText cannot be \"\" as this has no effect"this);
  }
  this.searchText = searchText;
  this.replaceText = replaceText;
}
}