Package hu.sztaki.ilab.longneck.process.block

Source Code of hu.sztaki.ilab.longneck.process.block.DateTimeToFormat

package hu.sztaki.ilab.longneck.process.block;

import hu.sztaki.ilab.longneck.Record;
import hu.sztaki.ilab.longneck.process.CheckError;
import hu.sztaki.ilab.longneck.process.VariableSpace;
import hu.sztaki.ilab.longneck.process.constraint.CheckResult;
import org.joda.time.LocalDateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

/**
* Converts a date and time string to the given format.
*
* @author Péter Molnár <molnarp@sztaki.mta.hu>
*/
public class DateTimeToFormat extends AbstractAtomicBlock {

    /** To read the date from. */
    private String from;
    /** The pattern to convert the text to a date object from. */
    private String fromPattern;
    /** The pattern to convert the text to a date object to. */
    private String toPattern;
   
    /** The date formatter class that parses the from date. */
    private DateTimeFormatter fromFormat;
    /** The date formatter class that parses the to date. */
    private DateTimeFormatter toFormat;

    public void afterPropertiesSet() {
        fromFormat = DateTimeFormat.forPattern(fromPattern);
        toFormat = DateTimeFormat.forPattern(toPattern);
    }
   
    @Override
    public void apply(Record record, VariableSpace parentScope) throws CheckError {
        String dateValue = "";
        try {
            dateValue = BlockUtils.getValue(from, record, parentScope);
            String outValue = null;
            if (dateValue != null) {
                outValue = fromFormat.parseLocalDateTime(dateValue).toString(toFormat);
            }
           
            for (String fieldName : applyTo) {
                BlockUtils.setValue(fieldName, outValue, record, parentScope);
            }
        } catch (IllegalArgumentException ex) {
            throw new CheckError(new CheckResult(this, false, from, dateValue,
                    String.format("Field '%1$s' content '%2$s' does not match date pattern '%3$s'.",
                    from, dateValue, fromPattern)));
        } catch (UnsupportedOperationException ex) {
            log.error("joda-time pattern-based parsing is unsupported.", ex);
        }
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getFromPattern() {
        return fromPattern;
    }

    public void setFromPattern(String fromPattern) {
        this.fromPattern = fromPattern;
    }

    public String getToPattern() {
        return toPattern;
    }

    public void setToPattern(String toPattern) {
        this.toPattern = toPattern;
    }

    public DateTimeFormatter getFromFormat() {
        return fromFormat;
    }

    public void setFromFormat(DateTimeFormatter fromFormat) {
        this.fromFormat = fromFormat;
    }

    public DateTimeFormatter getToFormat() {
        return toFormat;
    }

    public void setToFormat(DateTimeFormatter toFormat) {
        this.toFormat = toFormat;
    }

   
   
    @Override
    public DateTimeToFormat clone() {
        return (DateTimeToFormat) super.clone();
    }  
}
TOP

Related Classes of hu.sztaki.ilab.longneck.process.block.DateTimeToFormat

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.