Author: jleroux
Date: Sun Dec 10 20:10:11 2017 New Revision: 1817726 URL: http://svn.apache.org/viewvc?rev=1817726&view=rev Log: No functional changes. Refactors (several things), formats and fixes (HOME_DUCUMENT seemed not good) the convertTree() method. This is not used OOTB, so not quite sure how to test it, not documented enough. I only found that in the initial hansJs commit: "Add a content navigation tree, demo data and including a DOS tree conversion program to be able to mimic an office file server" Modified: ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/ConvertTree.java Modified: ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/ConvertTree.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/ConvertTree.java?rev=1817726&r1=1817725&r2=1817726&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/ConvertTree.java (original) +++ ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/ConvertTree.java Sun Dec 10 20:10:11 2017 @@ -19,10 +19,8 @@ package org.apache.ofbiz.content; import java.io.BufferedReader; -import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; -import java.io.InputStreamReader; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -31,7 +29,6 @@ import java.util.Map; import org.apache.ofbiz.base.util.Debug; import org.apache.ofbiz.base.util.UtilDateTime; -import org.apache.ofbiz.base.util.UtilIO; import org.apache.ofbiz.base.util.UtilMisc; import org.apache.ofbiz.base.util.UtilProperties; import org.apache.ofbiz.base.util.UtilValidate; @@ -56,7 +53,7 @@ With this program and the content naviga document tree in OFBiz. From that point on the documents can be connected to the cutomers, orders, invoices etc.. -In order ta make this service active add the following to the service definition file: +In order to make this service active add the following to the service definition file: <service name="convertTree" auth="true" engine="java" invoke="convertTree" transaction-timeout="3600" location="org.apache.ofbiz.content.tree.ConvertTree"> @@ -67,7 +64,6 @@ In order ta make this service active add */ - public static Map<String, Object> convertTree(DispatchContext dctx, Map<String, ? extends Object> context) { Delegator delegator = dctx.getDelegator(); LocalDispatcher dispatcher = dctx.getDispatcher(); @@ -76,176 +72,158 @@ In order ta make this service active add String file = (String) context.get("file"); String errMsg = "", sucMsg= ""; GenericValue Entity = null; - try { - BufferedReader input = null; - try { - if (UtilValidate.isNotEmpty(file)) { - input = new BufferedReader(new InputStreamReader(new FileInputStream(file), UtilIO.getUtf8())); - String line = null; - int size = 0; - if (file != null) { - int counterLine = 0; - //Home Document - Entity = null; - Entity = delegator.makeValue("Content"); - Entity.set("contentId", "ROOT"); - Entity.set("contentName", "ROOT"); - Entity.set("contentTypeId", "DOCUMENT"); - Entity.set("createdByUserLogin", userLogin.get("userLoginId")); - Entity.set("lastModifiedByUserLogin", userLogin.get("userLoginId")); - Entity.set("createdDate", UtilDateTime.nowTimestamp()); - Entity.set("lastUpdatedStamp", UtilDateTime.nowTimestamp()); - Entity.set("lastUpdatedTxStamp", UtilDateTime.nowTimestamp()); - Entity.set("createdStamp", UtilDateTime.nowTimestamp()); - Entity.set("createdTxStamp", UtilDateTime.nowTimestamp()); - delegator.create(Entity); - - Entity = null; - Entity = delegator.makeValue("Content"); - Entity.set("contentId", "HOME_DUCUMENT"); - Entity.set("contentName", "Home"); - Entity.set("contentTypeId", "DOCUMENT"); - Entity.set("createdByUserLogin", userLogin.get("userLoginId")); - Entity.set("lastModifiedByUserLogin", userLogin.get("userLoginId")); - Entity.set("createdDate", UtilDateTime.nowTimestamp()); - Entity.set("lastUpdatedStamp", UtilDateTime.nowTimestamp()); - Entity.set("lastUpdatedTxStamp", UtilDateTime.nowTimestamp()); - Entity.set("createdStamp", UtilDateTime.nowTimestamp()); - Entity.set("createdTxStamp", UtilDateTime.nowTimestamp()); - delegator.create(Entity); - - Map<String, Object> contentAssoc = new HashMap<String, Object>(); - contentAssoc.put("contentId", "HOME_DUCUMENT"); - contentAssoc.put("contentAssocTypeId", "TREE_CHILD"); - contentAssoc.put("contentIdTo", "ROOT"); - contentAssoc.put("userLogin", userLogin); - dispatcher.runSync("createContentAssoc", contentAssoc); - while ((line = input.readLine()) != null) {//start line - boolean hasFolder = true; - String rootContent = null, contentId = null; counterLine++; - if (counterLine > 1) { - size = line.length(); - String check = "\\", checkSubContent = ",", contentName = "", contentNameInprogress = "", data = line.substring(3, size); - size = data.length(); - - for (int index = 0; index< size; index++) {//start character in line - boolean contentNameMatch = false; - int contentAssocSize = 0; - List<GenericValue> contentAssocs = null; - if (data.charAt(index) == check.charAt(0) || data.charAt(index) == checkSubContent.charAt(0)) {//store data - contentName = contentName + contentNameInprogress; - if (contentName.length() > 100) { - contentName = contentName.substring(0, 100); - } - //check duplicate folder - GenericValue content = EntityQuery.use(delegator).from("Content").where("contentName", contentName).queryFirst(); - if (content != null) { - contentId = content.getString("contentId"); - } - if (content != null && hasFolder==true) { - if (rootContent != null) { - contentAssocs = EntityQuery.use(delegator).from("ContentAssoc") - .where("contentId", contentId, "contentIdTo", rootContent) - .queryList(); - List<GenericValue> contentAssocCheck = EntityQuery.use(delegator).from("ContentAssoc").where("contentIdTo", rootContent).queryList(); - - Iterator<GenericValue> contentAssChecks = contentAssocCheck.iterator(); - while (contentAssChecks.hasNext() && contentNameMatch == false) { - GenericValue contentAss = contentAssChecks.next(); - GenericValue contentcheck = EntityQuery.use(delegator).from("Content").where("contentId", contentAss.get("contentId")).queryOne(); - if (contentcheck!=null) { - if (contentcheck.get("contentName").equals(contentName)) { - contentNameMatch = true; - contentId = contentcheck.get("contentId").toString(); - } - } + if (UtilValidate.isNotEmpty(file)) { + try (BufferedReader input = new BufferedReader(new FileReader(file))) { + String line = null; + int size = 0; + int counterLine = 0; + //Home Document + Entity = null; + Entity = delegator.makeValue("Content"); + Entity.set("contentId", "ROOT"); + Entity.set("contentName", "ROOT"); + Entity.set("contentTypeId", "DOCUMENT"); + Entity.set("createdByUserLogin", userLogin.get("userLoginId")); + Entity.set("lastModifiedByUserLogin", userLogin.get("userLoginId")); + Entity.set("createdDate", UtilDateTime.nowTimestamp()); + Entity.set("lastUpdatedStamp", UtilDateTime.nowTimestamp()); + Entity.set("lastUpdatedTxStamp", UtilDateTime.nowTimestamp()); + Entity.set("createdStamp", UtilDateTime.nowTimestamp()); + Entity.set("createdTxStamp", UtilDateTime.nowTimestamp()); + delegator.create(Entity); + + Entity = null; + Entity = delegator.makeValue("Content"); + Entity.set("contentId", "HOME_DOCUMENT"); + Entity.set("contentName", "Home"); + Entity.set("contentTypeId", "DOCUMENT"); + Entity.set("createdByUserLogin", userLogin.get("userLoginId")); + Entity.set("lastModifiedByUserLogin", userLogin.get("userLoginId")); + Entity.set("createdDate", UtilDateTime.nowTimestamp()); + Entity.set("lastUpdatedStamp", UtilDateTime.nowTimestamp()); + Entity.set("lastUpdatedTxStamp", UtilDateTime.nowTimestamp()); + Entity.set("createdStamp", UtilDateTime.nowTimestamp()); + Entity.set("createdTxStamp", UtilDateTime.nowTimestamp()); + delegator.create(Entity); + + Map<String, Object> contentAssoc = new HashMap<String, Object>(); + contentAssoc.put("contentId", "HOME_DOCUMENT"); + contentAssoc.put("contentAssocTypeId", "TREE_CHILD"); + contentAssoc.put("contentIdTo", "ROOT"); + contentAssoc.put("userLogin", userLogin); + dispatcher.runSync("createContentAssoc", contentAssoc); + while ((line = input.readLine()) != null) {//start line + boolean hasFolder = true; + String rootContent = null, contentId = null; counterLine++; + if (counterLine > 1) { + size = line.length(); + String check = "\\", checkSubContent = ",", contentName = "", contentNameInprogress = "", data = line.substring(3, size); + size = data.length(); + + for (int index = 0; index< size; index++) {//start character in line + boolean contentNameMatch = false; + int contentAssocSize = 0; + List<GenericValue> contentAssocs = null; + if (data.charAt(index) == check.charAt(0) || data.charAt(index) == checkSubContent.charAt(0)) {//store data + contentName = contentName + contentNameInprogress; + if (contentName.length() > 100) { + contentName = contentName.substring(0, 100); + } + //check duplicate folder + GenericValue content = EntityQuery.use(delegator).from("Content").where("contentName", contentName).queryFirst(); + if (content != null) { + contentId = content.getString("contentId"); + } + if (content != null && hasFolder==true) { + if (rootContent != null) { + contentAssocs = EntityQuery.use(delegator).from("ContentAssoc") + .where("contentId", contentId, "contentIdTo", rootContent) + .queryList(); + List<GenericValue> contentAssocCheck = EntityQuery.use(delegator).from("ContentAssoc").where("contentIdTo", rootContent).queryList(); + + Iterator<GenericValue> contentAssChecks = contentAssocCheck.iterator(); + while (contentAssChecks.hasNext() && contentNameMatch == false) { + GenericValue contentAss = contentAssChecks.next(); + GenericValue contentcheck = EntityQuery.use(delegator).from("Content").where("contentId", contentAss.get("contentId")).queryOne(); + if (contentcheck!=null) { + if (contentcheck.get("contentName").equals(contentName) && contentNameMatch == false) { + contentNameMatch = true; + contentId = contentcheck.get("contentId").toString(); } - } else { - rootContent = "HOME_DUCUMENT"; - contentAssocs = EntityQuery.use(delegator).from("ContentAssoc") - .where("contentId", contentId, "contentIdTo", rootContent) - .queryList(); } - contentAssocSize = contentAssocs.size(); - } - - if (contentAssocSize == 0 && contentNameMatch == false) {//New Root Content - Entity = null; - contentId = delegator.getNextSeqId("Content"); - Entity = delegator.makeValue("Content"); - Entity.set("contentId", contentId); - Entity.set("contentName", contentName); - Entity.set("contentTypeId", "DOCUMENT"); - Entity.set("createdByUserLogin", userLogin.get("userLoginId")); - Entity.set("lastModifiedByUserLogin", userLogin.get("userLoginId")); - Entity.set("createdDate", UtilDateTime.nowTimestamp()); - delegator.create(Entity); - hasFolder = false; - } else { - hasFolder = true; - } - //Relation Content - if (rootContent == null) { - rootContent = "HOME_DUCUMENT"; } + } else { + rootContent = "HOME_DOCUMENT"; contentAssocs = EntityQuery.use(delegator).from("ContentAssoc") - .where("contentId", contentId, - "contentIdTo", rootContent, - "contentAssocTypeId", "TREE_CHILD") + .where("contentId", contentId, "contentIdTo", rootContent) .queryList(); - - if (contentAssocs.size() == 0) { - contentAssoc = new HashMap<String, Object>(); - contentAssoc.put("contentId", contentId); - contentAssoc.put("contentAssocTypeId", "TREE_CHILD"); - contentAssoc.put("contentIdTo", rootContent); - contentAssoc.put("userLogin", userLogin); - dispatcher.runSync("createContentAssoc", contentAssoc); - rootContent = contentId; - } else { - //Debug.logInfo("ContentAssoc [contentId= " + contentId + ", contentIdTo=" + rootContent + "] already exist.");//ShoW log file - rootContent=contentId; - } - contentName = ""; - contentNameInprogress =""; - } - if (data.charAt(index)== checkSubContent.charAt(0)) {//Have sub content - createSubContent(index, data, rootContent, context, dctx); - index = size; - continue; - } - if ((data.charAt(index)) != check.charAt(0)) { - contentNameInprogress = contentNameInprogress.concat(Character.toString(data.charAt(index))); - if (contentNameInprogress.length() > 99) { - contentName = contentName + contentNameInprogress; - contentNameInprogress =""; - } } - }//end character in line + contentAssocSize = contentAssocs.size(); + } + + if (contentAssocSize == 0 && contentNameMatch == false) {//New Root Content + Entity = null; + contentId = delegator.getNextSeqId("Content"); + Entity = delegator.makeValue("Content"); + Entity.set("contentId", contentId); + Entity.set("contentName", contentName); + Entity.set("contentTypeId", "DOCUMENT"); + Entity.set("createdByUserLogin", userLogin.get("userLoginId")); + Entity.set("lastModifiedByUserLogin", userLogin.get("userLoginId")); + Entity.set("createdDate", UtilDateTime.nowTimestamp()); + delegator.create(Entity); + hasFolder = false; + } else { + hasFolder = true; + } + //Relation Content + if (rootContent == null) { + rootContent = "HOME_DOCUMENT"; + } + contentAssocs = EntityQuery.use(delegator).from("ContentAssoc") + .where("contentId", contentId, + "contentIdTo", rootContent, + "contentAssocTypeId", "TREE_CHILD") + .queryList(); + + if (contentAssocs.size() == 0) { + contentAssoc = new HashMap<String, Object>(); + contentAssoc.put("contentId", contentId); + contentAssoc.put("contentAssocTypeId", "TREE_CHILD"); + contentAssoc.put("contentIdTo", rootContent); + contentAssoc.put("userLogin", userLogin); + dispatcher.runSync("createContentAssoc", contentAssoc); + rootContent = contentId; + } else { + //Debug.logInfo("ContentAssoc [contentId= " + contentId + ", contentIdTo=" + rootContent + "] already exist.");//ShoW log file + rootContent=contentId; + } + contentName = ""; + contentNameInprogress =""; + } + if (data.charAt(index)== checkSubContent.charAt(0)) {//Have sub content + createSubContent(index, data, rootContent, context, dctx); + index = size; + continue; + } + if ((data.charAt(index)) != check.charAt(0)) { + contentNameInprogress = contentNameInprogress.concat(Character.toString(data.charAt(index))); + if (contentNameInprogress.length() > 99) { + contentName = contentName + contentNameInprogress; + contentNameInprogress =""; + } } - }//end line - sucMsg = UtilProperties.getMessage("ContentUiLabels", "ContentConvertDocumentsTreeSuccessful", UtilMisc.toMap("counterLine", counterLine), locale); + }//end character in line } - } - } - finally { - if (input != null) input.close(); - } - return ServiceUtil.returnSuccess(sucMsg); - } catch (IOException e) { - errMsg = "IOException "+ UtilMisc.toMap("errMessage", e.toString()); - Debug.logError(e, errMsg, module); - return ServiceUtil.returnError(errMsg); - } catch (GenericServiceException e) { - errMsg = "GenericServiceException "+ UtilMisc.toMap("errMessage", e.toString()); - Debug.logError(e, errMsg, module); - return ServiceUtil.returnError(errMsg); - } catch (GenericEntityException e) { - errMsg = "GenericEntityException "+ UtilMisc.toMap("errMessage", e.toString()); - Debug.logError(e, errMsg, module); - e.printStackTrace(); - return ServiceUtil.returnError(errMsg); + }//end line + sucMsg = UtilProperties.getMessage("ContentUiLabels", "ContentConvertDocumentsTreeSuccessful", UtilMisc.toMap("counterLine", counterLine), locale); + } catch (IOException | GenericServiceException | GenericEntityException e) { + errMsg = "Exception " + UtilMisc.toMap("errMessage", e.toString()); + Debug.logError(e, errMsg, module); + return ServiceUtil.returnError(errMsg); + } } + return ServiceUtil.returnSuccess(sucMsg); } public static Map<String,Object> createSubContent(int index, String line, String rootContent, Map<String, ? extends Object> context, DispatchContext dctx) { |
Free forum by Nabble | Edit this page |