You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2007/12/04 20:40:39 UTC

svn commit: r601056 - in /ofbiz/trunk/framework: example/config/ExampleEntityLabels.xml example/entitydef/entitymodel.xml webtools/src/org/ofbiz/webtools/WebToolsServices.java

Author: adrianc
Date: Tue Dec  4 11:40:38 2007
New Revision: 601056

URL: http://svn.apache.org/viewvc?rev=601056&view=rev
Log:
Improved entity reference screen - now has better field definitions. Based on discussion in https://issues.apache.org/jira/browse/OFBIZ-1425.

Modified:
    ofbiz/trunk/framework/example/config/ExampleEntityLabels.xml
    ofbiz/trunk/framework/example/entitydef/entitymodel.xml
    ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java

Modified: ofbiz/trunk/framework/example/config/ExampleEntityLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/example/config/ExampleEntityLabels.xml?rev=601056&r1=601055&r2=601056&view=diff
==============================================================================
--- ofbiz/trunk/framework/example/config/ExampleEntityLabels.xml (original)
+++ ofbiz/trunk/framework/example/config/ExampleEntityLabels.xml Tue Dec  4 11:40:38 2007
@@ -47,4 +47,72 @@
         <value xml:lang="en">Not Allowed</value>
         <value xml:lang="it">Non Permesso</value>
     </property>
+
+    <!-- Entity field descriptions. The Webtools component will use these properties
+         for online documentation. Field description properties have two forms:
+         FieldDescription.[fieldname] - will be used for all fields of that name
+         FieldDescription.[entityname].[fieldname] - will be used for the specified
+         entity field
+    -->
+    <property key="FieldDescription.exampleId">
+        <value xml:lang="en">Example ID</value>
+        <value xml:lang="it">Codice Esempio</value>
+        <value xml:lang="ro">Cod Exemplu</value>
+    </property>
+    <property key="FieldDescription.exampleTypeId">
+        <value xml:lang="en">Example Type ID</value>
+    </property>
+    <property key="FieldDescription.exampleItemSeqId">
+        <value xml:lang="en">Example Item sequence ID</value>
+    </property>
+    <property key="FieldDescription.amount">
+        <value xml:lang="en">Amount</value>
+        <value xml:lang="it">Importo</value>
+        <value xml:lang="ro">Import</value>
+    </property>
+    <property key="FieldDescription.exampleName">
+        <value xml:lang="en">Example Name</value>
+        <value xml:lang="it">Nome Esempio</value>
+        <value xml:lang="ro">Nume Exemplu</value>
+    </property>
+    <property key="FieldDescription.longDescription">
+        <value xml:lang="en">Long Description</value>
+        <value xml:lang="it">Descrizione Lunga</value>
+        <value xml:lang="ro">Descriere Lunga</value>
+    </property>
+    <property key="FieldDescription.comments">
+        <value xml:lang="en">Comments</value>
+        <value xml:lang="it">Commenti</value>
+        <value xml:lang="ro">Comentarii</value>
+    </property>
+    <property key="FieldDescription.exampleSize">
+        <value xml:lang="en">Example Size</value>
+        <value xml:lang="it">Esempio Taglia</value>
+        <value xml:lang="ro">Marime-size Exemplu</value>
+    </property>
+    <property key="FieldDescription.exampleDate">
+        <value xml:lang="en">Example Date</value>
+        <value xml:lang="it">Esempio Data</value>
+        <value xml:lang="ro">Data Exemplu</value>
+    </property>
+    <property key="FieldDescription.anotherDate">
+        <value xml:lang="en">Another Date</value>
+        <value xml:lang="it">Altra Data</value>
+    </property>   
+    <property key="FieldDescription.anotherText">
+        <value xml:lang="en">Another Text</value>
+        <value xml:lang="it">Altro Testo</value>
+    </property>
+    <property key="FieldDescription.Example.exampleId">
+        <value xml:lang="en">A unique Example ID. If you don't assign an
+            ID, one will be generated automatically</value>
+    </property>
+    <property key="FieldDescription.ExampleItem.exampleItemSeqId">
+        <value xml:lang="en">A unique Example Item sequence ID. If you don't assign an
+            ID, one will be generated automatically</value>
+    </property>
+    <property key="FieldDescription.ExampleType.exampleTypeId">
+        <value xml:lang="en">A unique Example Type ID. If you don't assign an
+            ID, one will be generated automatically</value>
+    </property>
 </resource>

