Open Source Repository

Home /csv/supercsv-1.52 | Repository Home


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

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

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

/**
 * Converts a date into a formatted string using the {@link SimpleDateFormat} class. If you want to convert from a
 * String to a Date, use the {@link ParseDate} processor.
 <p>
 * Examples of arguments to this cellprocessor are: <br>
 <code>"MM/dd/yy"</code> to print date such as "01/29/02" <br>
 <code>"dd-MMM-yy"</code> <br>
 * To print dates such as "29-Jan-02" <br>
 <code>"yyyy.MM.dd.HH.mm.ss"</code> <br>
 * To print dates such as "2002.01.29.08.36.33" <br>
 * Or even <code>"E, dd MMM yyyy HH:mm:ss Z"</code> <br>
 * To print "Tue, 29 Jan 2002 22:14:02 -0500"
 
 @since 1.50
 @author Dominique De Vito
 */
public class FmtDate extends CellProcessorAdaptor implements DateCellProcessor {

protected DateFormat formatter;

public FmtDate(final String format) {
  super();
  this.formatter = new SimpleDateFormat(format);
}

public FmtDate(final String format, final StringCellProcessor next) {
  super(next);
  this.formatter = new SimpleDateFormat(format);
}

/**
 * {@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
    " column " + context.columnNumber, context, this)}
  if!(value instanceof Date) ) { throw new ClassCastInputCSVException("the value '" + value
    "' is not of type Date", context, this)}
  final String result = formatter.format((Datevalue);
  return next.execute(result, context);
}
}