We could use commons-lang/DateUtils.parse, which accepts an array of 
patterns, and tries them in order.

vmassol (SVN) wrote:
> Author: vmassol
> Date: 2008-02-06 12:47:28 +0100 (Wed, 06 Feb 2008)
> New Revision: 7312
> 
> Modified:
>    
> xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/classes/DateClass.java
> Log:
> Better error reporting. We should never output stack trace for non fatal 
> errors.
> 
> 
> 
> Modified: 
> xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/classes/DateClass.java
> ===================================================================
> --- 
> xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/classes/DateClass.java
>    2008-02-06 11:16:03 UTC (rev 7311)
> +++ 
> xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/objects/classes/DateClass.java
>    2008-02-06 11:47:28 UTC (rev 7312)
> @@ -31,6 +31,8 @@
>  import com.xpn.xwiki.web.XWikiMessageTool;
>  import org.apache.ecs.xhtml.input;
>  import org.apache.ecs.xhtml.link;
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
>  import org.dom4j.Element;
>  
>  import java.text.ParseException;
> @@ -39,9 +41,12 @@
>  import java.util.Locale;
>  import java.util.Map;
>  
> -public class DateClass  extends PropertyClass {
> +public class DateClass  extends PropertyClass
> +{
> +    private static final Log LOG = LogFactory.getLog(DateClass.class);
>  
> -    public DateClass(PropertyMetaClass wclass) {
> +    public DateClass(PropertyMetaClass wclass)
> +    {
>          super("date", "Date", wclass);
>          setSize(20);
>          setDateFormat("dd/MM/yyyy HH:mm:ss");
> @@ -125,16 +130,23 @@
>              return property;
>          }
>  
> +        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
>          try {
> -            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 
> HH:mm:ss.S");
>              property.setValue(sdf.parse(value));
>          } catch (ParseException e) {
> +            SimpleDateFormat sdf2 = new SimpleDateFormat("EEE MMM d HH:mm:ss 
> z yyyy", Locale.US);
>              try {
> -                e.printStackTrace();
> -                SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d 
> HH:mm:ss z yyyy", Locale.US);
> -                property.setValue(sdf.parse(value));
> +                if (LOG.isWarnEnabled()) {
> +                    LOG.warn("Failed to parse date [" + value + "] using 
> format ["
> +                        + sdf.toString() + "]. Trying again with format ["
> +                        + sdf2.toString() + "]");
> +                }
> +                property.setValue(sdf2.parse(value));
>              } catch (ParseException e2) {
> -                e2.printStackTrace();
> +                if (LOG.isWarnEnabled()) {
> +                    LOG.warn("Failed to parse date [" + value + "] using 
> format ["
> +                        + sdf2.toString() + "]. Defaulting to the current 
> date.");
> +                }
>                  property.setValue(new Date());
>              }
>          }
> 

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to