dflorey     2004/06/24 08:12:41

  Added:       proposals/projector/src/java/org/apache/slide/projector/descriptor
                        DateValueDescriptorFactory.java
                        DateValueDescriptor.java
  Log:
  
  
  Revision  Changes    Path
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor/DateValueDescriptorFactory.java
  
  Index: DateValueDescriptorFactory.java
  ===================================================================
  package org.apache.slide.projector.descriptor;
  
  import java.util.Date;
  import java.util.Iterator;
  
  import org.apache.slide.projector.value.DateValue;
  import org.jdom.Element;
  
  public class DateValueDescriptorFactory extends AbstractValueDescriptorFactory {
        protected String getElementName() {
        return "date";
      }
      
      protected ValueDescriptor loadValueDescriptor(Element element) {
        DateValueDescriptor valueDescriptor = new DateValueDescriptor();
          String earliest = element.getAttributeValue("earliest");
          String latest = element.getAttributeValue("latest");
          if ( earliest != null ) valueDescriptor.setEarliest(new 
Date(Long.valueOf(earliest).longValue()));
          if ( latest != null ) valueDescriptor.setLatest(new 
Date(Long.valueOf(latest).longValue()));
        Iterator defaultValueIterator = 
element.getChildren("default-value").iterator();
        if ( defaultValueIterator.hasNext() ) {
                Element defaultValueElement = (Element)defaultValueIterator.next();
                valueDescriptor.setDefaultValue(new DateValue(new 
Date(Long.valueOf(defaultValueElement.getTextTrim()).longValue())));
        }
        return valueDescriptor;
      }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor/DateValueDescriptor.java
  
  Index: DateValueDescriptor.java
  ===================================================================
  package org.apache.slide.projector.descriptor;
  
  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;
  
  import java.text.DateFormat;
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
  import java.util.ArrayList;
  import java.util.Date;
  import java.util.List;
  
  public class DateValueDescriptor extends AbstractValueDescriptor {
        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 validate(Object value, Context context) throws ValidationException {
          Date date = getValueAsDate(value);
          if ( date == null ) {
              throw new UncastableValueException(new 
ErrorMessage("uncastableDateValue", new Object[] { value }));
          } else {
              if ( !constrained ) {
                  return new DateValue(date);
              }
              if ( date.after(latest) || date.before(earliest) ) {
                throw new ValidationException(new ErrorMessage("invalidDate", new 
Object[] { date, earliest, latest }));
              }
              return new DateValue(date);
          }
      }
  
      private Date getValueAsDate(Object value) {
          if ( value instanceof DateValue ) {
              return ((DateValue)value).getDate();
          } else {
              String valueAsString = StringValueDescriptor.toString(value);
              if ( valueAsString != null ) {
                  try {
                        return new Date(Long.valueOf(valueAsString).longValue());
                  } catch ( NumberFormatException exception ) {
                      try {
                                                return 
DateFormat.getInstance().parse(valueAsString);
                                        } catch (ParseException e) {
                                        try {
                                                        return new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(valueAsString);
                                                } catch (ParseException e1) {
                                                        return null;
                                                }
                                        }
                  }
              }
          }
          return null;
      }
  }
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to