JBAS-2774 - Date Property Editor
adrian.brock Apr 3, 2006 12:59 PMThe user is correct that Date.toString() returns the date in "English".
The user's solution looks like a kludge on top of another kludge.
The whole basis of the DateEditor looks flawed to me.
It wants to treat the Date as a piece of Text.
A more "normal" editor would looks like this, where it converts the
String to a Date during setAsText() and it uses DateFormat.format()
to format using the current Locale.
/*
* JBoss, Home of Professional Open Source
* Copyright 2005, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.util.propertyeditor;
import java.beans.PropertyEditorSupport;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.jboss.util.NestedRuntimeException;
/**
* A property editor for {@link java.util.Date}.
*
* @version <tt>$Revision: 1.8 $</tt>
* @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
* @author <a href="mailto:d_jencks@users.sourceforge.net">David Jencks</a>
* @author Scott.Stark@jboss.org
*/
public class DateEditor2 extends PropertyEditorSupport
{
static DateFormat[] formats;
/** The text version of the date */
private String text;
static
{
PrivilegedAction action = new PrivilegedAction()
{
public Object run()
{
String defaultFormat = System.getProperty("org.jboss.util.propertyeditor.DateEditor.format",
"MMM d, yyyy");
formats = new DateFormat[]
{
new SimpleDateFormat(defaultFormat),
// Tue Jan 04 00:00:00 PST 2005
new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy"),
// Wed, 4 Jul 2001 12:08:56 -0700
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z")
};
return null;
}
};
AccessController.doPrivileged(action);
}
public void setAsText(String text)
{
int n = 0;
ParseException ex = null;
do
{
try
{
DateFormat df = formats[n];
Date date = df.parse(text);
this.text = text;
setValue(date);
return;
}
catch (ParseException e)
{
ex = e;
}
n ++;
} while( n < formats.length );
throw new NestedRuntimeException(ex);
}
public void setValue(Object value)
{
text = null;
super.setValue(value);
}
public String getAsText()
{
if (text != null)
return text;
DateFormat df = formats[2];
Date date = (Date) getValue();
return df.format(date);
}
}