KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > erpCommon > utility > ReferencedTables


1 /*
2  *************************************************************************
3  * The contents of this file are subject to the Openbravo Public License
4  * Version 1.0 (the "License"), being the Mozilla Public License
5  * Version 1.1 with a permitted attribution clause; you may not use this
6  * file except in compliance with the License. You may obtain a copy of
7  * the License at http://www.openbravo.com/legal/license.html
8  * Software distributed under the License is distributed on an "AS IS"
9  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
10  * License for the specific language governing rights and limitations
11  * under the License.
12  * The Original Code is Openbravo ERP.
13  * The Initial Developer of the Original Code is Openbravo SL
14  * All portions are Copyright (C) 2001-2006 Openbravo SL
15  * All Rights Reserved.
16  * Contributor(s): ______________________________________.
17  ************************************************************************
18 */

19 package org.openbravo.erpCommon.utility;
20
21 import org.openbravo.database.ConnectionProvider;
22 import java.util.Vector JavaDoc;
23 import javax.servlet.*;
24 import org.apache.log4j.Logger ;
25
26
27 public class ReferencedTables {
28   static Logger log4j = Logger.getLogger(ReferencedTables.class);
29   private ConnectionProvider conn;
30   private String JavaDoc adTableId;
31   private String JavaDoc keyName;
32   private String JavaDoc keyId;
33   private boolean hassotrx=false;
34   private boolean sotrx=true;
35
36   public ReferencedTables(ConnectionProvider _conn, String JavaDoc _adTableId, String JavaDoc _keyName, String JavaDoc _keyId) throws ServletException {
37     if (_adTableId==null || _adTableId.equals("") || _keyName==null || _keyName.equals("")) {
38       throw new ServletException("ReferenceTables() - Missing arguments");
39     }
40     adTableId = _adTableId;
41     keyName = _keyName;
42     keyId = _keyId;
43     conn = _conn;
44     process();
45   }
46
47   private void process() throws ServletException {
48     String JavaDoc tableName = ReferencedTablesData.selectTableName(conn, adTableId);
49     if (keyId!=null && !keyId.equals("")) {
50       if (adTableId.equals("800018")) { //C_Debt_Payment
51
if (log4j.isDebugEnabled()) log4j.debug("DP");
52         String JavaDoc invoiceId = ReferencedTablesData.selectKeyId(conn, "C_INVOICE_ID", tableName, keyName, keyId);
53         if (!invoiceId.equals("")) {
54           if (log4j.isDebugEnabled()) log4j.debug("InvoiceId: "+invoiceId);
55           String JavaDoc newAdTableId = ReferencedTablesData.selectTableId(conn, "C_Invoice");
56           ReferencedTables ref = new ReferencedTables(conn, newAdTableId, "C_Invoice_ID", invoiceId);
57           hassotrx = ref.hasSOTrx();
58           sotrx = ref.isSOTrx();
59           ref = null;
60         } else {
61           String JavaDoc orderId = ReferencedTablesData.selectKeyId(conn, "C_ORDER_ID", tableName, keyName, keyId);
62           if (!orderId.equals("")) {
63             if (log4j.isDebugEnabled()) log4j.debug("OrderId: "+orderId);
64             String JavaDoc newAdTableId = ReferencedTablesData.selectTableId(conn, "C_Order");
65             ReferencedTables ref = new ReferencedTables(conn, newAdTableId, "C_Order_ID", orderId);
66             hassotrx = ref.hasSOTrx();
67             sotrx = ref.isSOTrx();
68             ref = null;
69           } else {
70             if (log4j.isDebugEnabled()) log4j.debug("Settlement");
71             checkParent(tableName, "C_Settlement_Generate_ID");
72           }
73         }
74       } else if (adTableId.equals("800019")) { //C_Settlement
75
hassotrx = true;
76         sotrx = ReferencedTablesData.selectNotManual(conn, keyId);
77       } else if (ReferencedTablesData.hasIsSOTrx(conn, adTableId)) {
78         hassotrx = true;
79         if (keyName.equalsIgnoreCase("C_DocTypeTarget_ID")) keyName = "C_DocType_ID";
80         else if (keyName.equalsIgnoreCase("PO_Window_ID")) keyName = "AD_Window_ID";
81         else if (keyName.equalsIgnoreCase("BillTo_ID")) keyName = "C_BPartner_Location_ID";
82         sotrx = ReferencedTablesData.selectSOTrx(conn, tableName, keyName, keyId);
83       } else checkParent(tableName, "");
84     }
85   }
86
87   private void checkParent(String JavaDoc tableName, String JavaDoc filterField) throws ServletException {
88     ReferencedTablesData[] data = ReferencedTablesData.select(conn, filterField, adTableId);
89     if (keyName.equalsIgnoreCase("C_DocTypeTarget_ID")) keyName = "C_DocType_ID";
90     else if (keyName.equalsIgnoreCase("PO_Window_ID")) keyName = "AD_Window_ID";
91     else if (keyName.equalsIgnoreCase("BillTo_ID")) keyName = "C_BPartner_Location_ID";
92     else if ((keyName.equalsIgnoreCase("SO_Bankaccount_ID")) || (keyName.equalsIgnoreCase("PO_Bankaccount_ID"))) keyName="C_BankAccount_ID";
93     if (data!=null && data.length>0) {
94       for (int i=0;i<data.length;i++) {
95         Vector JavaDoc<Object JavaDoc> vecReference = getTableNameReferenced(data[i].columnname, data[i].adReferenceId, data[i].adReferenceValueId);
96         String JavaDoc newKeyId = ReferencedTablesData.selectKeyId(conn, data[i].columnname, tableName, keyName, keyId);
97         if (vecReference!=null && vecReference.size()>0) {
98           String JavaDoc newAdTableId = ReferencedTablesData.selectTableId(conn, ((String JavaDoc)vecReference.elementAt(0)));
99           try {
100             ReferencedTables ref = new ReferencedTables(conn, newAdTableId, ((String JavaDoc)vecReference.elementAt(1)), newKeyId);
101             if (ref.hasSOTrx()) {
102               hassotrx = ref.hasSOTrx();
103               sotrx = ref.isSOTrx();
104               break;
105             }
106             ref = null;
107           } catch (ServletException ex) {
108             ex.printStackTrace();
109           }
110         }
111       }
112     }
113   }
114
115   private Vector JavaDoc<Object JavaDoc> getTableNameReferenced(String JavaDoc columnname, String JavaDoc adReferenceId, String JavaDoc adReferenceValueId) throws ServletException {
116     String JavaDoc tableDirName = "", columnName="";
117     tableDirName = columnname.substring(0,columnname.length()-3);
118     columnName = columnname;
119     if (columnname.startsWith("C_Settlement")) {
120       tableDirName = "C_Settlement";
121       columnName = "C_Settlement_ID";
122     }
123     Vector JavaDoc<Object JavaDoc> vec = new Vector JavaDoc<Object JavaDoc>();
124     switch (Integer.valueOf(adReferenceId).intValue()) {
125       case 13:
126       case 19:
127       case 35:
128       case 30:
129         vec.addElement(tableDirName);
130         vec.addElement(columnName);
131         break;
132       case 21:
133         vec.addElement("C_Location");
134         vec.addElement("C_Location_ID");
135         break;
136       case 25:
137         vec.addElement("C_ValidCombination");
138         vec.addElement("C_ValidCombination_ID");
139         break;
140       case 31:
141         vec.addElement("M_Locator");
142         vec.addElement("M_Locator_ID");
143         break;
144       case 800011:
145         vec.addElement("M_Product");
146         vec.addElement("M_Product_ID");
147         break;
148       case 800013:
149         vec.addElement("M_Locator");
150         vec.addElement("M_Locator_ID");
151         break;
152       case 18:
153         ReferencedTablesData[] data = ReferencedTablesData.selectRefTable(conn, adReferenceValueId);
154         if (data!=null && data.length>0) {
155           vec.addElement(data[0].tablename);
156           vec.addElement(data[0].columnname);
157         }
158         break;
159     };
160     return vec;
161   }
162
163   public boolean isSOTrx() {
164     return sotrx;
165   }
166
167   public boolean hasSOTrx() {
168     return hassotrx;
169   }
170 }
171
Popular Tags