Hans,

This commit disables the user-selected time zone. Please re-think what you're 
doing.

-Adrian

--- On Fri, 8/14/09, [email protected] <[email protected]> wrote:

> From: [email protected] <[email protected]>
> Subject: svn commit: r804104 - in /ofbiz/trunk/framework: 
> base/src/org/ofbiz/base/util/template/ entity/src/org/ofbiz/entity/jdbc/ 
> widget/src/org/ofbiz/widget/form/
> To: [email protected]
> Date: Friday, August 14, 2009, 12:42 AM
> Author: hansbak
> Date: Fri Aug 14 07:42:30 2009
> New Revision: 804104
> 
> URL: http://svn.apache.org/viewvc?rev=804104&view=rev
> Log:
> adjustment of storing/retrieving timestamp in the proper
> timezone. In the database the time zone is always GMT
> 
> Modified:
>    
> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java
>    
> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SQLProcessor.java
>    
> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SqlJdbcUtil.java
>    
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
> 
> Modified:
> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java?rev=804104&r1=804103&r2=804104&view=diff
> ==============================================================================
> ---
> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java
> (original)
> +++
> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java
> Fri Aug 14 07:42:30 2009
> @@ -78,7 +78,7 @@
>  
>      public static Configuration
> makeConfiguration(BeansWrapper wrapper) {
>          Configuration
> newConfig = new Configuration();
> -
> +       
>      
>    newConfig.setObjectWrapper(wrapper);
>      
>    newConfig.setSharedVariable("Static",
> wrapper.getStaticModels());
>      
>    newConfig.setLocalizedLookup(false);
> @@ -218,11 +218,11 @@
>          }
>      
>    env.setLocale(locale);
>  
> -        TimeZone timeZone = (TimeZone)
> context.get("timeZone");
> -        if (timeZone == null) {
> -            timeZone =
> TimeZone.getDefault();
> -        }
> -        env.setTimeZone(timeZone);
> +//        TimeZone timeZone =
> (TimeZone) context.get("timeZone");
> +//        if (timeZone == null) {
> +//            timeZone =
> TimeZone.getDefault();
> +//        }
> +//        env.setTimeZone(timeZone);
>      }
>  
>      public static Configuration
> getDefaultOfbizConfig() {
> 
> Modified:
> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SQLProcessor.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SQLProcessor.java?rev=804104&r1=804103&r2=804104&view=diff
> ==============================================================================
> ---
> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SQLProcessor.java
> (original)
> +++
> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SQLProcessor.java
> Fri Aug 14 07:42:30 2009
> @@ -27,10 +27,15 @@
>  import java.util.ArrayList;
>  import java.util.List;
>  import java.util.Map;
> +import java.util.TimeZone;
>  
>  import org.ofbiz.base.util.Debug;
> +import org.ofbiz.base.util.UtilMisc;
> +import org.ofbiz.base.util.UtilValidate;
>  import org.ofbiz.entity.GenericDataSourceException;
> +import org.ofbiz.entity.GenericDelegator;
>  import org.ofbiz.entity.GenericEntityException;
> +import org.ofbiz.entity.GenericValue;
>  import org.ofbiz.entity.config.DatasourceInfo;
>  import org.ofbiz.entity.config.EntityConfigUtil;
>  import
> org.ofbiz.entity.transaction.GenericTransactionException;
> @@ -578,6 +583,27 @@
>       */
>      public void
> setValue(java.sql.Timestamp field) throws SQLException {
>          if (field != null)
> {
> +           
> GenericDelegator
> delegator=GenericDelegator.getGenericDelegator("default");
> +            String
> userId=delegator.getCurrentUserIdentifier();
> +            try {
> +           
>     if(userId!=null){
> +           
>         String
> timeZoneId=TimeZone.getDefault().getID();
> +           
>         GenericValue
> userLogin=delegator.findByPrimaryKey("UserLogin",
> UtilMisc.toMap("userLoginId", userId));
> +           
>         if(userLogin!=null){
> +           
>            
> if(UtilValidate.isNotEmpty(userLogin.get("lastTimeZone"))){
> +           
>            
>    
> timeZoneId=userLogin.getString("lastTimeZone");   
> 
> +           
>            
>    
> SqlJdbcUtil.setLastTimeZoneId(timeZoneId);
> +           
>             }
> +           
>         }   
>     
> +           
>             if
> (field instanceof java.sql.Timestamp) { 
> +           
>            
>     String
> dateField=SqlJdbcUtil.convertTimeZone(field.toString(),timeZoneId,
> "GMT");
> +           
>            
>     field=
> java.sql.Timestamp.valueOf(dateField);
> +           
>             }
> +           
>     }
> +            }
> catch (GenericEntityException e) {
> +           
>     // TODO Auto-generated catch block
> +           
>     e.printStackTrace();
> +            }
> 
>          
>    _ps.setTimestamp(_ind, field);
>          } else {
>          
>    _ps.setNull(_ind, Types.TIMESTAMP);
> 
> Modified:
> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SqlJdbcUtil.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SqlJdbcUtil.java?rev=804104&r1=804103&r2=804104&view=diff
> ==============================================================================
> ---
> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SqlJdbcUtil.java
> (original)
> +++
> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/SqlJdbcUtil.java
> Fri Aug 14 07:42:30 2009
> @@ -30,11 +30,15 @@
>  import java.sql.ResultSetMetaData;
>  import java.sql.SQLException;
>  import java.sql.Clob;
> +import java.text.ParseException;
> +import java.text.SimpleDateFormat;
>  import java.util.Collection;
> +import java.util.Date;
>  import java.util.Iterator;
>  import java.util.List;
>  import java.util.Map;
>  import java.util.Set;
> +import java.util.TimeZone;
>  import java.util.TreeSet;
>  
>  import javax.sql.rowset.serial.SerialBlob;
> @@ -44,6 +48,7 @@
>  
>  import org.ofbiz.base.util.Debug;
>  import org.ofbiz.base.util.ObjectType;
> +import org.ofbiz.base.util.UtilDateTime;
>  import org.ofbiz.base.util.UtilGenerics;
>  import org.ofbiz.base.util.UtilValidate;
>  import org.ofbiz.entity.GenericDataSourceException;
> @@ -486,7 +491,35 @@
>              }
>          }
>      }
> -
> +    
> +    public static String
> lastTimeZoneId=TimeZone.getDefault().getID();
> +    public static void setLastTimeZoneId(String
> timeZoneId){
> +       
> lastTimeZoneId=timeZoneId;
> +    }
> +    public static String getLastTimeZoneId(){
> +        return lastTimeZoneId;
> +    }
> +    public static String convertTimeZone(String
> time, String sourceTZ, String destTZ){
> +        SimpleDateFormat sdf
> = new SimpleDateFormat(UtilDateTime.DATE_TIME_FORMAT);
> +        Date
> specifiedTime=null;
> +        try {
> +           
> if (sourceTZ != null)
> +           
>    
> sdf.setTimeZone(TimeZone.getTimeZone(sourceTZ));
> +           
> else
> +           
>     sdf.setTimeZone(TimeZone.getDefault()); 
> +           
> specifiedTime = sdf.parse(time);
> +        
> +           
> if (destTZ != null)
> +           
>    
> sdf.setTimeZone(TimeZone.getTimeZone(destTZ));
> +           
> else
> +           
>     sdf.setTimeZone(TimeZone.getDefault());
> +        } catch
> (ParseException e) {
> +           
> // TODO Auto-generated catch block
> +           
> Debug.logError("Error Convert time zone: "+e.getMessage(),
> module);
> +        }
> +        return
> sdf.format(specifiedTime);
> +    }
> +    
>      public static void
> getValue(ResultSet rs, int ind, ModelField curField,
> GenericEntity entity, ModelFieldTypeReader
> modelFieldTypeReader) throws GenericEntityException {
>          ModelFieldType mft =
> modelFieldTypeReader.getModelFieldType(curField.getType());
>  
> @@ -539,7 +572,12 @@
>                
>      break;
>  
>              
>    case 2:
> -               
>     entity.dangerousSetNoCheckButFast(curField,
> rs.getTimestamp(ind));
> +               
>     Object value=rs.getTimestamp(ind);
> +               
>     if (value!=null&&value instanceof
> java.sql.Timestamp) { 
> +               
>         String
> dateField=convertTimeZone(value.toString(),"GMT",lastTimeZoneId);
> +               
>         value=
> java.sql.Timestamp.valueOf(dateField);
> +               
>     }
> +               
>    
> entity.dangerousSetNoCheckButFast(curField,value);
>                
>      break;
>  
>              
>    case 3:
> 
> Modified:
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=804104&r1=804103&r2=804104&view=diff
> ==============================================================================
> ---
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
> (original)
> +++
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
> Fri Aug 14 07:42:30 2009
> @@ -22,6 +22,7 @@
>  import java.math.BigDecimal;
>  import java.text.DateFormat;
>  import java.text.NumberFormat;
> +import java.text.SimpleDateFormat;
>  import java.util.HashMap;
>  import java.util.LinkedList;
>  import java.util.List;
> @@ -675,7 +676,8 @@
>          if (locale == null)
> locale = Locale.getDefault();
>          TimeZone timeZone =
> (TimeZone) context.get("timeZone");
>          if (timeZone ==
> null) timeZone = TimeZone.getDefault();
> -
> +        
> +        SimpleDateFormat sdf=new
> SimpleDateFormat(UtilDateTime.DATE_TIME_FORMAT);
>          String returnValue;
>  
>          // if
> useRequestParameters is TRUE then parameters will always be
> used, if FALSE then parameters will never be used
> @@ -736,27 +738,32 @@
>              
>    }
>              }
>  
> -            if (retVal !=
> null) {
> -                //
> format string based on the user's locale and time zone
> -                if
> (retVal instanceof Double || retVal instanceof Float ||
> retVal instanceof BigDecimal) {
> -               
>     NumberFormat nf =
> NumberFormat.getInstance(locale);
> -               
>     nf.setMaximumFractionDigits(10);
> -               
>     returnValue = nf.format(retVal);
> -                }
> else if (retVal instanceof java.sql.Date) {
> -               
>     DateFormat df =
> UtilDateTime.toDateFormat(UtilDateTime.DATE_FORMAT,
> timeZone, null);
> -               
>     returnValue = df.format((java.util.Date)
> retVal);
> -                }
> else if (retVal instanceof java.sql.Time) {
> -               
>     DateFormat df =
> UtilDateTime.toTimeFormat(UtilDateTime.TIME_FORMAT,
> timeZone, null);
> -               
>     returnValue = df.format((java.util.Date)
> retVal);
> -                }
> else if (retVal instanceof java.sql.Timestamp) {
> -               
>     DateFormat df =
> UtilDateTime.toDateTimeFormat(UtilDateTime.DATE_TIME_FORMAT,
> timeZone, null);
> -               
>     returnValue = df.format((java.util.Date)
> retVal);
> -                }
> else if (retVal instanceof java.util.Date) {
> -               
>     DateFormat df =
> UtilDateTime.toDateTimeFormat("EEE MMM dd hh:mm:ss z yyyy",
> timeZone, null);
> -               
>     returnValue = df.format((java.util.Date)
> retVal);
> -                }
> else {
> -               
>     returnValue = retVal.toString();
> -                }
> +            if (retVal !=
> null) { 
> +           
>     // format string based on the user's
> locale and time zone
> +           
>     if (retVal instanceof Double || retVal
> instanceof Float || retVal instanceof BigDecimal) {
> +           
>         NumberFormat nf =
> NumberFormat.getInstance(locale); 
> +           
>        
> nf.setMaximumFractionDigits(10);
> +           
>         returnValue =
> nf.format(retVal);
> +           
>     } else if (retVal instanceof
> java.sql.Date) {
> +//             
>     DateFormat df =
> UtilDateTime.toDateFormat(UtilDateTime.DATE_FORMAT,
> timeZone, null);
> +//             
>     returnValue = df.format((java.util.Date)
> retVal);
> +           
>        
> returnValue=sdf.format((java.util.Date)retVal);
> +           
>     } else if (retVal instanceof
> java.sql.Time) {
> +//             
>     DateFormat df =
> UtilDateTime.toTimeFormat(UtilDateTime.TIME_FORMAT,
> timeZone, null);
> +//             
>     returnValue = df.format((java.util.Date)
> retVal);
> +           
>        
> returnValue=sdf.format((java.util.Date)retVal);
> +           
>     } else if (retVal instanceof
> java.sql.Timestamp) { 
> +//             
>     DateFormat df =
> UtilDateTime.toTimeFormat(UtilDateTime.TIME_FORMAT,
> timeZone, null);
> +//             
>     returnValue = df.format((java.util.Date)
> retVal);
> +           
>        
> returnValue=sdf.format((java.util.Date)retVal);
> +           
>     } else if (retVal instanceof
> java.util.Date) {
> +//             
>     DateFormat df =
> UtilDateTime.toDateTimeFormat("EEE MMM dd hh:mm:ss z yyyy",
> timeZone, null);
> +//             
>     returnValue = df.format((java.util.Date)
> retVal);
> +           
>         SimpleDateFormat
> sdfz=new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy");
> +           
>        
> returnValue=sdfz.format((java.util.Date)retVal);
> +           
>     } else {
> +           
>         returnValue =
> retVal.toString();
> +           
>     }
>              
>    return returnValue; // do not encode date
> and number type fields
>              } else
> {
>              
>    returnValue = defaultValue;
> 
> 
> 



Reply via email to