details:   https://code.openbravo.com/erp/devel/pi/rev/8a41fb65ea2f
changeset: 32689:8a41fb65ea2f
user:      Carlos Aristu <carlos.aristu <at> openbravo.com>
date:      Thu Sep 14 18:07:39 2017 +0200
summary:   related to issue 36854: initial code clean-up
  - Use diamond operator
  - Can use StringBuilder instead of StringBuffer
  - Log error into the log instead of into the standard output
  - Fix typo

details:   https://code.openbravo.com/erp/devel/pi/rev/ff7766b4dd3f
changeset: 32690:ff7766b4dd3f
user:      Carlos Aristu <carlos.aristu <at> openbravo.com>
date:      Fri Sep 15 09:05:09 2017 +0200
summary:   fixes bug 36854: Can't see classic tree view without access to 
AD_TAB/AD_TREE
  - The AD_Tab and AD_Tree information is now retrieved using the admin mode
  - The code has been refactored to avoid duplication: now that information is 
retrieved once instead of doing it three times

diffstat:

 src/org/openbravo/erpCommon/utility/WindowTree.java |  238 ++++++++++---------
 1 files changed, 125 insertions(+), 113 deletions(-)

diffs (truncated from 363 to 300 lines):

diff -r d8a6d75bd876 -r ff7766b4dd3f 
src/org/openbravo/erpCommon/utility/WindowTree.java
--- a/src/org/openbravo/erpCommon/utility/WindowTree.java       Thu Sep 14 
16:06:06 2017 +0200
+++ b/src/org/openbravo/erpCommon/utility/WindowTree.java       Fri Sep 15 
09:05:09 2017 +0200
@@ -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) 2001-2016 Openbravo SLU 
+ * All portions are Copyright (C) 2001-2017 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -43,6 +43,7 @@
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBQuery;
 import org.openbravo.data.Sqlc;
+import org.openbravo.database.ConnectionProvider;
 import org.openbravo.model.ad.datamodel.Table;
 import org.openbravo.model.ad.ui.Tab;
 import org.openbravo.model.ad.utility.Tree;
