KickJava   Java API By Example, From Geeks To Geeks.

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


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.DB;
24 import org.compiere.util.Env;
25 import org.compiere.util.Log;
26
27 /**
28  * Model Window Value Object
29  *
30  * @author Jorg Janke
31  * @version $Id: MWindowVO.java,v 1.3 2003/10/25 06:08:27 jjanke Exp $
32  */

33 public class MWindowVO implements Serializable JavaDoc
34 {
35     /**
36      * Private Constructor
37      * @param ctx context
38      * @param WindowNo window no
39      */

40     private MWindowVO (Properties JavaDoc ctx, int WindowNo)
41     {
42         this.ctx = ctx;
43         this.WindowNo = WindowNo;
44     } // MWindowVO
45

46     /** Properties */
47     public Properties JavaDoc ctx;
48
49     public int WindowNo;
50
51     // Database fields
52
public int AD_Window_ID = 0;
53     public String JavaDoc Name = "";
54     public String JavaDoc Description = "";
55     public String JavaDoc Help = "";
56     public String JavaDoc WindowType = "";
57     public int AD_Image_ID = 0;
58     public int AD_Color_ID = 0;
59     public String JavaDoc IsReadWrite = null;
60
61     /** Tabs contains MTabVO elements */
62     public ArrayList JavaDoc Tabs = null;
63
64     public static final String JavaDoc WINDOWTYPE_QUERY = "Q";
65     public static final String JavaDoc WINDOWTYPE_TRX = "T";
66     public static final String JavaDoc WINDOWTYPE_MMAINTAIN = "M";
67
68     /**
69      * Set Context including contained elements
70      * @param newCtx context
71      */

72     public void setCtx (Properties JavaDoc newCtx)
73     {
74         ctx = newCtx;
75         for (int i = 0; i < Tabs.size() ; i++)
76         {
77             MTabVO tab = (MTabVO)Tabs.get(i);
78             tab.setCtx(newCtx);
79         }
80     } // setCtx
81

82     /*************************************************************************/
83
84     /**
85      * Create Window Value Object
86      *
87      * @param ctx context
88      * @param WindowNo window no
89      * @param AD_Window_ID window id
90      * @return MWindowVO
91      */

92     public static MWindowVO create (Properties JavaDoc ctx, int WindowNo, int AD_Window_ID)
93     {
94         return create (ctx, WindowNo, AD_Window_ID, 0);
95     } // create
96

97     /**
98      * Create Window Value Object
99      *
100      * @param ctx context
101      * @param WindowNo window no
102      * @param AD_Window_ID window id
103      * @param AD_Menu_ID menu id
104      * @return MWindowVO
105      */

106     public static MWindowVO create (Properties JavaDoc ctx, int WindowNo, int AD_Window_ID, int AD_Menu_ID)
107     {
108         Log.trace(Log.l2_Sub, "MWindowVO.create #" + WindowNo,
109             "AD_Window_ID=" + AD_Window_ID + "; AD_Menu_ID=" + AD_Menu_ID);
110         MWindowVO vo = new MWindowVO (ctx, WindowNo);
111         vo.AD_Window_ID = AD_Window_ID;
112
113         // Get Window_ID if required
114
if (vo.AD_Window_ID == 0 && AD_Menu_ID != 0)
115         {
116             String JavaDoc sql = "SELECT AD_Window_ID FROM AD_Menu "
117                 + "WHERE AD_Menu_ID=? AND Action='W'";
118             try
119             {
120                 PreparedStatement JavaDoc pstmt = DB.prepareStatement(sql);
121                 pstmt.setInt(1, AD_Menu_ID);
122                 ResultSet JavaDoc rs = pstmt.executeQuery();
123                 while (rs.next())
124                     vo.AD_Window_ID = rs.getInt(1);
125                 rs.close();
126                 pstmt.close();
127             }
128             catch (SQLException JavaDoc e)
129             {
130                 Log.error("MWindowVO.create-Menu", e);
131                 return null;
132             }
133             Log.trace(Log.l2_Sub, "AD_Window_ID=" + vo.AD_Window_ID);
134         }
135
136         // -- Get Window
137

138         StringBuffer JavaDoc sql = new StringBuffer JavaDoc("SELECT Name,Description,Help,WindowType, "
139             + "AD_Color_ID,AD_Image_ID, a.IsReadWrite ");
140
141         if (Env.isBaseLanguage(vo.ctx, "AD_Window"))
142             sql.append("FROM AD_Window w, AD_Window_Access a "
143                 + "WHERE w.AD_Window_ID=?"
144                 + " AND w.AD_Window_ID=a.AD_Window_ID AND a.AD_Role_ID=?"
145                 + " AND w.IsActive='Y' AND a.IsActive='Y'");
146         else
147             sql.append("FROM AD_Window_vt w, AD_Window_Access a "
148                 + "WHERE w.AD_Window_ID=?"
149                 + " AND w.AD_Window_ID=a.AD_Window_ID AND a.AD_Role_ID=?"
150                 + " AND a.IsActive='Y'")
151                 .append(" AND AD_Language='")
152                 .append(Env.getAD_Language(vo.ctx)).append("'");
153
154         try
155         {
156             // create statement
157
PreparedStatement JavaDoc pstmt = DB.prepareStatement(sql.toString());
158             pstmt.setInt(1, vo.AD_Window_ID);
159             pstmt.setInt(2, Env.getContextAsInt(vo.ctx, "#AD_Role_ID"));
160             // get data
161
ResultSet JavaDoc rs = pstmt.executeQuery();
162             if (rs.next())
163             {
164                 vo.Name = rs.getString(1);
165                 vo.Description = rs.getString(2);
166                 if (vo.Description == null)
167                     vo.Description = "";
168                 vo.Help = rs.getString(3);
169                 if (vo.Help == null)
170                     vo.Help = "";
171                 vo.WindowType = rs.getString(4);
172                 //
173
vo.AD_Color_ID = rs.getInt(5);
174                 vo.AD_Image_ID = rs.getInt(6);
175                 vo.IsReadWrite = rs.getString(7);
176             }
177             rs.close();
178             pstmt.close();
179         }
180         catch (SQLException JavaDoc ex)
181         {
182             Log.error("MWindowVO.create - " + sql.toString(), ex);
183             return null;
184         }
185         if (vo.IsReadWrite == null)
186         {
187             Log.saveError("AccessTableNoView", "");
188             return null;
189         }
190
191         // Create Tabs
192
createTabs (vo);
193         if (vo.Tabs == null || vo.Tabs.size() == 0)
194         {
195             Log.error("MWindowVO.create - No Tabs");
196             return null;
197         }
198
199         return vo;
200     } // create
201

202     /**
203      * Create Window Tabs
204      * @param mWindowVO Window Value Object
205      * @return true if tabs were created
206      */

207     private static boolean createTabs (MWindowVO mWindowVO)
208     {
209         mWindowVO.Tabs = new ArrayList JavaDoc ();
210
211         String JavaDoc sql = MTabVO.getSQL(mWindowVO);
212         int TabNo = 0;
213         int AD_Table_ID = 0;
214         try
215         {
216             // create statement
217
PreparedStatement JavaDoc pstmt = DB.prepareStatement(sql);
218             pstmt.setInt(1, mWindowVO.AD_Window_ID);
219             ResultSet JavaDoc rs = pstmt.executeQuery();
220             boolean firstTab = true;
221             while (rs.next())
222             {
223                 if (AD_Table_ID == 0)
224                     AD_Table_ID = rs.getInt("AD_Table_ID");
225                 // Create TabVO
226
MTabVO mTabVO = MTabVO.create(mWindowVO, TabNo, rs,
227                     mWindowVO.WindowType.equals(WINDOWTYPE_QUERY), // isRO
228
mWindowVO.WindowType.equals(WINDOWTYPE_TRX)); // onlyCurrentRows
229
if (mTabVO == null && firstTab)
230                     break; // don't continue if first tab is null
231
if (mTabVO != null)
232                 {
233                     if (!mTabVO.IsReadOnly && "N".equals(mWindowVO.IsReadWrite))
234                         mTabVO.IsReadOnly = true;
235                     mWindowVO.Tabs.add(mTabVO);
236                     TabNo++; // must be same as mWindow.getTab(x)
237
firstTab = false;
238                 }
239             }
240             rs.close();
241             pstmt.close();
242         }
243         catch (SQLException JavaDoc e)
244         {
245             Log.error("MWindowVO.createTabs", e);
246             return false;
247         }
248
249         // No Tabs
250
if (TabNo == 0 || mWindowVO.Tabs.size() == 0)
251             return false;
252
253         // Put base table of window in ctx (for VDocAction)
254
Env.setContext(mWindowVO.ctx, mWindowVO.WindowNo, "BaseTable_ID", AD_Table_ID);
255         return true;
256     } // createTabs
257

258 } // MWindowVO
259

260
Popular Tags