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]