KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > model > MTabVO


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

14 package org.compiere.model;
15
16 import java.io.Serializable JavaDoc;
17 import java.sql.PreparedStatement JavaDoc;
18 import java.sql.ResultSet JavaDoc;
19 import java.sql.SQLException JavaDoc;
20 import java.util.ArrayList JavaDoc;
21 import java.util.Properties JavaDoc;
22
23 import org.compiere.util.Access;
24 import org.compiere.util.DB;
25 import org.compiere.util.Env;
26 import org.compiere.util.Log;
27
28 /**
29  * Model Tab Value Object
30  *
31  * @author Jorg Janke
32  * @version $Id: MTabVO.java,v 1.9 2003/11/02 07:49:56 jjanke Exp $
33  */

34 public class MTabVO implements Serializable JavaDoc
35 {
36     /**
37      * Private constructor - must use Factory
38      */

39     private MTabVO()
40     {
41     } // MTabVO
42

43     /** Context - replicated */
44     public Properties JavaDoc ctx;
45     /** Window No - replicated */
46     public int WindowNo;
47     /** AD Window - replicated */
48     public int AD_Window_ID;
49
50     /** Tab No (not AD_Tab_ID) */
51     public int TabNo;
52
53     // Database Fields
54

55     public int AD_Tab_ID;
56     public String JavaDoc Name = "";
57     public String JavaDoc Description = "";
58     public String JavaDoc Help = "";
59     public boolean IsSingleRow = false;
60     public boolean IsReadOnly = false;
61     public boolean HasTree = false;
62     public int AD_Table_ID;
63     /** Primary Parent Column */
64     public int AD_Column_ID = 0;
65     public String JavaDoc TableName;
66     public boolean IsView = false;
67     public String JavaDoc AccessLevel;
68     public boolean IsSecurityEnabled = false;
69     public boolean IsDeleteable = false;
70     public boolean IsHighVolume = false;
71     public int AD_Process_ID = 0;
72     public String JavaDoc CommitWarning;
73     public String JavaDoc WhereClause;
74     public String JavaDoc OrderByClause;
75     public int TabLevel = 0;
76     public int AD_Image_ID = 0;
77     public int Included_Tab_ID = 0;
78     public String JavaDoc ReplicationType = "L";
79
80     //
81
public boolean IsSortTab = false;
82     public int AD_ColumnSortOrder_ID = 0;
83     public int AD_ColumnSortYesNo_ID = 0;
84
85     // Derived
86
public boolean onlyCurrentRows = true;
87     public int onlyCurrentDays = 1;
88
89     /** Fields contain MFieldVO entities */
90     public ArrayList JavaDoc Fields = null;
91
92     /**
93      * Set Context including contained elements
94      * @param newCtx new context
95      */

96     public void setCtx (Properties JavaDoc newCtx)
97     {
98         ctx = newCtx;
99         for (int i = 0; i < Fields.size() ; i++)
100         {
101             MFieldVO field = (MFieldVO)Fields.get(i);
102             field.setCtx(newCtx);
103         }
104     } // setCtx
105

106     /**
107      * Return the SQL statement used for the MTabVO.create
108      * @param mWindowVO WindowVO
109      * @return SQL SELECT String
110      */

111     protected static String JavaDoc getSQL (MWindowVO mWindowVO)
112     {
113         // View only returns IsActive='Y'
114
String JavaDoc sql = "SELECT * FROM AD_Tab_v WHERE AD_Window_ID=?"
115             + " ORDER BY SeqNo";
116         if (!Env.isBaseLanguage(mWindowVO.ctx, "AD_Window"))
117             sql = "SELECT * FROM AD_Tab_vt WHERE AD_Window_ID=?"
118                 + " AND AD_Language='" + Env.getAD_Language(mWindowVO.ctx) + "'"
119                 + " ORDER BY SeqNo";
120         return sql;
121     } // getSQL
122

123     /*************************************************************************/
124
125     /**
126      * Create MTabVO
127      *
128      * @param wVO value object
129      * @param TabNo tab no
130      * @param rs ResultSet from AD_Tab_v
131      * @param isRO true if window is r/o
132      * @param onlyCurrentRows if true query is limited to not processed records
133      * @return TabVO
134      */

135     public static MTabVO create (MWindowVO wVO, int TabNo, ResultSet JavaDoc rs, boolean isRO, boolean onlyCurrentRows)
136     {
137         Log.trace(Log.l3_Util, "MTabVO.create #" + TabNo);
138
139         MTabVO vo = new MTabVO ();
140         vo.ctx = wVO.ctx;
141         vo.WindowNo = wVO.WindowNo;
142         vo.AD_Window_ID = wVO.AD_Window_ID;
143         vo.TabNo = TabNo;
144         //
145
if (!loadTabDetails(vo, rs))
146             return null;
147
148         if (isRO)
149         {
150             Log.trace(Log.l6_Database, "MTabVO.create", "Tab is ReadOnly");
151             vo.IsReadOnly = true;
152         }
153         vo.onlyCurrentRows = onlyCurrentRows;
154
155         // Create Fields
156
if (vo.IsSortTab)
157         {
158             vo.Fields = new ArrayList JavaDoc(); // dummy
159
}
160         else
161         {
162             createFields (vo);
163             if (vo.Fields == null || vo.Fields.size() == 0)
164             {
165                 Log.error("MTabVO.create - No Fields");
166                 return null;
167             }
168         }
169         return vo;
170     } // create
171

172     /**
173      * Create MTabVO
174      *
175      * @param ctx context
176      * @param WindowNo window
177      * @param AD_Table_ID table
178      * @return TabVO
179       */

180     public static MTabVO create(Properties JavaDoc ctx, int WindowNo, int AD_Table_ID)
181     {
182         Log.trace(Log.l3_Util, "MTabVO.create");
183
184         MTabVO vo = new MTabVO ();
185         vo.ctx = ctx;
186         vo.WindowNo = WindowNo;
187         vo.AD_Window_ID = 0;
188         vo.TabNo = 0;
189         //
190
boolean resultOK = false;
191         String JavaDoc sql = "SELECT * FROM AD_Tab_v WHERE AD_Table_ID=?";
192         if (!Env.isBaseLanguage(ctx, "AD_Tab"))
193             sql = "SELECT * FROM AD_Tab_vt WHERE AD_Table_ID=?"
194                 + " AND AD_Language='" + Env.getAD_Language(ctx) + "'";
195         try
196         {
197             PreparedStatement JavaDoc pstmt = DB.prepareStatement(sql);
198             pstmt.setInt(1, AD_Table_ID);
199             ResultSet JavaDoc rs = pstmt.executeQuery();
200             //
201
if (rs.next())
202                 resultOK = loadTabDetails(vo, rs);
203             else
204                 Log.trace(Log.l6_Database, "MTabVO.create", "No Tab for AD_Table_ID=" + AD_Table_ID);
205             //
206
rs.close();
207             pstmt.close();
208         }
209         catch (SQLException JavaDoc e)
210         {
211             Log.error("MTabVO.create(1)", e);
212         }
213
214         if (!resultOK)
215             return null;
216
217         // Create Fields
218
if (vo.IsSortTab)
219         {
220             vo.Fields = new ArrayList JavaDoc(); // dummy
221
}
222         else
223         {
224             createFields (vo);
225             if (vo.Fields == null || vo.Fields.size() == 0)
226             {
227                 Log.error("MTabVO.create - No Fields");
228                 return null;
229             }
230         }
231         return vo;
232     } // create
233

234     /**
235      * Load Tab Details from rs into vo
236      * @param vo Tab value object
237      * @param rs ResultSet from AD_Tab_v/t
238      * @return true if read ok
239      */

240     private static boolean loadTabDetails (MTabVO vo, ResultSet JavaDoc rs)
241     {
242         MRole role = MRole.getDefault(vo.ctx, false);
243         try
244         {
245             vo.AD_Tab_ID = rs.getInt("AD_Tab_ID");
246             Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, "AD_Tab_ID", String.valueOf(vo.AD_Tab_ID));
247             vo.Name = rs.getString("Name");
248             Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, "Name", vo.Name);
249
250             // Translation Tab
251
boolean showTrl = Env.getContext(vo.ctx, "#ShowTrl").equals("Y") && Env.isMultiLingualDocument(vo.ctx);
252             if (!showTrl && rs.getString("IsTranslationTab").equals("Y"))
253             {
254                 Log.trace(Log.l5_DData, "MTabVO.loadTabDetails", "NoTranslationTab - AD_Tab_ID=" + vo.AD_Tab_ID + " " + vo.Name);
255                 return false;
256             }
257             // Accounting Info Tab
258
boolean showAcct = Env.getContext(vo.ctx, "#ShowAcct").equals("Y");
259             if (!showAcct && rs.getString("IsInfoTab").equals("Y"))
260             {
261                 Log.trace(Log.l5_DData, "MTabVO.loadTabDetails", "NoAcctTab - AD_Tab_ID=" + vo.AD_Tab_ID + " " + vo.Name);
262                 return false;
263             }
264             // Access Level
265
vo.AccessLevel = rs.getString("AccessLevel");
266             if (!role.canView (vo.ctx, vo.AccessLevel)) // No Access
267
{
268                 Log.trace(Log.l5_DData, "MTabVO.loadTabDetails", "No Role Access - AD_Tab_ID=" + vo.AD_Tab_ID + " " + vo. Name);
269                 return false;
270             } // Used by MField.getDefault
271
Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, "AccessLevel", vo.AccessLevel);
272
273             // Table Access
274
vo.AD_Table_ID = rs.getInt("AD_Table_ID");
275             Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, "AD_Table_ID", String.valueOf(vo.AD_Table_ID));
276             if (!role.isTableAccess(vo.AD_Table_ID, true))
277             {
278                 Log.trace(Log.l5_DData, "MTabVO.loadTabDetails", "No Table Access - AD_Tab_ID=" + vo.AD_Tab_ID + " " + vo. Name);
279                 return false;
280             }
281             if (rs.getString("IsReadOnly").equals("Y"))
282                 vo.IsReadOnly = true;
283
284             //
285
vo.Description = rs.getString("Description");
286             if (vo.Description == null)
287                 vo.Description = "";
288             vo.Help = rs.getString("Help");
289             if (vo.Help == null)
290                 vo.Help = "";
291
292             if (rs.getString("IsSingleRow").equals("Y"))
293                 vo.IsSingleRow = true;
294             if (rs.getString("HasTree").equals("Y"))
295                 vo.HasTree = true;
296
297             vo.AD_Table_ID = rs.getInt("AD_Table_ID");
298             vo.TableName = rs.getString("TableName");
299             if (rs.getString("IsView").equals("Y"))
300                 vo.IsView = true;
301             vo.AD_Column_ID = rs.getInt("AD_Column_ID"); // Primary Parent Column
302

