details:   /erp/devel/pi/rev/c11b81a99695
changeset: 9388:c11b81a99695
user:      Iván Perdomo <ivan.perdomo <at> openbravo.com>
date:      Fri Dec 24 12:41:10 2010 +0100
summary:   Refactored Parameter handling
- Added utility class (ParameterUtils)
- Change ParameterActionHandler to use this new class

details:   /erp/devel/pi/rev/be1eb4ed1b6a
changeset: 9389:be1eb4ed1b6a
user:      Iván Perdomo <ivan.perdomo <at> openbravo.com>
date:      Fri Dec 24 12:46:31 2010 +0100
summary:   Fixes handling of default parameter values
- Added support for default values on new widget instances
- Added setDbInstanceId method to be an a way to sync calls

details:   /erp/devel/pi/rev/0c884939d01f
changeset: 9390:0c884939d01f
user:      Iván Perdomo <ivan.perdomo <at> openbravo.com>
date:      Fri Dec 24 12:47:58 2010 +0100
summary:   Fixes synchronization problem when adding new widget
- Fixes JSLint warnings, wrong like break
- Sync the call to fetchData through setDbInstanceId

diffstat:

 
modules/org.openbravo.client.application/src/org/openbravo/client/application/ParameterUtils.java
          |  84 ++++++++++
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/ParametersActionHandler.java
 |  37 +----
 
modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoActionHandler.java
              |  23 ++
 
modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-myopenbravo.js
                       |   2 +-
 
modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-widget.js 
                           |   6 +-
 
modules/org.openbravo.client.querylist/web/org.openbravo.client.querylist/js/ob-querylist-widget.js
        |  21 +-
 6 files changed, 129 insertions(+), 44 deletions(-)

diffs (278 lines):

diff -r b29165c217a8 -r 0c884939d01f 
modules/org.openbravo.client.application/src/org/openbravo/client/application/ParameterUtils.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/ParameterUtils.java
 Fri Dec 24 12:47:58 2010 +0100
@@ -0,0 +1,84 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2010 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+ */
+package org.openbravo.client.application;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.log4j.Logger;
+import org.codehaus.jettison.json.JSONObject;
+import org.openbravo.base.model.ModelProvider;
+import org.openbravo.base.model.domaintype.BigDecimalDomainType;
+import org.openbravo.base.model.domaintype.DateDomainType;
+import org.openbravo.base.model.domaintype.DomainType;
+import org.openbravo.base.model.domaintype.LongDomainType;
+import org.openbravo.base.model.domaintype.StringDomainType;
+import org.openbravo.base.util.Check;
+
+/**
+ * Utility class for Parameters handling
+ * 
+ * @author iperdomo
+ */
+public class ParameterUtils {
+  private static Logger log = Logger.getLogger(ParameterUtils.class);
+
+  public static void setParameterValue(Parameter parameter, ParameterValue 
parameterValue,
+      JSONObject requestValue) {
+    try {
+      setValue(parameterValue, getParameterDomainType(parameter), 
requestValue.getString("value"));
+    } catch (Exception e) {
+      log.error("Error trying to set value for paramter: "
+          + parameterValue.getParameter().getName(), e);
+    }
+  }
+
+  public static void setDefaultParameterValue(ParameterValue value) {
+    Check.isNotNull(value, "Default value is based on Parameter defintion");
+    setValue(value, getParameterDomainType(value.getParameter()), 
value.getParameter()
+        .getDefaultValue());
+  }
+
+  private static void setValue(ParameterValue parameterValue, DomainType 
domainType,
+      String stringValue) {
+    final SimpleDateFormat xmlDateFormat = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+    try {
+      if (domainType.getClass().equals(StringDomainType.class)) {
+        parameterValue.setValueString(stringValue);
+      } else if (domainType.getClass().equals(DateDomainType.class)) {
+        Date date = xmlDateFormat.parse(stringValue);
+        parameterValue.setValueDate(date);
+      } else if 
(domainType.getClass().getSuperclass().equals(BigDecimalDomainType.class)
+          || domainType.getClass().equals(LongDomainType.class)) {
+        parameterValue.setValueNumber(new BigDecimal(stringValue));
+      } else { // default
+        parameterValue.setValueString(stringValue);
+      }
+    } catch (Exception e) {
+      log.error("Error trying to set value for paramter: "
+          + parameterValue.getParameter().getName(), e);
+    }
+  }
+
+  private static DomainType getParameterDomainType(Parameter parameter) {
+    return 
ModelProvider.getInstance().getReference(parameter.getReference().getId())
+        .getDomainType();
+  }
+}
diff -r b29165c217a8 -r 0c884939d01f 
modules/org.openbravo.client.application/src/org/openbravo/client/application/ParametersActionHandler.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/ParametersActionHandler.java
        Fri Dec 24 12:25:53 2010 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/ParametersActionHandler.java
        Fri Dec 24 12:47:58 2010 +0100
