001: /*
002: * ====================================================================
003: * JAFFA - Java Application Framework For All
004: *
005: * Copyright (C) 2002 JAFFA Development Group
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this library; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: *
021: * Redistribution and use of this software and associated documentation ("Software"),
022: * with or without modification, are permitted provided that the following conditions are met:
023: * 1. Redistributions of source code must retain copyright statements and notices.
024: * Redistributions must also contain a copy of this document.
025: * 2. Redistributions in binary form must reproduce the above copyright notice,
026: * this list of conditions and the following disclaimer in the documentation
027: * and/or other materials provided with the distribution.
028: * 3. The name "JAFFA" must not be used to endorse or promote products derived from
029: * this Software without prior written permission. For written permission,
030: * please contact mail to: jaffagroup@yahoo.com.
031: * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA"
032: * appear in their names without prior written permission.
033: * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net).
034: *
035: * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: */
049:
050: package org.jaffa.presentation.portlet.widgets.model;
051:
052: import org.jaffa.datatypes.*;
053: import org.jaffa.metadata.*;
054: import java.util.*;
055: import org.apache.log4j.*;
056:
057: /** Model for the DateTime widget.
058: */
059: public class DateTimeModel extends WidgetModel {
060: private static Logger log = Logger.getLogger(DateTimeModel.class);
061:
062: private DateTime m_value = null;
063: private DateTimeFieldMetaData m_meta = null;
064: private Boolean m_mandatory = null;
065: private boolean m_modelChanged = false;
066:
067: /** Default constructor.
068: */
069: public DateTimeModel() {
070: this (null, new DateTimeFieldMetaData());
071: }
072:
073: /** Creates a model initialized to the input value.
074: * @param value The initial value.
075: */
076: public DateTimeModel(DateOnly value) {
077: this (value, new DateOnlyFieldMetaData());
078: }
079:
080: /** Creates a model initialized to the input value.
081: * @param value The initial value.
082: * @param meta The meta object to use for getting the layout info.
083: */
084: public DateTimeModel(DateOnly value, DateOnlyFieldMetaData meta) {
085: this (value != null ? DateOnly.toDateTime(value) : null, meta
086: .toDateTimeFieldMetaData());
087: }
088:
089: /** Creates a model initialized to the input value.
090: * @param value The initial value.
091: */
092: public DateTimeModel(DateTime value) {
093: this (value, new DateTimeFieldMetaData());
094: }
095:
096: /** Creates a model initialized to the input value.
097: * @param value The initial value.
098: * @param meta The meta object to use for getting the layout info.
099: */
100: public DateTimeModel(DateTime value, DateTimeFieldMetaData meta) {
101: m_value = value;
102: m_meta = meta;
103:
104: if (log.isDebugEnabled())
105: log.debug("Initialize Widget To Value: "
106: + (m_value == null ? null : m_value.toString()));
107: }
108:
109: /** Getter for property value.
110: * @return Value of property value.
111: */
112: public DateTime getValue() {
113: return m_value;
114: }
115:
116: /** Setter for property value.
117: * @param value New value of property value.
118: */
119: public void setValue(DateTime value) {
120: // Only update it and flag it if changed
121: if ((value == null && m_value != null)
122: || (value != null && !value.equals(m_value))) {
123: m_value = value;
124: setModelChanged(true);
125: }
126: }
127:
128: /** Getter for property meta.
129: * @return Value of property meta.
130: */
131: public DateTimeFieldMetaData getMeta() {
132: return m_meta;
133: }
134:
135: /** Setter for property meta.
136: * @param meta New value of property meta.
137: */
138: public void setMeta(DateTimeFieldMetaData meta) {
139: m_meta = meta;
140: }
141:
142: /** Returns the value as a DateOnly object.
143: * @return the value as a DateOnly object.
144: */
145: public DateOnly getDateOnlyValue() {
146: return m_value == null ? null : DateTime.toDateOnly(m_value);
147: }
148:
149: /** Change the state of the model internally */
150: private void setModelChanged(boolean setState) {
151: m_modelChanged = setState;
152: }
153:
154: /** See if model has changed, in the process reset the changed flag.
155: * @return true if the model was changed.
156: */
157: public boolean isModelChanged() {
158: boolean modified = m_modelChanged;
159: m_modelChanged = false;
160: return modified;
161: }
162:
163: /** Getter for property mandatory.
164: * @return Value of property mandatory.
165: */
166: public boolean isMandatory() {
167: if (m_mandatory != null)
168: return m_mandatory.booleanValue();
169: else if (m_meta != null && m_meta.isMandatory() != null)
170: return m_meta.isMandatory().booleanValue();
171: else
172: return false;
173: }
174:
175: /** Setter for property mandatory.
176: * @param meta New value of property mandatory.
177: */
178: public void setMandatory(boolean mandatory) {
179: m_mandatory = new Boolean(mandatory);
180: }
181:
182: }
|