Open Source Repository

Home /csv/supercsv-1.52 | Repository Home


org/supercsv/cellprocessor/ConvertNullTo.java
/*
 * SuperCSV is Copyright 2007, Kasper B. Graversen Licensed under the Apache License, Version 2.0 (the "License"); you
 * may not use this file except in compliance with the License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language governing permissions and limitations under the
 * License.
 */
package org.supercsv.cellprocessor;

import org.supercsv.cellprocessor.ift.BoolCellProcessor;
import org.supercsv.cellprocessor.ift.CellProcessor;
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.util.CSVContext;

/**
 * This processor returns a specified default value, should the value given be a null. This is handy when writing
 * partially filled beans, maps and arrays, as for each column, a default value can be specified.
 
 @since 1.20
 @author Kasper B. Graversen
 */
public class ConvertNullTo extends CellProcessorAdaptor implements DateCellProcessor, DoubleCellProcessor,
  LongCellProcessor, StringCellProcessor, BoolCellProcessor {
Object returnValue = "";

/**
 * To have the string <tt>""</tt> return when a null is encountered, use this class as <code>
 * new ConvertNullTo("\"\"");
 </code>
 
 @param returnValue
 *            the value to return in case the input is <tt>null</tt>.
 */
public ConvertNullTo(final Object returnValue) {
  super();
  this.returnValue = returnValue;
}

/**
 * Constructor To have the string <tt>""</tt> return when a null is encountered, use this class as <code>
 * new ConvertNullTo("\"\"");
 </code>
 <p>
 * If you need further processing of the value in case the value is not null, you can link the processor with other
 * processors such as <code>
 * new ConvertNullTo("\"\"", new Trim(3));
 </code>
 
 @param returnValue
 *            the value to return in case the input is <tt>null</tt>.
 @param next
 *            Chained cell processor.
 */
public ConvertNullTo(final Object returnValue, final CellProcessor next) {
  super(next);
  this.returnValue = returnValue;
}

/**
 * {@inheritDoc}
 */
@Override
public Object execute(final Object value, final CSVContext context) {
  ifvalue == null ) { return returnValue; }
  
  return next.execute(value, context);
}
}