You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by df...@apache.org on 2004/06/24 17:12:41 UTC

cvs commit: jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor DateValueDescriptorFactory.java DateValueDescriptor.java

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: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org