303             if (rs.getString("IsSecurityEnabled").equals("Y"))
304                 vo.IsSecurityEnabled = true;
305             if (rs.getString("IsDeleteable").equals("Y"))
306                 vo.IsDeleteable = true;
307             if (rs.getString("IsHighVolume").equals("Y"))
308                 vo.IsHighVolume = true;
309
310             vo.CommitWarning = rs.getString("CommitWarning");
311             if (vo.CommitWarning == null)
312                 vo.CommitWarning = "";
313             vo.WhereClause = rs.getString("WhereClause");
314             if (vo.WhereClause == null)
315                 vo.WhereClause = "";
316             vo.OrderByClause = rs.getString("OrderByClause");
317             if (vo.OrderByClause == null)
318                 vo.OrderByClause = "";
319
320             vo.AD_Process_ID = rs.getInt("AD_Process_ID");
321             if (rs.wasNull())
322                 vo.AD_Process_ID = 0;
323             vo.AD_Image_ID = rs.getInt("AD_Image_ID");
324             if (rs.wasNull())
325                 vo.AD_Image_ID = 0;
326             vo.Included_Tab_ID = rs.getInt("Included_Tab_ID");
327             if (rs.wasNull())
328                 vo.Included_Tab_ID = 0;
329             //
330
vo.TabLevel = rs.getInt("TabLevel");
331             if (rs.wasNull())
332                 vo.TabLevel = 0;
333             //
334
vo.IsSortTab = rs.getString("IsSortTab").equals("Y");
335             if (vo.IsSortTab)
336             {
337                 vo.AD_ColumnSortOrder_ID = rs.getInt("AD_ColumnSortOrder_ID");
338                 vo.AD_ColumnSortYesNo_ID = rs.getInt("AD_ColumnSortYesNo_ID");
339             }
340             // Replication Type - set R/O if Reference
341
try
342             {
343                 int index = rs.findColumn ("ReplicationType");
344                 vo.ReplicationType = rs.getString (index);
345                 if ("R".equals(vo.ReplicationType))
346                     vo.IsReadOnly = true;
347             }
348             catch (Exception JavaDoc e)
349             {
350             }
351         }
352         catch (SQLException JavaDoc ex)
353         {
354             Log.error("MTabVO.loadTabDetails", ex);
355             return false;
356         }
357         return true;
358     } // loadTabDetails
359

360
361     /*************************************************************************/
362
363     /**
364      * Create Tab Fields
365      * @param mTabVO tab value object
366      * @return true if fields were created
367      */

368     private static boolean createFields (MTabVO mTabVO)
369     {
370         mTabVO.Fields = new ArrayList JavaDoc();
371
372         String JavaDoc sql = MFieldVO.getSQL(mTabVO);
373         try
374         {
375             PreparedStatement JavaDoc pstmt = DB.prepareStatement(sql);
376             pstmt.setInt(1, mTabVO.AD_Tab_ID);
377             ResultSet JavaDoc rs = pstmt.executeQuery();
378             while (rs.next())
379             {
380                 MFieldVO voF = MFieldVO.create (mTabVO.ctx, mTabVO.WindowNo, mTabVO.TabNo, mTabVO.AD_Window_ID, mTabVO.IsReadOnly, rs);
381                 if (voF != null)
382                     mTabVO.Fields.add(voF);
383             }
384             rs.close();
385             pstmt.close();
386         }
387         catch (Exception JavaDoc e)
388         {
389             Log.error("MTabVO.createFields", e);
390             return false;
391         }
392         return mTabVO.Fields.size() != 0;
393     } // createFields
394

395 } // MTabVO
396

397
Popular Tags