details: /erp/devel/pi/rev/33fa8bd2fa96
changeset: 11735:33fa8bd2fa96
user: Martin Taal <martin.taal <at> openbravo.com>
date: Wed Apr 27 16:41:09 2011 +0200
summary: Fixes issue 16465: Combos on new ui doesn't show the record
identifiers
diffstat:
modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
| 22 ++-
src/org/openbravo/base/model/Property.java
| 50 ++++++++-
src/org/openbravo/base/model/RefTable.hbm.xml
| 2 +
src/org/openbravo/base/model/RefTable.java
| 10 ++
4 files changed, 68 insertions(+), 16 deletions(-)
diffs (183 lines):
diff -r d74c722d6154 -r 33fa8bd2fa96
modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
---
a/modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
Wed Apr 27 16:11:59 2011 +0200
+++
b/modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
Wed Apr 27 16:41:09 2011 +0200
@@ -79,7 +79,7 @@
for (String key : dataInstance.keySet()) {
final Object value = dataInstance.get(key);
if (value instanceof BaseOBObject) {
- addBaseOBObject(jsonObject, key, null, (BaseOBObject) value);
+ addBaseOBObject(jsonObject, null, key, null, (BaseOBObject) value);
} else {
// TODO: format!
jsonObject.put(key, convertPrimitiveValue(value));
@@ -149,8 +149,8 @@
// TODO: format!
jsonObject.put(property.getName(), convertPrimitiveValue(property,
value));
} else {
- addBaseOBObject(jsonObject, property.getName(),
property.getReferencedProperty(),
- (BaseOBObject) value);
+ addBaseOBObject(jsonObject, property, property.getName(),
+ property.getReferencedProperty(), (BaseOBObject) value);
}
} else {
jsonObject.put(property.getName(), JSONObject.NULL);
@@ -163,8 +163,9 @@
}
final Object value = DalUtil.getValueFromPath(bob, additionalProperty);
if (value instanceof BaseOBObject) {
- addBaseOBObject(jsonObject, additionalProperty,
getPropertyFromPath(bob,
- additionalProperty).getReferencedProperty(), (BaseOBObject)
value);
+ final Property additonalPropertyObject = getPropertyFromPath(bob,
additionalProperty);
+ addBaseOBObject(jsonObject, additonalPropertyObject,
additionalProperty,
+ additonalPropertyObject.getReferencedProperty(), (BaseOBObject)
value);
} else {
final Property property = DalUtil
.getPropertyFromPath(bob.getEntity(), additionalProperty);
@@ -210,8 +211,8 @@
return result;
}
- private void addBaseOBObject(JSONObject jsonObject, String propertyName,
- Property referencedProperty, BaseOBObject obObject) throws JSONException
{
+ private void addBaseOBObject(JSONObject jsonObject, Property
referencingProperty,
+ String propertyName, Property referencedProperty, BaseOBObject obObject)
throws JSONException {
// jsonObject.put(propertyName, toJsonObject(obObject,
DataResolvingMode.SHORT));
if (referencedProperty != null) {
jsonObject.put(propertyName, obObject.get(referencedProperty.getName()));
@@ -219,7 +220,12 @@
jsonObject.put(propertyName, obObject.getId());
}
// jsonObject.put(propertyName + "." + JsonConstants.ID, obObject.getId());
- jsonObject.put(propertyName + "." + JsonConstants.IDENTIFIER,
obObject.getIdentifier());
+ if (referencingProperty != null && referencingProperty.hasDisplayColumn())
{
+ jsonObject.put(propertyName + "." + JsonConstants.IDENTIFIER,
+ obObject.get(referencingProperty.getDisplayPropertyName()));
+ } else {
+ jsonObject.put(propertyName + "." + JsonConstants.IDENTIFIER,
obObject.getIdentifier());
+ }
}
// TODO: do some form of formatting here?
diff -r d74c722d6154 -r 33fa8bd2fa96 src/org/openbravo/base/model/Property.java
--- a/src/org/openbravo/base/model/Property.java Wed Apr 27 16:11:59
2011 +0200
+++ b/src/org/openbravo/base/model/Property.java Wed Apr 27 16:41:09
2011 +0200
@@ -35,6 +35,7 @@
import org.openbravo.base.model.domaintype.HashedStringDomainType;
import org.openbravo.base.model.domaintype.PrimitiveDomainType;
import org.openbravo.base.model.domaintype.StringDomainType;
+import org.openbravo.base.model.domaintype.TableDomainType;
import org.openbravo.base.util.Check;
import org.openbravo.base.validation.PropertyValidator;
import org.openbravo.base.validation.ValidationException;
@@ -105,6 +106,9 @@
// gives a lot of performance/memory improvements when getting property
values
private int indexInEntity;
+ private Boolean hasDisplayColumn;
+ private String displayProperty;
+
/**
* Initializes this Property using the information from the Column.
*
@@ -368,10 +372,9 @@
if (defaultValue == null && isBoolean()) {
if (getName().equalsIgnoreCase("active")) {
- log
- .debug("Property "
- + this
- + " is probably the active column but does not have a default
value set, supplying default value Y");
+ log.debug("Property "
+ + this
+ + " is probably the active column but does not have a default
value set, supplying default value Y");
defaultValue = "Y";
} else {
defaultValue = "N";
@@ -453,10 +456,9 @@
public Object getActualDefaultValue() {
if (defaultValue == null && isBoolean()) {
if (getName().equalsIgnoreCase("isactive")) {
- log
- .debug("Property "
- + this
- + " is probably the active column but does not have a default
value set, supplying default value Y");
+ log.debug("Property "
+ + this
+ + " is probably the active column but does not have a default
value set, supplying default value Y");
setDefaultValue("Y");
} else {
setDefaultValue("N");
@@ -1059,4 +1061,36 @@
public void setEncrypted(boolean encrypted) {
this.encrypted = encrypted;
}
+
+ /**
+ * @return true if the property is a table reference which defines an
explicit display column.
+ * This display column is then used as the identifier of objects
referenced through this
+ * property.
+ */
+ public boolean hasDisplayColumn() {
+ if (hasDisplayColumn == null) {
+ if (domainType instanceof TableDomainType) {
+ final TableDomainType tableDomainType = (TableDomainType) domainType;
+ hasDisplayColumn = tableDomainType.getRefTable().getDisplayColumn() !=
null;
+ } else {
+ hasDisplayColumn = false;
+ }
+ }
+ return hasDisplayColumn;
+ }
+
+ public String getDisplayPropertyName() {
+ if (displayProperty == null) {
+ final Column column = ((TableDomainType)
domainType).getRefTable().getDisplayColumn();
+ final Entity referencedEntity = getTargetEntity();
+ for (Property prop : referencedEntity.getProperties()) {
+ if (prop.getColumnId().equals(column.getId())) {
+ displayProperty = prop.getName();
+ break;
+ }
+ }
+ log.warn("Display column for property " + this + " not found");
+ }
+ return displayProperty;
+ }
}
diff -r d74c722d6154 -r 33fa8bd2fa96
src/org/openbravo/base/model/RefTable.hbm.xml
--- a/src/org/openbravo/base/model/RefTable.hbm.xml Wed Apr 27 16:11:59
2011 +0200
+++ b/src/org/openbravo/base/model/RefTable.hbm.xml Wed Apr 27 16:41:09
2011 +0200
@@ -31,6 +31,8 @@
<many-to-one name="reference" not-null="true"
class="org.openbravo.base.model.Reference" column="ad_reference_id"
insert="false" update="false"/>
<many-to-one name="column" not-null="true"
class="org.openbravo.base.model.Column" column="ad_key"/>
+
+ <many-to-one name="displayColumn" not-null="true"
class="org.openbravo.base.model.Column" column="ad_display"/>
<property name="updated"/>
diff -r d74c722d6154 -r 33fa8bd2fa96 src/org/openbravo/base/model/RefTable.java
--- a/src/org/openbravo/base/model/RefTable.java Wed Apr 27 16:11:59
2011 +0200
+++ b/src/org/openbravo/base/model/RefTable.java Wed Apr 27 16:41:09
2011 +0200
@@ -37,6 +37,8 @@
private Column column;
+ private Column displayColumn;
+
public Column getColumn() {
return column;
}
@@ -59,4 +61,12 @@
((TableDomainType) domainType).setRefTable(this);
}
}
+
+ public Column getDisplayColumn() {
+ return displayColumn;
+ }
+
+ public void setDisplayColumn(Column displayColumn) {
+ this.displayColumn = displayColumn;
+ }
}
------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits