You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ad...@apache.org on 2008/04/01 02:14:02 UTC

svn commit: r643224 - in /incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper: DataHelperImpl.java SDOSimpleDateFormat.java

Author: adrianocrestani
Date: Mon Mar 31 17:14:00 2008
New Revision: 643224

URL: http://svn.apache.org/viewvc?rev=643224&view=rev
Log:
fixing bug described on TUSCANY-1659

Added:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.java
Modified:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java?rev=643224&r1=643223&r2=643224&view=diff
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java Mon Mar 31 17:14:00 2008
@@ -22,7 +22,6 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -54,7 +53,7 @@
       return null;
     }
       
-    SimpleDateFormat format;
+    SDOSimpleDateFormat format;
     Date result = null;
     boolean negative = false;
     String formatString;
@@ -77,7 +76,7 @@
       else
         formatString = new String ("yyyy-MM-dd'T'HH:mm:ss'Z'");
         
-      format = new SimpleDateFormat(formatString);
+      format = new SDOSimpleDateFormat(formatString);
       format.setTimeZone(TimeZone.getTimeZone("UTC"));
       
       result = checkFormat(dateString, format);
@@ -105,7 +104,7 @@
       // Build the formatString based on the contents of dateString
         
       formatString = obtainDurationFormats(durationString);
-      format = new SimpleDateFormat(formatString);
+      format = new SDOSimpleDateFormat(formatString);
       result = checkFormat(durationString, format);
       if (result != null)
       {     
@@ -120,7 +119,7 @@
 
     if (formatString != null)
     {
-      format = new SimpleDateFormat(formatString);
+      format = new SDOSimpleDateFormat(formatString);
       result = checkFormat(dateString, format); 
 
       if (result != null)
@@ -135,12 +134,12 @@
     return null;
   }
   
-  private synchronized Date checkFormat(String dateString, SimpleDateFormat format)
+  private synchronized Date checkFormat(String dateString, SDOSimpleDateFormat format)
   {
     String formatPattern = format.toPattern();
     StringBuffer addedFields = new StringBuffer();
     String fieldsString, parseString;
-    SimpleDateFormat compositeFormat;
+    SDOSimpleDateFormat compositeFormat;
     Date dateValue;
 
     // For certain permissable input strings (e.g. those resulting from toYear
@@ -176,7 +175,7 @@
     
     else
     {
-      compositeFormat = new SimpleDateFormat(fieldsString);
+      compositeFormat = new SDOSimpleDateFormat(fieldsString);
       dateValue = new Date(System.currentTimeMillis());
       parseString = compositeFormat.format(dateValue) + dateString;    
       compositeFormat.applyPattern(fieldsString + formatPattern);
@@ -354,7 +353,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'");
     f.setTimeZone(TimeZone.getTimeZone("UTC"));
     
     return f.format(date);
@@ -367,7 +366,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("'P'yyyy'Y' MM'M' dd'D' 'T' HH'H' mm'M' ss'S.'SSS");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("'P'yyyy'Y' MM'M' dd'D' 'T' HH'H' mm'M' ss'S.'SSS");
     
     return f.format(date);
   }
@@ -379,7 +378,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("HH:mm:ss'.'SSS zz");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("HH:mm:ss'.'SSS zz");
     
     return f.format(date);
   }
@@ -391,7 +390,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("---dd zz");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("---dd zz");
     
     return f.format(date);
   }
@@ -403,7 +402,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("--MM zz");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("--MM zz");
     
     return f.format(date);
   }
@@ -415,7 +414,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("--MM-dd zz");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("--MM-dd zz");
     
     return f.format(date);
   }
@@ -427,7 +426,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("yyyy zz");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("yyyy zz");
     
     return f.format(date); 
   }
@@ -439,7 +438,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM zz");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("yyyy-MM zz");
     
     return f.format(date);
   }
@@ -451,7 +450,7 @@
       return null;
     }
     
-    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd zz");
+    SDOSimpleDateFormat f = new SDOSimpleDateFormat("yyyy-MM-dd zz");
     
     return f.format(date);
   }

Added: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.java?rev=643224&view=auto
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.java (added)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.java Mon Mar 31 17:14:00 2008
@@ -0,0 +1,92 @@
+/**
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tuscany.sdo.helper;
+
+import java.text.DateFormatSymbols;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Fixes the bug reported at JIRA TUSCANY-1659
+ * This class ensures the time zone will be formatted as the abbreviation format.
+ */
+public class SDOSimpleDateFormat extends SimpleDateFormat {
+	
+	private static final long serialVersionUID = 2519728288048681529L;
+	
+	public SDOSimpleDateFormat() {
+		super();
+		setTimeZone(getTimeZone());
+		
+	}
+	
+	public SDOSimpleDateFormat(String pattern) {
+		super(pattern);
+		setTimeZone(getTimeZone());
+		
+	}
+	
+	public SDOSimpleDateFormat(String pattern, Locale locale) {
+		super(pattern, locale);
+		setTimeZone(getTimeZone());
+		
+	}
+	
+	public SDOSimpleDateFormat(String pattern, DateFormatSymbols formatSymbols) {
+		super(pattern, formatSymbols);
+		setTimeZone(getTimeZone());
+		
+	}
+
+	/**
+	 * Overrides the SimpleDateFormat.setTimeZone(TimeZone) method. 
+	 * It checks if the TimeZone to be set is in the abbreviation format. 
+	 * If not, it looks for its abbreviation format and set it.  
+	 * 
+	 * @param timeZone the time zone to be set
+	 * 
+	 */
+	public void setTimeZone(TimeZone timeZone) {
+		
+		if (timeZone.getID().length() != 3) {
+			String[] timeZoneNames = TimeZone.getAvailableIDs(timeZone.getRawOffset());
+			
+			for (int i = 0 ; i < timeZoneNames.length ; i++ ) {
+				String actualTimeZoneName = timeZoneNames[i].trim();
+				
+				// if the time zone name has 3 letters and ends with a T character, 
+				// it's considered to be the abbreviation format
+				if (actualTimeZoneName.length() == 3 && actualTimeZoneName.charAt(actualTimeZoneName.length() - 1) == 'T') {
+					timeZone = TimeZone.getTimeZone(timeZoneNames[i]);
+					break;
+					
+				}
+				
+			}
+			
+		}
+		
+		super.setTimeZone(timeZone);
+		
+	}
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org