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