@@ -18,9 +18,6 @@
  */
 package org.openbravo.client.application;
 
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.Map;
 
 import javax.enterprise.context.ApplicationScoped;
@@ -28,12 +25,6 @@
 import org.apache.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONObject;
-import org.openbravo.base.model.ModelProvider;
-import org.openbravo.base.model.domaintype.BigDecimalDomainType;
-import org.openbravo.base.model.domaintype.DateDomainType;
-import org.openbravo.base.model.domaintype.DomainType;
-import org.openbravo.base.model.domaintype.LongDomainType;
-import org.openbravo.base.model.domaintype.StringDomainType;
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.structure.BaseOBObject;
 import org.openbravo.client.kernel.BaseActionHandler;
@@ -131,10 +122,10 @@
           value = OBProvider.getInstance().get(ParameterValue.class);
           value.setParameter(param);
           value.set(dbFilterProperty, filterObject);
-          setParameterValue(param, value, p);
+          ParameterUtils.setParameterValue(param, value, p);
         } else {
           value = obq.list().get(0);
-          setParameterValue(param, value, p);
+          ParameterUtils.setParameterValue(param, value, p);
         }
         OBDal.getInstance().save(value);
       }
@@ -149,30 +140,6 @@
     }
   }
 
-  private void setParameterValue(Parameter parameter, ParameterValue 
parameterValue,
-      JSONObject requestValue) {
-    try {
-      final DomainType domainType = ModelProvider.getInstance().getReference(
-          parameter.getReference().getId()).getDomainType();
-      final String stringValue = requestValue.getString("value");
-      final SimpleDateFormat xmlDateFormat = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
-
-      if (domainType.getClass().equals(StringDomainType.class)) {
-        parameterValue.setValueString(stringValue);
-      } else if (domainType.getClass().equals(DateDomainType.class)) {
-        Date date = xmlDateFormat.parse(stringValue);
-        parameterValue.setValueDate(date);
-      } else if 
(domainType.getClass().getSuperclass().equals(BigDecimalDomainType.class)
-          || domainType.getClass().equals(LongDomainType.class)) {
-        parameterValue.setValueNumber(new BigDecimal(stringValue));
-      } else { // default
-        parameterValue.setValueString(stringValue);
-      }
-    } catch (Exception e) {
-      log.error("Error trying to set value for paramter: " + 
parameter.getName(), e);
-    }
-  }
-
   private Map<String, String> getMessge(String type, String message) {
     OBError m = new OBError();
     m.setTitle("");
diff -r b29165c217a8 -r 0c884939d01f 
modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoActionHandler.java
--- 
a/modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoActionHandler.java
     Fri Dec 24 12:25:53 2010 +0100
+++ 
b/modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoActionHandler.java
     Fri Dec 24 12:47:58 2010 +0100
@@ -32,6 +32,9 @@
 import org.openbravo.base.exception.OBException;
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.client.application.Parameter;
+import org.openbravo.client.application.ParameterValue;
+import org.openbravo.client.application.ParameterUtils;
 import org.openbravo.client.kernel.BaseActionHandler;
 import org.openbravo.client.kernel.RequestContext;
 import org.openbravo.dal.core.OBContext;
@@ -252,6 +255,9 @@
         widget.put("dbInstanceId", newWidgetInstance.getId());
         log.debug(">> new widget added: " + newWidgetInstance.getId());
         hasAddedInstances = true;
+
+        // Process parameter values
+        processParameters(widget, newWidgetInstance);
       }
       if (isOpenbravoTypeInstance && 
maxOpenbravoTypeInstanceRow[newColNum.intValue()] < newRowNum) {
         maxOpenbravoTypeInstanceRow[newColNum.intValue()] = newRowNum;
@@ -298,4 +304,21 @@
     }
   }
 
