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