Author: jonesde
Date: Tue Mar 4 23:40:02 2008 New Revision: 633783 URL: http://svn.apache.org/viewvc?rev=633783&view=rev Log: Changed plist export to use XML form, much more friendly to funny characters; a few fixes/improvements too Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilFormatOut.java ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java ofbiz/trunk/framework/webtools/widget/EntityForms.xml Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilFormatOut.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilFormatOut.java?rev=633783&r1=633782&r2=633783&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilFormatOut.java (original) +++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilFormatOut.java Tue Mar 4 23:40:02 2008 @@ -557,9 +557,74 @@ for (int i = 0; i < indentLevel; i++) writer.print(indentFourString); writer.println(");"); } - public static void writePlistFile(Map<String, Object> eoModelMap, String eomodeldFullPath, String filename) throws FileNotFoundException, UnsupportedEncodingException { + + public static void writePlistPropertyXml(String name, Object value, int indentLevel, PrintWriter writer) { + for (int i = 0; i < indentLevel; i++) writer.print(indentFourString); + writer.print("<key>"); + writer.print(name); + writer.println("</key>"); + if (value instanceof Map) { + writePlistPropertyMapXml((Map<String, Object>) value, indentLevel, writer); + } else if (value instanceof List) { + writePlistPropertyValueListXml((List<Object>) value, indentLevel, writer); + } else { + for (int i = 0; i < indentLevel; i++) writer.print(indentFourString); + writer.print("<string>"); + writer.print(value); + writer.println("</string>"); + } + } + public static void writePlistPropertyMapXml(Map<String, Object> propertyMap, int indentLevel, PrintWriter writer) { + for (int i = 0; i < indentLevel; i++) writer.print(indentFourString); + writer.println("<dict>"); + for (Map.Entry<String, Object> property: propertyMap.entrySet()) { + writePlistPropertyXml(property.getKey(), property.getValue(), indentLevel + 1, writer); + } + for (int i = 0; i < indentLevel; i++) writer.print(indentFourString); + writer.println("</dict>"); + } + public static void writePlistPropertyValueListXml(List<Object> propertyValueList, int indentLevel, PrintWriter writer) { + for (int i = 0; i < indentLevel; i++) writer.print(indentFourString); + writer.println("<array>"); + + indentLevel++; + Iterator<Object> propertyValueIter = propertyValueList.iterator(); + while (propertyValueIter.hasNext()) { + Object propertyValue = propertyValueIter.next(); + if (propertyValue instanceof Map) { + Map<String, Object> propertyMap = (Map<String, Object>) propertyValue; + writePlistPropertyMapXml(propertyMap, indentLevel, writer); + } else { + for (int i = 0; i < indentLevel; i++) writer.print(indentFourString); + writer.print("<string>"); + writer.print(propertyValue); + writer.println("</string>"); + } + } + indentLevel--; + + for (int i = 0; i < indentLevel; i++) writer.print(indentFourString); + writer.println("</array>"); + } + + /** + * Writes model information in the Apple EOModelBundle format. + * + * For document structure and definition see: http://developer.apple.com/documentation/InternetWeb/Reference/WO_BundleReference/Articles/EOModelBundle.html + * + * @param eoModelMap + * @param eomodeldFullPath + * @param filename + * @throws FileNotFoundException + * @throws UnsupportedEncodingException + */ + public static void writePlistFile(Map<String, Object> eoModelMap, String eomodeldFullPath, String filename, boolean useXml) throws FileNotFoundException, UnsupportedEncodingException { PrintWriter plistWriter = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(eomodeldFullPath, filename)), "UTF-8"))); - UtilFormatOut.writePlistPropertyMap(eoModelMap, 0, plistWriter, false); + if (useXml) { + UtilFormatOut.writePlistPropertyMapXml(eoModelMap, 0, plistWriter); + } else { + UtilFormatOut.writePlistPropertyMap(eoModelMap, 0, plistWriter, false); + } plistWriter.close(); } } Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java?rev=633783&r1=633782&r2=633783&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java Tue Mar 4 23:40:02 2008 @@ -1417,8 +1417,11 @@ topLevelMap.put("classProperties", classPropertiesList); for (ModelField field: this.fields) { if (field.getIsAutoCreatedInternal()) continue; - - classPropertiesList.add(field.getName()); + if (field.getIsPk()) { + classPropertiesList.add(field.getName() + "*"); + } else { + classPropertiesList.add(field.getName()); + } } for (ModelRelation relationship: this.relations) { if (!entityNameIncludeSet.contains(relationship.getRelEntityName())) continue; @@ -1438,7 +1441,11 @@ Map<String, Object> attributeMap = FastMap.newInstance(); attributesList.add(attributeMap); - attributeMap.put("name", field.getName()); + if (field.getIsPk()) { + attributeMap.put("name", field.getName() + "*"); + } else { + attributeMap.put("name", field.getName()); + } attributeMap.put("columnName", field.getColName()); attributeMap.put("valueClassName", fieldType.getJavaType()); Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java?rev=633783&r1=633782&r2=633783&view=diff ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java Tue Mar 4 23:40:02 2008 @@ -116,7 +116,7 @@ } public String getShortDisplayDescription() { - return this.name + "[" + this.type + "," + this.mode + "]" + (optional ? "" : "*"); + return this.name + "[" + this.type + "-" + this.mode + "]" + (optional ? "" : "*"); } public Object getDefaultValue() { Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java?rev=633783&r1=633782&r2=633783&view=diff ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java Tue Mar 4 23:40:02 2008 @@ -81,7 +81,7 @@ } public String getShortDisplayDescription() { - return this.serviceName + "[" + this.serviceMode + (this.persist ? ",persist" : "") + "]"; + return this.serviceName + "[" + this.serviceMode + (this.persist ? "-persist" : "") + "]"; } public boolean runAction(String selfService, DispatchContext dctx, Map<String, Object> context, Map<String, Object> result) throws GenericServiceException { 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=633783&r1=633782&r2=633783&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java (original) +++ ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java Tue Mar 4 23:40:02 2008 @@ -799,6 +799,8 @@ String datasourceName = (String) context.get("datasourceName"); String entityNamePrefix = (String) context.get("entityNamePrefix"); + if (datasourceName == null) datasourceName = "localderby"; + ModelReader reader = dctx.getDelegator().getModelReader(); try { @@ -857,16 +859,12 @@ entitiesMap.put("className", "EOGenericRecord"); entitiesMap.put("name", entityName); } - PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(eomodeldFullPath, "index.eomodeld")), "UTF-8"))); - UtilFormatOut.writePlistPropertyMap(topLevelMap, 0, writer, false); - writer.close(); + UtilFormatOut.writePlistFile(topLevelMap, eomodeldFullPath, "index.eomodeld", true); // write each <EntityName>.plist file for (String curEntityName: entityNames) { ModelEntity modelEntity = reader.getModelEntity(curEntityName); - PrintWriter entityWriter = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(eomodeldFullPath, curEntityName +".plist")), "UTF-8"))); - modelEntity.writeEoModelText(entityWriter, entityNamePrefix, datasourceName, entityNames); - entityWriter.close(); + UtilFormatOut.writePlistFile(modelEntity.createEoModelMap(entityNamePrefix, datasourceName, entityNames), eomodeldFullPath, curEntityName +".plist", true); } return ServiceUtil.returnSuccess("Exported eomodeld file for " + entityNames.size() + " entities to: " + eomodeldFullPath); Modified: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java?rev=633783&r1=633782&r2=633783&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java (original) +++ ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java Tue Mar 4 23:40:02 2008 @@ -237,10 +237,10 @@ allDiagramEntitiesWithPrefixes.add(this.modelService.name); // all services that call this service - Set<ServiceArtifactInfo> callingServiceList = this.getServicesCallingService(); - if (callingServiceList != null) { + Set<ServiceArtifactInfo> callingServiceSet = this.getServicesCallingService(); + if (callingServiceSet != null) { // set the prefix and add to the all list - for (ServiceArtifactInfo callingService: callingServiceList) { + for (ServiceArtifactInfo callingService: callingServiceSet) { callingService.setDisplayPrefix("Calling_"); allDiagramEntitiesWithPrefixes.add(callingService.getDisplayPrefixedName()); allServiceList.add(callingService); @@ -248,9 +248,9 @@ } // all services this service calls - Set<ServiceArtifactInfo> calledServiceList = this.getServicesCalledByService(); + Set<ServiceArtifactInfo> calledServiceSet = this.getServicesCalledByService(); - for (ServiceArtifactInfo calledService: calledServiceList) { + for (ServiceArtifactInfo calledService: calledServiceSet) { calledService.setDisplayPrefix("Called_"); allDiagramEntitiesWithPrefixes.add(calledService.getDisplayPrefixedName()); allServiceList.add(calledService); @@ -286,20 +286,20 @@ entitiesMap.put("className", "EOGenericRecord"); entitiesMap.put("name", entityName); } - UtilFormatOut.writePlistFile(indexEoModelMap, eomodeldFullPath, "index.eomodeld"); + UtilFormatOut.writePlistFile(indexEoModelMap, eomodeldFullPath, "index.eomodeld", true); // write this service description file - Map<String, Object> thisServiceEoModelMap = createEoModelMap(allServiceList, allServiceEcaList, useMoreDetailedNames); - UtilFormatOut.writePlistFile(thisServiceEoModelMap, eomodeldFullPath, this.getDisplayPrefixedName() + ".plist"); + Map<String, Object> thisServiceEoModelMap = createEoModelMap(callingServiceSet, calledServiceSet, callingServiceEcaSet, calledServiceEcaSet, useMoreDetailedNames); + UtilFormatOut.writePlistFile(thisServiceEoModelMap, eomodeldFullPath, this.getDisplayPrefixedName() + ".plist", true); // write service description files - for (ServiceArtifactInfo callingService: callingServiceList) { - Map<String, Object> serviceEoModelMap = callingService.createEoModelMap(UtilMisc.toList(this), null, useMoreDetailedNames); - UtilFormatOut.writePlistFile(serviceEoModelMap, eomodeldFullPath, callingService.getDisplayPrefixedName() + ".plist"); - } - for (ServiceArtifactInfo calledService: calledServiceList) { - Map<String, Object> serviceEoModelMap = calledService.createEoModelMap(UtilMisc.toList(this), null, useMoreDetailedNames); - UtilFormatOut.writePlistFile(serviceEoModelMap, eomodeldFullPath, calledService.getDisplayPrefixedName() + ".plist"); + for (ServiceArtifactInfo callingService: callingServiceSet) { + Map<String, Object> serviceEoModelMap = callingService.createEoModelMap(null, UtilMisc.toSet(this), null, null, useMoreDetailedNames); + UtilFormatOut.writePlistFile(serviceEoModelMap, eomodeldFullPath, callingService.getDisplayPrefixedName() + ".plist", true); + } + for (ServiceArtifactInfo calledService: calledServiceSet) { + Map<String, Object> serviceEoModelMap = calledService.createEoModelMap(UtilMisc.toSet(this), null, null, null, useMoreDetailedNames); + UtilFormatOut.writePlistFile(serviceEoModelMap, eomodeldFullPath, calledService.getDisplayPrefixedName() + ".plist", true); } // write SECA description files @@ -313,7 +313,7 @@ ecaCallingServiceSet.add(this); Map<String, Object> serviceEcaEoModelMap = callingServiceEca.createEoModelMap(ecaCallingServiceSet, useMoreDetailedNames); - UtilFormatOut.writePlistFile(serviceEcaEoModelMap, eomodeldFullPath, callingServiceEca.getDisplayPrefixedName() + ".plist"); + UtilFormatOut.writePlistFile(serviceEcaEoModelMap, eomodeldFullPath, callingServiceEca.getDisplayPrefixedName() + ".plist", true); } } for (ServiceEcaArtifactInfo calledServiceEca: calledServiceEcaSet) { @@ -325,13 +325,15 @@ ecaCalledServiceSet.add(this); Map<String, Object> serviceEcaEoModelMap = calledServiceEca.createEoModelMap(ecaCalledServiceSet, useMoreDetailedNames); - UtilFormatOut.writePlistFile(serviceEcaEoModelMap, eomodeldFullPath, calledServiceEca.getDisplayPrefixedName() + ".plist"); + UtilFormatOut.writePlistFile(serviceEcaEoModelMap, eomodeldFullPath, calledServiceEca.getDisplayPrefixedName() + ".plist", true); } } - public Map<String, Object> createEoModelMap(List<ServiceArtifactInfo> relatedServiceList, List<ServiceEcaArtifactInfo> relatedServiceEcaList, boolean useMoreDetailedNames) { - if (relatedServiceList == null) relatedServiceList = FastList.newInstance(); - if (relatedServiceEcaList == null) relatedServiceEcaList = FastList.newInstance(); + public Map<String, Object> createEoModelMap(Set<ServiceArtifactInfo> callingServiceSet, Set<ServiceArtifactInfo> calledServiceSet, Set<ServiceEcaArtifactInfo> callingServiceEcaSet, Set<ServiceEcaArtifactInfo> calledServiceEcaSet, boolean useMoreDetailedNames) { + if (callingServiceSet == null) callingServiceSet = FastSet.newInstance(); + if (calledServiceSet == null) calledServiceSet = FastSet.newInstance(); + if (callingServiceEcaSet == null) callingServiceEcaSet = FastSet.newInstance(); + if (calledServiceEcaSet == null) calledServiceEcaSet = FastSet.newInstance(); Map<String, Object> topLevelMap = FastMap.newInstance(); topLevelMap.put("name", this.getDisplayPrefixedName()); @@ -347,10 +349,16 @@ classPropertiesList.add(param.name); } } - for (ServiceArtifactInfo sai: relatedServiceList) { + for (ServiceArtifactInfo sai: callingServiceSet) { classPropertiesList.add(sai.getDisplayPrefixedName()); } - for (ServiceEcaArtifactInfo seai: relatedServiceEcaList) { + for (ServiceArtifactInfo sai: calledServiceSet) { + classPropertiesList.add(sai.getDisplayPrefixedName()); + } + for (ServiceEcaArtifactInfo seai: callingServiceEcaSet) { + classPropertiesList.add(seai.getDisplayPrefixedName()); + } + for (ServiceEcaArtifactInfo seai: calledServiceEcaSet) { classPropertiesList.add(seai.getDisplayPrefixedName()); } @@ -373,26 +381,54 @@ // relationships List<Map<String, Object>> relationshipsMapList = FastList.newInstance(); - for (ServiceArtifactInfo sai: relatedServiceList) { + for (ServiceArtifactInfo sai: callingServiceSet) { Map<String, Object> relationshipMap = FastMap.newInstance(); relationshipsMapList.add(relationshipMap); relationshipMap.put("name", sai.getDisplayPrefixedName()); relationshipMap.put("destination", sai.getDisplayPrefixedName()); + relationshipMap.put("isToMany", "N"); + relationshipMap.put("isMandatory", "Y"); // not sure if we can use these, or need them, for this type of diagram - //relationshipMap.put("isToMany", "N"); //relationshipMap.put("joinSemantic", "EOInnerJoin"); //relationshipMap.put("joins", joinsMapList); //joinsMap.put("sourceAttribute", keyMap.getFieldName()); //joinsMap.put("destinationAttribute", keyMap.getRelFieldName()); } - for (ServiceEcaArtifactInfo seai: relatedServiceEcaList) { + for (ServiceArtifactInfo sai: calledServiceSet) { + Map<String, Object> relationshipMap = FastMap.newInstance(); + relationshipsMapList.add(relationshipMap); + + relationshipMap.put("name", sai.getDisplayPrefixedName()); + relationshipMap.put("destination", sai.getDisplayPrefixedName()); + relationshipMap.put("isToMany", "Y"); + relationshipMap.put("isMandatory", "Y"); + + // not sure if we can use these, or need them, for this type of diagram + //relationshipMap.put("joinSemantic", "EOInnerJoin"); + //relationshipMap.put("joins", joinsMapList); + //joinsMap.put("sourceAttribute", keyMap.getFieldName()); + //joinsMap.put("destinationAttribute", keyMap.getRelFieldName()); + } + + for (ServiceEcaArtifactInfo seai: callingServiceEcaSet) { + Map<String, Object> relationshipMap = FastMap.newInstance(); + relationshipsMapList.add(relationshipMap); + + relationshipMap.put("name", seai.getDisplayPrefixedName()); + relationshipMap.put("destination", seai.getDisplayPrefixedName()); + relationshipMap.put("isToMany", "N"); + relationshipMap.put("isMandatory", "Y"); + } + for (ServiceEcaArtifactInfo seai: calledServiceEcaSet) { Map<String, Object> relationshipMap = FastMap.newInstance(); relationshipsMapList.add(relationshipMap); relationshipMap.put("name", seai.getDisplayPrefixedName()); relationshipMap.put("destination", seai.getDisplayPrefixedName()); + relationshipMap.put("isToMany", "Y"); + relationshipMap.put("isMandatory", "Y"); } if (relationshipsMapList.size() > 0) { Modified: ofbiz/trunk/framework/webtools/widget/EntityForms.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/widget/EntityForms.xml?rev=633783&r1=633782&r2=633783&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/widget/EntityForms.xml (original) +++ ofbiz/trunk/framework/webtools/widget/EntityForms.xml Tue Mar 4 23:40:02 2008 @@ -23,6 +23,7 @@ <form name="EntityEoModelBundle" type="single" target="exportEntityEoModelBundle" title=""> <auto-fields-service service-name="exportEntityEoModelBundle"/> + <field name="eomodeldFullPath"><text size="100"/></field> <field name="entityGroupId"> <drop-down allow-empty="true"> <entity-options entity-name="EntityGroup" description="${entityGroupName}"> |
Free forum by Nabble | Edit this page |