+  private void processParameters(JSONObject widget, WidgetInstance 
widgetInstance)
+      throws JSONException {
+    for (Parameter p : widgetInstance.getWidgetClass()
+        .getOBUIAPPParameterEMObkmoWidgetClassIDList()) {
+
+      if (p.getDefaultValue() == null) {
+        continue;
+      }
+
+      final ParameterValue value = 
OBProvider.getInstance().get(ParameterValue.class);
+      value.setParameter(p);
+      value.setObkmoWidgetInstance(widgetInstance);
+      ParameterUtils.setDefaultParameterValue(value);
+      OBDal.getInstance().save(value);
+    }
+    OBDal.getInstance().flush();
+  }
 }
diff -r b29165c217a8 -r 0c884939d01f 
modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-myopenbravo.js
--- 
a/modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-myopenbravo.js
      Fri Dec 24 12:25:53 2010 +0100
+++ 
b/modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-myopenbravo.js
      Fri Dec 24 12:47:58 2010 +0100
@@ -618,7 +618,7 @@
         isc.isAn.Array(responseWidgets)) {
           for (k = 0; k < responseWidgets.length; k++) {
             if (widget.isSameWidget(responseWidgets[k], true)) {
-              widget.dbInstanceId = responseWidgets[k].dbInstanceId;
+              widget.setDbInstanceId(responseWidgets[k].dbInstanceId);
               break;
             }
           }
diff -r b29165c217a8 -r 0c884939d01f 
modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-widget.js
--- 
a/modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-widget.js
   Fri Dec 24 12:25:53 2010 +0100
+++ 
b/modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-widget.js
   Fri Dec 24 12:47:58 2010 +0100
@@ -428,7 +428,11 @@
     
     return this.ID === widget.ID;
   },
-  
+
+  setDbInstanceId: function(instanceId) {
+    this.dbInstanceId = instanceId;
+  },
+
   saveParameters: function(){
     var post, i, param, paramObj, fieldDef;
     if (isc.isA.emptyObject(this.parameters)) {
diff -r b29165c217a8 -r 0c884939d01f 
modules/org.openbravo.client.querylist/web/org.openbravo.client.querylist/js/ob-querylist-widget.js
--- 
a/modules/org.openbravo.client.querylist/web/org.openbravo.client.querylist/js/ob-querylist-widget.js
       Fri Dec 24 12:25:53 2010 +0100
+++ 
b/modules/org.openbravo.client.querylist/web/org.openbravo.client.querylist/js/ob-querylist-widget.js
       Fri Dec 24 12:47:58 2010 +0100
@@ -37,13 +37,16 @@
     var currentHeight = this.getHeight(), 
         //currentBodyHeight = this.body.getHeight(),
         headerHeight = this.headerDefaults.height,
-        newGridHeight = this.grid.headerHeight
-                      + (this.grid.cellHeight * (this.rowsNumber ? 
this.rowsNumber : 10))
-                      + this.grid.summaryRowHeight
-                      + 2;
+        newGridHeight = this.grid.headerHeight +
+                      (this.grid.cellHeight * (this.rowsNumber ? 
this.rowsNumber : 10)) +
+                      this.grid.summaryRowHeight + 2;
 
     this.setHeight(headerHeight + newGridHeight + 13);
-    //this.body.setHeight(newBodyHeight);
+  },
+
+  setDbInstanceId: function (instanceId) {
+    this.Super('setDbInstanceId', instanceId);
+    this.grid.fetchData();
   },
 
   createWindowContents: function(){
@@ -102,7 +105,7 @@
   canReorderFields: false,
   canFreezeFields: false,
   canGroupBy: false,
-  autoFetchData: true,
+  autoFetchData: false,
   canAutoFitFields: false,
   showGridSummary: true,
   
@@ -118,7 +121,11 @@
     if (ds) {
       ds.fields = this.widget.fields;
       this.dataSource = ds;
-      this.filterData();
+
+      if(this.widget && this.widget.dbInstanceId) {
+        this.filterData();
+      }
+
     }
   },
   

------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to