001: /* ========================================================================
002: * JCommon : a free general purpose class library for the Java(tm) platform
003: * ========================================================================
004: *
005: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006: *
007: * Project Info: http://www.jfree.org/jcommon/index.html
008: *
009: * This library is free software; you can redistribute it and/or modify it
010: * under the terms of the GNU Lesser General Public License as published by
011: * the Free Software Foundation; either version 2.1 of the License, or
012: * (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but
015: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017: * License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022: * USA.
023: *
024: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025: * in the United States and other countries.]
026: *
027: * --------------------------
028: * LongObjectDescription.java
029: * --------------------------
030: * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
031: *
032: * Original Author: Thomas Morgner;
033: * Contributor(s): David Gilbert (for Object Refinery Limited);
034: *
035: * $Id: SimpleDateFormatObjectDescription.java,v 1.3 2005/11/14 11:04:12 mungady Exp $
036: *
037: * Changes (from 19-Feb-2003)
038: * -------------------------
039: * 19-Feb-2003 : Added standard header and Javadocs (DG);
040: * 29-Apr-2003 : Distilled from the JFreeReport project and moved into JCommon
041: *
042: */
043:
044: package org.jfree.xml.factory.objects;
045:
046: import java.text.DateFormatSymbols;
047: import java.text.NumberFormat;
048: import java.text.SimpleDateFormat;
049: import java.util.Calendar;
050: import java.util.Date;
051:
052: /**
053: * An object-description for a <code>SimpleDateFormat</code> object.
054: *
055: * @author Thomas Morgner
056: */
057: public class SimpleDateFormatObjectDescription extends
058: BeanObjectDescription {
059:
060: /**
061: * Creates a new object description.
062: */
063: public SimpleDateFormatObjectDescription() {
064: this (SimpleDateFormat.class);
065: }
066:
067: /**
068: * Creates a new object description.
069: *
070: * @param className the class.
071: */
072: public SimpleDateFormatObjectDescription(final Class className) {
073: this (className, true);
074: }
075:
076: /**
077: * Creates a new object description.
078: *
079: * @param className the class.
080: * @param init initialise?
081: */
082: public SimpleDateFormatObjectDescription(final Class className,
083: final boolean init) {
084: super (className, false);
085: setParameterDefinition("2DigitYearStart", Date.class);
086: setParameterDefinition("calendar", Calendar.class);
087: setParameterDefinition("dateFormatSymbols",
088: DateFormatSymbols.class);
089: setParameterDefinition("lenient", Boolean.TYPE);
090: setParameterDefinition("numberFormat", NumberFormat.class);
091: // setParameterDefinition("timeZone", TimeZone.class);
092: setParameterDefinition("localizedPattern", String.class);
093: setParameterDefinition("pattern", String.class);
094: ignoreParameter("localizedPattern");
095: ignoreParameter("pattern");
096: }
097:
098: /**
099: * Sets the parameters of this description object to match the supplied object.
100: *
101: * @param o the object.
102: *
103: * @throws ObjectFactoryException if there is a problem while reading the
104: * properties of the given object.
105: */
106: public void setParameterFromObject(final Object o)
107: throws ObjectFactoryException {
108: super .setParameterFromObject(o);
109: final SimpleDateFormat format = (SimpleDateFormat) o;
110: setParameter("localizedPattern", format.toLocalizedPattern());
111: setParameter("pattern", format.toPattern());
112: }
113:
114: /**
115: * Creates an object based on this description.
116: *
117: * @return The object.
118: */
119: public Object createObject() {
120: final SimpleDateFormat format = (SimpleDateFormat) super
121: .createObject();
122: if (getParameter("pattern") != null) {
123: format.applyPattern((String) getParameter("pattern"));
124: }
125: if (getParameter("localizedPattern") != null) {
126: format
127: .applyLocalizedPattern((String) getParameter("localizedPattern"));
128: }
129: return format;
130: }
131:
132: }
|