Modified: ofbiz/trunk/framework/example/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/example/entitydef/entitymodel.xml?rev=601056&r1=601055&r2=601056&view=diff
==============================================================================
--- ofbiz/trunk/framework/example/entitydef/entitymodel.xml (original)
+++ ofbiz/trunk/framework/example/entitydef/entitymodel.xml Tue Dec  4 11:40:38 2007
@@ -40,7 +40,10 @@
     <!-- org.ofbiz.example.example -->
     <!-- ========================================================= -->
     
-    <entity entity-name="Example" package-name="org.ofbiz.example.example" title="Example Entity">
+    <entity entity-name="Example"
+            package-name="org.ofbiz.example.example"
+            default-resource-name="ExampleEntityLabels"
+            title="Example Entity">
         <field name="exampleId" type="id-ne"><!-- primary sequenced ID --></field>
         <field name="exampleTypeId" type="id-ne"></field>
         <field name="statusId" type="id-ne"></field>
@@ -60,7 +63,7 @@
             <key-map field-name="statusId"/>
         </relation>
     </entity>
-    <entity entity-name="ExampleItem" package-name="org.ofbiz.example.example" title="Example Item Entity">
+    <entity entity-name="ExampleItem" package-name="org.ofbiz.example.example" title="Example Item Entity" default-resource-name="ExampleEntityLabels">
         <field name="exampleId" type="id-ne"></field>
         <field name="exampleItemSeqId" type="id-ne"><!-- secondary sequenced ID --></field>
         <field name="description" type="description"></field>
@@ -72,7 +75,7 @@
             <key-map field-name="amountUomId" rel-field-name="uomId"/>
         </relation>
     </entity>
-    <entity entity-name="ExampleStatus" package-name="org.ofbiz.example.example" title="Example Status Entity">
+    <entity entity-name="ExampleStatus" package-name="org.ofbiz.example.example" title="Example Status Entity" default-resource-name="ExampleEntityLabels">
         <field name="exampleId" type="id-ne"></field>
         <field name="statusDate" type="date-time"></field>
         <field name="statusEndDate" type="date-time"></field>
@@ -123,7 +126,7 @@
     
     <entity entity-name="ExampleFeature"
         package-name="org.ofbiz.example.feature"
-        title="Example Feature Entity">
+        title="Example Feature Entity" default-resource-name="ExampleEntityLabels">
         <field name="exampleFeatureId" type="id-ne"><!-- primary sequenced ID --></field>
         <field name="featureSourceEnumId" type="id-ne"></field>
         <field name="description" type="description"></field>
@@ -134,7 +137,7 @@
     </entity>
     <entity entity-name="ExampleFeatureAppl"
         package-name="org.ofbiz.example.feature"
-        title="Example Feature Application Entity">
+        title="Example Feature Application Entity" default-resource-name="ExampleEntityLabels">
         <field name="exampleId" type="id-ne"></field>
         <field name="exampleFeatureId" type="id-ne"></field>
         <field name="fromDate" type="date-time"></field>

Modified: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java?rev=601056&r1=601055&r2=601056&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java (original)
+++ ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java Tue Dec  4 11:40:38 2007
@@ -28,6 +28,7 @@
 import java.util.TreeSet;
 import java.util.Locale;
 import java.util.Map;
+import java.util.ResourceBundle;
 import java.io.File;
 import java.io.InputStream;
 import java.io.StringReader;
