/** Business logic to execute. */ public static VOResponse loadItemImplosion( Connection conn, ItemPK pk, String langId, String username) throws Throwable { PreparedStatement pstmt = null; PreparedStatement pstmt2 = null; try { String sql1 = "select ITM01_ITEMS.COMPANY_CODE_SYS01,ITM01_ITEMS.ITEM_CODE,ITM01_ITEMS.MIN_SELLING_QTY_UM_CODE_REG02," + "ITM03_COMPONENTS.ITEM_CODE_ITM01,ITM03_COMPONENTS.QTY,SYS10_COMPANY_TRANSLATIONS.DESCRIPTION " + "from ITM03_COMPONENTS,ITM01_ITEMS,SYS10_COMPANY_TRANSLATIONS " + "where " + "ITM03_COMPONENTS.COMPANY_CODE_SYS01 = ITM01_ITEMS.COMPANY_CODE_SYS01 and " + "ITM03_COMPONENTS.PARENT_ITEM_CODE_ITM01 = ITM01_ITEMS.ITEM_CODE and " + "ITM01_ITEMS.COMPANY_CODE_SYS01 = SYS10_COMPANY_TRANSLATIONS.COMPANY_CODE_SYS01 and " + "ITM01_ITEMS.PROGRESSIVE_SYS10 = SYS10_COMPANY_TRANSLATIONS.PROGRESSIVE and " + "SYS10_COMPANY_TRANSLATIONS.LANGUAGE_CODE=? and ITM03_COMPONENTS.ENABLED='Y' and " + "ITM03_COMPONENTS.COMPANY_CODE_SYS01=? and " + "ITM03_COMPONENTS.ITEM_CODE_ITM01 in ("; String sql3 = ") "; Map attribute2dbField = new HashMap(); attribute2dbField.put("companyCodeSys01ITM03", "ITM01_ITEMS.COMPANY_CODE_SYS01"); attribute2dbField.put("itemCodeItm01ITM03", "ITM03_COMPONENTS.ITEM_CODE_ITM01"); attribute2dbField.put("parentItemCodeItm01ITM03", "ITM01_ITEMS.ITEM_CODE"); attribute2dbField.put("descriptionSYS10", "SYS10_COMPANY_TRANSLATIONS.DESCRIPTION"); attribute2dbField.put("qtyITM03", "ITM03_COMPONENTS.QTY"); attribute2dbField.put( "minSellingQtyUmCodeReg02ITM01", "ITM01_ITEMS.MIN_SELLING_QTY_UM_CODE_REG02"); ArrayList values = new ArrayList(); values.add(langId); values.add(pk.getCompanyCodeSys01ITM01()); // retrieve the whole tree... MaterialVO rootVO = new MaterialVO(); rootVO.setCompanyCodeSys01ITM03(pk.getCompanyCodeSys01ITM01()); rootVO.setDescriptionSYS10(""); rootVO.setParentItemCodeItm01ITM03(""); rootVO.setItemCodeItm01ITM03(""); DefaultMutableTreeNode root = new OpenSwingTreeNode(rootVO); DefaultTreeModel model = new DefaultTreeModel(root); String sql2 = "'" + pk.getItemCodeITM01() + "'"; // read from ITM03 table... Response res = null; java.util.List rows = null; DefaultMutableTreeNode auxnode, auxnode2; MaterialVO auxVO = null; Hashtable nodes = new Hashtable(); // collections of <item component code,related node> Hashtable auxnodes = new Hashtable(); // collections of <item component code,related node> Enumeration en = null; do { res = QueryUtil.getQuery( conn, new UserSessionParameters(username), sql1 + sql2 + sql3, values, attribute2dbField, MaterialVO.class, "Y", "N", null, new GridParams(), true); if (!res.isError()) { rows = ((VOListResponse) res).getRows(); sql2 = ""; for (int i = 0; i < rows.size(); i++) { auxVO = (MaterialVO) rows.get(i); sql2 += "'" + auxVO.getParentItemCodeItm01ITM03() + "',"; auxnode = new OpenSwingTreeNode(auxVO); auxnode2 = (DefaultMutableTreeNode) nodes.get(auxVO.getItemCodeItm01ITM03()); if (auxnode2 != null) auxnode.add(auxnode2); nodes.remove(auxVO.getItemCodeItm01ITM03()); auxnodes.put(auxVO.getParentItemCodeItm01ITM03(), auxnode); } en = nodes.keys(); while (en.hasMoreElements()) { root.add((DefaultMutableTreeNode) nodes.get(en.nextElement())); } nodes = auxnodes; if (sql2.length() > 0) sql2 = sql2.substring(0, sql2.length() - 1); } } while (!res.isError() && rows.size() > 0); if (res.isError()) throw new Exception(res.getErrorMessage()); return new VOResponse(model); } catch (Exception ex1) { Logger.error( username, BillOfMaterialsUtil.class.getName(), "executeCommand", "Error while fetching products that use the specified component", ex1); throw new Exception(ex1.getMessage()); } }