details:   /erp/devel/pi/rev/f8a2a4fcfc4b
changeset: 10985:f8a2a4fcfc4b
user:      Gorka Ion Damián <gorkaion.damian <at> openbravo.com>
date:      Thu Mar 03 12:26:23 2011 +0100
summary:   Added OBDao Util class to org.openbravo.dal.service.

details:   /erp/devel/pi/rev/53196cb59edb
changeset: 10986:53196cb59edb
user:      Gorka Ion Damián <gorkaion.damian <at> openbravo.com>
date:      Thu Mar 03 12:27:32 2011 +0100
summary:   Fixed issue 15391. Fixed issue 15387. Get only active fields from 
selector.

diffstat:

 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
 |   16 +-
 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
             |   44 +-
 src/org/openbravo/dal/service/OBDao.java                                       
                                          |  190 ++++++++++
 3 files changed, 230 insertions(+), 20 deletions(-)

diffs (truncated from 353 to 300 lines):

diff -r 89c832df4031 -r 53196cb59edb 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
--- 
a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
  Thu Mar 03 12:06:14 2011 +0100
+++ 
b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
  Thu Mar 03 12:27:32 2011 +0100
@@ -75,7 +75,7 @@
     try {
 
       Selector sel = OBDal.getInstance().get(Selector.class, selectorId);
-      List<SelectorField> fields = sel.getOBUISELSelectorFieldList();
+      List<SelectorField> fields = getActiveSelectorFields(sel);
 
       // Parse the HQL in case that optional filters are required
       String HQL = parseOptionalFilters(parameters, sel, xmlDateFormat);
@@ -171,7 +171,7 @@
 
     StringBuffer defaultExpressionsFilter = new StringBuffer();
     boolean hasFilter = false;
-    for (SelectorField field : sel.getOBUISELSelectorFieldList()) {
+    for (SelectorField field : getActiveSelectorFields(sel)) {
       if (StringUtils.isEmpty(field.getClauseLeftPart())) {
         continue;
       }
@@ -346,7 +346,7 @@
     if (sortByClause.length() == 0) {
       String fieldName = "";
       Long sortNumber = Long.MAX_VALUE;
-      for (SelectorField selField : sel.getOBUISELSelectorFieldList()) {
+      for (SelectorField selField : getActiveSelectorFields(sel)) {
         if (selField.isShowingrid() && selField.getSortno() < sortNumber) {
           sortNumber = selField.getSortno();
           fieldName = selField.getDisplayColumnAlias();
@@ -415,4 +415,14 @@
     }
     return 0;
   }
+
+  private List<SelectorField> getActiveSelectorFields(Selector sel) {
+    OBDal.getInstance().enableActiveFilter();
+    try {
+      return sel.getOBUISELSelectorFieldList();
+    } finally {
+      OBDal.getInstance().disableActiveFilter();
+    }
+  }
+
 }
diff -r 89c832df4031 -r 53196cb59edb 
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
      Thu Mar 03 12:06:14 2011 +0100
+++ 
b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
      Thu Mar 03 12:27:32 2011 +0100
@@ -46,6 +46,8 @@
 import org.openbravo.dal.core.DalUtil;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBDal;
+import org.openbravo.dal.service.OBDao;
+import org.openbravo.dal.service.OBDao.Constraint;
 import org.openbravo.dal.service.OBQuery;
 import org.openbravo.data.Sqlc;
 import org.openbravo.model.ad.module.Module;
@@ -76,6 +78,7 @@
   private static final String CUSTOM_QUERY_DS = 
"F8DD408F2F3A414188668836F84C21AF";
 
   private org.openbravo.userinterface.selector.Selector selector;
+  private List<SelectorField> selectorFields;
   private List<SelectorFieldTrl> selectorFieldTrls;
   private static OutSelectorField IdOutField;
   private static OutSelectorField IdentifierOutField;
@@ -205,7 +208,7 @@
       final Entity entity = getEntity();
       if (entity != null) {
         for (Property prop : entity.getIdentifierProperties()) {
-          for (SelectorField selectorField : 
getSelector().getOBUISELSelectorFieldList()) {
+          for (SelectorField selectorField : getActiveSelectorFields()) {
             if (selectorField.getProperty() != null
                 && selectorField.getProperty().equals(prop.getName())) {
               return selectorField.getProperty();
@@ -227,6 +230,18 @@
     return selector;
   }
 
+  private List<SelectorField> getActiveSelectorFields() {
+    if (selectorFields == null) {
+      OBDal.getInstance().enableActiveFilter();
+      try {
+        selectorFields = getSelector().getOBUISELSelectorFieldList();
+      } finally {
+        OBDal.getInstance().disableActiveFilter();
+      }
+    }
+    return selectorFields;
+  }
+
   public String getColumnName() {
     Check.isTrue(hasParameter(SelectorConstants.PARAM_COLUMN_NAME), "The "
         + SelectorConstants.PARAM_COLUMN_NAME + " parameter must be set");
@@ -326,11 +341,14 @@
     return "null";
   }
 
+  /**
+   * @return true if there is at least one active field shown in grid
+   */
   public String getShowSelectorGrid() {
-    for (SelectorField selectorField : 
getSelector().getOBUISELSelectorFieldList()) {
-      if (selectorField.isShowingrid()) {
-        return Boolean.TRUE.toString();
-      }
+    if (OBDao.getFilteredCriteria(SelectorField.class,
+        new Constraint(SelectorField.PROPERTY_OBUISELSELECTOR, getSelector()),
+        new Constraint(SelectorField.PROPERTY_SHOWINGRID, true)).count() > 0) {
+      return Boolean.TRUE.toString();
     }
     return Boolean.FALSE.toString();
   }
@@ -406,10 +424,7 @@
   public String getExtraSearchFields() {
     final String displayField = getDisplayField();
     final StringBuilder sb = new StringBuilder();
-    for (SelectorField selectorField : 
getSelector().getOBUISELSelectorFieldList()) {
-      if (!selectorField.isActive()) {
-        continue;
-      }
+    for (SelectorField selectorField : getActiveSelectorFields()) {
       String fieldName = getPropertyOrDataSourceField(selectorField);
       if (fieldName.equals(displayField)) {
         continue;
@@ -455,8 +470,7 @@
 
   public List<OutSelectorField> getOutFields() {
     List<OutSelectorField> outFields = new ArrayList<OutSelectorField>();
-    final List<SelectorField> sortedFields = new 
ArrayList<SelectorField>(getSelector()
-        .getOBUISELSelectorFieldList());
+    final List<SelectorField> sortedFields = new 
ArrayList<SelectorField>(getActiveSelectorFields());
 
     final String tabId = getParameter(SelectorConstants.PARAM_TAB_ID);
 
@@ -530,7 +544,7 @@
 
     OBContext.setAdminMode();
     try {
-      for (final SelectorField field : 
getSelector().getOBUISELSelectorFieldList()) {
+      for (final SelectorField field : getActiveSelectorFields()) {
         if (!Boolean.TRUE.equals(field.isOutfield())) {
           continue;
         }
@@ -573,14 +587,10 @@
   private List<LocalSelectorField> getSelectorFields(boolean pickList, boolean 
popupGrid) {
     final List<LocalSelectorField> result = new 
ArrayList<LocalSelectorField>();
 
-    final List<SelectorField> sortedFields = new 
ArrayList<SelectorField>(getSelector()
-        .getOBUISELSelectorFieldList());
+    final List<SelectorField> sortedFields = new 
ArrayList<SelectorField>(getActiveSelectorFields());
     Collections.sort(sortedFields, new SelectorFieldComparator());
 
     for (SelectorField selectorField : sortedFields) {
-      if (!selectorField.isActive()) {
-        continue;
-      }
       if (popupGrid && !selectorField.isShowingrid()) {
         continue;
       }
diff -r 89c832df4031 -r 53196cb59edb src/org/openbravo/dal/service/OBDao.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/dal/service/OBDao.java  Thu Mar 03 12:27:32 2011 +0100
@@ -0,0 +1,190 @@
+package org.openbravo.dal.service;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.hibernate.criterion.Expression;
+import org.openbravo.base.structure.BaseOBObject;
+
+/**
+ * Util class for DAL
+ * 
+ * @author gorkaion
+ * 
+ */
+public class OBDao {
+
+  /**
+   * Generic OBCriteria.
+   * 
+   * @param clazz
+   *          Class (entity).
+   * @param setFilterClient
+   *          If true then only objects from readable clients are returned, if 
false then objects
+   *          from all clients are returned
+   * @param setFilterOrg
+   *          If true then when querying (for example call list()) a filter on 
readable
+   *          organizations is added to the query, if false then this is not 
done
+   * @param constraints
+   *          Constraint. Property, value and operator.
+   * @return An OBCriteria object with the constraints.
+   */
+  public static <T extends BaseOBObject> OBCriteria<T> 
getFilteredCriteria(Class<T> clazz,
+      boolean setFilterClient, boolean setFilterOrg, Constraint... 
constraints) {
+    OBCriteria<T> obc = OBDal.getInstance().createCriteria(clazz);
+    obc.setFilterOnReadableClients(setFilterClient);
+    obc.setFilterOnReadableOrganization(setFilterOrg);
+    addContrainsToCriteria(obc, constraints);
+    return obc;
+  }
+
+  /**
+   * Implementation of {@link OBDao#getFilteredCriteria(Class, boolean, 
boolean, Constraint...)}
+   * enabling the filter by readable clients and organizations.
+   */
+  public static <T extends BaseOBObject> OBCriteria<T> 
getFilteredCriteria(Class<T> clazz,
+      Constraint... constraints) {
+    return getFilteredCriteria(clazz, true, true, constraints);
+  }
+
+  /**
+   * Returns a List object with the instances of the given OBObject Class 
filtered by the given
+   * array of constraints. The default client and organization filters can be 
disabled using the
+   * corresponding boolean parameters.
+   * 
+   * @param clazz
+   *          Class (entity).
+   * @param setFilterClient
+   *          If true then only objects from readable clients are returned, if 
false then objects
+   *          from all clients are returned
+   * @param setFilterOrg
+   *          If true then when querying (for example call list()) a filter on 
readable
+   *          organizations is added to the query, if false then this is not 
done
+   * @param constraints
+   *          Constraint. Property, value and operator.
+   * @return An List object with the objects of Class clazz filtered by the 
given constraints.
+   */
+  public static <T extends BaseOBObject> List<T> getAllInstances(Class<T> 
clazz,
+      boolean setClientFilter, boolean setOrganizationFilter, Constraint... 
constraints) {
+    return getFilteredCriteria(clazz, setClientFilter, setOrganizationFilter, 
constraints).list();
+  }
+
+  /**
+   * Implementation of {@link OBDao#getAllInstances(Class, boolean, boolean, 
Constraint...)}
+   * enabling the filter by readable clients and organizations.
+   */
+  public static <T extends BaseOBObject> List<T> getAllInstances(Class<T> 
clazz,
+      Constraint... constraints) {
+    return getFilteredCriteria(clazz, true, true, constraints).list();
+  }
+
+  /**
+   * Returns the first object of the given OBObject Class filtered by the 
given array of
+   * constraints. The default client and organization filters can be disabled 
using the
+   * corresponding boolean parameters.
+   * 
+   * @param clazz
+   *          Class (entity).
+   * @param setFilterClient
+   *          If true then only objects from readable clients are returned, if 
false then objects
+   *          from all clients are returned
+   * @param setFilterOrg
+   *          If true then when querying (for example call list()) a filter on 
readable
+   *          organizations is added to the query, if false then this is not 
done
+   * @param constraints
+   *          Constraint. Property, value and operator.
+   * @return An List object with the objects of Class clazz filtered by the 
given constraints.
+   */
+  public static <T extends BaseOBObject> T getOneInstance(Class<T> clazz, 
boolean setClientFilter,
+      boolean setOrganizationFilter, Constraint... constraints) {
+    List<T> criteria = getAllInstances(clazz, setClientFilter, 
setOrganizationFilter, constraints);
+    if (criteria.isEmpty()) {
+      return null;
+    }
+    return criteria.get(0);
+  }
+
+  /**
+   * Implementation of {@link OBDao#getOneInstance(Class, boolean, boolean, 
Constraint...)} enabling
+   * the filter by readable clients and organizations.
+   */
+  public static <T extends BaseOBObject> T getOneInstance(Class<T> clazz, 
Constraint... constraints) {
+    return getOneInstance(clazz, true, true, constraints);
+  }
+
+  public static <T extends BaseOBObject> void 
addContrainsToCriteria(OBCriteria<T> obc,
+      Constraint... constraints) {
+    for (Constraint constraint : constraints) {
+      if (constraint.getValue() == null && 
Operator.EQUAL_OPERATOR.equals(constraint.getOperator())) {
+        obc.add(Expression.isNull(constraint.getProperty()));
+      } else if (constraint.getValue() == null
+          && Operator.NOT_EQUAL_OPERATOR.equals(constraint.getOperator())) {
+        obc.add(Expression.isNotNull(constraint.getProperty()));
+      } else if (Operator.EQUAL_OPERATOR.equals(constraint.getOperator())) {
+        obc.add(Expression.eq(constraint.getProperty(), 
constraint.getValue()));
+      } else if (Operator.NOT_EQUAL_OPERATOR.equals(constraint.getOperator())) 
{
+        obc.add(Expression.ne(constraint.getProperty(), 
constraint.getValue()));
+      } else if (Operator.LESS_OPERATOR.equals(constraint.getOperator())) {
+        obc.add(Expression.lt(constraint.getProperty(), 
constraint.getValue()));
+      } else if (Operator.GREATER_OPERATOR.equals(constraint.getOperator())) {
+        obc.add(Expression.gt(constraint.getProperty(), 
constraint.getValue()));
+      } else if 
(Operator.LESS_EQUAL_OPERATOR.equals(constraint.getOperator())) {
+        obc.add(Expression.le(constraint.getProperty(), 
constraint.getValue()));
+      } else if 
(Operator.GREATER_EQUAL_OPERATOR.equals(constraint.getOperator())) {
+        obc.add(Expression.ge(constraint.getProperty(), 
constraint.getValue()));
+      } else if (Operator.IN_OPERATOR.equals(constraint.getOperator())) {
+        Object value = constraint.getValue();
+        if (value instanceof Collection) {

------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in 
Real-Time with Splunk. Collect, index and harness all the fast moving IT data 
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business 
insights. http://p.sf.net/sfu/splunk-dev2dev 
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to