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