@@ -60,7 +61,7 @@
 public class WindowTree extends HttpSecureAppServlet {
   private static final long serialVersionUID = 1L;
   private static final String CHILD_SHEETS = "frameWindowTreeF3";
-  private static List<String> nodeIdList = new ArrayList<String>();
+  private static List<String> nodeIdList = new ArrayList<>();
 
   @Inject
   GlobalMenu menu;
@@ -82,36 +83,15 @@
 
     if (vars.commandIn("DEFAULT", "TAB")) {
       String strTabId = vars.getGlobalVariable("inpTabId", "WindowTree|tabId");
-
-      Tab tab = OBDal.getInstance().get(Tab.class, strTabId);
-      Table table = tab.getTable();
-      OBCriteria<Tree> adTreeCriteria = 
OBDal.getInstance().createCriteria(Tree.class);
-      adTreeCriteria.add(Restrictions.eq(Tree.PROPERTY_TABLE, table));
-      adTreeCriteria.add(Restrictions.eq(Tree.PROPERTY_CLIENT, 
OBContext.getOBContext()
-          .getCurrentClient()));
-      adTreeCriteria.setFilterOnReadableOrganization(false);
-      Tree adTree = (Tree) adTreeCriteria.uniqueResult();
-
-      String strTreeID = "";
-      if (adTree != null) {
-        strTreeID = adTree.getId();
-      } else {
-        String key = WindowTreeData.selectKey(this, strTabId);
-        {
-          String TreeType = WindowTreeUtility.getTreeType(key);
-          WindowTreeData[] data = WindowTreeData.selectTreeID(this,
-              Utility.getContext(this, vars, "#User_Client", ""), TreeType);
-          if (data != null && data.length > 0)
-            strTreeID = data[0].id;
-        }
-      }
-
-      if (strTreeID.equals(""))
+      ADTreeData treeData = new ADTreeData(strTabId);
+      treeData.initializeData(vars, this);
+      if (treeData.getTreeId() == null) {
         advisePopUp(request, response, "ERROR",
             Utility.messageBD(this, "Error", vars.getLanguage()),
             Utility.messageBD(this, "AccessTableNoView", vars.getLanguage()));
-      else
-        printPageDataSheet(response, vars, strTabId);
+      } else {
+        printPageDataSheet(response, vars, treeData);
+      }
     } else if (vars.commandIn("ASSIGN")) {
       String strTabId = vars.getRequiredStringParameter("inpTabId");
       String strTop = vars.getRequiredStringParameter("inpTop");
@@ -119,16 +99,16 @@
       String strChild = vars.getStringParameter("inpChild", "N");
       String strResult = WindowTreeChecks.checkChanges(this, vars, strTabId, 
strTop, strLink,
           strChild.equals("Y"));
-      if (strResult.equals(""))
+      if (strResult.equals("")) {
         changeNode(vars, strTabId, strTop, strLink, strChild);
-      else {
+      } else {
         vars.setSessionValue("WindowTree|message", strResult);
       }
       vars.setSessionValue("WindowTree|tabId", strTabId);
       PrintWriter out = response.getWriter();
 
       if (strResult != "") {
-        // create OBError and serizalize it using JSON
+        // create OBError and serialize it using JSON
         OBError error = new OBError();
         error.setType("Error");
         error.setTitle("Error");
@@ -140,8 +120,9 @@
 
       out.print(strResult);
       out.close();
-    } else
+    } else {
       throw new ServletException();
+    }
   }
 
   /**
@@ -158,53 +139,26 @@
    * @return String html with the tree.
    * @throws ServletException
    */
-  private String loadNodes(VariablesSecureApp vars, String key, boolean 
editable, String strTabId)
+  private String loadNodes(VariablesSecureApp vars, ADTreeData treeData, 
boolean editable)
       throws ServletException {
-    String TreeType = null;
-    String TreeID = "";
-    String TreeName = "";
-    String TreeDescription = "";
-
-    StringBuffer nodesMenu = new StringBuffer();
-    if (key == null || key.isEmpty()) {
-      Tab tab = OBDal.getInstance().get(Tab.class, strTabId);
-      Table table = tab.getTable();
-      OBCriteria<Tree> adTreeCriteria = 
OBDal.getInstance().createCriteria(Tree.class);
-      adTreeCriteria.add(Restrictions.eq(Tree.PROPERTY_TABLE, table));
-      adTreeCriteria.add(Restrictions.eq(Tree.PROPERTY_CLIENT, 
OBContext.getOBContext()
-          .getCurrentClient()));
-      adTreeCriteria.setFilterOnReadableOrganization(false);
-      Tree adTree = (Tree) adTreeCriteria.uniqueResult();
-
-      TreeID = adTree.getId();
-      TreeName = adTree.getName();
-      TreeDescription = adTree.getDescription();
-      TreeType = adTree.getTypeArea();
-    } else {
-      TreeType = WindowTreeUtility.getTreeType(key);
-      WindowTreeData[] data = WindowTreeData.selectTreeID(this,
-          Utility.getContext(this, vars, "#User_Client", ""), TreeType);
-      if (data == null || data.length == 0) {
-        log4j.error("WindowTree.loadNodes() - Unknown TreeNode: TreeType " + 
TreeType
-            + " - TreeKey " + key);
-        throw new ServletException("WindowTree.loadNodes() - Unknown 
TreeNode");
-      } else {
-        TreeID = data[0].id;
-        TreeName = data[0].name;
-        TreeDescription = data[0].description;
-      }
+    if (treeData.getTreeId() == null) {
+      log4j.error("WindowTree.loadNodes() - Unknown TreeNode: TreeType " + 
treeData.getTreeType()
+          + " - TreeKey " + treeData.getKey());
+      throw new ServletException("WindowTree.loadNodes() - Unknown TreeNode");
     }
-
+    StringBuilder nodesMenu = new StringBuilder();
     if (log4j.isDebugEnabled())
-      log4j.debug("WindowTree.loadNodes() - TreeType: " + TreeType + " || 
TreeID: " + TreeID);
+      log4j.debug("WindowTree.loadNodes() - TreeType: " + 
treeData.getTreeType() + " || TreeID: "
+          + treeData.getTreeId());
     nodesMenu.append("\n<ul class=\"dhtmlgoodies_tree\">\n");
-    nodesMenu.append(WindowTreeUtility.addNodeElement(TreeName, 
TreeDescription, CHILD_SHEETS,
-        true, "", strDireccion, "clickItem(0, '" + Replace.replace(TreeName, 
"'", "\\'")
-            + "', 'N');", "dblClickItem(0);", true, "0", ""));
-    WindowTreeData[] wtd = WindowTreeUtility.getTree(this, vars, TreeType, 
TreeID, editable, "",
-        "", strTabId);
+    nodesMenu.append(WindowTreeUtility.addNodeElement(treeData.getTreeName(),
+        treeData.getTreeDescription(), CHILD_SHEETS, true, "", strDireccion, 
"clickItem(0, '"
+            + Replace.replace(treeData.getTreeName(), "'", "\\'") + "', 
'N');", "dblClickItem(0);",
+        true, "0", ""));
+    WindowTreeData[] wtd = WindowTreeUtility.getTree(this, vars, 
treeData.getTreeType(),
+        treeData.getTreeId(), editable, "", "", treeData.getTabId());
     Map<String, List<WindowTreeData>> wtdTree = buildTree(wtd);
-    nodesMenu.append(generateTree(wtd, wtdTree, strDireccion, "0", true, 
strTabId));
+    nodesMenu.append(generateTree(wtd, wtdTree, strDireccion, "0", true, 
treeData.getTabId()));
     nodesMenu.append("\n</ul>\n");
     nodeIdList = null;
     return nodesMenu.toString();
@@ -234,7 +188,7 @@
     if (localIndice == null)
       localIndice = "0";
     boolean hayDatos = false;
-    StringBuffer strResultado = new StringBuffer();
+    StringBuilder strResultado = new StringBuilder();
     strResultado.append("<ul>");
     localIsFirst = false;
     List<WindowTreeData> subList = wtdTree.get(localIndice);
@@ -290,10 +244,10 @@
       OBQuery<BaseOBObject> entityResults = OBDal.getInstance().createQuery("" 
+ entityName + "",
           hqlWhereClause);
       if (nodeIdList == null) {
-        nodeIdList = new ArrayList<String>();
+        nodeIdList = new ArrayList<>();
       }
 
-      if (nodeIdList.size() == 0 && nodeIdList.size() != 
entityResults.count()) {
+      if (nodeIdList.isEmpty() && nodeIdList.size() != entityResults.count()) {
         ScrollableResults entityData = 
entityResults.scroll(ScrollMode.FORWARD_ONLY);
         int clearEachLoops = 100;
         int i = 0;
@@ -325,12 +279,12 @@
   }
 
   private static Map<String, List<WindowTreeData>> buildTree(WindowTreeData[] 
input) {
-    Map<String, List<WindowTreeData>> resMap = new HashMap<String, 
List<WindowTreeData>>();
+    Map<String, List<WindowTreeData>> resMap = new HashMap<>();
 
     for (WindowTreeData elem : input) {
       List<WindowTreeData> list = resMap.get(elem.parentId);
       if (list == null) {
-        list = new ArrayList<WindowTreeData>();
+        list = new ArrayList<>();
       }
       list.add(elem);
       resMap.put(elem.parentId, list);
@@ -352,9 +306,9 @@
    * @throws ServletException
    */
   private void printPageDataSheet(HttpServletResponse response, 
VariablesSecureApp vars,
-      String TabId) throws IOException, ServletException {
+      ADTreeData treeData) throws IOException, ServletException {
     if (log4j.isDebugEnabled())
-      log4j.debug("Output: Tree's screen for the tab: " + TabId);
+      log4j.debug("Output: Tree's screen for the tab: " + treeData.getTabId());
     OBError defaultInfo = new OBError();
     defaultInfo.setType("INFO");
     defaultInfo.setTitle(Utility.messageBD(this, "Info", vars.getLanguage()));
@@ -367,39 +321,18 @@
     xmlDocument.setParameter("language", "defaultLang=\"" + vars.getLanguage() 
+ "\";");
     xmlDocument.setParameter("directory", "var baseDirectory = \"" + 
strReplaceWith + "/\";\n");
     xmlDocument.setParameter("theme", vars.getTheme());
-    String strTreeID = "";
 
-    Tab tab = OBDal.getInstance().get(Tab.class, TabId);
-    Table table = tab.getTable();
-    OBCriteria<Tree> adTreeCriteria = 
OBDal.getInstance().createCriteria(Tree.class);
-    adTreeCriteria.add(Restrictions.eq(Tree.PROPERTY_TABLE, table));
-    adTreeCriteria.add(Restrictions.eq(Tree.PROPERTY_CLIENT, 
OBContext.getOBContext()
-        .getCurrentClient()));
-    adTreeCriteria.setFilterOnReadableOrganization(false);
-    Tree adTree = (Tree) adTreeCriteria.uniqueResult();
-    String key = "";
-    if (adTree != null) {
-      strTreeID = adTree.getId();
-    } else {
-      key = WindowTreeData.selectKey(this, TabId);
-      {
-        String TreeType = WindowTreeUtility.getTreeType(key);
-        WindowTreeData[] data = WindowTreeData.selectTreeID(this,
-            Utility.getContext(this, vars, "#User_Client", ""), TreeType);
-        if (data != null && data.length > 0)
-          strTreeID = data[0].id;
-      }
-    }
-
-    WindowTreeData[] data = WindowTreeData.selectTabName(this, TabId);
+    WindowTreeData[] data = WindowTreeData.selectTabName(this, 
treeData.getTabId());
 
     xmlDocument.setParameter("description", data[0].name);
-    xmlDocument.setParameter("page", Utility.getTabURL(TabId, "E", true));
-    xmlDocument.setParameter("menu",
-        loadNodes(vars, key, WindowTreeData.selectEditable(this, 
TabId).equals("Y"), TabId));
-    xmlDocument.setParameter("treeID", strTreeID);
-    xmlDocument.setParameter("tabID", TabId);
-    key = "inp" + Sqlc.TransformaNombreColumna(key);
+    xmlDocument.setParameter("page", Utility.getTabURL(treeData.getTabId(), 
"E", true));
+    xmlDocument.setParameter(
+        "menu",
+        loadNodes(vars, treeData,
+            WindowTreeData.selectEditable(this, 
treeData.getTabId()).equals("Y")));
+    xmlDocument.setParameter("treeID", treeData.getTreeId());
+    xmlDocument.setParameter("tabID", treeData.getTabId());
+    String key = "inp" + Sqlc.TransformaNombreColumna(treeData.getKey());
     xmlDocument.setParameter("keyField", key);
     xmlDocument.setParameter("keyFieldScript",
         "function getKeyField() {\n return document.frmMain." + key + 
";\n}\n");
@@ -413,7 +346,7 @@
         xmlDocument.setParameter("messageMessage", myMessage.getMessage());
       }
     } catch (Exception ex) {
-      ex.printStackTrace();
+      log4j.error(ex.getMessage(), ex);
     }
 
     response.setContentType("text/html; charset=UTF-8");
@@ -580,4 +513,83 @@
   public String getServletInfo() {
     return "Servlet that presents the tree of a TreeNode windo windoww";
   } // end of getServletInfo() method
+
+  private class ADTreeData {
+    String tabId;
+    String treeId;
+    String treeName;
+    String treeType;
+    String treeDescription;
+    String key;
+
+    private ADTreeData(String tabId) {
+      this.tabId = tabId;
+      this.treeId = null;
+    }
+
+    private void initializeData(VariablesSecureApp vars, ConnectionProvider 
connectionProvider)
+        throws ServletException {
+      initFromADTree();

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to