Package org.apache.slide.projector.descriptor

Source Code of org.apache.slide.projector.descriptor.DateValueDescriptor

package org.apache.slide.projector.descriptor;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.slide.projector.Context;
import org.apache.slide.projector.i18n.ErrorMessage;
import org.apache.slide.projector.value.DateValue;
import org.apache.slide.projector.value.Value;

public class DateValueDescriptor implements ValueDescriptor {
  protected boolean constrained;
    protected List allowedValues = new ArrayList();
    protected Date earliest, latest;

    public DateValueDescriptor() {
        this.constrained = false;
    }

    public DateValueDescriptor(Date earliest, Date latest) {
        constrained = true;
        this.earliest = earliest;
        this.latest = latest;
    }

    public boolean isConstrained() {
        return constrained;
    }

    public void setEarliest(Date earliest) {
        this.earliest = earliest;
    }

    public void setLatest(Date latest) {
        this.latest = latest;
    }

    public Value valueOf(Object value, Context context) throws ValueCastException {
      Date date = null;
      if ( value instanceof DateValue ) {
            return (DateValue)value;
        } else {
          try {
            String valueAsString = StringValueDescriptor.ANY.valueOf(value, null).toString();
            try {
              date = new Date(Long.valueOf(valueAsString).longValue());
            } catch ( NumberFormatException exception ) {
              try {
                date = DateFormat.getInstance().parse(valueAsString);
              } catch (ParseException e) {
                try {
                  date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(valueAsString);
                } catch (ParseException pe) {
                  throw new ValueCastException(new ErrorMessage("uncastableDateValue", new Object[] { value }), pe);
                }
              }
            }
          } catch ( ValueCastException exception ) {
            throw new ValueCastException(new ErrorMessage("uncastableDateValue", new Object[] { value }), exception);
          }
        }
        return new DateValue(date);
    }

    public void validate(Value value, Context context) throws ValidationException {
        Date date = ((DateValue)value).getDate();
        if ( constrained && ( date.after(latest) || date.before(earliest) ) ) {
          throw new ValidationException(new ErrorMessage("invalidDate", new Object[] { date, earliest, latest }));
        }
    }
}
TOP

Related Classes of org.apache.slide.projector.descriptor.DateValueDescriptor

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.