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