/* * Copyright (C) NetStruxr, Inc. All rights reserved. * * This software is published under the terms of the NetStruxr * Public Software License version 0.5, a copy of which has been * included with this distribution in the LICENSE.NPL file. */ package er.directtoweb.components.dates; import java.util.TimeZone; import com.webobjects.appserver.WOContext; import com.webobjects.appserver.WORequest; import com.webobjects.foundation.NSTimestamp; import com.webobjects.foundation.NSValidation; /** * Allows the choice to not specify a date. */ public class ERDEditDatePopupOrNull extends ERDEditDatePopupCommon { /** * Do I need to update serialVersionUID? * See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the * <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a> */ private static final long serialVersionUID = 1L; public ERDEditDatePopupOrNull(WOContext context) { super(context); } protected static final String empty = "null"; protected static final String date = "date"; protected String _radioValue; public String empty() { return empty; } public String date() { return date; } public Object timeZoneString() { return TimeZone.getDefault().getDisplayName(true, TimeZone.SHORT); } public String radioValue(){ if(_radioValue == null) { NSTimestamp dateValue = (NSTimestamp)objectPropertyValue(); _radioValue = dateValue==null ? empty : date; } return _radioValue; } @Override public void reset(){ super.reset(); _radioValue = null; } public void setRadioValue(String newString) { _radioValue = newString; } public String radioBoxGroupName() { return ("DateOrNullGroup_"+key()); } @Override public void takeValuesFromRequest (WORequest request, WOContext context) { super.takeValuesFromRequest (request,context); if (context.wasFormSubmitted()) { if (radioValue().equals(date)){ NSTimestamp date = null; try { if (time==null || time.length()!=5) { date = (NSTimestamp)ALL_FORMAT.parseObject(day+" "+ month +" "+year); } else { date = (NSTimestamp)ALL_FORMAT_AND_TIME.parseObject(day+" "+ month +" "+year+" "+time); } object().validateTakeValueForKeyPath(date, key()); } catch (NSValidation.ValidationException v) { parent().validationFailedWithException(v,date,key()); } catch(Exception e) { parent().validationFailedWithException(e,date,key()); } } else { try { object().validateTakeValueForKeyPath(null, key()); } catch (NSValidation.ValidationException v) { parent().validationFailedWithException(v,null,key()); } catch(Exception e) { parent().validationFailedWithException(e,null,key()); } } } } }