@@ -50,6 +51,7 @@
 import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.base.util.UtilProperties.XmlResourceBundle;
 import org.ofbiz.base.util.UtilURL;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilDateTime;
@@ -67,6 +69,7 @@
 import org.ofbiz.entity.model.ModelIndex;
 import org.ofbiz.entity.model.ModelRelation;
 import org.ofbiz.entity.model.ModelKeyMap;
+import org.ofbiz.entity.model.ModelUtil;
 import org.ofbiz.entity.model.ModelViewEntity;
 import org.ofbiz.security.Security;
 import org.ofbiz.service.DispatchContext;
@@ -605,18 +608,19 @@
      * */
     public static Map getEntityRefData(DispatchContext dctx, Map context) {
         GenericDelegator delegator = dctx.getDelegator();
-        Map resultMap = ServiceUtil.returnSuccess();
+        Locale locale = (Locale) context.get("locale");
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        Map<String, Object> resultMap = ServiceUtil.returnSuccess();
         
         ModelReader reader = delegator.getModelReader();
-        Map packages = new HashMap();
-        TreeSet packageNames = new TreeSet();
-        TreeSet tableNames = new TreeSet();
+        Map<String, Object> packages = new HashMap<String, Object>();
+        TreeSet<String> packageNames = new TreeSet<String>();
+        TreeSet<String> tableNames = new TreeSet<String>();
         
         //put the entityNames TreeSets in a HashMap by packageName
         try {
             Collection ec = reader.getEntityNames();
             resultMap.put("numberOfEntities", ec.size());
-            TreeSet entityNames = new TreeSet(ec);
             Iterator ecIter = ec.iterator();
             while (ecIter.hasNext()) {
                 String eName = (String) ecIter.next();
@@ -625,9 +629,9 @@
                 if (UtilValidate.isNotEmpty(ent.getPlainTableName())) {
                     tableNames.add(ent.getPlainTableName());
                 }
-                TreeSet entities = (TreeSet) packages.get(ent.getPackageName());
+                TreeSet<String> entities = (TreeSet) packages.get(ent.getPackageName());
                 if (entities == null) {
-                    entities = new TreeSet();
+                    entities = new TreeSet<String>();
                     packages.put(ent.getPackageName(), entities);
                     packageNames.add(ent.getPackageName());
                 }
@@ -638,35 +642,59 @@
         }
         
         String search = (String) context.get("search");
-        List packagesList = new ArrayList();
+        List<Map<String, Object>> packagesList = new ArrayList<Map<String, Object>>();
         Iterator piter = packageNames.iterator();
         try {
             while (piter.hasNext()) {
-                Map packageMap = new HashMap();
+                Map<String, Object> packageMap = new HashMap<String, Object>();
                 String pName = (String) piter.next();
                 TreeSet entities = (TreeSet) packages.get(pName);
-                List entitiesList = new ArrayList();
-                Iterator i = entities.iterator();
-                while (i.hasNext()) {
-                    Map entityMap = new HashMap();
-                    String entityName = (String) i.next();
+                List<Map<String, Object>> entitiesList = new ArrayList<Map<String, Object>>();
+                Iterator e = entities.iterator();
+                while (e.hasNext()) {
+                    Map<String, Object> entityMap = new HashMap<String, Object>();
+                    String entityName = (String) e.next();
                     String helperName = delegator.getEntityHelperName(entityName);
                     String groupName = delegator.getEntityGroupName(entityName);
                     if (search == null || entityName.toLowerCase().indexOf(search.toLowerCase()) != -1) {
                         ModelEntity entity = reader.getModelEntity(entityName);
+                        ResourceBundle bundle = null;
+                        if (UtilValidate.isNotEmpty(entity.getDefaultResourceName())) {
+                            try {
+                                bundle = XmlResourceBundle.getBundle(entity.getDefaultResourceName(), locale, loader);
+                            } catch (Exception exception) {
+                                Debug.logInfo(exception.getMessage(), module);
+                            }
+                        }
 
                         // fields list
-                        List javaNameList = new ArrayList();
-                        TreeSet ufields = new TreeSet();
-                        for (int y = 0; y < entity.getFieldsSize(); y++) {
-                            Map javaNameMap = new HashMap();
-                            ModelField field = entity.getField(y);
+                        List<Map<String, Object>> javaNameList = new ArrayList<Map<String, Object>>();
+                        for (Iterator f = entity.getFieldsIterator(); f.hasNext();) {
+                            Map<String, Object> javaNameMap = new HashMap<String, Object>();
+                            ModelField field = (ModelField) f.next();
                             ModelFieldType type = delegator.getEntityFieldType(entity, field.getType());
-                            String javaName = null;
                             javaNameMap.put("isPk", field.getIsPk());
                             javaNameMap.put("name", field.getName());
                             javaNameMap.put("colName", field.getColName());
-                            javaNameMap.put("description", field.getDescription());
+                            String fieldDescription = null;
+                            if (bundle != null) {
+                                try {
+                                fieldDescription = bundle.getString("FieldDescription." + entity.getEntityName() + "." + field.getName());
+                                } catch (Exception exception) {}
+                            }
+                            if (UtilValidate.isEmpty(fieldDescription)) {
+                                fieldDescription = field.getDescription();
+                            }
+                            if (UtilValidate.isEmpty(fieldDescription) && bundle != null) {
+                                try {
+                                fieldDescription = bundle.getString("FieldDescription." + field.getName());
+                                } catch (Exception exception) {}
+                            }
+                            if (UtilValidate.isEmpty(fieldDescription)) {
+                                fieldDescription = ModelUtil.javaNameToDbName(field.getName()).toLowerCase();
+                                fieldDescription = ModelUtil.upperFirstChar(fieldDescription.replace('_', ' '));
+                            }
+                            javaNameMap.put("description", fieldDescription);
                             javaNameMap.put("type", (field.getType()) != null ? field.getType() : null);
                             javaNameMap.put("javaType", (field.getType() != null && type != null) ? type.getJavaType() : "Undefined");
                             javaNameMap.put("sqlType", (type != null && type.getSqlType() != null) ? type.getSqlType() : "Undefined");
@@ -674,13 +702,13 @@
                         }
 
                         // relations list
-                        List relationsList = new ArrayList();
+                        List<Map<String, Object>> relationsList = new ArrayList<Map<String, Object>>();
                         for (int r = 0; r < entity.getRelationsSize(); r++) {
-                            Map relationMap = new HashMap();
+                            Map<String, Object> relationMap = new HashMap<String, Object>();
                             ModelRelation relation = entity.getRelation(r);
-                            List keysList = new ArrayList();
+                            List<Map<String, Object>> keysList = new ArrayList<Map<String, Object>>();
                             for (int km = 0; km < relation.getKeyMapsSize(); km++) {
-                                Map keysMap = new HashMap();
+                                Map<String, Object> keysMap = new HashMap<String, Object>();
                                 ModelKeyMap keyMap = relation.getKeyMap(km);
                                 String fieldName = null;
                                 String relFieldName = null;
@@ -707,16 +735,16 @@
                         }
 
                         // index list
-                        List indexList = new ArrayList();
+                        List<Map<String, Object>> indexList = new ArrayList<Map<String, Object>>();
                         for (int r = 0; r < entity.getIndexesSize(); r++) {
-                            List fieldNameList = new ArrayList();
+                            List<String> fieldNameList = new ArrayList<String>();
                             
                             ModelIndex index = entity.getIndex(r);
                             for (Iterator fieldIterator = index.getIndexFieldsIterator(); fieldIterator.hasNext();) {
                                 fieldNameList.add((String) fieldIterator.next());
                             }
                             
-                            Map indexMap = new HashMap();
+                            Map<String, Object> indexMap = new HashMap<String, Object>();
                             indexMap.put("name", index.getName());
                             indexMap.put("description", index.getDescription());
                             indexMap.put("fieldNameList", fieldNameList);