details:   https://code.openbravo.com/erp/devel/pi/rev/df09f1238c4c
changeset: 15275:df09f1238c4c
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Wed Feb 01 18:16:19 2012 +0100
summary:   related to bug 19596: created getAllowedValues convenience method

details:   https://code.openbravo.com/erp/devel/pi/rev/d3afc86a6e67
changeset: 15276:d3afc86a6e67
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Wed Feb 01 18:18:21 2012 +0100
summary:   fixed bug 19596: Support for list references as selector fields

  Adding valueMap for list references within selectors

diffstat:

 
modules/org.openbravo.client.querylist/src/org/openbravo/client/querylist/QueryListDataSource.java
           |  16 +--
 
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceProperty.java
        |  22 ++++-
 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
 |  44 +++++++++-
 3 files changed, 67 insertions(+), 15 deletions(-)

diffs (170 lines):

diff -r f7124e0c9192 -r d3afc86a6e67 
modules/org.openbravo.client.querylist/src/org/openbravo/client/querylist/QueryListDataSource.java
--- 
a/modules/org.openbravo.client.querylist/src/org/openbravo/client/querylist/QueryListDataSource.java
        Wed Feb 01 16:36:27 2012 +0100
+++ 
b/modules/org.openbravo.client.querylist/src/org/openbravo/client/querylist/QueryListDataSource.java
        Wed Feb 01 18:18:21 2012 +0100
@@ -11,7 +11,7 @@
  * 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-2011 Openbravo SLU
+ * All portions are Copyright (C) 2010-2012 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -28,7 +28,6 @@
 import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -338,17 +337,8 @@
                     + " column " + column.getDisplayExpression()
                     + " is of enum type but does not define sub reference.");
               } else {
-                Set<String> allowedValues = new HashSet<String>();
-
-                final String hql = "select al.searchKey from ADList al"
-                    + " where al.reference=:ref";
-                final Query qry = 
OBDal.getInstance().getSession().createQuery(hql);
-                qry.setParameter("ref", column.getReferenceSearchKey());
-                for (Object o : qry.list()) {
-                  final String value = (String) o;
-                  allowedValues.add(value);
-                }
-
+                Set<String> allowedValues = 
DataSourceProperty.getAllowedValues(column
+                    .getReferenceSearchKey());
                 dsProperty.setAllowedValues(allowedValues);
                 
dsProperty.setValueMap(DataSourceProperty.createValueMap(allowedValues, column
                     .getReferenceSearchKey().getId()));
diff -r f7124e0c9192 -r d3afc86a6e67 
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceProperty.java
--- 
a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceProperty.java
     Wed Feb 01 16:36:27 2012 +0100
+++ 
b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceProperty.java
     Wed Feb 01 18:18:21 2012 +0100
@@ -11,7 +11,7 @@
  * 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-2011 Openbravo SLU 
+ * All portions are Copyright (C) 2010-2012 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -135,6 +135,26 @@
     return dsProperty;
   }
 
+  /**
+   * Gets a Set of allowed values for a List reference
+   * 
+   * @param reference
+   *          List reference
+   * @return
+   */
+  public static Set<String> getAllowedValues(Reference reference) {
+    Set<String> allowedValues = new HashSet<String>();
+
+    final String hql = "select al.searchKey from ADList al" + " where 
al.reference=:ref";
+    final Query qry = OBDal.getInstance().getSession().createQuery(hql);
+    qry.setParameter("ref", reference);
+    for (Object o : qry.list()) {
+      final String value = (String) o;
+      allowedValues.add(value);
+    }
+    return allowedValues;
+  }
+
   public static List<RefListEntry> createValueMap(Set<String> allowedValues, 
String referenceId) {
     final String userLanguageId = 
OBContext.getOBContext().getLanguage().getId();
 
diff -r f7124e0c9192 -r d3afc86a6e67 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
--- 
a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
      Wed Feb 01 16:36:27 2012 +0100
+++ 
b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
      Wed Feb 01 18:18:21 2012 +0100
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2009-2011 Openbravo SLU
+ * All portions are Copyright (C) 2009-2012 Openbravo SLU
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -25,10 +25,13 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.inject.Inject;
 
 import org.apache.log4j.Logger;
+import org.codehaus.jettison.json.JSONException;
+import org.codehaus.jettison.json.JSONObject;
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.Restrictions;
 import org.openbravo.base.model.Entity;
@@ -38,6 +41,7 @@
 import org.openbravo.base.model.domaintype.DomainType;
 import org.openbravo.base.model.domaintype.ForeignKeyDomainType;
 import org.openbravo.base.model.domaintype.PrimitiveDomainType;
+import org.openbravo.base.model.domaintype.StringEnumerateDomainType;
 import org.openbravo.base.util.Check;
 import org.openbravo.client.kernel.BaseTemplateComponent;
 import org.openbravo.client.kernel.Component;
@@ -54,11 +58,14 @@
 import org.openbravo.dal.service.OBDao;
 import org.openbravo.dal.service.OBQuery;
 import org.openbravo.data.Sqlc;
+import org.openbravo.model.ad.datamodel.Column;
 import org.openbravo.model.ad.module.Module;
 import org.openbravo.model.ad.ui.Field;
 import org.openbravo.model.ad.ui.Tab;
 import org.openbravo.service.datasource.DataSource;
 import org.openbravo.service.datasource.DataSourceConstants;
+import org.openbravo.service.datasource.DataSourceProperty;
+import org.openbravo.service.datasource.DataSourceProperty.RefListEntry;
 import org.openbravo.service.datasource.DatasourceField;
 import org.openbravo.service.json.JsonConstants;
 
@@ -816,6 +823,41 @@
       if (domainType instanceof ForeignKeyDomainType) {
         result.add(createLocalSelectorFieldProperty("displayField", 
displayField));
       }
+
+      if (domainType instanceof StringEnumerateDomainType) {
+        Column column = null;
+        if (selectorField.getObuiselSelector().getTable() != null
+            && selectorField.getProperty() != null) {
+          final String entityName = 
selectorField.getObuiselSelector().getTable().getName();
+          final Entity entity = 
ModelProvider.getInstance().getEntity(entityName);
+          final Property property = DalUtil
+              .getPropertyFromPath(entity, selectorField.getProperty());
+          if (property != null) {
+            column = OBDal.getInstance().get(Column.class, 
property.getColumnId());
+          }
+        }
+        if (column != null && column.getReferenceSearchKey() != null) {
+          Set<String> allowedValues = 
DataSourceProperty.getAllowedValues(column
+              .getReferenceSearchKey());
+          List<RefListEntry> entries = 
DataSourceProperty.createValueMap(allowedValues, column
+              .getReferenceSearchKey().getId());
+          JSONObject jsonValueMap = new JSONObject();
+          for (RefListEntry entry : entries) {
+            try {
+              jsonValueMap.put(entry.getValue(), entry.getLabel());
+            } catch (JSONException e) {
+              log.error("Error generating value map for " + name, e);
+            }
+          }
+          LocalSelectorFieldProperty valueMap = new 
LocalSelectorFieldProperty();
+          valueMap.setName("valueMap");
+          valueMap.setValue(jsonValueMap.toString());
+          result.add(valueMap);
+        } else {
+          log.warn("Cannot set value map for selector enum " + name);
+        }
+
+      }
       return result;
     }
 

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to