KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > wad > Wad


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.wad;
20
21 import org.openbravo.data.Sqlc;
22 import org.openbravo.utils.FileUtility;
23 import org.openbravo.utils.DirFilter;
24 import org.openbravo.utils.FormatUtilities;
25 import org.openbravo.data.FieldProvider;
26
27 import org.openbravo.xmlEngine.XmlDocument;
28 import org.openbravo.xmlEngine.XmlEngine;
29
30 import org.openbravo.wad.controls.*;
31
32 import java.io.*;
33 import javax.servlet.*;
34
35 import java.util.Vector JavaDoc;
36 import java.util.Enumeration JavaDoc;
37 import java.util.Properties JavaDoc;
38
39 import org.xml.sax.helpers.DefaultHandler JavaDoc;
40
41 import org.apache.log4j.Logger;
42 import org.apache.log4j.PropertyConfigurator;
43
44 public class Wad extends DefaultHandler JavaDoc {
45   static final int NUM_COLUMNS = 10;
46   static final int COLUMN_1_OF_1 = 11;
47   static final int COLUMN_1_OF_2 = 12;
48   static final int COLUMN_2_OF_2 = 22;
49   static final int NUM_TABS = 8;
50   static final int INCR_TABS = 8;
51   static final int HEIGHT_TABS = 38;
52   static final int MAX_COL_SIZE_RELATION = 50;
53   static final int MAX_SIZE_EDITION_1_COLUMNS = 90;
54   static final int MAX_SIZE_EDITION_2_COLUMNS = 45;
55   static final int MAX_TEXTBOX_LENGTH = 110;
56   static final double PIXEL_TO_LENGTH = 5.6;
57   static final double FIRST_COLS_SIZE = 60;
58   static final double SUBTABS_COL_SIZE = 30;
59   static final double RELATION_MINIMUM_LENGTH = 15.0;
60   static final int IMAGE_RELATION_WIDTH = 16;
61   static final int IMAGE_RELATION_HEIGHT = 16;
62   static final int IMAGE_BUTTON_WIDTH = 16;
63   static final int IMAGE_BUTTON_HEIGHT = 16;
64   static final String JavaDoc IMAGE_DEFAULT = "blank.gif";
65   XmlEngine xmlEngine;
66   protected static WadConnection pool;
67   String JavaDoc strSystemSeparator;
68   static final String JavaDoc calendarDescription = "Calendar";
69   static final String JavaDoc clockDescription = "Clock";
70   static final String JavaDoc calculatorDescription = "Calculator";
71   static String JavaDoc calendarDescriptionTrl = "";
72   static String JavaDoc clockDescriptionTrl = "";
73   static String JavaDoc calculatorDescriptionTrl = "";
74   static String JavaDoc jsDateFormat;
75   static String JavaDoc sqlDateFormat;
76
77   static Logger log4j = Logger.getLogger(Wad.class);
78
79   public static void main(String JavaDoc argv[]) throws Exception JavaDoc {
80     PropertyConfigurator.configure("log4j.lcf");
81     String JavaDoc strWindowName;
82     String JavaDoc dirFin;
83     String JavaDoc dirReference;
84     String JavaDoc dirWebXml;
85     String JavaDoc dirActionButton;
86     boolean generateWebXml;
87     boolean generateTabs;
88     String JavaDoc dirBaseTrl;
89     String JavaDoc translateStr;
90     String JavaDoc dirWebClients;
91     String JavaDoc basePath;
92     String JavaDoc attachPath;
93     String JavaDoc webPath;
94     String JavaDoc strBaseSrc;
95     boolean complete;
96
97     if (argv.length < 1) {
98       log4j.error("Usage: java Wad connection.xml [{% || Window} [destinyDir]]");
99       return;
100     }
101     String JavaDoc strFileConnection = argv[0];
102     Wad wad = new Wad();
103     wad.strSystemSeparator = System.getProperty("file.separator");
104     wad.createXmlEngine(strFileConnection);
105     wad.createPool(strFileConnection + "/XmlPool.xml");
106     wad.readProperties(strFileConnection + "/Openbravo.properties");
107     try {
108       // the second parameter is the tab to be generated
109
// if there is none it's * then all them are read
110
strWindowName = argv[1];
111
112       // the third parameter is the directory where the tab files are created
113
if(argv.length <= 2) dirFin = ".";
114       else dirFin = argv[2];
115
116       // the fourth paramenter is the directory where the references are created
117
// (TableList_data.xsql y TableDir_data.xsql)
118
if(argv.length <= 3) dirReference = dirFin;
119       else dirReference = argv[3];
120
121       // the fifth parameter is the directory where web.xml es created
122
if(argv.length <= 4) dirWebXml = dirFin;
123       else dirWebXml = argv[4];
124
125       // the sixth parementer indicates whether web.xml has to be generated or not
126
if(argv.length <= 5) {
127         generateWebXml = true;
128         generateTabs = true;
129       } else if (argv[5].equals("web.xml")) {
130         generateWebXml = true;
131         generateTabs = false;
132       } else if (argv[5].equals("tabs")) {
133         generateWebXml = false;
134         generateTabs = true;
135       } else {
136         generateWebXml = true;
137         generateTabs = true;
138       }
139
140       if(argv.length <= 6) dirActionButton = dirFin;
141       else dirActionButton = argv[6];
142
143       if(argv.length <= 7) dirBaseTrl = dirFin;
144       else dirBaseTrl = argv[7];
145
146       if(argv.length <= 8) translateStr = "";
147       else translateStr = argv[8];
148
149       if(argv.length <= 9) dirWebClients = "";
150       else dirWebClients = argv[9];
151
152       if (argv.length <= 10) basePath = dirFin;
153       else basePath = argv[10];
154
155       if (argv.length <= 11) attachPath = dirFin;
156       else attachPath = argv[11];
157
158       if (argv.length <= 12) webPath = dirFin;
159       else webPath = argv[12];
160
161       if (argv.length <= 13) strBaseSrc = dirFin;
162       else strBaseSrc = argv[13];
163
164       if (argv.length <= 14) complete = false;
165       else complete = ((argv[14].equals("true"))?true:false);
166
167       log4j.info("File connection: " + strFileConnection);
168       log4j.info("window: " + strWindowName);
169       log4j.info("directory destiny: " + dirFin);
170       log4j.info("directory reference: " + dirReference + wad.strSystemSeparator + "reference");
171       log4j.info("directory web.xml: " + dirWebXml);
172       log4j.info("directory ActionButtons: " + dirActionButton);
173       log4j.info("generate web.xml: " + generateWebXml);
174       log4j.info("generate web.xml cliente: " + dirWebClients);
175       log4j.info("generate tabs: " + generateTabs);
176       log4j.info("directory Translate : " + dirBaseTrl);
177       log4j.info("translation to : " + translateStr);
178       log4j.info("Separador del Sistema: " + wad.strSystemSeparator);
179       log4j.info("Base path: " + basePath);
180       log4j.info("Attach path: " + attachPath);
181       log4j.info("Web path: " + webPath);
182       log4j.info("Src path: " + strBaseSrc);
183       log4j.info("complete: " + complete);
184
185       File fileFin = new File(dirFin);
186       if (!fileFin.exists()) {
187         log4j.error("No such directory: " + fileFin.getAbsoluteFile());
188         wad.pool.destroy();
189         return;
190       }
191
192       File fileFinReloads = new File(dirReference + wad.strSystemSeparator + "ad_callouts");
193       if (!fileFinReloads.exists()) {
194         log4j.error("No such directory: " + fileFinReloads.getAbsoluteFile());
195         wad.pool.destroy();
196         return;
197       }
198
199       File fileReference = new File(dirReference + wad.strSystemSeparator + "reference");
200       if (!fileReference.exists()) {
201         log4j.error("No such directory: " + fileReference.getAbsoluteFile());
202         wad.pool.destroy();
203         return;
204       }
205
206       File fileWebXml = new File(dirWebXml);
207       if (!fileWebXml.exists()) {
208         log4j.error("No such directory: " + fileWebXml.getAbsoluteFile());
209         wad.pool.destroy();
210         return;
211       }
212
213       File fileWebXmlClient = null;
214       if (dirWebClients!=null && !dirWebClients.equals("")) {
215         fileWebXmlClient = new File(dirWebClients);
216         if (!fileWebXmlClient.exists()) {
217           log4j.warn("No such directory: " + fileWebXmlClient.getAbsoluteFile());
218           fileWebXmlClient = null;
219         }
220       }
221
222       File fileActionButton = new File(dirActionButton);
223       if (!fileActionButton.exists()) {
224         log4j.error("No such directory: " + fileActionButton.getAbsoluteFile());
225         wad.pool.destroy();
226         return;
227       }
228
229       File fileTrl = new File(dirBaseTrl);
230       if (!fileTrl.exists()) {
231         log4j.error("No such directory: " + fileTrl.getAbsoluteFile());
232         wad.pool.destroy();
233         return;
234       }
235
236       File fileBase = new File(strBaseSrc);
237       if (!fileBase.exists()) {
238         log4j.error("No such directory: " + fileBase.getAbsoluteFile());
239         wad.pool.destroy();
240         return;
241       }
242
243       File fileBaseAplication = new File(basePath);
244       if (!fileBaseAplication.exists()) {
245         log4j.error("No such directory: " + fileBaseAplication.getAbsoluteFile());
246         wad.pool.destroy();
247         return;
248       }
249
250       WadData.updateIdentifiers(wad.pool);
251       if (generateTabs) {
252         wad.processActionButton(fileReference);
253         wad.processActionButtonXml(fileActionButton);
254         wad.processActionButtonHtml(fileActionButton);
255         wad.processActionButtonGenerics(fileActionButton);
256         wad.processActionButtonXmlGenerics(fileActionButton);
257         wad.processActionButtonHtmlGenerics(fileActionButton);
258         LanguagesData[] dataLang = LanguagesData.select(wad.pool);
259         if (dataLang!=null && dataLang.length>0) {
260           for (int pos=0;pos<dataLang.length;pos++) {
261             FileUtility f = new FileUtility();
262             File languageBase = new File(fileTrl, dataLang[pos].adLanguage);
263             if (complete && languageBase.exists()) f.delete(languageBase);
264             languageBase.mkdir();
265             //f.copy(fileBase, languageBase,new DirFilter("html"), true, true);
266
//f.copy(fileBase, languageBase,new DirFilter("fo"), true, true);
267
f.copy(fileBase, languageBase,new DirFilter(".xml"), true, true);
268             //f.copy(fileBase, languageBase,new DirFilter("srpt"), true, true);
269
//f.copy(fileBase, languageBase,new DirFilter("jrxml"), true, true);
270
//executeCommandTask("ant precopyfiles -Dlanguage=" + dataLang[pos].adLanguage, dir);
271
File fileDirTrlBase = new File(fileTrl, dataLang[pos].adLanguage + wad.strSystemSeparator + "org" + wad.strSystemSeparator + "openbravo" + wad.strSystemSeparator +"erpCommon" + wad.strSystemSeparator + "ad_actionButton");
272             if (!fileDirTrlBase.exists()) {
273               fileDirTrlBase.mkdirs();
274             }
275             calendarDescriptionTrl = WadUtilityData.getTranslatedText(wad.pool, calendarDescription, dataLang[pos].adLanguage);
276             clockDescriptionTrl = WadUtilityData.getTranslatedText(wad.pool, clockDescription, dataLang[pos].adLanguage);
277             calculatorDescriptionTrl = WadUtilityData.getTranslatedText(wad.pool, calculatorDescription, dataLang[pos].adLanguage);
278             wad.processActionButtonHtmlTrl(fileDirTrlBase, dataLang[pos].adLanguage);
279             wad.processActionButtonHtmlGenericsTrl(fileDirTrlBase, dataLang[pos].adLanguage);
280           }
281         }
282       }
283
284       if (generateWebXml) {
285         TabsData tabsData[] = TabsData.selectTabs(wad.pool, "");
286         wad.processWebXml(fileWebXml, fileWebXmlClient, attachPath, webPath);
287       }
288
289       TabsData tabsData[] = TabsData.selectTabs(wad.pool, strWindowName);
290       if (generateTabs) {
291         for (int i=0;i< tabsData.length; i++) {
292           log4j.info("Processing Window: " + tabsData[i].windowname +
293             " - Tab: " + tabsData[i].tabname + " - id: " + tabsData[i].tabid);
294           log4j.debug("Processing: " + tabsData[i].tabid);
295           wad.processTab(fileFin, fileFinReloads, tabsData[i], fileTrl, dirBaseTrl, translateStr, fileBase, fileBaseAplication);
296         }
297       }
298       wad.pool.destroy();
299     } catch (Exception JavaDoc e) {
300       wad.pool.destroy();
301       throw new Exception JavaDoc(e);
302     }
303   }
304
305   private void processActionButton(File fileReference) {
306     try {
307       log4j.info("Processing ActionButton_data.xml");
308       XmlDocument xmlDocumentData = xmlEngine.readXmlTemplate("org/openbravo/wad/ActionButton_data").createXmlDocument();
309       ProcessRelationData ard[] = ProcessRelationData.select(pool);
310
311       xmlDocumentData.setData("structure1", ard);
312       WadUtility.writeFile(fileReference, "ActionButton_data.xsql", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + xmlDocumentData.print());
313     } catch (ServletException e) {
314       e.printStackTrace();
315       log4j.error("Problem of ServletExceptio in process of ActionButtonData");
316     } catch (IOException e) {
317       e.printStackTrace();
318       log4j.error("Problem of IOExceptio in process of ActionButtonData");
319     }
320   }
321
322   private void processActionButtonXml(File fileReference) {
323     try {
324       log4j.info("Processing ActionButtonXml");
325       FieldsData fd[] = FieldsData.selectActionButton(pool);
326       if (fd!=null) {
327         for (int i=0;i<fd.length;i++) {
328           Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
329           WadActionButton.buildXml(pool, xmlEngine, fileReference, fd[i], vecFields, MAX_TEXTBOX_LENGTH);
330         }
331       }
332     } catch (ServletException e) {
333       e.printStackTrace();
334       log4j.error("Problem of ServletExceptio in process of ActionButtonXml");
335     } catch (IOException e) {
336       e.printStackTrace();
337       log4j.error("Problem of IOExceptio in process of ActionButtonXml");
338     }
339   }
340
341   private void processActionButtonHtml(File fileReference) {
342     try {
343       log4j.info("Processing ActionButtonHtml");
344       FieldsData fd[] = FieldsData.selectActionButton(pool);
345       if (fd!=null) {
346         for (int i=0;i<fd.length;i++) {
347           Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
348           WadActionButton.buildHtml(pool, xmlEngine, fileReference, fd[i], vecFields, MAX_TEXTBOX_LENGTH, MAX_SIZE_EDITION_1_COLUMNS, "", false, calendarDescription, clockDescription, calculatorDescription, jsDateFormat);
349         }
350       }
351     } catch (ServletException e) {
352       e.printStackTrace();
353       log4j.error("Problem of ServletExceptio in process of ActionButtonHtml");
354     } catch (IOException e) {
355       e.printStackTrace();
356       log4j.error("Problem of IOExceptio in process of ActionButtonHtml");
357     }
358   }
359
360   private void processActionButtonHtmlTrl(File fileReference, String JavaDoc strLanguage) {
361     try {
362       log4j.info("Processing ActionButtonHtml - Translated");
363       FieldsData fd[] = FieldsData.selectActionButtonTrl(pool, strLanguage);
364       if (fd!=null) {
365         for (int i=0;i<fd.length;i++) {
366           Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
367           WadActionButton.buildHtml(pool, xmlEngine, fileReference, fd[i], vecFields, MAX_TEXTBOX_LENGTH, MAX_SIZE_EDITION_1_COLUMNS, strLanguage, false, calendarDescriptionTrl, clockDescriptionTrl, calculatorDescriptionTrl, jsDateFormat);
368         }
369       }
370     } catch (ServletException e) {
371       e.printStackTrace();
372       log4j.error("Problem of ServletExceptio in process of ActionButtonHtml - Translated");
373     } catch (IOException e) {
374       e.printStackTrace();
375       log4j.error("Problem of IOExceptio in process of ActionButtonHtml - Translated");
376     }
377   }
378
379   
380   private void processActionButtonGenerics(File fileReference) {
381     try {
382       log4j.info("Processing ActionButton_Responser.xml");
383       XmlDocument xmlDocumentData = xmlEngine.readXmlTemplate("org/openbravo/wad/ActionButton_Responser").createXmlDocument();
384
385       ActionButtonRelationData[] abrd = WadActionButton.buildActionButtonCallGenerics(pool);
386       xmlDocumentData.setData("structure1", abrd);
387       xmlDocumentData.setData("structure2", abrd);
388       xmlDocumentData.setData("structure3", abrd);
389
390       WadUtility.writeFile(fileReference, "ActionButton_Responser.java", xmlDocumentData.print());
391     } catch (IOException e) {
392       e.printStackTrace();
393       log4j.error("Problem of IOExceptio in process of ActionButton_Responser");
394     }
395   }
396
397   private void processActionButtonXmlGenerics(File fileReference) {
398     try {
399       log4j.info("Processing ActionButtonXml Generics");
400       FieldsData fd[] = FieldsData.selectActionButtonGenerics(pool);
401       if (fd!=null) {
402         for (int i=0;i<fd.length;i++) {
403           Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
404           WadActionButton.buildXml(pool, xmlEngine, fileReference, fd[i], vecFields, MAX_TEXTBOX_LENGTH);
405         }
406       }
407     } catch (ServletException e) {
408       e.printStackTrace();
409       log4j.error("Problem of ServletExceptio in process of ActionButtonXml Generics");
410     } catch (IOException e) {
411       e.printStackTrace();
412       log4j.error("Problem of IOExceptio in process of ActionButtonXml Generics");
413     }
414   }
415
416   private void processActionButtonHtmlGenerics(File fileReference) {
417     try {
418       log4j.info("Processing ActionButtonHtml for generics");
419       FieldsData fd[] = FieldsData.selectActionButtonGenerics(pool);
420       if (fd!=null) {
421         for (int i=0;i<fd.length;i++) {
422           Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
423           WadActionButton.buildHtml(pool, xmlEngine, fileReference, fd[i], vecFields, MAX_TEXTBOX_LENGTH, MAX_SIZE_EDITION_1_COLUMNS, "", true, calendarDescription, clockDescription, calculatorDescription, jsDateFormat);
424         }
425       }
426     } catch (ServletException e) {
427       e.printStackTrace();
428       log4j.error("Problem of ServletExceptio in process of ActionButtonHtml Generics");
429     } catch (IOException e) {
430       e.printStackTrace();
431       log4j.error("Problem of IOExceptio in process of ActionButtonHtml Generics");
432     }
433   }
434
435   private void processActionButtonHtmlGenericsTrl(File fileReference, String JavaDoc strLanguage) {
436     try {
437       log4j.info("Processing ActionButtonHtml for generics - Translated");
438       FieldsData fd[] = FieldsData.selectActionButtonGenericsTrl(pool, strLanguage);
439       if (fd!=null) {
440         for (int i=0;i<fd.length;i++) {
441           Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
442           WadActionButton.buildHtml(pool, xmlEngine, fileReference, fd[i], vecFields, MAX_TEXTBOX_LENGTH, MAX_SIZE_EDITION_1_COLUMNS, strLanguage, true, calendarDescriptionTrl, clockDescriptionTrl, calculatorDescriptionTrl, jsDateFormat);
443         }
444       }
445     } catch (ServletException e) {
446       e.printStackTrace();
447       log4j.error("Problem of ServletExceptio in process of ActionButtonHtml Generics - Translated");
448     } catch (IOException e) {
449       e.printStackTrace();
450       log4j.error("Problem of IOExceptio in process of ActionButtonHtml Generics - Translated");
451     }
452   }
453
454   private void processWebXml(File fileWebXml, File fileClients, String JavaDoc attachPath, String JavaDoc webPath) throws ServletException, IOException {
455     try {
456       log4j.info("Processing web.xml");
457       XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/webConf").createXmlDocument();
458       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
459
460       try {
461         if (fileClients!=null) {
462           BufferedReader fileBuffer = new BufferedReader(new FileReader(fileClients));
463
464           String JavaDoc nextLine = fileBuffer.readLine();
465           while (nextLine != null) {
466             sb.append(nextLine).append("\n");
467             nextLine = fileBuffer.readLine();
468           }
469           fileBuffer.close();
470         }
471       } catch (Exception JavaDoc e) {
472         e.printStackTrace();
473         return;
474       }
475       xmlDocument.setParameter("webClients", sb.toString());
476       xmlDocument.setParameter("webPath", webPath);
477       xmlDocument.setParameter("attachPath", attachPath);
478       xmlDocument.setData("structure1", WadData.select(pool));
479       xmlDocument.setData("structure2", WadData.selectMapping(pool));
480       //WadUtility.writeFile(fileWebXml, "web.xml", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE web-app PUBLIC \"-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN\" \"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd\">\n" + xmlDocument.print());
481
WadUtility.writeFile(fileWebXml, "web.xml", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlDocument.print());
482     } catch (IOException e) {
483       e.printStackTrace();
484       log4j.error("Problem of IOException in process of Web.xml");
485     }
486   }
487
488
489   private void processTab(File fileFin, File fileFinReloads, TabsData tabsData, File fileTrl, String JavaDoc dirBaseTrl, String JavaDoc translateStr, File fileBase, File fileBaseAplication) throws Exception JavaDoc {
490     try {
491       String JavaDoc tabNamePresentation = tabsData.realtabname;
492       String JavaDoc tabName = FormatUtilities.replace(tabNamePresentation);
493       String JavaDoc windowName = FormatUtilities.replace(tabsData.windowname);
494       String JavaDoc tableName = FieldsData.tableName(pool, tabsData.tabid);
495       String JavaDoc isSOTrx = FieldsData.isSOTrx(pool, tabsData.tabid);
496       TabsData[] allTabs = getPrimaryTabs(tabsData.key, tabsData.tabid, Integer.valueOf(tabsData.tablevel).intValue(), HEIGHT_TABS, INCR_TABS, "");
497       FieldsData[] fieldsData = FieldsData.select(pool, tabsData.tabid);
498       EditionFieldsData efd[] = EditionFieldsData.select(pool, tabsData.tabid);
499       EditionFieldsData efdauxiliar[] = EditionFieldsData.selectAuxiliar(pool, tabsData.tabid);
500
501       /************************************************
502       * The 2 tab lines generation
503       *************************************************/

504       if (allTabs==null || allTabs.length==0) throw new Exception JavaDoc("No tabs found for AD_Tab_ID: " + tabsData.tabid + " - key: " + tabsData.key + " - level: " + tabsData.tablevel);
505       TabsData[] tab1= new TabsData[(allTabs.length>NUM_TABS)?NUM_TABS:allTabs.length];
506       TabsData[] tab2 = new TabsData[(allTabs.length>NUM_TABS)?NUM_TABS:0];
507       int selectedTab=2;
508       for (int i=0;i<NUM_TABS && i<allTabs.length;i++) {
509         if (allTabs[i].tabid.equals(tabsData.tabid)) selectedTab=1;
510         tab1[i]=allTabs[i];
511       }
512       if (allTabs.length>NUM_TABS) {
513         int j=0;
514         for (int i=allTabs.length-NUM_TABS;i<allTabs.length;i++) tab2[j++]=allTabs[i];
515       }
516
517       int parentTabIndex = -1;
518       boolean sinParent=false;
519       String JavaDoc grandfatherField="";
520       if (allTabs!=null && allTabs.length>0) parentTabIndex = parentTabId(allTabs, tabsData.tabid);
521       FieldsData[] parentsFieldsData=null;
522       FieldsData[] parentsFieldsNameData=null;
523       if (tabsData.issorttab.equals("Y")) {
524         parentsFieldsData = FieldsData.parentsColumnNameSortTab(pool, (parentTabIndex!=-1?allTabs[parentTabIndex].tabid:""), tabsData.tableId);
525         parentsFieldsNameData = FieldsData.parentsColumnDisplayNameSortTab(pool, "", tabsData.tableId);
526       } else {
527         parentsFieldsData = FieldsData.parentsColumnName(pool, (parentTabIndex!=-1?allTabs[parentTabIndex].tabid:""), tabsData.tabid);
528         parentsFieldsNameData = FieldsData.parentsColumnDisplayName(pool, "", tabsData.tabid, (parentTabIndex!=-1?allTabs[parentTabIndex].tabid:""));
529       }
530       String JavaDoc strParentNameDescription = (parentsFieldsNameData==null || parentsFieldsNameData.length==0)?"":parentsFieldsNameData[0].name;
531       if (parentTabIndex!=-1 && (parentsFieldsData==null || parentsFieldsData.length==0)) {
532         parentsFieldsData = FieldsData.parentsColumnReal(pool, allTabs[parentTabIndex].tabid, tabsData.tabid);
533         parentsFieldsNameData = FieldsData.parentsColumnDisplayNameReal(pool, "", tabsData.tabid, allTabs[parentTabIndex].tabid);
534         strParentNameDescription = (parentsFieldsNameData==null || parentsFieldsNameData.length==0)?"":parentsFieldsNameData[0].name;
535         sinParent=true;
536         if (parentsFieldsData==null || parentsFieldsData.length==0) {
537           log4j.error("No key found in parent tab: " + allTabs[parentTabIndex].tabname);
538         }
539       }
540
541       Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
542       Vector JavaDoc<Object JavaDoc> vecTables = new Vector JavaDoc<Object JavaDoc>();
543       Vector JavaDoc<Object JavaDoc> vecWhere = new Vector JavaDoc<Object JavaDoc>();
544       Vector JavaDoc<Object JavaDoc> vecOrder = new Vector JavaDoc<Object JavaDoc>();
545       Vector JavaDoc<Object JavaDoc> vecParameters = new Vector JavaDoc<Object JavaDoc>();
546       Vector JavaDoc<Object JavaDoc> vecTableParameters = new Vector JavaDoc<Object JavaDoc>();
547       Vector JavaDoc<Object JavaDoc> vecTotalParameters = new Vector JavaDoc<Object JavaDoc>();
548       processTable(parentsFieldsData, tabsData.tabid, vecFields, vecTables, vecWhere, vecOrder, vecParameters, tableName, tabsData.windowtype, tabsData.tablevel, vecTableParameters, fieldsData);
549       StringBuffer JavaDoc strFields = new StringBuffer JavaDoc();
550       log4j.debug("Executing de select conformation");
551       for (int i=0;i<vecTableParameters.size();i++) {
552         vecTotalParameters.addElement(vecTableParameters.elementAt(i));
553       }
554       for (int i=0;i<vecParameters.size();i++) {
555         vecTotalParameters.addElement(vecParameters.elementAt(i));
556       }
557       for (Enumeration JavaDoc e = vecFields.elements() ; e.hasMoreElements() ;) {
558         String JavaDoc fieldElement = (String JavaDoc)e.nextElement();
559         strFields.append(fieldElement + ", \n");
560       }
561       log4j.debug("Fields of select: " + strFields.toString());
562       StringBuffer JavaDoc strTables = new StringBuffer JavaDoc();
563       for (Enumeration JavaDoc e = vecTables.elements() ; e.hasMoreElements() ;) {
564         String JavaDoc tableElement = (String JavaDoc)e.nextElement();
565         strTables.append((tableElement.trim().toLowerCase().startsWith("left join")?" ":", ") + tableElement);
566       }
567       log4j.debug("Tables of select: " + strTables.toString());
568       StringBuffer JavaDoc strWhere = new StringBuffer JavaDoc();
569       for (Enumeration JavaDoc e = vecWhere.elements() ; e.hasMoreElements();) {
570         String JavaDoc whereElement = (String JavaDoc)e.nextElement();
571         strWhere.append((!whereElement.startsWith(" AND")?" AND ":"") + whereElement);
572       }
573       String JavaDoc whereClauseParams = "";
574       if (!tabsData.whereclause.equals("")) {
575         int totalParameters = vecTotalParameters.size();
576         strWhere.append(" AND " + WadUtility.buildSQL(tabsData.whereclause, vecTotalParameters));
577         if (totalParameters<vecTotalParameters.size()) {
578           for (int h=totalParameters;h<vecTotalParameters.size();h++) {
579             String JavaDoc strParam = (String JavaDoc)vecTotalParameters.elementAt(h);
580             vecParameters.addElement(strParam);
581             strParam = strParam.substring(17, strParam.lastIndexOf("\""));
582             whereClauseParams += ", Utility.getContext(this, vars, \"" + strParam + "\", windowId)";
583           }
584         }
585       }
586       log4j.debug("Where of select: " + strWhere.toString());
587       StringBuffer JavaDoc strOrder = new StringBuffer JavaDoc();
588       log4j.debug("Order Vector's Size: " + vecOrder.size());
589       if (tabsData.orderbyclause.equals("")) {
590         if (vecOrder.size() > 0) strOrder.append(" ORDER BY ");
591         boolean first=true;
592         for (Enumeration JavaDoc e = vecOrder.elements() ; e.hasMoreElements() ;) {
593           String JavaDoc orderElement = (String JavaDoc)e.nextElement();
594           log4j.debug("Order element: " + orderElement);
595           strOrder.append(((!first)?", ":"") + orderElement);
596           if (first) first=false;
597         }
598       } else {
599         strOrder.append(" ORDER BY " + tabsData.orderbyclause);
600       }
601       log4j.debug("Order of select: " + strOrder.toString());
602       if (strOrder.toString().equals("")) strOrder.append(" ORDER BY 1");
603
604       EditionFieldsData[] selCol = EditionFieldsData.selectSerchFieldsSelection(pool, "", tabsData.tabid);
605       if (selCol==null || selCol.length==0) selCol = EditionFieldsData.selectSerchFields(pool, "", tabsData.tabid);
606       selCol = processSelCol(selCol, tableName);
607
608
609       File fileDir = new File(fileFin, windowName);
610       
611       int grandfatherTabIndex=-1;
612       String JavaDoc parentwhereclause = "";
613       FieldsData auxFieldsData[]=null;
614       if (parentTabIndex!=-1 && allTabs!=null && allTabs.length>0) {
615         parentwhereclause = FieldsData.selectParentWhereClause(pool, allTabs[parentTabIndex].tabid);
616         Vector JavaDoc<Object JavaDoc> vecParametersParent = new Vector JavaDoc<Object JavaDoc>();
617         WadUtility.buildSQL(parentwhereclause, vecParametersParent);
618         parentwhereclause = "";
619         if (vecParametersParent.size()>0) {
620           for (int h=0;h<vecParametersParent.size();h++) {
621             String JavaDoc strParam = (String JavaDoc)vecParametersParent.elementAt(h);
622             strParam = strParam.substring(17, strParam.lastIndexOf("\""));
623             parentwhereclause += ", Utility.getContext(this, vars, \"" + strParam + "\", windowId)";
624           }
625         }
626         grandfatherTabIndex = parentTabId(allTabs, allTabs[parentTabIndex].tabid);
627         auxFieldsData = FieldsData.parentsColumnName(pool, (grandfatherTabIndex!=-1?allTabs[grandfatherTabIndex].tabid:""), allTabs[parentTabIndex].tabid);
628         if (grandfatherTabIndex!=-1 && (auxFieldsData==null || auxFieldsData.length==0)) {
629           auxFieldsData = FieldsData.parentsColumnReal(pool, allTabs[grandfatherTabIndex].tabid, allTabs[parentTabIndex].tabid);
630         }
631       }
632       if (auxFieldsData!=null && auxFieldsData.length>0) grandfatherField=auxFieldsData[0].name;
633       auxFieldsData=null;
634       String JavaDoc keyColumnName = "";
635       boolean isSecondaryKey = false;
636       FieldsData[] dataKey = FieldsData.keyColumnName(pool, tabsData.tabid, ((parentsFieldsData!=null && parentsFieldsData.length>0 && !sinParent)?parentsFieldsData[0].name:" "));
637       if (dataKey!=null && dataKey.length>0) {
638         keyColumnName = dataKey[0].name;
639         isSecondaryKey = dataKey[0].issecondarykey.equals("Y");
640       }
641       log4j.debug("KeyColumnName: " + keyColumnName);
642       String JavaDoc strProcess="", strDirectPrint="";
643       if (!tabsData.adProcessId.equals("")) {
644         strProcess = TabsData.processName(pool, tabsData.adProcessId);
645         if (strProcess.indexOf("/")==-1) strProcess = FormatUtilities.replace(strProcess);
646         strDirectPrint = TabsData.directPrint(pool, tabsData.adProcessId);
647       }
648       WADGrid gridControl = null;
649       {
650         Properties JavaDoc gridProps = new Properties JavaDoc();
651         gridProps.setProperty("id", "grid");
652         gridProps.setProperty("NumRows", "20");
653         gridProps.setProperty("width", "94%");
654         gridProps.setProperty("ShowLineNumbers", "true");
655         gridProps.setProperty("editable", "false");
656         gridProps.setProperty("sortable", "true");
657         gridProps.setProperty("deleteable", (!tabsData.isreadonly.equals("Y")?"true":"false"));
658         gridProps.setProperty("onScrollFunction", "updateHeader");
659         gridProps.setProperty("onLoadFunction", "onGridLoadDo");
660         gridProps.setProperty("AD_Window_ID", tabsData.key);
661         gridProps.setProperty("AD_Tab_ID", tabsData.tabid);
662         gridProps.setProperty("ColumnName", keyColumnName);
663         gridProps.setProperty("inpKeyName", "inp" + Sqlc.TransformaNombreColumna(keyColumnName));
664         gridControl = new WADGrid(gridProps);
665       }
666       if (tabsData.issorttab.equals("Y")) {
667         /************************************************
668         * XSQL of the SORT TAB
669         *************************************************/

670         processTabXSQLSortTab(parentsFieldsData, fileDir, tabsData.tabid, tabName, tableName, windowName, keyColumnName, tabsData.adColumnsortorderId, tabsData.adColumnsortyesnoId, vecParameters, vecTableParameters);
671         /************************************************
672         * JAVA of the SORT TAB
673         *************************************************/

674         processTabJavaSortTab(parentsFieldsData, fileDir, tabsData.tabid, tabName, tableName, windowName, keyColumnName, strTables.toString(), strOrder.toString(), strWhere.toString(), vecFields, isSOTrx, allTabs, tabsData.key, tabsData.accesslevel, selCol, isSecondaryKey, grandfatherField, tabsData.tablevel, tabsData.tableId, tabsData.windowtype, tabsData.adColumnsortorderId, whereClauseParams, parentwhereclause, strProcess, strDirectPrint, tabsData.isreadonly.equals("Y"), vecParameters, vecTableParameters);
675         /************************************************
676         * XML of the SORT TAB
677         *************************************************/

678         processTabXmlSortTab(parentsFieldsData, fileDir, tabsData.tabid, tabName, keyColumnName);
679         /************************************************
680         * HTML of the SORT TAB
681         *************************************************/

682         processTabHtmlSortTab(parentsFieldsData, fileDir, tabsData.tabid, tabName, tabsData.realwindowname, keyColumnName, tabNamePresentation, allTabs, strProcess, strDirectPrint, strParentNameDescription, windowName, "");
683       } else {
684         /************************************************
685         * JAVA
686         *************************************************/

687         processTabJava(efd, efdauxiliar, parentsFieldsData, fileDir, tabsData.tabid, tabName, tableName, windowName, keyColumnName, strTables.toString(), strOrder.toString(), strWhere.toString(), tabsData.filterclause, vecFields, vecParameters, isSOTrx, allTabs, tabsData.key, tabsData.accesslevel, selCol, isSecondaryKey, grandfatherField, tabsData.tablevel, tabsData.tableId, tabsData.windowtype, tabsData.isreadonly.equals("Y"), whereClauseParams, parentwhereclause, tabsData.editreference, strProcess, strDirectPrint, vecTableParameters, fieldsData, gridControl);
688
689         /************************************************
690         * XSQL
691         *************************************************/

692         processTabXSQL(parentsFieldsData, fileDir, tabsData.tabid, tabName, tableName, windowName, keyColumnName, strFields.toString(), strTables.toString(), strOrder.toString(), strWhere.toString(), vecParameters, tabsData.filterclause, selCol, tabsData.tablevel, tabsData.windowtype, vecTableParameters, fieldsData);
693
694
695         /************************************************
696         * JAVA of the combo reloads
697         *************************************************/

698         processTabComboReloads(fileFinReloads, tabsData.tabid, parentsFieldsData, vecFields, isSOTrx);
699
700
701         /************************************************
702         * XML in Relation view
703         *************************************************/

704         processTabXmlRelation(parentsFieldsData, fileDir, tabsData.tabid, tabName, keyColumnName, gridControl);
705
706         /************************************************
707         * HTML in Relation view
708         *************************************************/

709         processTabHtmlRelation(parentsFieldsData, fileDir, tabsData.tabid, tabName, keyColumnName, tabsData.isreadonly.equals("Y"), strParentNameDescription, gridControl, false, "", tabNamePresentation, tabsData.tableId);
710
711         /************************************************
712         * XML in Edition view
713         *************************************************/

714         processTabXmlEdition(fileDir, tabsData.tabid, tabName, tabsData.key, tabsData.isreadonly.equals("Y"), efd, efdauxiliar);
715
716         /************************************************
717         * HTML in Edition view
718         *************************************************/

719         processTabHtmlEdition(efd, efdauxiliar, fileDir, tabsData.tabid, tabName, keyColumnName, tabNamePresentation, tabsData.key, parentsFieldsData, vecFields, tabsData.isreadonly.equals("Y"), isSOTrx, tabsData.tableId, PIXEL_TO_LENGTH, "");
720       }
721
722       LanguagesData[] dataLang = LanguagesData.select(pool);
723       if (dataLang!=null && dataLang.length>0) {
724         for (int pos=0;pos<dataLang.length;pos++) {
725           FieldsData parentsFieldsNameLngData[]=null;
726           if (tabsData.issorttab.equals("Y")) {
727             parentsFieldsNameLngData = FieldsData.parentsColumnDisplayNameSortTab(pool, dataLang[pos].adLanguage, tabsData.tableId);
728           } else {
729             parentsFieldsNameLngData = FieldsData.parentsColumnDisplayName(pool, dataLang[pos].adLanguage, tabsData.tabid, (parentTabIndex!=-1?allTabs[parentTabIndex].tabid:""));
730           }
731           if (parentTabIndex!=-1 && (parentsFieldsNameLngData==null || parentsFieldsNameLngData.length==0)) {
732             parentsFieldsNameLngData = FieldsData.parentsColumnDisplayNameReal(pool, dataLang[pos].adLanguage, tabsData.tabid, allTabs[parentTabIndex].tabid);
733           }
734           strParentNameDescription = (parentsFieldsNameLngData==null || parentsFieldsNameLngData.length==0)?"":(parentsFieldsNameLngData[0].columnname.equals("")?parentsFieldsNameLngData[0].name:parentsFieldsNameLngData[0].columnname);
735           tabNamePresentation = FieldsData.tabNameTrl(pool, dataLang[pos].adLanguage, tabsData.tabid);
736           String JavaDoc realWindowName = FieldsData.windowNameTrl(pool, dataLang[pos].adLanguage, tabsData.tabid);
737           File fileDirTrlBase = new File(fileTrl, dataLang[pos].adLanguage + strSystemSeparator + translateStr);
738           if (!fileDirTrlBase.exists()) {
739             fileDirTrlBase.mkdirs();
740           }
741           File fileDirTrl = new File(fileDirTrlBase, windowName);
742           fileDirTrl.mkdirs();
743           TabsData[] allTabstrl = getPrimaryTabs(tabsData.key, tabsData.tabid, Integer.valueOf(tabsData.tablevel).intValue(), HEIGHT_TABS, INCR_TABS, dataLang[pos].adLanguage);
744           TabsData[] tab1trl= new TabsData[(allTabstrl.length>NUM_TABS)?NUM_TABS:allTabstrl.length];
745           TabsData[] tab2trl = new TabsData[(allTabstrl.length>NUM_TABS)?NUM_TABS:0];
746           int selectedTabtrl=2;
747           for (int i=0;i<NUM_TABS && i<allTabstrl.length;i++) {
748             if (allTabstrl[i].tabid.equals(tabsData.tabid)) selectedTabtrl=1;
749             tab1trl[i]=allTabstrl[i];
750           }
751           if (allTabstrl.length>NUM_TABS) {
752             int j=0;
753             for (int i=allTabstrl.length-NUM_TABS;i<allTabstrl.length;i++) tab2trl[j++]=allTabstrl[i];
754           }
755
756           calendarDescriptionTrl = WadUtilityData.getTranslatedText(pool, calendarDescription, dataLang[pos].adLanguage);
757           clockDescriptionTrl = WadUtilityData.getTranslatedText(pool, clockDescription, dataLang[pos].adLanguage);
758           calculatorDescriptionTrl = WadUtilityData.getTranslatedText(pool, calculatorDescription, dataLang[pos].adLanguage);
759           String JavaDoc strPixelSize = WadData.selectPixelSize(pool, dataLang[pos].adLanguage);
760           double pixelSize = PIXEL_TO_LENGTH;
761           if (!strPixelSize.equals("")) pixelSize = Double.valueOf(strPixelSize).doubleValue();
762
763           if (tabsData.issorttab.equals("Y")) {
764             /************************************************
765             * HTML of the SORT TAB
766             *************************************************/

767             processTabHtmlSortTab(parentsFieldsData, fileDirTrl, tabsData.tabid, tabName, realWindowName, keyColumnName, tabNamePresentation, allTabstrl, strProcess, strDirectPrint, strParentNameDescription, windowName, dataLang[pos].adLanguage);
768           } else {
769             EditionFieldsData efdTRL[] = EditionFieldsData.selectTrl(pool, dataLang[pos].adLanguage, tabsData.tabid);
770             // ************************************************
771
// * HTML of the Relation view
772
//*************************************************
773
processTabHtmlRelation(parentsFieldsData, fileDirTrl, tabsData.tabid, tabName, keyColumnName, tabsData.isreadonly.equals("Y"), strParentNameDescription, gridControl, true, dataLang[pos].adLanguage, tabNamePresentation, tabsData.tableId);
774
775             // ************************************************
776
// * HTML of the Edition view
777
// *************************************************
778
processTabHtmlEdition(efdTRL, efdauxiliar, fileDirTrl, tabsData.tabid, tabName, keyColumnName, tabNamePresentation, tabsData.key, parentsFieldsData, vecFields, tabsData.isreadonly.equals("Y"), isSOTrx, tabsData.tableId, PIXEL_TO_LENGTH, dataLang[pos].adLanguage);
779
780             //processTabHtmlEditionTrl(efd, efdTRL, efdauxiliar, fileDirTrl, tabsData.tabid, tabName, realWindowName, keyColumnName, tabNamePresentation, tab1trl, tab2trl, allTabstrl, selectedTabtrl, tabsData.key, parentsFieldsData, vecFields, strProcess, strDirectPrint, tabsData.isreadonly.equals("Y"), tabsData.tablevel, dataLang[pos].adLanguage, windowName, isSOTrx, tabsData.tableId, pixelSize);
781
}
782           FileUtility f = new FileUtility();
783           File languageBase = new File(fileTrl, dataLang[pos].adLanguage);
784           languageBase.mkdir();
785           File fTrl = new File(fileBaseAplication, "srcAD");
786           f.copy(fTrl, languageBase,new DirFilter("html"), true, false);
787           f.copy(fTrl, languageBase,new DirFilter("fo"), true, false);
788           f.copy(fTrl, languageBase,new DirFilter("xml"), true, false);
789           f.copy(fTrl, languageBase,new DirFilter("srpt"), true, false);
790         }
791       }
792
793     } catch(ServletException e) {
794        e.printStackTrace();
795        log4j.error("Problem of ServletException in the file: " + tabsData.tabid);
796     } catch(IOException e) {
797        e.printStackTrace();
798        log4j.error("Problem at close of the file: "+ tabsData.tabid);
799     } catch(Exception JavaDoc e) {
800       e.printStackTrace();
801       log4j.error("Problem at close of the file: "+ tabsData.tabid);
802     }
803   }
804
805   private EditionFieldsData[] processSelCol(EditionFieldsData[] selCol, String JavaDoc tableName) {
806     Vector JavaDoc<Object JavaDoc> vecAuxSelCol = new Vector JavaDoc<Object JavaDoc>(0);
807     Vector JavaDoc<Object JavaDoc> vecSelCol = new Vector JavaDoc<Object JavaDoc>(0);
808     if (selCol!=null) {
809       for (int i=0;i<selCol.length;i++) {
810         selCol[i].htmltext = "strParam" + selCol[i].columnname + ".equals(\"\")";
811         selCol[i].columnnameinp = FormatUtilities.replace(selCol[i].columnname);
812         
813         if (WadUtility.isGeneralNumber(selCol[i].reference) || WadUtility.isDecimalNumber(selCol[i].reference) || WadUtility.isPriceNumber(selCol[i].reference) || WadUtility.isIntegerNumber(selCol[i].reference) || WadUtility.isQtyNumber(selCol[i].reference) || WadUtility.isDateField(selCol[i].reference) || WadUtility.isTimeField(selCol[i].reference) || WadUtility.isDateTimeField(selCol[i].reference)) {
814           EditionFieldsData aux = new EditionFieldsData();
815           aux.adColumnId = selCol[i].adColumnId;
816           aux.name = selCol[i].name;
817           aux.reference = selCol[i].reference;
818           aux.referencevalue = selCol[i].referencevalue;
819           aux.adValRuleId = selCol[i].adValRuleId;
820           aux.fieldlength = selCol[i].fieldlength;
821           aux.displaylength = selCol[i].displaylength;
822           aux.columnname = selCol[i].columnname + "_f";
823           aux.realcolumnname = selCol[i].realcolumnname;
824           aux.columnnameinp = selCol[i].columnnameinp;
825           aux.value = selCol[i].value;
826           aux.adWindowId = selCol[i].adWindowId;
827           aux.htmltext = "strParam" + aux.columnname + ".equals(\"\")";
828           selCol[i].xmltext = " + ((strParam" + selCol[i].columnname + ".equals(\"\") || strParam" + selCol[i].columnname + ".equals(\"%\"))?\"\":\" AND ";
829           if (WadUtility.isTimeField(selCol[i].reference)) {
830             selCol[i].xmltext += "TO_CHAR(" + tableName + "." + selCol[i].realcolumnname + ", 'HH24:MI:SS') >= ";
831             selCol[i].xsqltext = "TO_CHAR(" + tableName + "." + selCol[i].realcolumnname + ", 'HH24:MI:SS') >= ";
832           } else {
833             selCol[i].xmltext += "(" + tableName + "." + selCol[i].realcolumnname + ") >= ";
834             selCol[i].xsqltext = tableName + "." + selCol[i].realcolumnname + " >= ";
835           }
836           if (WadUtility.isDateField(selCol[i].reference) || WadUtility.isTimeField(selCol[i].reference) || WadUtility.isDateTimeField(selCol[i].reference)) {
837             selCol[i].xmltext += "TO_DATE('";
838             selCol[i].xsqltext += "TO_DATE";
839           }
840           selCol[i].xmltext += "\" + strParam" + selCol[i].columnname + " + \"";
841           if (WadUtility.isTimeField(selCol[i].reference)) selCol[i].xmltext += "', 'HH24:MI:SS')";
842           else if (WadUtility.isDateField(selCol[i].reference) || WadUtility.isDateTimeField(selCol[i].reference)) selCol[i].xmltext += "')";
843           selCol[i].xmltext += " \")";
844           selCol[i].xsqltext += "(?" + (WadUtility.isTimeField(selCol[i].reference)?", 'HH24:MI:SS'":"") + ") ";
845           aux.columnnameinp = FormatUtilities.replace(selCol[i].columnname) + "_f";
846           aux.xmltext = " + ((strParam" + aux.columnname + ".equals(\"\") || strParam" + aux.columnname + ".equals(\"%\"))?\"\":\" AND";
847           if (WadUtility.isTimeField(selCol[i].reference)) {
848             aux.xmltext += "TO_CHAR(" + tableName + "." + aux.realcolumnname + ", 'HH24:MI:SS') < ";
849             aux.xsqltext = "TO_CHAR(" + tableName + "." + aux.realcolumnname + ", 'HH24:MI:SS') < ";
850           } else {
851             aux.xmltext += "(" + tableName + "." + aux.realcolumnname + ") < ";
852             aux.xsqltext = tableName + "." + aux.realcolumnname + " < ";
853           }
854
855           if (WadUtility.isDateField(selCol[i].reference) || WadUtility.isTimeField(selCol[i].reference) || WadUtility.isDateTimeField(selCol[i].reference)) {
856             aux.xmltext += "TO_DATE('";
857             aux.xsqltext += "TO_DATE";
858           } else if (WadUtility.isGeneralNumber(selCol[i].reference) || WadUtility.isDecimalNumber(selCol[i].reference) || WadUtility.isPriceNumber(selCol[i].reference) || WadUtility.isIntegerNumber(selCol[i].reference) || WadUtility.isQtyNumber(selCol[i].reference) || selCol[i].reference.equals("13")) {
859             aux.xmltext += "TO_NUMBER('";
860             aux.xsqltext += "TO_NUMBER";
861           }
862           aux.xmltext += "\" + strParam" + aux.columnname + " + \"";
863           if (WadUtility.isTimeField(selCol[i].reference)) aux.xmltext += "', 'HH24:MI:SS')";
864           else if (WadUtility.isDateField(selCol[i].reference) || WadUtility.isDateTimeField(selCol[i].reference)) aux.xmltext += "')";
865           else if (WadUtility.isGeneralNumber(selCol[i].reference) || WadUtility.isDecimalNumber(selCol[i].reference) || WadUtility.isPriceNumber(selCol[i].reference) || WadUtility.isIntegerNumber(selCol[i].reference) || WadUtility.isQtyNumber(selCol[i].reference) || selCol[i].reference.equals("13")) aux.xmltext += "')";
866           aux.xmltext += " + 1 \")";
867           aux.xsqltext += "(?" + (WadUtility.isTimeField(selCol[i].reference)?", 'HH24:MI:SS'":"") + ") + 1 ";
868           vecAuxSelCol.addElement(aux);
869         } else {
870           selCol[i].xmltext = " + ((strParam" + selCol[i].columnname + ".equals(\"\") || strParam" + selCol[i].columnname + ".equals(\"%\"))?\"\":\" AND ";
871           if (WadUtility.isLikeType(selCol[i].reference) && !WadUtility.isSearchValueColumn(selCol[i].realcolumnname)) {
872             selCol[i].xmltext += "C_IGNORE_ACCENT";
873           }
874           selCol[i].xmltext += "(" + tableName + "." + selCol[i].realcolumnname + ")";
875           if (WadUtility.isLikeType(selCol[i].reference) && !WadUtility.isSearchValueColumn(selCol[i].realcolumnname)) {
876             selCol[i].xmltext += " LIKE C_IGNORE_ACCENT('";
877           } else if (WadUtility.isLikeType(selCol[i].reference) && WadUtility.isSearchValueColumn(selCol[i].realcolumnname)) {
878             selCol[i].xmltext += " LIKE ('";
879           } else {
880             selCol[i].xmltext += " = (";
881             if (WadUtility.isTextData(selCol[i].reference) || WadUtility.isLikeType(selCol[i].reference)) selCol[i].xmltext += "'";
882           }
883           selCol[i].xmltext += "\" + strParam" + selCol[i].columnname + " + \"";
884           if (WadUtility.isLikeType(selCol[i].reference)) {
885             selCol[i].xmltext += "'";
886           } else if (WadUtility.isTextData(selCol[i].reference)) {
887             selCol[i].xmltext += "'";
888           }
889           selCol[i].xmltext += ") \")";
890           selCol[i].xsqltext = "";
891           if (WadUtility.isLikeType(selCol[i].reference) && !WadUtility.isSearchValueColumn(selCol[i].realcolumnname)) {
892             selCol[i].xsqltext = "C_IGNORE_ACCENT";
893           }
894           selCol[i].xsqltext += "(" + tableName + "." + selCol[i].realcolumnname + ")";
895           if (WadUtility.isLikeType(selCol[i].reference) && !WadUtility.isSearchValueColumn(selCol[i].realcolumnname)) {
896             selCol[i].xsqltext += " LIKE C_IGNORE_ACCENT";
897           } else if (WadUtility.isLikeType(selCol[i].reference) && WadUtility.isSearchValueColumn(selCol[i].realcolumnname)) {
898             selCol[i].xsqltext += " LIKE ";
899           } else {
900             selCol[i].xsqltext += " = ";
901           }
902           selCol[i].xsqltext += "(?)";
903           //selCol[i].xsqltext += " AND ";
904
}
905
906         vecSelCol.addElement(selCol[i]);
907       }
908       for (int i=0;i<vecAuxSelCol.size();i++) vecSelCol.addElement(vecAuxSelCol.elementAt(i));
909       selCol = new EditionFieldsData[vecSelCol.size()];
910       vecSelCol.copyInto(selCol);
911     }
912     return selCol;
913   }
914
915
916   private void processTable(FieldsData[] parentsFieldsData, String JavaDoc strTab, Vector JavaDoc<Object JavaDoc> vecFields, Vector JavaDoc<Object JavaDoc> vecTables, Vector JavaDoc<Object JavaDoc> vecWhere, Vector JavaDoc<Object JavaDoc> vecOrder, Vector JavaDoc<Object JavaDoc> vecParameters, String JavaDoc tableName, String JavaDoc windowType, String JavaDoc tablevel, Vector JavaDoc<Object JavaDoc> vecTableParameters, FieldsData[] fieldsDataSelectAux) throws ServletException, IOException {
917     int ilist = 0;
918     int itable = 0;
919     Vector JavaDoc<Object JavaDoc> vecCounters = new Vector JavaDoc<Object JavaDoc>();
920     Vector JavaDoc<Object JavaDoc> vecOrderAux = new Vector JavaDoc<Object JavaDoc>();
921     String JavaDoc strOrder = "";
922     vecCounters.addElement(Integer.toString(itable));
923     vecCounters.addElement(Integer.toString(ilist));
924     FieldsData[] fieldsData = null;
925     fieldsData=copyarray(fieldsDataSelectAux);
926     for (int i=0;i< fieldsData.length; i++) {
927       if (!fieldsData[i].columnname.equalsIgnoreCase("Created") && !fieldsData[i].columnname.equalsIgnoreCase("CreatedBy") && !fieldsData[i].columnname.equalsIgnoreCase("Updated") && !fieldsData[i].columnname.equalsIgnoreCase("UpdatedBy")) {
928         if (WadUtility.isTimeField(fieldsData[i].reference)) {
929           vecFields.addElement("TO_CHAR(" + tableName + "." + fieldsData[i].name + ", 'HH24:MI:SS') AS " + fieldsData[i].name);
930         } else if (fieldsData[i].reference.equals("20")) {
931           vecFields.addElement("COALESCE(" + tableName + "." + fieldsData[i].name + ", 'N') AS " + fieldsData[i].name);
932         } else vecFields.addElement(tableName + "." + fieldsData[i].name);
933         if (fieldsData[i].reference.equals("19") && // TableDir
934
fieldsData[i].isdisplayed.equals("Y")) {
935           Vector JavaDoc<Object JavaDoc> vecSubFields = new Vector JavaDoc<Object JavaDoc>();
936           WadUtility.columnIdentifier (pool, tableName, fieldsData[i].required.equals("Y"), fieldsData[i], vecCounters, false, vecSubFields, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
937           log4j.debug("Identifier of: " + fieldsData[i].name);
938           StringBuffer JavaDoc strFields = new StringBuffer JavaDoc();
939           strFields.append(" (");
940           boolean boolFirst = true;
941           for (Enumeration JavaDoc e = vecSubFields.elements() ; e.hasMoreElements() ;) {
942             String JavaDoc tableField = (String JavaDoc)e.nextElement();
943             log4j.debug(" field: " + tableField);
944             if (boolFirst) {
945               boolFirst = false;
946             } else {
947               strFields.append(" || ' - ' || ");
948             }
949             strFields.append("TO_CHAR(").append(tableField).append(") ");
950           }
951           strOrder = strFields.toString() + ")";
952           vecFields.addElement("(CASE WHEN " + tableName + "." + fieldsData[i].name + " IS NULL THEN '' ELSE " + strFields.toString() + ") END) AS " + fieldsData[i].name + "R");
953         } else if (fieldsData[i].reference.equals("17") && fieldsData[i].isdisplayed.equals("Y")) { // List
954
Vector JavaDoc<Object JavaDoc> vecSubFields = new Vector JavaDoc<Object JavaDoc>();
955           WadUtility.columnIdentifier (pool, tableName, fieldsData[i].required.equals("Y"), fieldsData[i], vecCounters, false, vecSubFields, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
956           StringBuffer JavaDoc strFields = new StringBuffer JavaDoc();
957           strFields.append(" ( ");
958           boolean boolFirst = true;
959           for (Enumeration JavaDoc e = vecSubFields.elements() ; e.hasMoreElements() ;) {
960             String JavaDoc tableField = (String JavaDoc)e.nextElement();
961             log4j.debug(" field: " + tableField);
962             if (boolFirst) {
963               boolFirst = false;
964             } else {
965               strFields.append(" || ' - ' || ");
966             }
967             strFields.append("TO_CHAR(").append(tableField).append(") ");
968           }
969           strOrder = strFields.toString() + ")";
970           vecFields.addElement("(CASE WHEN " + tableName + "." + fieldsData[i].name + " IS NULL THEN '' ELSE " + strFields.toString() + ") END) AS " + fieldsData[i].name + "R");
971         } else if (fieldsData[i].reference.equals("18") && fieldsData[i].isdisplayed.equals("Y")) { // Table
972
Vector JavaDoc<Object JavaDoc> vecSubFields = new Vector JavaDoc<Object JavaDoc>();
973           WadUtility.columnIdentifier (pool, tableName, fieldsData[i].required.equals("Y"), fieldsData[i], vecCounters, false, vecSubFields, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
974           StringBuffer JavaDoc strFields = new StringBuffer JavaDoc();
975           strFields.append(" ( ");
976           boolean boolFirst = true;
977           for (Enumeration JavaDoc e = vecSubFields.elements() ; e.hasMoreElements() ;) {
978             String JavaDoc tableField = (String JavaDoc)e.nextElement();
979             log4j.debug(" field: " + tableField);
980             if (boolFirst) {
981               boolFirst = false;
982             } else {
983               strFields.append(" || ' - ' || ");
984             }
985             strFields.append("TO_CHAR(").append(tableField).append(") ");
986           }
987           strOrder = strFields.toString() + ")";
988           vecFields.addElement("(CASE WHEN " + tableName + "." + fieldsData[i].name + " IS NULL THEN '' ELSE " + strFields.toString() + ") END) AS " + fieldsData[i].name + "R");
989         } else if (fieldsData[i].reference.equals("32") && fieldsData[i].isdisplayed.equals("Y")) {
990           Vector JavaDoc<Object JavaDoc> vecSubFields = new Vector JavaDoc<Object JavaDoc>();
991           WadUtility.columnIdentifier(pool, tableName, fieldsData[i].required.equals("Y"), fieldsData[i], vecCounters, false, vecSubFields, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
992           StringBuffer JavaDoc strFields = new StringBuffer JavaDoc();
993           strFields.append(" ( ");
994           boolean boolFirst = true;
995           for (Enumeration JavaDoc e = vecSubFields.elements() ; e.hasMoreElements() ;) {
996             String JavaDoc tableField = (String JavaDoc)e.nextElement();
997             log4j.debug(" field: " + tableField);
998             if (boolFirst) {
999               boolFirst = false;
1000            } else {
1001              strFields.append(" || ' - ' || ");
1002            }
1003            strFields.append("TO_CHAR(").append(tableField).append(") ");
1004          }
1005          strOrder = strFields.toString() + ")";
1006          vecFields.addElement("(CASE WHEN " + tableName + "." + fieldsData[i].name + " IS NULL THEN '" + IMAGE_DEFAULT + "' ELSE " + strFields.toString() + ") END) AS " + fieldsData[i].name + "R");
1007        } else if ((fieldsData[i].reference.equals("30") || fieldsData[i].reference.equals("31") || fieldsData[i].reference.equals("35") || fieldsData[i].reference.equals("25") || fieldsData[i].reference.equals("800011")) && fieldsData[i].isdisplayed.equals("Y")) { //Searchs
1008
Vector JavaDoc<Object JavaDoc> vecSubFields = new Vector JavaDoc<Object JavaDoc>();
1009          WadUtility.columnIdentifier(pool, tableName, fieldsData[i].required.equals("Y"), fieldsData[i], vecCounters, false, vecSubFields, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
1010          log4j.debug("Identifier of: " + fieldsData[i].name);
1011          StringBuffer JavaDoc strFields = new StringBuffer JavaDoc();
1012          strFields.append(" (");
1013          boolean boolFirst = true;
1014          for (Enumeration JavaDoc e = vecSubFields.elements() ; e.hasMoreElements() ;) {
1015            String JavaDoc tableField = (String JavaDoc)e.nextElement();
1016            log4j.debug(" field: " + tableField);
1017            if (boolFirst) {
1018              boolFirst = false;
1019            } else {
1020              strFields.append(" || ' - ' || ");
1021            }
1022            strFields.append("TO_CHAR(").append(tableField).append(") ");
1023          }
1024          strOrder = strFields.toString() + ")";
1025          vecFields.addElement("(CASE WHEN " + tableName + "." + fieldsData[i].name + " IS NULL THEN '' ELSE " + strFields.toString() + ") END) AS " + fieldsData[i].name + "R");
1026        } else if (fieldsData[i].reference.equals("21") && fieldsData[i].isdisplayed.equals("Y")) { //Location
1027
StringBuffer JavaDoc strFields = new StringBuffer JavaDoc();
1028          strFields.append(" (CASE WHEN " + tableName + "." + fieldsData[i].columnname + " IS NULL THEN '' ELSE TO_CHAR(C_Location_Identifier(" + tableName + "." + fieldsData[i].columnname + ")) END)");
1029          log4j.debug("Location field: " + strFields.toString());
1030          strOrder = strFields.toString();
1031          strFields.append(" AS " + fieldsData[i].name + "R");
1032          vecFields.addElement(strFields.toString());
1033        } else if (fieldsData[i].reference.equals("28") && fieldsData[i].isdisplayed.equals("Y") && !fieldsData[i].referencevalue.equals("") && !fieldsData[i].name.equalsIgnoreCase("ChangeProjectStatus")) { //Button
1034
ilist = Integer.valueOf(vecCounters.elementAt(1).toString()).intValue();
1035          ilist++;
1036          vecFields.addElement("list" + ilist + ".name as " + fieldsData[i].name + "_BTN");
1037          strOrder = "list" + ilist + ".name";
1038          StringBuffer JavaDoc strWhere = new StringBuffer JavaDoc();
1039          if (fieldsData[i].name.equalsIgnoreCase("DocAction")) {
1040            strWhere.append(" AND (CASE " + tableName + "." + fieldsData[i].name + " WHEN '--' THEN 'CL' ELSE TO_CHAR(" + tableName + "." + fieldsData[i].name + ") END) = " + "list" + ilist + ".value");
1041          } else {
1042            strWhere.append(" AND " + tableName + "." + fieldsData[i].name + " = " + "list" + ilist + ".value");
1043          }
1044          vecTables.addElement("left join ad_ref_list_v list" + ilist + " on (" + "list" + ilist + ".ad_reference_id = " + fieldsData[i].referencevalue + " and list" + ilist + ".ad_language = ? " + strWhere.toString() + ")");
1045          vecTableParameters.addElement("<Parameter name=\"paramLanguage\"/>");
1046          vecCounters.set(1, Integer.toString(ilist));
1047        } else {
1048          strOrder = tableName + "." + fieldsData[i].name;
1049        }
1050        if (!fieldsData[i].reference.equals("23") && !fieldsData[i].reference.equals("14") && !fieldsData[i].reference.equals("34") && !fieldsData[i].reference.equals("13") && !fieldsData[i].reference.equals("26") && !fieldsData[i].reference.equals("32") && !fieldsData[i].sortno.equals("")) {
1051          String JavaDoc[] aux={new String JavaDoc(fieldsData[i].name), new String JavaDoc(strOrder + (fieldsData[i].name.equalsIgnoreCase("DocumentNo")?" DESC":""))};
1052          vecOrderAux.addElement(aux);
1053        }
1054      }
1055    }
1056    FieldsData sfd1[] = FieldsData.selectSequence(pool, strTab);
1057    if (sfd1!=null && sfd1.length > 0) {
1058      for (int i=0;i<sfd1.length;i++) {
1059        String JavaDoc aux = findOrderVector(vecOrderAux, sfd1[i].name);
1060        if (aux!=null && aux.length()>0) vecOrder.addElement(aux);
1061      }
1062    }
1063  }
1064
1065  private String JavaDoc findOrderVector(Vector JavaDoc<Object JavaDoc> vecOrder, String JavaDoc name) {
1066    if (vecOrder.size()==0 || name.equals("")) return "";
1067    for (int i=0;i<vecOrder.size();i++) {
1068      String JavaDoc[] aux = (String JavaDoc[]) vecOrder.elementAt(i);
1069      if (aux[0].equalsIgnoreCase(name)) return aux[1];
1070    }
1071    return "";
1072  }
1073
1074
1075  private void processTabJavaSortTab(FieldsData[] parentsFieldsData, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc tableName, String JavaDoc windowName, String JavaDoc keyColumnName, String JavaDoc strTables, String JavaDoc strOrder, String JavaDoc strWhere, Vector JavaDoc<Object JavaDoc> vecFields, String JavaDoc isSOTrx, TabsData[] allTabs, String JavaDoc strWindow, String JavaDoc accesslevel, EditionFieldsData[] selCol, boolean isSecondaryKey, String JavaDoc grandfatherField, String JavaDoc tablevel, String JavaDoc tableId, String JavaDoc windowType, String JavaDoc strColumnSortOrderId, String JavaDoc whereClauseParams, String JavaDoc parentwhereclause, String JavaDoc strProcess, String JavaDoc strDirectPrint, boolean strReadOnly, Vector JavaDoc<Object JavaDoc> vecParametersTop, Vector JavaDoc<Object JavaDoc> vecTableParametersTop) throws ServletException, IOException {
1076    log4j.debug("Processing Sort Tab java: " + strTab + ", " + tabName);
1077    XmlDocument xmlDocument;
1078    int parentTab = parentTabId(allTabs, strTab);
1079    String JavaDoc hasTree = TableLinkData.hasTree(pool, strTab);
1080    
1081    String JavaDoc[] discard = {"", "", ""};
1082    if (parentsFieldsData==null || parentsFieldsData.length == 0) {
1083      discard[0] = "parent"; // remove the parent tags
1084
}
1085    //if (tableName.toUpperCase().startsWith("M_PRODUCT") || tableName.toUpperCase().startsWith("C_BP") || tableName.toUpperCase().startsWith("AD_ORG")) discard[1] = "org";
1086
if (grandfatherField.equals("")) discard[2]="grandfather";
1087    xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/javasourceSortTab", discard).createXmlDocument();
1088    
1089    fileDir.mkdirs();
1090    xmlDocument.setParameter("class", tabName);
1091    xmlDocument.setParameter("package", windowName);
1092    xmlDocument.setParameter("key", keyColumnName);
1093    xmlDocument.setParameter("grandfatherName", grandfatherField);
1094    xmlDocument.setParameter("ShowName", FieldsData.columnName(pool, strColumnSortOrderId));
1095    if (parentsFieldsData.length > 0) {
1096      xmlDocument.setParameter("keyParent", parentsFieldsData[0].name);
1097      xmlDocument.setParameter("keyParentINP", Sqlc.TransformaNombreColumna(parentsFieldsData[0].name));
1098    }
1099    xmlDocument.setParameter("keyData", Sqlc.TransformaNombreColumna(keyColumnName));
1100    xmlDocument.setParameter("windowId", strWindow);
1101    xmlDocument.setParameter("tabId", strTab);
1102    xmlDocument.setParameter("tableLevel", accesslevel);
1103    xmlDocument.setParameter("whereClauseParams", whereClauseParams);
1104    xmlDocument.setParameter("parentwhereclause", parentwhereclause);
1105    xmlDocument.setParameter("reportPDF", strProcess);
1106    xmlDocument.setParameter("reportDirectPrint", strDirectPrint);
1107    xmlDocument.setParameter("hasTree", hasTree);
1108    xmlDocument.setParameter("isReadOnly", (strReadOnly?"Y":"N"));
1109    if (WadUtility.findField(vecFields, "adClientId")) xmlDocument.setParameter("clientId", "data.adClientId");
1110    else xmlDocument.setParameter("clientId", "Utility.getContext(this, vars, \"#AD_Client_ID\", windowId)");
1111    
1112    if (WadUtility.findField(vecFields, "adOrgId")) xmlDocument.setParameter("orgId", "data.adOrgId");
1113    else xmlDocument.setParameter("orgId", "Utility.getContext(this, vars, \"#AD_Org_ID\", windowId)");
1114    
1115    //Parent field language
1116
if (parentsFieldsData!=null && parentsFieldsData.length>0) {
1117      Vector JavaDoc<Object JavaDoc> vecCounters2 = new Vector JavaDoc<Object JavaDoc>();
1118      Vector JavaDoc<Object JavaDoc> vecFields2 = new Vector JavaDoc<Object JavaDoc>();
1119      Vector JavaDoc<Object JavaDoc> vecTable2 = new Vector JavaDoc<Object JavaDoc>();
1120      Vector JavaDoc<Object JavaDoc> vecWhere2 = new Vector JavaDoc<Object JavaDoc>();
1121      Vector JavaDoc<Object JavaDoc> vecParameters2 = new Vector JavaDoc<Object JavaDoc>();
1122      Vector JavaDoc<Object JavaDoc> vecTableParameters2 = new Vector JavaDoc<Object JavaDoc>();
1123      vecCounters2.addElement("0");
1124      vecCounters2.addElement("0");
1125      WadUtility.columnIdentifier (pool, parentsFieldsData[0].tablename, true, parentsFieldsData[0], vecCounters2, true, vecFields2, vecTable2, vecWhere2, vecParameters2, vecTableParameters2, sqlDateFormat);
1126      
1127      xmlDocument.setParameter("parentLanguage", (vecParameters2.size()>0 || vecTableParameters2.size()>0)?", vars.getLanguage()":"");
1128    }
1129    //Fields of the parent Session
1130
FieldsData[] fieldsParentSession = null;
1131    FieldsData[] auxiliarPFields=null;
1132    if (parentTab!=-1) {
1133      xmlDocument.setParameter("parentClass", FormatUtilities.replace(allTabs[parentTab].tabname));
1134      fieldsParentSession = FieldsData.selectSession(pool, allTabs[parentTab].tabid);
1135      for (int i=0;i< fieldsParentSession.length; i++) {
1136        fieldsParentSession[i].name = Sqlc.TransformaNombreColumna(fieldsParentSession[i].name);
1137        if (fieldsParentSession[i].reference.equals("20")) {
1138          fieldsParentSession[i].xmltext = ", \"N\"";
1139        } else {
1140          fieldsParentSession[i].xmltext = "";
1141        }
1142      }
1143      //Auxiliary fields of the parent
1144
Vector JavaDoc<Object JavaDoc> vecAuxiliarPFields = new Vector JavaDoc<Object JavaDoc>();
1145      auxiliarPFields = FieldsData.selectAuxiliar(pool, "", allTabs[parentTab].tabid);
1146      if (auxiliarPFields!=null) {
1147        for (int i=0;i<auxiliarPFields.length;i++) {
1148          auxiliarPFields[i].columnname = Sqlc.TransformaNombreColumna(auxiliarPFields[i].columnname);
1149          if (auxiliarPFields[i].defaultvalue.toUpperCase().startsWith("@SQL=")) {
1150            auxiliarPFields[i].defaultvalue = FormatUtilities.replace(allTabs[parentTab].tabname) + "Data.selectAux" + auxiliarPFields[i].reference + "(this" + WadUtility.getWadContext(auxiliarPFields[i].defaultvalue, vecFields, vecAuxiliarPFields, parentsFieldsData, false, isSOTrx, strWindow) + ")";
1151          } else if (auxiliarPFields[i].defaultvalue.indexOf("@")!=-1) {
1152            auxiliarPFields[i].defaultvalue = WadUtility.getTextWadContext(auxiliarPFields[i].defaultvalue, vecFields, vecAuxiliarPFields, parentsFieldsData, false, isSOTrx, strWindow);
1153          } else {
1154            auxiliarPFields[i].defaultvalue = "\"" + auxiliarPFields[i].defaultvalue + "\"";
1155          }
1156          vecAuxiliarPFields.addElement(auxiliarPFields[i].name);
1157        }
1158      }
1159    } else {
1160      fieldsParentSession = FieldsData.set();
1161      auxiliarPFields = FieldsData.set();
1162    }
1163
1164    xmlDocument.setData("structure8", fieldsParentSession);
1165    xmlDocument.setData("structure11", auxiliarPFields);
1166    WadUtility.writeFile(fileDir, tabName + ".java", xmlDocument.print());
1167  }
1168
1169
1170  private void processTabJava(EditionFieldsData[] allfields, EditionFieldsData[] auxiliarsData, FieldsData[] parentsFieldsData, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc tableName, String JavaDoc windowName, String JavaDoc keyColumnName, String JavaDoc strTables, String JavaDoc strOrder, String JavaDoc strWhere, String JavaDoc strFilter, Vector JavaDoc<Object JavaDoc> vecFields, Vector JavaDoc<Object JavaDoc> vecParametersTop, String JavaDoc isSOTrx, TabsData[] allTabs, String JavaDoc strWindow, String JavaDoc accesslevel, EditionFieldsData[] selCol, boolean isSecondaryKey, String JavaDoc grandfatherField, String JavaDoc tablevel, String JavaDoc tableId, String JavaDoc windowType, boolean strReadOnly, String JavaDoc whereClauseParams, String JavaDoc parentwhereclause, String JavaDoc editReference, String JavaDoc strProcess, String JavaDoc strDirectPrint, Vector JavaDoc<Object JavaDoc> vecTableParametersTop, FieldsData[] fieldsDataSelectAux, WADControl relationControl) throws ServletException, IOException {
1171    log4j.debug("Processing java: " + strTab + ", " + tabName);
1172    XmlDocument xmlDocument;
1173    boolean isHighVolumen = (FieldsData.isHighVolume(pool, strTab).equals("Y"));
1174    boolean hasParentsFields = true;
1175    String JavaDoc createFromProcess = FieldsData.hasCreateFromButton(pool, strTab);
1176    boolean hasCreateFrom = !createFromProcess.equals("0");
1177    String JavaDoc postedProcess = FieldsData.hasPostedButton(pool, strTab);
1178    boolean hasPosted = !postedProcess.equals("0");
1179    String JavaDoc strhasEncryption = FieldsData.hasEncryptionFields(pool, strTab);
1180    boolean hasEncryption = (strhasEncryption!=null&&!strhasEncryption.equals("0"));
1181    int parentTab = parentTabId(allTabs, strTab);
1182    String JavaDoc hasTree = TableLinkData.hasTree(pool, strTab);
1183    StringBuffer JavaDoc dl = new StringBuffer JavaDoc();
1184    //Auxiliary fields of the window
1185
Vector JavaDoc<Object JavaDoc> vecAuxiliarFields = new Vector JavaDoc<Object JavaDoc>();
1186    FieldsData[] auxiliarFields = FieldsData.selectAuxiliar(pool, "", strTab);
1187    if (auxiliarFields!=null) {
1188      for (int i=0;i<auxiliarFields.length;i++) {
1189        auxiliarFields[i].columnname = Sqlc.TransformaNombreColumna(auxiliarFields[i].columnname);
1190        if (auxiliarFields[i].defaultvalue.toUpperCase().startsWith("@SQL=")) {
1191          auxiliarFields[i].defaultvalue = tabName + "Data.selectAux" + auxiliarFields[i].reference + "(this" + WadUtility.getWadContext(auxiliarFields[i].defaultvalue, vecFields, vecAuxiliarFields, parentsFieldsData, false, isSOTrx, strWindow) + ")";
1192        } else if (auxiliarFields[i].defaultvalue.indexOf("@")!=-1) {
1193          auxiliarFields[i].defaultvalue = WadUtility.getTextWadContext(auxiliarFields[i].defaultvalue, vecFields, vecAuxiliarFields, parentsFieldsData, false, isSOTrx, strWindow);
1194        } else {
1195          auxiliarFields[i].defaultvalue = "\"" + auxiliarFields[i].defaultvalue + "\"";
1196        }
1197        vecAuxiliarFields.addElement(auxiliarFields[i].name);
1198      }
1199    }
1200
1201    {
1202      Vector JavaDoc<Object JavaDoc> vecContext = new Vector JavaDoc<Object JavaDoc>();
1203      Vector JavaDoc<Object JavaDoc> vecDL = new Vector JavaDoc<Object JavaDoc>();
1204      EditionFieldsData[] efd = EditionFieldsData.selectDisplayLogic(pool, strTab);
1205      if (efd!=null) {
1206        for (int i=0;i<efd.length;i++)
1207          WadUtility.displayLogic(efd[i].displaylogic, vecDL, parentsFieldsData, vecAuxiliarFields, vecFields, strWindow, vecContext);
1208      }
1209      for (int i=0;i<vecContext.size();i++) {
1210        dl.append("var str");
1211        dl.append(FormatUtilities.replace(vecContext.elementAt(i).toString()));
1212        dl.append("=\\\"\" + Utility.getContext(this, vars, \"");
1213        dl.append(vecContext.elementAt(i).toString());
1214        dl.append("\", windowId) + \"\\\";\\n");
1215      }
1216    }
1217
1218    
1219    String JavaDoc[] discard = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "hasReference"};
1220    if (parentsFieldsData==null || parentsFieldsData.length == 0) {
1221      discard[0] = "parent"; // remove the parent tags
1222
hasParentsFields=false;
1223    }
1224    if (tableName.toUpperCase().endsWith("_ACCESS")) {
1225      discard[18] = "client";
1226      discard[1] = "org";
1227    } //else if (tableName.toUpperCase().startsWith("M_PRODUCT") || tableName.toUpperCase().startsWith("C_BP") || tableName.toUpperCase().startsWith("AD_ORG")) discard[1] = "org";
1228
if (dl.toString().equals("")) discard[2] = "selDisplayLogic";
1229    if (!isHighVolumen || !tablevel.equals("0")) {
1230      discard[3] = "sectionIsHighVolume";
1231    }
1232    if (selCol==null || selCol.length==0) {
1233      discard[4] = "sectionIsHighVolume2";
1234      discard[5] = "sectionIsHighVolume3";
1235      discard[6] = "sectionIsHighVolume5";
1236      discard[7] = "sectionIsHighVolumeEdit";
1237      discard[8] = "sectionIsHighVolume2Edit";
1238      discard[9] = "sectionIsHighVolume3Edit";
1239      discard[14] = "sectionIsHighVolume4";
1240    }
1241    if (isHighVolumen) discard[10] = "sectionNotIsHighVolume";
1242    if (isSecondaryKey) discard[11] = "keySequence";
1243    if (grandfatherField.equals("")) discard[12]="grandfather";
1244    if (!hasCreateFrom) discard[13]="sectionCreateFrom";
1245    if (!hasPosted) discard[19]="sectionPosted";
1246    if (!(windowType.equalsIgnoreCase("T") && tablevel.equals("0"))) discard[15]="isTransactional";
1247    if (strFilter.trim().equals("")) discard[16]="sectionFilter";
1248    if (!strReadOnly) discard[17]="sectionReadOnly";
1249    if (!hasEncryption) discard[20]="encryptionsFields";
1250    if (!editReference.equals("")) discard[21]="NothasReference";
1251    xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/javasource", discard).createXmlDocument();
1252    
1253    fileDir.mkdirs();
1254    xmlDocument.setParameter("class", tabName);
1255    xmlDocument.setParameter("package", windowName);
1256    xmlDocument.setParameter("key", keyColumnName);
1257    xmlDocument.setParameter("from", generateStaticWhere(strTables, vecTableParametersTop));
1258    xmlDocument.setParameter("order", (!strOrder.equals("")?strOrder.substring(9):strOrder));
1259    Vector JavaDoc<Object JavaDoc> vecTotalParameters = new Vector JavaDoc<Object JavaDoc>();
1260    for (int i=0;i<vecTableParametersTop.size();i++) {
1261      vecTotalParameters.addElement(vecTableParametersTop.elementAt(i));
1262    }
1263    for (int i=0;i<vecParametersTop.size();i++) {
1264      vecTotalParameters.addElement(vecParametersTop.elementAt(i));
1265    }
1266    xmlDocument.setParameter("where", generateStaticWhere(strWhere, vecParametersTop));
1267    xmlDocument.setParameter("filter", strFilter);
1268    xmlDocument.setParameter("displayLogic", dl.toString());
1269    xmlDocument.setParameter("grandfatherName", grandfatherField);
1270    xmlDocument.setParameter("defaultView", (FieldsData.isSingleRow(pool, strTab).equals("Y")?"EDIT":"RELATION"));
1271    xmlDocument.setParameter("whereClauseParams", whereClauseParams);
1272    xmlDocument.setParameter("parentwhereclause", parentwhereclause);
1273    xmlDocument.setParameter("reportPDF", strProcess);
1274    xmlDocument.setParameter("reportDirectPrint", strDirectPrint);
1275    xmlDocument.setParameter("relationControl", relationControl.toJava());
1276    if (parentsFieldsData.length > 0) {
1277      xmlDocument.setParameter("keyParent", parentsFieldsData[0].name);
1278      xmlDocument.setParameter("keyParentINP", Sqlc.TransformaNombreColumna(parentsFieldsData[0].name));
1279    }
1280    xmlDocument.setParameter("keyData", Sqlc.TransformaNombreColumna(keyColumnName));
1281    xmlDocument.setParameter("table", tableName);
1282    xmlDocument.setParameter("windowId", strWindow);
1283    xmlDocument.setParameter("tabId", strTab);
1284    xmlDocument.setParameter("tableLevel", accesslevel);
1285    xmlDocument.setParameter("tableId", tableId);
1286    xmlDocument.setParameter("createFromProcessId", ((Integer.valueOf(createFromProcess).intValue()>0)?createFromProcess:""));
1287    xmlDocument.setParameter("postedProcessId", ((Integer.valueOf(postedProcess).intValue()>0)?postedProcess:""));
1288    xmlDocument.setParameter("editReference", TabsData.formClassName(pool, editReference));
1289    xmlDocument.setParameter("hasTree", hasTree);
1290    xmlDocument.setParameter("isReadOnly", (strReadOnly?"Y":"N"));
1291
1292    String JavaDoc strHighVolume="", strParamHighVolume="", strHighVolumeComp="";
1293    
1294    if (selCol!=null) {
1295      for (int i=0;i<selCol.length;i++) {
1296        strHighVolume += selCol[i].htmltext;
1297        strParamHighVolume += "String strParam" + selCol[i].columnname + " = vars.getSessionValue(tabId + \"|param" + selCol[i].columnname + "\");\n";
1298        strHighVolumeComp += selCol[i].xmltext;
1299        if (i<selCol.length-1) strHighVolume+=" && ";
1300      }
1301    }
1302    xmlDocument.setParameter("searchName", strHighVolume);
1303    xmlDocument.setParameter("searchVariables", strParamHighVolume);
1304    xmlDocument.setParameter("searchComparations", strHighVolumeComp);
1305    {
1306      StringBuffer JavaDoc fieldsRelationStructure = new StringBuffer JavaDoc();
1307      FieldsData[] fieldsDataSelect = null;
1308      fieldsDataSelect=copyarray(fieldsDataSelectAux);
1309      fieldsRelationStructure.append("strData.append(\"\\\"\").append(Replace.replace(Replace.replace(Replace.replace(data[contadorData].");
1310      fieldsRelationStructure.append(Sqlc.TransformaNombreColumna(keyColumnName));
1311      fieldsRelationStructure.append(", \"\\r\", \"\"), \"\\n\", \"<br>\"), \"\\\"\", \"\\\\\\\"\")).append(\"\\\"\");\n");
1312      for (int i=0; i<fieldsDataSelect.length; i++) {
1313        if (fieldsDataSelect[i].showinrelation.equals("Y") && fieldsDataSelect[i].isencrypted.equals("N") && (fieldsDataSelect[i].isdisplayed.equals("Y"))) {
1314          if (parentsFieldsData.length == 0 || !parentsFieldsData[0].name.equals(fieldsDataSelect[i].name)) {
1315            fieldsRelationStructure.append("strData.append(\",\");\n");
1316            fieldsRelationStructure.append("strData.append(\"\\\"\").append(Replace.replace(Replace.replace(Replace.replace(data[contadorData].");
1317            if ((fieldsDataSelect[i].reference.equals("17") || fieldsDataSelect[i].reference.equals("18") || fieldsDataSelect[i].reference.equals("19")) && fieldsDataSelect[i].isdisplayed.equals("Y")) { // List
1318
fieldsDataSelect[i].name = fieldsDataSelect[i].name + "R"; //_REF
1319
} else if ((fieldsDataSelect[i].reference.equals("30") || fieldsDataSelect[i].reference.equals("800011") || fieldsDataSelect[i].reference.equals("31") || fieldsDataSelect[i].reference.equals("35") || fieldsDataSelect[i].reference.equals("25") || fieldsDataSelect[i].reference.equals("21") || fieldsDataSelect[i].reference.equals("32")) && fieldsDataSelect[i].isdisplayed.equals("Y")) {
1320              fieldsDataSelect[i].name = fieldsDataSelect[i].name + "R";
1321            }
1322            fieldsRelationStructure.append(Sqlc.TransformaNombreColumna(fieldsDataSelect[i].name));
1323            fieldsRelationStructure.append(", \"\\r\", \"\"), \"\\n\", \"<br>\"), \"\\\"\", \"\\\\\\\"\")).append(\"\\\"\");\n");
1324          }
1325        }
1326      }
1327      xmlDocument.setParameter("fieldsRelation", fieldsRelationStructure.toString());
1328    }
1329    if (WadUtility.findField(vecFields, "adClientId")) xmlDocument.setParameter("clientId", "data.adClientId");
1330    else xmlDocument.setParameter("clientId", "Utility.getContext(this, vars, \"#AD_Client_ID\", windowId)");
1331    
1332    if (WadUtility.findField(vecFields, "adOrgId")) xmlDocument.setParameter("orgId", "data.adOrgId");
1333    else xmlDocument.setParameter("orgId", "Utility.getContext(this, vars, \"#AD_Org_ID\", windowId)");
1334    
1335    //Parent field language
1336
if (parentsFieldsData!=null && parentsFieldsData.length>0) {
1337      Vector JavaDoc<Object JavaDoc> vecCounters2 = new Vector JavaDoc<Object JavaDoc>();
1338      Vector JavaDoc<Object JavaDoc> vecFields2 = new Vector JavaDoc<Object JavaDoc>();
1339      Vector JavaDoc<Object JavaDoc> vecTable2 = new Vector JavaDoc<Object JavaDoc>();
1340      Vector JavaDoc<Object JavaDoc> vecWhere2 = new Vector JavaDoc<Object JavaDoc>();
1341      Vector JavaDoc<Object JavaDoc> vecParameters2 = new Vector JavaDoc<Object JavaDoc>();
1342      Vector JavaDoc<Object JavaDoc> vecTableParameters2 = new Vector JavaDoc<Object JavaDoc>();
1343      vecCounters2.addElement("0");
1344      vecCounters2.addElement("0");
1345      WadUtility.columnIdentifier (pool, parentsFieldsData[0].tablename, true, parentsFieldsData[0], vecCounters2, true, vecFields2, vecTable2, vecWhere2, vecParameters2, vecTableParameters2, sqlDateFormat);
1346      
1347      xmlDocument.setParameter("parentLanguage", (vecParameters2.size()>0 || vecTableParameters2.size()>0)?", vars.getLanguage()":"");
1348    }
1349    FieldsData[] fieldsData=null;
1350    Vector JavaDoc<Object JavaDoc> vector = new Vector JavaDoc<Object JavaDoc>();
1351    boolean defaultValue;
1352    {
1353      Vector JavaDoc<Object JavaDoc> vecFieldsSelect = new Vector JavaDoc<Object JavaDoc>();
1354      FieldsData[] fieldsData1 = null;
1355      fieldsData1=copyarray(fieldsDataSelectAux);
1356      for (int i=0;i< fieldsData1.length; i++) {
1357        if (!fieldsData1[i].name.equalsIgnoreCase("Created") && !fieldsData1[i].name.equalsIgnoreCase("CreatedBy") && !fieldsData1[i].name.equalsIgnoreCase("Updated") && !fieldsData1[i].name.equalsIgnoreCase("UpdatedBy")) {
1358          fieldsData1[i].name = Sqlc.TransformaNombreColumna(fieldsData1[i].name);
1359          fieldsData1[i].columnname = fieldsData1[i].name;
1360          defaultValue=false;
1361          if (!fieldsData1[i].reference.equals("23") && !WadUtility.isDateTimeField(fieldsData1[i].reference) && !fieldsData1[i].reference.equals("20") && !WadUtility.isDecimalNumber(fieldsData1[i].reference) && !WadUtility.isQtyNumber(fieldsData1[i].reference) && !WadUtility.isPriceNumber(fieldsData1[i].reference) && !WadUtility.isIntegerNumber(fieldsData1[i].reference) && !WadUtility.isGeneralNumber(fieldsData1[i].reference) && WadUtility.columnRelationFormat(fieldsData1[i], false, MAX_COL_SIZE_RELATION)) vector.addElement(fieldsData1[i]);
1362          if (fieldsData1[i].reference.equals("20")) {
1363            fieldsData1[i].xmltext = ", \"N\"";
1364            defaultValue=true;
1365          } else {
1366            fieldsData1[i].xmltext = "";
1367          }
1368
1369          if (fieldsData1[i].iskey.equals("Y")) {
1370            fieldsData1[i].xmltext = ", windowId + \"|" + fieldsData1[i].realname + "\"";
1371            fieldsData1[i].type = "RequestGlobalVariable";
1372          } else if (fieldsData1[i].issessionattr.equals("Y")) {
1373            fieldsData1[i].xmltext = ", windowId + \"|" + fieldsData1[i].realname + "\"";
1374            if (fieldsData1[i].reference.equals("20")) fieldsData1[i].xmltext += ", \"N\"";
1375            if (fieldsData1[i].required.equals("Y") && !fieldsData1[i].columnname.equalsIgnoreCase("Value") && !defaultValue) {
1376              if (fieldsData1[i].reference.equals("20")) fieldsData1[i].type = "RequiredInputGlobalVariable";
1377              else fieldsData1[i].type = "RequiredGlobalVariable";
1378            } else {
1379              if (fieldsData1[i].reference.equals("20")) fieldsData1[i].type = "RequiredInputGlobalVariable";
1380              else fieldsData1[i].type = "RequestGlobalVariable";
1381            }
1382          } else if (fieldsData1[i].required.equals("Y") && !fieldsData1[i].columnname.equalsIgnoreCase("Value") && !defaultValue) {
1383            fieldsData1[i].type = "RequiredStringParameter";
1384          }
1385          if (fieldsData1[i].iscolumnencrypted.equals("Y") && fieldsData1[i].isdesencryptable.equals("Y")) {
1386            fieldsData1[i].htmltext = "FormatUtilities.encryptDecrypt(";
1387            fieldsData1[i].htmltexttrl = ", true)";
1388          } else if (fieldsData1[i].iscolumnencrypted.equals("Y") && fieldsData1[i].isdesencryptable.equals("N")) {
1389            fieldsData1[i].htmltext = "FormatUtilities.sha1Base64(";
1390            fieldsData1[i].htmltexttrl = ")";
1391          }
1392          vecFieldsSelect.addElement(fieldsData1[i]);
1393          if ((WadUtility.isSearchType(fieldsData1[i].reference) || WadUtility.isSelectType(fieldsData1[i].reference)) && fieldsData1[i].isdisplayed.equals("Y")) {
1394            FieldsData fieldsData2 = null;
1395            fieldsData2=copyarrayElement(fieldsData1[i]);
1396            fieldsData2.name += "r";//(WadUtility.isSearchType(fieldsData1[i].reference)?"D":"r");
1397
fieldsData2.columnname += "_R";
1398            fieldsData2.type = "StringParameter";
1399            fieldsData2.xmltext = "";
1400            vecFieldsSelect.addElement(fieldsData2);
1401          }
1402        }
1403      }
1404      fieldsData = new FieldsData[vecFieldsSelect.size()];
1405      vecFieldsSelect.copyInto(fieldsData);
1406    }
1407
1408    FieldsData[] fieldsTruncate = new FieldsData[vector.size()];
1409    vector.copyInto(fieldsTruncate);
1410
1411    //Campos del Session actual
1412
//Fields of the current Session
1413
FieldsData[] fieldsSession = FieldsData.selectSession(pool, strTab);
1414    if (fieldsSession!=null) {
1415      for (int i=0;i< fieldsSession.length; i++) {
1416        fieldsSession[i].name = Sqlc.TransformaNombreColumna(fieldsSession[i].name);
1417        if (fieldsSession[i].reference.equals("20")) {
1418          fieldsSession[i].xmltext = ", \"N\"";
1419        } else {
1420          fieldsSession[i].xmltext = "";
1421        }
1422      }
1423    }
1424
1425    //Fields of the parent Session
1426
FieldsData[] fieldsParentSession = null;
1427    FieldsData[] auxiliarPFields=null;
1428    if (parentTab!=-1) {
1429      xmlDocument.setParameter("parentClass", FormatUtilities.replace(allTabs[parentTab].tabname));
1430      fieldsParentSession = FieldsData.selectSession(pool, allTabs[parentTab].tabid);
1431      for (int i=0;i< fieldsParentSession.length; i++) {
1432        fieldsParentSession[i].name = Sqlc.TransformaNombreColumna(fieldsParentSession[i].name);
1433        if (fieldsParentSession[i].reference.equals("20")) {
1434          fieldsParentSession[i].xmltext = ", \"N\"";
1435        } else {
1436          fieldsParentSession[i].xmltext = "";
1437        }
1438      }
1439      //Auxiliary fields of the parent
1440
Vector JavaDoc<Object JavaDoc> vecAuxiliarPFields = new Vector JavaDoc<Object JavaDoc>();
1441      auxiliarPFields = FieldsData.selectAuxiliar(pool, "", allTabs[parentTab].tabid);
1442      if (auxiliarPFields!=null) {
1443        for (int i=0;i<auxiliarPFields.length;i++) {
1444          auxiliarPFields[i].columnname = Sqlc.TransformaNombreColumna(auxiliarPFields[i].columnname);
1445          if (auxiliarPFields[i].defaultvalue.toUpperCase().startsWith("@SQL=")) {
1446            auxiliarPFields[i].defaultvalue = FormatUtilities.replace(allTabs[parentTab].tabname) + "Data.selectAux" + auxiliarPFields[i].reference + "(this" + WadUtility.getWadContext(auxiliarPFields[i].defaultvalue, vecFields, vecAuxiliarPFields, parentsFieldsData, false, isSOTrx, strWindow) + ")";
1447          } else if (auxiliarPFields[i].defaultvalue.indexOf("@")!=-1) {
1448            auxiliarPFields[i].defaultvalue = WadUtility.getTextWadContext(auxiliarPFields[i].defaultvalue, vecFields, vecAuxiliarPFields, parentsFieldsData, false, isSOTrx, strWindow);
1449          } else {
1450            auxiliarPFields[i].defaultvalue = "\"" + auxiliarPFields[i].defaultvalue + "\"";
1451          }
1452          vecAuxiliarPFields.addElement(auxiliarPFields[i].name);
1453        }
1454      }
1455    } else {
1456      fieldsParentSession = FieldsData.set();
1457      auxiliarPFields = FieldsData.set();
1458    }
1459
1460    
1461    /*FieldsData[] tables = FieldsData.selectTables(pool, strTab);
1462    if (tables!=null) {
1463      for (int i=0;i<tables.length;i++) {
1464        StringBuffer where = new StringBuffer();
1465        Vector<Object> vecFields1 = new Vector<Object>();
1466        Vector<Object> vecTables = new Vector<Object>();
1467        Vector<Object> vecWhere = new Vector<Object>();
1468        Vector<Object> vecParameters = new Vector<Object>();
1469        Vector<Object> vecTableParameters = new Vector<Object>();
1470        String translated = WadUtility.columnIdentifier(pool, tables[i].tablename, true, tables[i], 0, 0, true, vecFields1, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
1471        where.append(tables[i].whereclause);
1472        if (!tables[i].columnname.equals("")) {
1473          //tables[i].referencevalue += "_" + tables[i].columnname;
1474          tables[i].tablename = "TableListVal";
1475          if (!where.toString().equals("")) where.append(" AND ");
1476          where.append(tables[i].defaultvalue);
1477        } else {
1478          tables[i].tablename = "TableList";
1479        }
1480        tables[i].whereclause = "";
1481        if (vecTableParameters.size()>0) tables[i].whereclause = ", vars.getLanguage()";
1482        tables[i].whereclause+=", Utility.getContext(this, vars, \"#User_Org\", windowId), Utility.getContext(this, vars, \"#User_Client\", windowId)";
1483        String table_Name = tables[i].nameref;
1484        tables[i].whereclause += WadUtility.getWadContext(where.toString(), vecFields, vecAuxiliarFields, parentsFieldsData, false, isSOTrx, strWindow);
1485        tables[i].xmltext = tables[i].whereclause;
1486        if (vecParameters.size()>0 && vecTableParameters.size()==0) tables[i].whereclause += ", vars.getLanguage()";
1487        tables[i].xmltext = tables[i].whereclause;
1488        tables[i].nameref = "data[0]." + Sqlc.TransformaNombreColumna(tables[i].name);
1489        tables[i].whereclause += ", data[0]." + Sqlc.TransformaNombreColumna(tables[i].name);
1490        tables[i].xmltext += ", data[0]." + Sqlc.TransformaNombreColumna(tables[i].name);
1491      }
1492    }*/

1493
1494    /*FieldsData[] tableDir = FieldsData.selectTableDirs(pool, strTab);
1495    if (tableDir!=null) {
1496      for (int i=0;i<tableDir.length;i++) {
1497        String table_Name = tableDir[i].name.substring(0,tableDir[i].name.length()-3);
1498        Vector<Object> vecFields1 = new Vector<Object>();
1499        Vector<Object> vecTables = new Vector<Object>();
1500        Vector<Object> vecWhere = new Vector<Object>();
1501        Vector<Object> vecParameters = new Vector<Object>();
1502        Vector<Object> vecTableParameters = new Vector<Object>();
1503        String translated = WadUtility.columnIdentifier(pool, table_Name, true, tableDir[i], 0, 0, true, vecFields1, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
1504        tableDir[i].whereclause = ((vecTableParameters.size()>0)?", vars.getLanguage()":"");
1505        tableDir[i].whereclause += ", Utility.getContext(this, vars, \"#User_Org\", windowId), Utility.getContext(this, vars, \"#User_Client\", windowId)";
1506        if (!tableDir[i].columnname.equals("")) {
1507          //tableDir[i].referencevalue += "_" + tableDir[i].columnname;
1508          tableDir[i].tablename = "TableDirVal";
1509          tableDir[i].whereclause += WadUtility.getWadContext(tableDir[i].defaultvalue, vecFields, vecAuxiliarFields, parentsFieldsData, false, isSOTrx, strWindow);
1510        } else {
1511          tableDir[i].tablename = "TableDir";
1512        }
1513        if (vecParameters.size()>0 && vecTableParameters.size()==0) tableDir[i].whereclause += ", vars.getLanguage()";
1514        tableDir[i].xmltext = tableDir[i].whereclause;
1515        tableDir[i].nameref = "data[0]." + Sqlc.TransformaNombreColumna(tableDir[i].name);
1516        tableDir[i].whereclause += ", data[0]." + Sqlc.TransformaNombreColumna(tableDir[i].name);
1517        tableDir[i].xmltext += ", data[0]." + Sqlc.TransformaNombreColumna(tableDir[i].name);
1518      }
1519    }*/

1520    
1521    if (fieldsSession!=null) {
1522      for (int i=0;i<fieldsSession.length;i++) {
1523        if (!fieldsSession[i].columnname.equals("")) {
1524          fieldsSession[i].referencevalue += "_" + fieldsSession[i].columnname;
1525          fieldsSession[i].tablename = "TableDirValData";
1526          fieldsSession[i].whereclause = ", Utility.getContext(this, vars, \"#User_Org\", windowId), Utility.getContext(this, vars, \"#User_Client\", windowId)";
1527          fieldsSession[i].whereclause += WadUtility.getWadContext(fieldsSession[i].defaultvalue, vecFields, vecAuxiliarFields, parentsFieldsData, false, isSOTrx, strWindow);
1528          fieldsSession[i].whereclause += ", data[0]." + Sqlc.TransformaNombreColumna(fieldsSession[i].name);
1529        }
1530      }
1531    }
1532
1533    {
1534      FieldsData[] docsNoFields = FieldsData.selectDocumentsNo(pool, strTab);
1535      if (docsNoFields!=null) {
1536        String JavaDoc field="";
1537        for (int i=0;i<docsNoFields.length;i++) {
1538          docsNoFields[i].columnname = Sqlc.TransformaNombreColumna(docsNoFields[i].columnname);
1539          docsNoFields[i].defaultvalue = "Utility.getDocumentNo(this, vars, windowId, \"" + docsNoFields[i].nameref + "\", ";
1540          docsNoFields[i].realname = "Utility.getDocumentNo(this, vars, windowId, \"" + docsNoFields[i].nameref + "\", ";
1541          field=WadUtility.findField(pool, allfields, auxiliarsData, "C_DocTypeTarget_ID");
1542          if (!field.equals("")) {
1543            docsNoFields[i].defaultvalue += "data[0]." + Sqlc.TransformaNombreColumna(field);
1544            docsNoFields[i].realname += "data." + Sqlc.TransformaNombreColumna(field);
1545          } else {
1546            docsNoFields[i].defaultvalue += "\"\"";
1547            docsNoFields[i].realname += "\"\"";
1548          }
1549          docsNoFields[i].defaultvalue += ", ";
1550          docsNoFields[i].realname += ", ";
1551          field=WadUtility.findField(pool, allfields, auxiliarsData, "C_DocType_ID");
1552          if (!field.equals("")) {
1553            docsNoFields[i].defaultvalue += "data[0]." + Sqlc.TransformaNombreColumna(field);
1554            docsNoFields[i].realname += "data." + Sqlc.TransformaNombreColumna(field);
1555          } else {
1556            docsNoFields[i].defaultvalue += "\"\"";
1557            docsNoFields[i].realname += "\"\"";
1558          }
1559          docsNoFields[i].defaultvalue += ", false, false)";
1560          docsNoFields[i].realname += ", false, true)";
1561        }
1562      }
1563      xmlDocument.setData("structure12", docsNoFields);
1564      xmlDocument.setData("structure13", docsNoFields);
1565      {
1566        FieldsData[] docsIdentify = FieldsData.selectIdentify(pool, strTab);
1567        if (docsIdentify!=null) {
1568          for (int i=0;i<docsIdentify.length;i++) {
1569            if (docsNoFields==null || docsNoFields.length == 0) {
1570              docsIdentify[i].realname = "Utility.getDocumentNo(this, vars.getClient(), \"" + docsIdentify[i].nameref + "\", true)";
1571              if (docsIdentify[i].issessionattr.equals("Y")) docsIdentify[i].realname += ";\nvars.setSessionValue(windowId + \"|" + docsIdentify[i].columnname + "\", data." + Sqlc.TransformaNombreColumna(docsIdentify[i].columnname) + ")";
1572            } else {
1573              docsIdentify[i].realname = "data." + docsNoFields[0].columnname;
1574            }
1575            docsIdentify[i].columnname = Sqlc.TransformaNombreColumna(docsIdentify[i].columnname);
1576          }
1577        }
1578        xmlDocument.setData("structure23", docsIdentify);
1579      }
1580    }
1581
1582    xmlDocument.setData("structure1", fieldsData);
1583    xmlDocument.setData("structure2", fieldsTruncate);
1584    /*{
1585      FieldsData[] fieldLists = FieldsData.selectLists(pool, strTab);
1586      if (fieldLists!=null && fieldLists.length>0) {
1587        for (int h=0;h<fieldLists.length;h++) {
1588          fieldLists[h].nameref = "data[0]." + Sqlc.TransformaNombreColumna(fieldLists[h].nameref);
1589        }
1590      }
1591      xmlDocument.setData("structure4", fieldLists);
1592    }*/

1593    //xmlDocument.setData("structure5", tables);
1594
//xmlDocument.setData("structure6", tableDir);
1595
xmlDocument.setData("structure7", auxiliarFields);
1596    xmlDocument.setData("structure27", auxiliarFields);
1597    xmlDocument.setData("structure8", fieldsParentSession);
1598    xmlDocument.setData("structure9", fieldsSession);
1599    xmlDocument.setData("structure10", auxiliarFields);
1600    xmlDocument.setData("structure11", auxiliarPFields);
1601    {
1602      ActionButtonRelationData[] abrd = WadActionButton.buildActionButtonCall(pool, strTab, tabName, keyColumnName, isSOTrx, strWindow);
1603      xmlDocument.setData("structure14", abrd);
1604      xmlDocument.setData("structure15", abrd);
1605      xmlDocument.setData("structure16", abrd);
1606    }
1607
1608    xmlDocument.setData("structure18", selCol);
1609    xmlDocument.setData("structure20", selCol);
1610    xmlDocument.setData("structure22", selCol);
1611    xmlDocument.setData("structure24", selCol);
1612    xmlDocument.setData("structure25", selCol);
1613    xmlDocument.setData("structure26", selCol);
1614
1615    //Encrypted Fields
1616
{
1617      FieldsData[] encryptedData = FieldsData.selectEncrypted(pool, strTab);
1618      if (encryptedData!=null && encryptedData.length>0) {
1619        for (int g=0;g<encryptedData.length;g++) {
1620          encryptedData[g].realname = Sqlc.TransformaNombreColumna(encryptedData[g].realname);
1621          encryptedData[g].name = FormatUtilities.replace(encryptedData[g].name);
1622          if (encryptedData[g].isdesencryptable.equals("Y")) {
1623            encryptedData[g].xmlFormat = "encryptDecrypt";
1624            encryptedData[g].htmltext = ", true";
1625          } else {
1626            encryptedData[g].xmlFormat = "sha1Base64";
1627            encryptedData[g].htmltext = "";
1628          }
1629        }
1630      }
1631      xmlDocument.setData("structure32", encryptedData);
1632      xmlDocument.setData("structure33", encryptedData);
1633      xmlDocument.setData("structure34", encryptedData);
1634      xmlDocument.setData("structure35", encryptedData);
1635    }
1636
1637    //Button Fields
1638
{
1639      FieldsData[] buttonData = FieldsData.selectButton(pool, strTab);
1640      if (buttonData!=null && buttonData.length>0) {
1641        for (int g=0;g<buttonData.length;g++) {
1642          buttonData[g].realname = Sqlc.TransformaNombreColumna(buttonData[g].realname);
1643        }
1644      }
1645      xmlDocument.setData("structure36", buttonData);
1646    }
1647
1648    StringBuffer JavaDoc strDefaultValues = new StringBuffer JavaDoc();
1649    FieldsData sfd[] = FieldsData.selectDefaultValue(pool, "", strTab);
1650    int isSelect=0;
1651    for (int i=0;i< sfd.length; i++) {
1652      if (!hasParentsFields || !parentsFieldsData[0].name.equalsIgnoreCase(sfd[i].columnname)) {
1653        if (sfd[i].defaultvalue.toUpperCase().startsWith("@SQL=")) {
1654          sfd[i].defaultvalue = tabName + "Data.selectDef" + sfd[i].reference + "(this" + WadUtility.getWadContext(sfd[i].defaultvalue, vecFields, vecAuxiliarFields, parentsFieldsData, true, isSOTrx, strWindow) + ")";
1655        } else if (sfd[i].columnname.equalsIgnoreCase("isActive")) {
1656          sfd[i].defaultvalue="\"Y\"";
1657        } else if (sfd[i].accesslevel.equals("4") && (sfd[i].columnname.equalsIgnoreCase("AD_CLIENT_ID") || sfd[i].columnname.equalsIgnoreCase("AD_ORG_ID"))) {
1658          sfd[i].defaultvalue = "\"0\"";
1659        } else if (sfd[i].accesslevel.equals("6") && sfd[i].columnname.equalsIgnoreCase("AD_ORG_ID")) {
1660          sfd[i].defaultvalue = "\"0\"";
1661        } else {
1662          sfd[i].defaultvalue = "Utility.getDefault(this, vars, \"" + sfd[i].columnname + "\", \"" + sfd[i].defaultvalue + "\", \"" + strWindow + "\", \"" + WadUtility.getWadDefaultValue(sfd[i]) + "\")";
1663        }
1664        if (!strDefaultValues.toString().equals("") || hasParentsFields) strDefaultValues.append(", ");
1665        strDefaultValues.append(sfd[i].defaultvalue);
1666      } else {
1667        sfd[i].defaultvalue = "strP" + sfd[i].columnname;
1668      }
1669      if ((sfd[i].referencevalue.equals("30") || sfd[i].referencevalue.equals("31") || sfd[i].referencevalue.equals("35") || sfd[i].referencevalue.equals("25") || sfd[i].reference.equals("800011")) && sfd[i].isdisplayed.equals("Y")) strDefaultValues.append(", " + tabName + "Data.selectDef" + sfd[i].reference + "_" + (isSelect++) + "(this, " + sfd[i].defaultvalue + ")");
1670      else if (sfd[i].referencevalue.equals("28") && sfd[i].isdisplayed.equals("Y") && !sfd[i].type.equals("")) strDefaultValues.append(", (vars.getLanguage().equals(\"en_US\")?ListData.selectName(this, \"").append(sfd[i].type).append("\", ").append(sfd[i].defaultvalue).append("):ListData.selectNameTrl(this, vars.getLanguage(), \"").append(sfd[i].type).append("\", ").append(sfd[i].defaultvalue).append("))");
1671      else if (sfd[i].referencevalue.equals("21") && sfd[i].isdisplayed.equals("Y")) strDefaultValues.append(", LocationSearchData.locationAddress(this, " + sfd[i].defaultvalue + ")");
1672      else if (sfd[i].referencevalue.equals("32") && sfd[i].isdisplayed.equals("Y")) strDefaultValues.append(", " + tabName + "Data.selectDef" + sfd[i].reference + "_" + (isSelect++) + "(this, " + sfd[i].defaultvalue + ")");
1673    }
1674
1675    StringBuffer JavaDoc controlsJavaSource = new StringBuffer JavaDoc();
1676    for (int i=0;i<allfields.length;i++) {
1677      WADControl auxControl = null;
1678      try {
1679        auxControl = WadUtility.getControl(pool, allfields[i], strReadOnly, tabName, "", xmlEngine, false, false);
1680      } catch (Exception JavaDoc ex) {
1681        throw new ServletException(ex);
1682      }
1683      controlsJavaSource.append(auxControl.toJava()).append((auxControl.toJava().equals("")?"":"\n"));
1684    }
1685    xmlDocument.setParameter("controlsJavaCode", controlsJavaSource.toString());
1686    xmlDocument.setParameter("defaultValues", strDefaultValues.toString());
1687    WadUtility.writeFile(fileDir, tabName + ".java", xmlDocument.print());
1688  }
1689
1690  private String JavaDoc generateStaticWhere(String JavaDoc strWhere, Vector JavaDoc<Object JavaDoc> vecParameters) {
1691    StringBuffer JavaDoc result = new StringBuffer JavaDoc();
1692    if (strWhere==null || strWhere.equals("")) return strWhere;
1693    int pos = strWhere.indexOf("?");
1694    int questNumber = 0;
1695    while (pos!=-1) {
1696      result.append(strWhere.substring(0, pos));
1697      strWhere = strWhere.substring(pos+1);
1698      String JavaDoc strParam = (String JavaDoc)vecParameters.elementAt(questNumber);
1699      strParam = strParam.substring(17, strParam.lastIndexOf("\""));
1700      questNumber++;
1701      if (strParam.equalsIgnoreCase("paramLanguage")) result.append(" '\" + vars.getLanguage() + \"' ");
1702      else result.append(" '\" + Utility.getContext(this, vars, \"" + strParam + "\", windowId) + \"' ");
1703      pos = strWhere.indexOf("?");
1704    };
1705    result.append(strWhere);
1706    return result.toString();
1707  }
1708
1709
1710  private void processTabXSQLSortTab(FieldsData[] parentsFieldsData, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc tableName, String JavaDoc windowName, String JavaDoc keyColumnName, String JavaDoc strColumnSortOrderId, String JavaDoc strColumnSortYNId, Vector JavaDoc<Object JavaDoc> vecParametersTop, Vector JavaDoc<Object JavaDoc> vecTableParametersTop) throws ServletException, IOException {
1711    log4j.debug("Processing Sort Tab xsql: " + strTab + ", " + tabName);
1712    XmlDocument xmlDocumentXsql;
1713    String JavaDoc[] discard = {"", ""};
1714    if (parentsFieldsData==null || parentsFieldsData.length == 0) discard[0] = "parent"; // remove the parent tags
1715
xmlDocumentXsql = xmlEngine.readXmlTemplate("org/openbravo/wad/datasourceSortTab", discard).createXmlDocument();
1716    
1717    xmlDocumentXsql.setParameter("class", tabName + "Data");
1718    xmlDocumentXsql.setParameter("package", "org.openbravo.erpWindows." + windowName);
1719    xmlDocumentXsql.setParameter("table", tableName);
1720    xmlDocumentXsql.setParameter("key", tableName + "." + keyColumnName);
1721    xmlDocumentXsql.setParameter("SortConditionField", FieldsData.columnName(pool, strColumnSortYNId));
1722    String JavaDoc strSortField = FieldsData.columnName(pool, strColumnSortOrderId);
1723    xmlDocumentXsql.setParameter("SortField", strSortField);
1724    xmlDocumentXsql.setParameter("SortFieldInp", Sqlc.TransformaNombreColumna(strSortField));
1725    if (parentsFieldsData.length > 0) {
1726      xmlDocumentXsql.setParameter("keyParent", tableName + "." + parentsFieldsData[0].name);
1727    }
1728    xmlDocumentXsql.setParameter("paramKey", Sqlc.TransformaNombreColumna(keyColumnName));
1729    if (parentsFieldsData.length > 0) {
1730      xmlDocumentXsql.setParameter("paramKeyParent", Sqlc.TransformaNombreColumna(parentsFieldsData[0].name));
1731    }
1732    String JavaDoc strOrder = " ORDER BY " + tableName + "." + strSortField;
1733
1734    String JavaDoc strFields = "";
1735    String JavaDoc strTables = "";
1736    String JavaDoc strWhere = "";
1737    {
1738      Vector JavaDoc<Object JavaDoc> vecCounters = new Vector JavaDoc<Object JavaDoc>();
1739      Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
1740      Vector JavaDoc<Object JavaDoc> vecTable = new Vector JavaDoc<Object JavaDoc>();
1741      Vector JavaDoc<Object JavaDoc> vecWhere = new Vector JavaDoc<Object JavaDoc>();
1742      FieldsData[] data = FieldsData.identifierColumns(pool, tableName);
1743      log4j.debug("Total Identifiers for " + tableName + ": " + data.length);
1744      if (data==null) strFields = "''";
1745      vecCounters.addElement("0");
1746      vecCounters.addElement("0");
1747      for (int i=0;i<data.length;i++) {
1748        if (i!=0) strFields += " || ' - ' || ";
1749        strFields += WadUtility.columnIdentifier(pool, tableName, true, data[i], vecCounters, false, vecFields, vecTable, vecWhere, vecParametersTop, vecTableParametersTop, sqlDateFormat);
1750      }
1751      for (int i=0;i<vecTable.size();i++) {
1752        String JavaDoc strAux = (String JavaDoc) vecTable.elementAt(i);
1753        strTables += (strAux.trim().toLowerCase().startsWith("left join")?" ":", ") + strAux;
1754      }
1755      for (int i=0;i<vecWhere.size();i++) {
1756        strWhere += "\n AND " + vecWhere.elementAt(i).toString();
1757      }
1758    }
1759
1760    xmlDocumentXsql.setParameter("fields", strFields);
1761
1762    //Relation select
1763
xmlDocumentXsql.setParameter("tables", strTables);
1764    xmlDocumentXsql.setParameter("where", strWhere);
1765    xmlDocumentXsql.setParameter("order", strOrder);
1766    StringBuffer JavaDoc strParameters = new StringBuffer JavaDoc();
1767    for (int i=0;i<vecTableParametersTop.size();i++) {
1768      strParameters.append(vecTableParametersTop.elementAt(i).toString()).append("\n");
1769    }
1770    for (int i=0;i<vecParametersTop.size();i++) {
1771      strParameters.append(vecParametersTop.elementAt(i).toString()).append("\n");
1772    }
1773    xmlDocumentXsql.setParameter("parameters", strParameters.toString());
1774    //Parent field
1775
if (parentsFieldsData!=null && parentsFieldsData.length>0) {
1776      Vector JavaDoc<Object JavaDoc> vecCounters = new Vector JavaDoc<Object JavaDoc>();
1777      Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
1778      Vector JavaDoc<Object JavaDoc> vecTable = new Vector JavaDoc<Object JavaDoc>();
1779      Vector JavaDoc<Object JavaDoc> vecWhere = new Vector JavaDoc<Object JavaDoc>();
1780      Vector JavaDoc<Object JavaDoc> vecParameters = new Vector JavaDoc<Object JavaDoc>();
1781      Vector JavaDoc<Object JavaDoc> vecTableParameters = new Vector JavaDoc<Object JavaDoc>();
1782      vecCounters.addElement("0");
1783      vecCounters.addElement("0");
1784      String JavaDoc strText = WadUtility.columnIdentifier(pool, parentsFieldsData[0].tablename, true, parentsFieldsData[0], vecCounters, false, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
1785      FieldsData[] fieldsParent = new FieldsData[1];
1786      fieldsParent[0] = new FieldsData();
1787      fieldsParent[0].defaultvalue = "SELECT (" + strText + ") AS NAME FROM ";
1788      fieldsParent[0].defaultvalue += parentsFieldsData[0].tablename;
1789      for (int s=0;s<vecTable.size();s++) {
1790        String JavaDoc strAux = (String JavaDoc) vecTable.elementAt(s);
1791        fieldsParent[0].defaultvalue += (strAux.trim().toLowerCase().startsWith("left join")?" ":", ") + strAux;
1792      }
1793      fieldsParent[0].defaultvalue += " WHERE " + parentsFieldsData[0].tablename + "." + parentsFieldsData[0].name + " = ? ";
1794      for (int s=0;s<vecWhere.size();s++) {
1795        fieldsParent[0].defaultvalue += " AND " + vecWhere.elementAt(s).toString();
1796      }
1797      fieldsParent[0].whereclause = "";
1798      for (int s=0;s<vecTableParameters.size();s++) {
1799        fieldsParent[0].whereclause += vecTableParameters.elementAt(s).toString() + "\n";
1800      }
1801      fieldsParent[0].whereclause += "<Parameter name=\"" + Sqlc.TransformaNombreColumna(parentsFieldsData[0].name) + "\"/>\n";
1802      for (int s=0;s<vecParameters.size();s++) {
1803        fieldsParent[0].whereclause += vecParameters.elementAt(s).toString() + "\n";
1804      }
1805      xmlDocumentXsql.setData("structure14", fieldsParent);
1806    } else {
1807      xmlDocumentXsql.setData("structure14", null);
1808    }
1809    //Parent field translated
1810
if (parentsFieldsData!=null && parentsFieldsData.length>0) {
1811      Vector JavaDoc<Object JavaDoc> vecCounters = new Vector JavaDoc<Object JavaDoc>();
1812      Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
1813      Vector JavaDoc<Object JavaDoc> vecTable = new Vector JavaDoc<Object JavaDoc>();
1814      Vector JavaDoc<Object JavaDoc> vecWhere = new Vector JavaDoc<Object JavaDoc>();
1815      Vector JavaDoc<Object JavaDoc> vecParameters = new Vector JavaDoc<Object JavaDoc>();
1816      Vector JavaDoc<Object JavaDoc> vecTableParameters = new Vector JavaDoc<Object JavaDoc>();
1817      vecCounters.addElement("0");
1818      vecCounters.addElement("0");
1819      String JavaDoc strText = WadUtility.columnIdentifier (pool, parentsFieldsData[0].tablename, true, parentsFieldsData[0], vecCounters, true, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
1820      FieldsData[] fieldsParent = new FieldsData[1];
1821      fieldsParent[0] = new FieldsData();
1822      fieldsParent[0].defaultvalue = "SELECT (" + strText + ") AS NAME FROM " + parentsFieldsData[0].tablename;
1823      for (int s=0;s<vecTable.size();s++) {
1824        String JavaDoc strAux = (String JavaDoc) vecTable.elementAt(s);
1825        fieldsParent[0].defaultvalue += (strAux.trim().toLowerCase().startsWith("left join")?" ":", ") + strAux;
1826      }
1827      fieldsParent[0].defaultvalue += " WHERE " + parentsFieldsData[0].tablename + "." + parentsFieldsData[0].name + " = ? ";
1828      for (int s=0;s<vecWhere.size();s++) {
1829        fieldsParent[0].defaultvalue += " AND " + vecWhere.elementAt(s).toString();
1830      }
1831      fieldsParent[0].whereclause = "";
1832      for (int s=0;s<vecTableParameters.size();s++) {
1833        fieldsParent[0].whereclause += vecTableParameters.elementAt(s).toString() + "\n";
1834      }
1835      fieldsParent[0].whereclause += "<Parameter name=\"" + Sqlc.TransformaNombreColumna(parentsFieldsData[0].name) + "\"/>\n";
1836      for (int s=0;s<vecParameters.size();s++) {
1837        fieldsParent[0].whereclause += vecParameters.elementAt(s).toString() + "\n";
1838      }
1839      xmlDocumentXsql.setData("structure15", fieldsParent);
1840    } else {
1841      xmlDocumentXsql.setData("structure15", null);
1842    }
1843    WadUtility.writeFile(fileDir, tabName + "_data.xsql", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlDocumentXsql.print());
1844  }
1845
1846
1847  private void processTabXSQL(FieldsData[] parentsFieldsData, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc tableName, String JavaDoc windowName, String JavaDoc keyColumnName, String JavaDoc strFields, String JavaDoc strTables, String JavaDoc strOrder, String JavaDoc strWhere, Vector JavaDoc<Object JavaDoc> vecParametersTop, String JavaDoc strFilter, EditionFieldsData[] selCol, String JavaDoc tablevel, String JavaDoc windowType, Vector JavaDoc<Object JavaDoc> vecTableParametersTop, FieldsData[] fieldsDataSelectAux) throws ServletException, IOException {
1848    log4j.debug("Procesig xsql: " + strTab + ", " + tabName);
1849    XmlDocument xmlDocumentXsql;
1850    String JavaDoc[] discard = {"", "", "", "", "", "", ""};
1851    if (parentsFieldsData==null || parentsFieldsData.length == 0) discard[0] = "parent"; // remove the parent tags
1852
if (tableName.toUpperCase().endsWith("_ACCESS")) {
1853      discard[6] = "client";
1854      discard[1] = "org";
1855    } //else if (tableName.toUpperCase().startsWith("M_PRODUCT") || tableName.toUpperCase().startsWith("C_BP") || tableName.toUpperCase().startsWith("AD_ORG")) discard[1] = "org";
1856
if (selCol==null || selCol.length==0) {
1857      discard[2] = "sectionHighVolume";
1858      discard[3] = "sectionHighVolume1";
1859    }
1860    if (!(windowType.equalsIgnoreCase("T") && tablevel.equals("0"))) discard[4] = "sectionTransactional";
1861    if (strFilter.trim().equals("")) discard[5] = "sectionFilter";
1862    xmlDocumentXsql = xmlEngine.readXmlTemplate("org/openbravo/wad/datasource", discard).createXmlDocument();
1863    
1864    xmlDocumentXsql.setParameter("class", tabName + "Data");
1865    xmlDocumentXsql.setParameter("package", "org.openbravo.erpWindows." + windowName);
1866    xmlDocumentXsql.setParameter("table", tableName);
1867    xmlDocumentXsql.setParameter("key", tableName + "." + keyColumnName);
1868    if (parentsFieldsData.length > 0) {
1869      xmlDocumentXsql.setParameter("keyParent", tableName + "." + parentsFieldsData[0].name);
1870    }
1871    xmlDocumentXsql.setParameter("paramKey", Sqlc.TransformaNombreColumna(keyColumnName));
1872    if (parentsFieldsData.length > 0) {
1873      xmlDocumentXsql.setParameter("paramKeyParent", Sqlc.TransformaNombreColumna(parentsFieldsData[0].name));
1874    }
1875
1876    xmlDocumentXsql.setParameter("fields", strFields);
1877    
1878    //Relation select
1879
xmlDocumentXsql.setParameter("tables", strTables);
1880    xmlDocumentXsql.setParameter("where", strWhere);
1881    xmlDocumentXsql.setParameter("filter", strFilter);
1882    xmlDocumentXsql.setParameter("order", strOrder);
1883    StringBuffer JavaDoc strParameters = new StringBuffer JavaDoc();
1884    for (int i=0;i<vecTableParametersTop.size();i++) {
1885      strParameters.append(vecTableParametersTop.elementAt(i).toString()).append("\n");
1886    }
1887    for (int i=0;i<vecParametersTop.size();i++) {
1888      strParameters.append(vecParametersTop.elementAt(i).toString()).append("\n");
1889    }
1890    xmlDocumentXsql.setParameter("parameters", strParameters.toString());
1891    //Parent field
1892
if (parentsFieldsData!=null && parentsFieldsData.length>0) {
1893      Vector JavaDoc<Object JavaDoc> vecCounters = new Vector JavaDoc<Object JavaDoc>();
1894      Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
1895      Vector JavaDoc<Object JavaDoc> vecTable = new Vector JavaDoc<Object JavaDoc>();
1896      Vector JavaDoc<Object JavaDoc> vecWhere = new Vector JavaDoc<Object JavaDoc>();
1897      Vector JavaDoc<Object JavaDoc> vecParameters = new Vector JavaDoc<Object JavaDoc>();
1898      Vector JavaDoc<Object JavaDoc> vecTableParameters = new Vector JavaDoc<Object JavaDoc>();
1899      vecCounters.addElement("0");
1900      vecCounters.addElement("0");
1901      String JavaDoc strText = WadUtility.columnIdentifier(pool, parentsFieldsData[0].tablename, true, parentsFieldsData[0], vecCounters, false, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
1902      FieldsData[] fieldsParent = new FieldsData[1];
1903      fieldsParent[0] = new FieldsData();
1904      fieldsParent[0].defaultvalue = "SELECT (" + strText + ") AS NAME FROM ";
1905      fieldsParent[0].defaultvalue += parentsFieldsData[0].tablename;
1906      for (int s=0;s<vecTable.size();s++) {
1907        String JavaDoc strAux = (String JavaDoc) vecTable.elementAt(s);
1908        fieldsParent[0].defaultvalue += (strAux.trim().toLowerCase().startsWith("left join")?" ":", ") + strAux;
1909      }
1910      fieldsParent[0].defaultvalue += " WHERE " + parentsFieldsData[0].tablename + "." + parentsFieldsData[0].name + " = ? ";
1911      for (int s=0;s<vecWhere.size();s++) {
1912        fieldsParent[0].defaultvalue += " AND " + vecWhere.elementAt(s).toString();
1913      }
1914      fieldsParent[0].whereclause = "";
1915      for (int s=0;s<vecTableParameters.size();s++) {
1916        fieldsParent[0].whereclause += vecTableParameters.elementAt(s).toString() + "\n";
1917      }
1918      fieldsParent[0].whereclause += "<Parameter name=\"" + Sqlc.TransformaNombreColumna(parentsFieldsData[0].name) + "\"/>\n";
1919      for (int s=0;s<vecParameters.size();s++) {
1920        fieldsParent[0].whereclause += vecParameters.elementAt(s).toString() + "\n";
1921      }
1922      xmlDocumentXsql.setData("structure14", fieldsParent);
1923    } else {
1924      xmlDocumentXsql.setData("structure14", null);
1925    }
1926    //Parent field translated
1927
if (parentsFieldsData!=null && parentsFieldsData.length>0) {
1928      Vector JavaDoc<Object JavaDoc> vecCounters = new Vector JavaDoc<Object JavaDoc>();
1929      Vector JavaDoc<Object JavaDoc> vecFields = new Vector JavaDoc<Object JavaDoc>();
1930      Vector JavaDoc<Object JavaDoc> vecTable = new Vector JavaDoc<Object JavaDoc>();
1931      Vector JavaDoc<Object JavaDoc> vecWhere = new Vector JavaDoc<Object JavaDoc>();
1932      Vector JavaDoc<Object JavaDoc> vecParameters = new Vector JavaDoc<Object JavaDoc>();
1933      Vector JavaDoc<Object JavaDoc> vecTableParameters = new Vector JavaDoc<Object JavaDoc>();
1934      vecCounters.addElement("0");
1935      vecCounters.addElement("0");
1936      String JavaDoc strText = WadUtility.columnIdentifier (pool, parentsFieldsData[0].tablename, true, parentsFieldsData[0], vecCounters, true, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
1937      FieldsData[] fieldsParent = new FieldsData[1];
1938      fieldsParent[0] = new FieldsData();
1939      fieldsParent[0].defaultvalue = "SELECT (" + strText + ") AS NAME FROM " + parentsFieldsData[0].tablename;
1940      for (int s=0;s<vecTable.size();s++) {
1941        String JavaDoc strAux = (String JavaDoc) vecTable.elementAt(s);
1942        fieldsParent[0].defaultvalue += (strAux.trim().toLowerCase().startsWith("left join")?" ":", ") + strAux;
1943      }
1944      fieldsParent[0].defaultvalue += " WHERE " + parentsFieldsData[0].tablename + "." + parentsFieldsData[0].name + " = ? ";
1945      for (int s=0;s<vecWhere.size();s++) {
1946        fieldsParent[0].defaultvalue += " AND " + vecWhere.elementAt(s).toString();
1947      }
1948      fieldsParent[0].whereclause = "";
1949      for (int s=0;s<vecTableParameters.size();s++) {
1950        fieldsParent[0].whereclause += vecTableParameters.elementAt(s).toString() + "\n";
1951      }
1952      fieldsParent[0].whereclause += "<Parameter name=\"" + Sqlc.TransformaNombreColumna(parentsFieldsData[0].name) + "\"/>\n";
1953      for (int s=0;s<vecParameters.size();s++) {
1954        fieldsParent[0].whereclause += vecParameters.elementAt(s).toString() + "\n";
1955      }
1956      xmlDocumentXsql.setData("structure15", fieldsParent);
1957    } else {
1958      xmlDocumentXsql.setData("structure15", null);
1959    }
1960    
1961    //Auxiliar Fields
1962
{
1963      FieldsData fieldsAux[] = FieldsData.selectAuxiliar(pool, "@SQL=", strTab);
1964      for (int i=0;i< fieldsAux.length; i++) {
1965        Vector JavaDoc<Object JavaDoc> vecParametros = new Vector JavaDoc<Object JavaDoc>();
1966        fieldsAux[i].defaultvalue = WadUtility.getSQLWadContext(fieldsAux[i].defaultvalue, vecParametros);
1967        StringBuffer JavaDoc parametros = new StringBuffer JavaDoc();
1968        for (Enumeration JavaDoc e = vecParametros.elements() ; e.hasMoreElements() ;) {
1969          String JavaDoc paramsElement = (String JavaDoc)e.nextElement();
1970          parametros.append("\n" + paramsElement);
1971        }
1972        fieldsAux[i].whereclause = parametros.toString();
1973      }
1974      xmlDocumentXsql.setData("structure9", fieldsAux);
1975    }
1976    //Default Fields
1977
{
1978      FieldsData fieldsDef[] = FieldsData.selectDefaultValue(pool, "", strTab);
1979      Vector JavaDoc<Object JavaDoc> v = new Vector JavaDoc<Object JavaDoc>();
1980      int itable=0;
1981      for (int i=0;i< fieldsDef.length; i++) {
1982        Vector JavaDoc<Object JavaDoc> vecParametros = new Vector JavaDoc<Object JavaDoc>();
1983        if (fieldsDef[i].defaultvalue.startsWith("@SQL=")) {
1984          fieldsDef[i].defaultvalue = WadUtility.getSQLWadContext(fieldsDef[i].defaultvalue, vecParametros);
1985          StringBuffer JavaDoc parametros = new StringBuffer JavaDoc();
1986          for (Enumeration JavaDoc e = vecParametros.elements() ; e.hasMoreElements() ;) {
1987            String JavaDoc paramsElement = (String JavaDoc)e.nextElement();
1988            parametros.append("\n" + paramsElement);
1989          }
1990          fieldsDef[i].whereclause = parametros.toString();
1991          v.addElement(fieldsDef[i]);
1992        }
1993        if ((fieldsDef[i].referencevalue.equals("30") || fieldsDef[i].referencevalue.equals("31") || fieldsDef[i].referencevalue.equals("35") || fieldsDef[i].reference.equals("800011") || fieldsDef[i].referencevalue.equals("25")) && fieldsDef[i].isdisplayed.equals("Y")) {
1994          FieldsData fd = new FieldsData();
1995          fd.reference = fieldsDef[i].reference + "_" + (itable++);
1996          fd.name = fieldsDef[i].columnname + "R";
1997          String JavaDoc tableN = "";
1998          EditionFieldsData[] dataSearchs = null;
1999          if (fieldsDef[i].referencevalue.equals("30")) dataSearchs = EditionFieldsData.selectSearchs(pool, "", fieldsDef[i].type);
2000          if (dataSearchs==null || dataSearchs.length==0) {
2001            if (fieldsDef[i].referencevalue.equals("25")) tableN = "C_ValidCombination";
2002            else if (fieldsDef[i].referencevalue.equals("31")) tableN = "M_Locator";
2003            else if (fieldsDef[i].referencevalue.equals("800011")) tableN = "M_Product";
2004            else tableN = fieldsDef[i].name.substring(0, fieldsDef[i].name.length()-3);
2005            if (fieldsDef[i].referencevalue.equals("25")) fieldsDef[i].name = "C_ValidCombination_ID";
2006            else if (fieldsDef[i].referencevalue.equals("31")) fieldsDef[i].name = "M_Locator_ID";
2007            else if (fieldsDef[i].referencevalue.equals("800011")) fieldsDef[i].name = "M_Product_ID";
2008          } else {
2009            tableN = dataSearchs[0].reference;
2010            fieldsDef[i].name = dataSearchs[0].columnname;
2011          }
2012          Vector JavaDoc<Object JavaDoc> vecFields2 = new Vector JavaDoc<Object JavaDoc>();
2013          Vector JavaDoc<Object JavaDoc> vecTables2 = new Vector JavaDoc<Object JavaDoc>();
2014          Vector JavaDoc<Object JavaDoc> vecWhere2 = new Vector JavaDoc<Object JavaDoc>();
2015          int itable2=0;
2016          vecTables2.addElement(tableN + " table1");
2017          itable2 = fieldsOfSearch2(tableN, fieldsDef[i].name, fieldsDef[i].required, vecFields2, vecTables2, vecWhere2, itable2, fieldsDef[i].referencevalue, fieldsDef[i].type);
2018          StringBuffer JavaDoc strFields2 = new StringBuffer JavaDoc();
2019          strFields2.append(" ( ");
2020          boolean boolFirst = true;
2021          for (Enumeration JavaDoc e = vecFields2.elements() ; e.hasMoreElements() ;) {
2022            String JavaDoc tableField = (String JavaDoc)e.nextElement();
2023            log4j.debug(" field: " + tableField);
2024            if (boolFirst) {
2025              boolFirst = false;
2026            } else {
2027              strFields2.append(" || ' - ' || ");
2028            }
2029            strFields2.append(tableField).append(" ");
2030          }
2031          strFields2.append(") as ").append(fieldsDef[i].columnname);
2032          StringBuffer JavaDoc fields = new StringBuffer JavaDoc();
2033          fields.append("SELECT ").append(strFields2);
2034          fields.append(" FROM ");
2035          for (int j=0;j<vecTables2.size();j++) {
2036            fields.append(vecTables2.elementAt(j));
2037          }
2038          fields.append(" WHERE table1.isActive='Y'");
2039          for (int j=0;j<vecWhere2.size();j++) {
2040            fields.append(vecWhere2.elementAt(j));
2041          }
2042          fields.append(" AND table1." + fieldsDef[i].name + " = ? ");
2043          fd.defaultvalue=fields.toString();
2044          fd.whereclause = "<Parameter name=\"" + fd.name + "\"/>";
2045          v.addElement(fd);
2046        } else if (fieldsDef[i].referencevalue.equals("32") && fieldsDef[i].isdisplayed.equals("Y")) {
2047          FieldsData fd = new FieldsData();
2048          fd.reference = fieldsDef[i].reference + "_" + (itable++);
2049          fd.name = fieldsDef[i].columnname + "R";
2050          String JavaDoc tableN = "AD_Image";
2051          fieldsDef[i].name = fieldsDef[i].name;
2052          Vector JavaDoc<Object JavaDoc> vecTables2 = new Vector JavaDoc<Object JavaDoc>();
2053          Vector JavaDoc<Object JavaDoc> vecWhere2 = new Vector JavaDoc<Object JavaDoc>();
2054          vecTables2.addElement(tableN + " table1");
2055          StringBuffer JavaDoc strFields2 = new StringBuffer JavaDoc();
2056          strFields2.append(" ( table1.ImageURL ) AS ").append(fieldsDef[i].columnname);
2057          StringBuffer JavaDoc fields = new StringBuffer JavaDoc();
2058          fields.append("SELECT ").append(strFields2);
2059          fields.append(" FROM ");
2060          for (int j=0;j<vecTables2.size();j++) {
2061            fields.append(vecTables2.elementAt(j));
2062          }
2063          fields.append(" WHERE table1.isActive='Y'");
2064          for (int j=0;j<vecWhere2.size();j++) {
2065            fields.append(vecWhere2.elementAt(j));
2066          }
2067          fields.append(" AND table1." + fieldsDef[i].name + " = ? ");
2068          fd.defaultvalue=fields.toString();
2069          fd.whereclause = "<Parameter name=\"" + fd.name + "\"/>";
2070          v.addElement(fd);
2071        }
2072      }
2073      FieldsData[] fd = new FieldsData[v.size()];
2074      v.copyInto(fd);
2075      xmlDocumentXsql.setData("structure10", fd);
2076    }
2077    {
2078      ProcessRelationData[] data = ProcessRelationData.selectXSQL(pool, strTab);
2079      if (data!=null) {
2080        for (int i=0;i<data.length;i++) {
2081          String JavaDoc tableN = "";
2082          if (data[i].adReferenceId.equals("28")) tableN = "C_ValidCombination";
2083          else if (data[i].adReferenceId.equals("31")) tableN = "M_Locator";
2084          else tableN = data[i].name.substring(0, data[i].searchname.length()-3);
2085          String JavaDoc strName = "";
2086          if (data[i].adReferenceId.equals("28")) strName = "C_ValidCombination_ID";
2087          else if (data[i].adReferenceId.equals("31")) strName = "M_Locator_ID";
2088          else strName = data[i].searchname;
2089          String JavaDoc strColumnName = FieldsData.columnIdentifier(pool, tableN);
2090          StringBuffer JavaDoc fields = new StringBuffer JavaDoc();
2091          fields.append("SELECT " + strColumnName);
2092          fields.append(" FROM " + tableN);
2093          fields.append(" WHERE isActive='Y'");
2094          fields.append(" AND " + strName + " = ? ");
2095          data[i].whereclause=fields.toString();
2096          data[i].name = FormatUtilities.replace(data[i].name);
2097        }
2098      }
2099      xmlDocumentXsql.setData("structure12", data);
2100    }
2101    //SQLs of the defaultvalue of the parameter of the tab-associated processes
2102
{
2103      ProcessRelationData fieldsAux[] = ProcessRelationData.selectXSQLParams(pool, strTab);
2104      if (fieldsAux!=null && fieldsAux.length>0) {
2105        for (int i=0;i< fieldsAux.length; i++) {
2106          Vector JavaDoc<Object JavaDoc> vecParametros = new Vector JavaDoc<Object JavaDoc>();
2107          fieldsAux[i].reference = fieldsAux[i].adProcessId + "_" + FormatUtilities.replace(fieldsAux[i].columnname);
2108          fieldsAux[i].defaultvalue = WadUtility.getSQLWadContext(fieldsAux[i].defaultvalue, vecParametros);
2109          StringBuffer JavaDoc parametros = new StringBuffer JavaDoc();
2110          for (Enumeration JavaDoc e = vecParametros.elements() ; e.hasMoreElements() ;) {
2111            String JavaDoc paramsElement = (String JavaDoc)e.nextElement();
2112            parametros.append("\n" + paramsElement);
2113          }
2114          fieldsAux[i].whereclause = parametros.toString();
2115        }
2116      }
2117      xmlDocumentXsql.setData("structure16", fieldsAux);
2118    }
2119    //Update
2120
{
2121      FieldsData fieldsDataUpdate[] = FieldsData.selectUpdatables(pool, strTab);
2122      for (int i=0;i< fieldsDataUpdate.length; i++) { // *** i=1?
2123
fieldsDataUpdate[i].name = ((i>0)?", ":"") + fieldsDataUpdate[i].name;
2124        if (WadUtility.isTimeField(fieldsDataUpdate[i].reference)) fieldsDataUpdate[i].xmlFormat = "TO_DATE(?,'HH24:MI:SS')";
2125        else fieldsDataUpdate[i].xmlFormat = WadUtility.sqlCasting(pool, fieldsDataUpdate[i].reference, fieldsDataUpdate[i].referencevalue) + "(?)";
2126      }
2127      xmlDocumentXsql.setData("structure3", fieldsDataUpdate);
2128    }
2129    {
2130      FieldsData fieldsDataParameter[] = FieldsData.selectUpdatables(pool, strTab);
2131      for (int i=0;i< fieldsDataParameter.length; i++) {
2132        fieldsDataParameter[i].name = Sqlc.TransformaNombreColumna(fieldsDataParameter[i].name);
2133      }
2134      xmlDocumentXsql.setData("structure4", fieldsDataParameter);
2135    }
2136    {
2137      //Insert
2138
FieldsData[] fieldsDataInsert = null;
2139      fieldsDataInsert=copyarray(fieldsDataSelectAux);
2140      for (int i=1;i< fieldsDataInsert.length; i++) {
2141        if (!fieldsDataInsert[i].name.equalsIgnoreCase("Created") && !fieldsDataInsert[i].name.equalsIgnoreCase("CreatedBy") && !fieldsDataInsert[i].name.equalsIgnoreCase("Updated") && !fieldsDataInsert[i].name.equalsIgnoreCase("UpdatedBy")) fieldsDataInsert[i].name = ", " + fieldsDataInsert[i].name;
2142        else fieldsDataInsert[i].name = "";
2143      }
2144      xmlDocumentXsql.setData("structure5", fieldsDataInsert);
2145    }
2146    {
2147      FieldsData[] fieldsDataValue = null;
2148      fieldsDataValue=copyarray(fieldsDataSelectAux);
2149      for (int i=0;i<fieldsDataValue.length; i++) {
2150        if (!fieldsDataValue[i].name.equalsIgnoreCase("Created") && !fieldsDataValue[i].name.equalsIgnoreCase("CreatedBy") && !fieldsDataValue[i].name.equalsIgnoreCase("Updated") && !fieldsDataValue[i].name.equalsIgnoreCase("UpdatedBy")) {
2151          if (WadUtility.isTimeField(fieldsDataValue[i].reference)) fieldsDataValue[i].name = ((i>0)?", ":"") + "TO_DATE(?, 'HH24:MI:SS')";
2152          else fieldsDataValue[i].name = ((i>0)?", ":"") + WadUtility.sqlCasting(pool, fieldsDataValue[i].reference, fieldsDataValue[i].referencevalue) + "(?)";
2153        } else fieldsDataValue[i].name = "";
2154      }
2155      xmlDocumentXsql.setData("structure6", fieldsDataValue);
2156    }
2157    {
2158      Vector JavaDoc<Object JavaDoc> vecAux = new Vector JavaDoc<Object JavaDoc>();
2159      FieldsData[] fieldsDataParameterInsert = null;
2160      fieldsDataParameterInsert=copyarray(fieldsDataSelectAux);
2161      for (int i=0;i< fieldsDataParameterInsert.length; i++) {
2162        if (!fieldsDataParameterInsert[i].name.equalsIgnoreCase("Created") && !fieldsDataParameterInsert[i].name.equalsIgnoreCase("CreatedBy") && !fieldsDataParameterInsert[i].name.equalsIgnoreCase("Updated") && !fieldsDataParameterInsert[i].name.equalsIgnoreCase("UpdatedBy")) {
2163          fieldsDataParameterInsert[i].name = Sqlc.TransformaNombreColumna(fieldsDataParameterInsert[i].name);
2164          vecAux.addElement(fieldsDataParameterInsert[i]);
2165        }
2166      }
2167      FieldsData[] fieldsDataParameterInsert1 = null;
2168      if (vecAux.size()>0) {
2169        fieldsDataParameterInsert1 = new FieldsData[vecAux.size()];
2170        vecAux.copyInto(fieldsDataParameterInsert1);
2171      }
2172      xmlDocumentXsql.setData("structure7", fieldsDataParameterInsert1);
2173    }
2174    {
2175      FieldsData fieldsDataDefaults[] = FieldsData.selectDefaultValue(pool, "", strTab);
2176      Vector JavaDoc<Object JavaDoc> vecDDef = new Vector JavaDoc<Object JavaDoc>();
2177      for (int i=0;i< fieldsDataDefaults.length; i++) {
2178        boolean modified = false;
2179        if (parentsFieldsData==null || parentsFieldsData.length==0 || !parentsFieldsData[0].name.equalsIgnoreCase(fieldsDataDefaults[i].columnname)) {
2180          fieldsDataDefaults[i].name = Sqlc.TransformaNombreColumna(fieldsDataDefaults[i].name);
2181          fieldsDataDefaults[i].columnname = Sqlc.TransformaNombreColumna(fieldsDataDefaults[i].columnname);
2182          vecDDef.addElement(fieldsDataDefaults[i]);
2183          modified=true;
2184        }
2185        if ((fieldsDataDefaults[i].referencevalue.equals("30") || fieldsDataDefaults[i].reference.equals("800011") || fieldsDataDefaults[i].referencevalue.equals("31") || fieldsDataDefaults[i].referencevalue.equals("32") || fieldsDataDefaults[i].referencevalue.equals("35") || fieldsDataDefaults[i].referencevalue.equals("21") || fieldsDataDefaults[i].referencevalue.equals("25")) && fieldsDataDefaults[i].isdisplayed.equals("Y")) {
2186          FieldsData f = new FieldsData();
2187          f.name = (modified?fieldsDataDefaults[i].name:Sqlc.TransformaNombreColumna(fieldsDataDefaults[i].name)) + "r";
2188          f.columnname = (modified?fieldsDataDefaults[i].columnname:Sqlc.TransformaNombreColumna(fieldsDataDefaults[i].columnname)) + "r";
2189          vecDDef.addElement(f);
2190        } else if (fieldsDataDefaults[i].referencevalue.equals("28") && fieldsDataDefaults[i].isdisplayed.equals("Y") && !fieldsDataDefaults[i].type.equals("")) {
2191          FieldsData f = new FieldsData();
2192          f.name = (modified?fieldsDataDefaults[i].name:Sqlc.TransformaNombreColumna(fieldsDataDefaults[i].name)) + "Btn";
2193          f.columnname = (modified?fieldsDataDefaults[i].columnname:Sqlc.TransformaNombreColumna(fieldsDataDefaults[i].columnname)) + "Btn";
2194          vecDDef.addElement(f);
2195        }
2196      }
2197      FieldsData[] f1 = new FieldsData[vecDDef.size()];
2198      vecDDef.copyInto(f1);
2199      xmlDocumentXsql.setData("structure8", f1);
2200    }
2201
2202    {
2203      ActionButtonRelationData[] abrd = WadActionButton.buildActionButtonSQL(pool, strTab);
2204      xmlDocumentXsql.setData("structure11", abrd);
2205    }
2206
2207    {
2208      FieldsData[] encryptedData = FieldsData.selectEncrypted(pool, strTab);
2209      if (encryptedData!=null && encryptedData.length>0) {
2210        for (int g=0;g<encryptedData.length;g++) {
2211          encryptedData[g].realname = Sqlc.TransformaNombreColumna(encryptedData[g].realname);
2212          encryptedData[g].name = FormatUtilities.replace(encryptedData[g].name);
2213        }
2214      }
2215      xmlDocumentXsql.setData("structure17", encryptedData);
2216    }
2217
2218    xmlDocumentXsql.setData("structure13", selCol);
2219
2220    WadUtility.writeFile(fileDir, tabName + "_data.xsql", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlDocumentXsql.print());
2221  }
2222
2223
2224  private void processTabComboReloads(File fileDir, String JavaDoc strTab, FieldsData[] parentsFieldsData, Vector JavaDoc<Object JavaDoc> vecFields, String JavaDoc isSOTrx) throws ServletException, IOException {
2225    log4j.debug("Procesig combo reloads java for tab: " + strTab);
2226    FieldsData[] data = FieldsData.selectValidationTab(pool, strTab);
2227    if (data==null || data.length==0) return;
2228    XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/ComboReloads").createXmlDocument();
2229    xmlDocument.setParameter("tabId", strTab);
2230    Vector JavaDoc<Object JavaDoc> vecReloads = new Vector JavaDoc<Object JavaDoc>();
2231    Vector JavaDoc<Object JavaDoc> vecTotal = new Vector JavaDoc<Object JavaDoc>();
2232    FieldsData[] result = null;
2233    for (int i=0;i<data.length;i++) {
2234      String JavaDoc code = data[i].whereclause + ((!data[i].whereclause.equals("") && !data[i].referencevalue.equals(""))?" AND ":"") + data[i].referencevalue;
2235      data[i].columnname = "inp" + Sqlc.TransformaNombreColumna(data[i].columnname);
2236      data[i].whereclause=WadUtility.getComboReloadText(code, vecFields, parentsFieldsData, vecReloads, "inp");
2237      if (!data[i].whereclause.equals("") && data[i].isdisplayed.equals("Y") && (data[i].reference.equals("17") || data[i].reference.equals("18") || data[i].reference.equals("19"))) {
2238        if (data[i].reference.equals("17")) { //List
2239
data[i].tablename = "List";
2240          data[i].tablenametrl = "List";
2241          data[i].htmltext = "select";
2242          data[i].htmltexttrl = "selectLanguage";
2243          data[i].xmltext = ", \"" + data[i].nameref + "\"";
2244          data[i].xmltexttrl = data[i].xmltext + ", vars.getLanguage()";
2245          data[i].xmltext += ", \"\"";
2246          data[i].xmltexttrl += ", \"\"";
2247        } else if (data[i].reference.equals("18")) { //Table
2248
FieldsData[] tables = FieldsData.selectColumnTable(pool, strTab, data[i].id);
2249          if (tables==null || tables.length==0) throw new ServletException("No se ha encontrado la Table para la columnId: " + data[i].id);
2250          StringBuffer JavaDoc where = new StringBuffer JavaDoc();
2251          Vector JavaDoc<Object JavaDoc> vecFields1 = new Vector JavaDoc<Object JavaDoc>();
2252          Vector JavaDoc<Object JavaDoc> vecTables = new Vector JavaDoc<Object JavaDoc>();
2253          Vector JavaDoc<Object JavaDoc> vecWhere = new Vector JavaDoc<Object JavaDoc>();
2254          Vector JavaDoc<Object JavaDoc> vecParameters = new Vector JavaDoc<Object JavaDoc>();
2255          Vector JavaDoc<Object JavaDoc> vecTableParameters = new Vector JavaDoc<Object JavaDoc>();
2256          String JavaDoc translated = WadUtility.columnIdentifier(pool, tables[0].tablename, true, tables[0], 0, 0, true, vecFields1, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
2257          where.append(tables[0].whereclause);
2258          data[i].tablename = "TableList";
2259          data[i].htmltext = "select" + tables[0].referencevalue;
2260          if (!tables[0].columnname.equals("")) {
2261            data[i].htmltext += "_" + tables[0].columnname;
2262            data[i].tablename = "TableListVal";
2263            if (!where.toString().equals("")) where.append(" AND ");
2264            where.append(tables[0].defaultvalue);
2265          }
2266          data[i].tablenametrl = data[i].tablename + "Trl";
2267          data[i].htmltexttrl = data[i].htmltext;
2268          data[i].xmltext = "";
2269          if (vecTableParameters.size()>0) {
2270            data[i].xmltext = ", vars.getLanguage()";
2271          }
2272          data[i].xmltext+=", Utility.getContext(this, vars, \"#User_Org\", windowId), Utility.getContext(this, vars, \"#User_Client\", windowId)";
2273          data[i].xmltext += WadUtility.getWadComboReloadContext(where.toString(), isSOTrx);
2274          data[i].xmltexttrl = data[i].xmltext;
2275          if (vecParameters.size()>0 && vecTableParameters.size()==0) {
2276            data[i].xmltext += ", vars.getLanguage()";
2277            data[i].xmltexttrl += ", vars.getLanguage()";
2278          }
2279          data[i].xmltext += ", \"\"";
2280          data[i].xmltexttrl += ", \"\"";
2281        } else if (data[i].reference.equals("19")) { //TableDir
2282
FieldsData[] tableDir = FieldsData.selectColumnTableDir(pool, strTab, data[i].id);
2283          if (tableDir==null || tableDir.length==0) throw new ServletException("No se ha encontrado la TableDir para la columnId: " + data[i].id);
2284          data[i].tablename = "TableDir";
2285          data[i].htmltext = "select" + tableDir[0].referencevalue;
2286          String JavaDoc table_Name = tableDir[0].name.substring(0,tableDir[0].name.length()-3);
2287          Vector JavaDoc<Object JavaDoc> vecFields1 = new Vector JavaDoc<Object JavaDoc>();
2288          Vector JavaDoc<Object JavaDoc> vecTables = new Vector JavaDoc<Object JavaDoc>();
2289          Vector JavaDoc<Object JavaDoc> vecWhere = new Vector JavaDoc<Object JavaDoc>();
2290          Vector JavaDoc<Object JavaDoc> vecParameters = new Vector JavaDoc<Object JavaDoc>();
2291          Vector JavaDoc<Object JavaDoc> vecTableParameters = new Vector JavaDoc<Object JavaDoc>();
2292          String JavaDoc translated = WadUtility.columnIdentifier(pool, table_Name, true, tableDir[0], 0, 0, true, vecFields1, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat);
2293          data[i].xmltext = "";
2294          if (vecTableParameters.size()>0) {
2295            data[i].xmltext = ", vars.getLanguage()";
2296          }
2297          data[i].xmltext += ", Utility.getContext(this, vars, \"#User_Org\", windowId), Utility.getContext(this, vars, \"#User_Client\", windowId)";
2298          if (!tableDir[0].columnname.equals("")) {
2299            data[i].htmltext += "_" + tableDir[0].columnname;
2300            data[i].tablename = "TableDirVal";
2301            data[i].xmltext += WadUtility.getWadComboReloadContext(tableDir[0].defaultvalue, isSOTrx);
2302          } else {
2303            data[i].tablename = "TableDir";
2304          }
2305          data[i].tablenametrl = data[i].tablename + "Trl";
2306          data[i].htmltexttrl = data[i].htmltext;
2307          data[i].xmltexttrl = data[i].xmltext;
2308          if (vecParameters.size()>0 && vecTableParameters.size()==0) {
2309            data[i].xmltext += ", vars.getLanguage()";
2310            data[i].xmltexttrl += ", vars.getLanguage()";
2311          }
2312          data[i].xmltext += ", \"\"";
2313          data[i].xmltexttrl += ", \"\"";
2314        }
2315        vecTotal.addElement(data[i]);
2316      }
2317    }
2318    if (vecTotal!=null && vecTotal.size()>0) {
2319      result = new FieldsData[vecTotal.size()];
2320      vecTotal.copyInto(result);
2321    }
2322
2323    xmlDocument.setData("structure1", result);
2324    if (vecTotal==null || vecTotal.size()==0) return;
2325    WadUtility.writeFile(fileDir, "ComboReloads" + strTab + ".java", xmlDocument.print());
2326  }
2327
2328
2329  private void processTabXmlSortTab(FieldsData[] parentsFieldsData, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc keyColumnName) throws ServletException, IOException {
2330    log4j.debug("Procesig relation sort tab xml: " + strTab + ", " + tabName);
2331    String JavaDoc[] discard = {""};
2332    if (parentsFieldsData==null || parentsFieldsData.length == 0) discard[0] = new String JavaDoc("sectionParent");
2333    XmlDocument xmlDocumentRXml = xmlEngine.readXmlTemplate("org/openbravo/wad/ConfigurationSortTab_Relation", discard).createXmlDocument();
2334    xmlDocumentRXml.setParameter("class", tabName + "_Relation.html");
2335    xmlDocumentRXml.setParameter("key", keyColumnName);
2336    if (parentsFieldsData!=null && parentsFieldsData.length > 0) {
2337      xmlDocumentRXml.setParameter("parent", parentsFieldsData[0].name);
2338    }
2339    WadUtility.writeFile(fileDir, tabName + "_Relation.xml", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + xmlDocumentRXml.print());
2340  }
2341
2342  private void processTabHtmlSortTab(FieldsData[] parentsFieldsData, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc windowName, String JavaDoc keyColumnName, String JavaDoc tabNamePresentation, TabsData[] allTabs, String JavaDoc strProcess, String JavaDoc strDirectPrint, String JavaDoc strParentNameDescription, String JavaDoc WindowPathName, String JavaDoc strLanguage) throws ServletException, IOException {
2343    log4j.debug("Procesig relation sort tab html: " + strTab + ", " + tabName);
2344    XmlDocument xmlDocumentRHtml;
2345    String JavaDoc[] discard = new String JavaDoc[3];
2346    if (strProcess.equals("")) {
2347      discard[0] = new String JavaDoc("printButton");
2348    } else {
2349      discard[0] = new String JavaDoc("");
2350    }
2351    if (allTabs.length<=NUM_TABS) discard[1] = new String JavaDoc("tabButton");
2352    else discard[1] = new String JavaDoc("");
2353    if (parentsFieldsData.length == 0) discard[2] = new String JavaDoc("parent");
2354    else discard[2] = new String JavaDoc("");
2355
2356    xmlDocumentRHtml = xmlEngine.readXmlTemplate("org/openbravo/wad/TemplateSortTab_Relation", discard).createXmlDocument();
2357    xmlDocumentRHtml.setParameter("tab", tabNamePresentation);
2358    xmlDocumentRHtml.setParameter("form", tabName + "_Relation.html");
2359    xmlDocumentRHtml.setParameter("key", "inp" + Sqlc.TransformaNombreColumna(keyColumnName));
2360    xmlDocumentRHtml.setParameter("tabId", strTab);
2361    if (parentsFieldsData.length > 0) {
2362      xmlDocumentRHtml.setParameter("keyParent", "inp" + Sqlc.TransformaNombreColumna(parentsFieldsData[0].name));
2363      xmlDocumentRHtml.setParameter("parentKeyNameDescription", strParentNameDescription);
2364      xmlDocumentRHtml.setParameter("parentKeyName", parentsFieldsData[0].name);
2365    }
2366    
2367    xmlDocumentRHtml.setParameter("subtabKey", tabName);
2368    WadUtility.writeFile(fileDir, tabName + "_Relation.html", xmlDocumentRHtml.print());
2369  }
2370
2371
2372  private void processTabXmlRelation(FieldsData[] parentsFieldsData, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc keyColumnName, WADControl relationControl) throws ServletException, IOException {
2373    log4j.debug("Procesig relation xml: " + strTab + ", " + tabName);
2374    String JavaDoc[] discard = {""};
2375    if (parentsFieldsData==null || parentsFieldsData.length == 0) discard[0] = new String JavaDoc("sectionParent");
2376    XmlDocument xmlDocumentRXml = xmlEngine.readXmlTemplate("org/openbravo/wad/Configuration_Relation", discard).createXmlDocument();
2377    xmlDocumentRXml.setParameter("class", tabName + "_Relation.html");
2378    xmlDocumentRXml.setParameter("key", keyColumnName);
2379    if (parentsFieldsData!=null && parentsFieldsData.length > 0) {
2380      xmlDocumentRXml.setParameter("parent", parentsFieldsData[0].name);
2381    }
2382    xmlDocumentRXml.setParameter("relationControl", relationControl.toXml());
2383    WadUtility.writeFile(fileDir, tabName + "_Relation.xml", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlDocumentRXml.print());
2384  }
2385
2386  private void processTabHtmlRelation(FieldsData[] parentsFieldsData, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc keyColumnName, boolean isreadonly, String JavaDoc strParentNameDescription, WADControl control, boolean isTranslated, String JavaDoc adLanguage, String JavaDoc tabNamePresentation, String JavaDoc strTable) throws ServletException, IOException {
2387    log4j.debug("Procesig relation html" + (isTranslated?" translated":"") + ": " + strTab + ", " + tabName);
2388    String JavaDoc[] discard = new String JavaDoc[1];
2389    if (parentsFieldsData.length == 0) discard[0] = new String JavaDoc("parent");
2390    else discard[0] = new String JavaDoc("");
2391
2392    XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/Template_Relation", discard).createXmlDocument();
2393    xmlDocument.setParameter("form", tabName + "_Edition.html");
2394    xmlDocument.setParameter("tab", tabNamePresentation);
2395    xmlDocument.setParameter("key", "inp" + Sqlc.TransformaNombreColumna(keyColumnName));
2396    xmlDocument.setParameter("keyId", keyColumnName);
2397    xmlDocument.setParameter("tabId", strTab);
2398    xmlDocument.setParameter("tableId", strTable);
2399    if (parentsFieldsData.length > 0) {
2400      xmlDocument.setParameter("keyParent", "inp" + Sqlc.TransformaNombreColumna(parentsFieldsData[0].name));
2401      xmlDocument.setParameter("parentKeyNameDescription", strParentNameDescription);
2402      xmlDocument.setParameter("parentKeyName", parentsFieldsData[0].name);
2403    }
2404    xmlDocument.setParameter("importCSS", getVectorElementsNotRepeated(control.getCSSImport(), new Vector JavaDoc<String JavaDoc>(), 1));
2405    xmlDocument.setParameter("importJS", getVectorElementsNotRepeated(control.getImport(), new Vector JavaDoc<String JavaDoc>(), 2));
2406    StringBuffer JavaDoc script = new StringBuffer JavaDoc();
2407    script.append(getVectorElementsNotRepeated(control.getJSCode(), new Vector JavaDoc<String JavaDoc>(), 0));
2408    script.append("function depurarClient(action, Formulario, valor) {\n");
2409    script.append(" var frm=document.frmMain;\n");
2410    script.append(control.getValidation()).append("\n");
2411    script.append(" return true;\n");
2412    script.append("}\n");
2413    xmlDocument.setParameter("script", script.toString());
2414    xmlDocument.setParameter("controlDesign", control.toString());
2415    WadUtility.writeFile(fileDir, tabName + "_Relation.html", xmlDocument.print());
2416  }
2417
2418  private String JavaDoc getVectorElementsNotRepeated(Vector JavaDoc<String JavaDoc[]> data, Vector JavaDoc<String JavaDoc> addedElements, int type) {
2419    if (addedElements==null) addedElements = new Vector JavaDoc<String JavaDoc>();
2420    if (data==null) return "";
2421    StringBuffer JavaDoc text = new StringBuffer JavaDoc();
2422    for (int i=0;i<data.size();i++) {
2423      String JavaDoc[] aux = data.elementAt(i);
2424      if (!isInVector(addedElements, aux[0])) {
2425        addedElements.addElement(aux[0]);
2426        if (type==1) text.append("<link rel=\"stylesheet\" type=\"text/css\" HREF=\"");
2427        else if (type==2) text.append("<script language=\"JavaScript\" SRC=\"");
2428        text.append(aux[1]);
2429        if (type==1) text.append("\"/>");
2430        else if (type==2)text.append("\" type=\"text/javascript\"></script>");
2431        text.append("\n");
2432      }
2433    }
2434    return text.toString();
2435  }
2436
2437  private boolean isInVector(Vector JavaDoc<String JavaDoc> data, String JavaDoc value) {
2438    if (data==null) return false;
2439    if (value==null || value.equals("")) return false;
2440    for (int i=0;i<data.size();i++) {
2441      String JavaDoc aux = data.elementAt(i);
2442      if (aux.equalsIgnoreCase(value)) return true;
2443    }
2444    return false;
2445  }
2446
2447  private void processTabXmlEdition(File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc windowId, boolean isreadonly, FieldProvider[] efd, FieldProvider[] efdauxiliar) throws ServletException, IOException {
2448    if (log4j.isDebugEnabled()) log4j.debug("Processing edition xml: " + strTab + ", " + tabName);
2449    XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/Configuration_Edition").createXmlDocument();
2450    xmlDocument.setParameter("class", tabName + "_Edition.html");
2451    StringBuffer JavaDoc htmlHidden = new StringBuffer JavaDoc();
2452    if (efdauxiliar!=null) {
2453      for (int i=0;i< efdauxiliar.length; i++) {
2454        WADControl auxControl = new WADHidden(efdauxiliar[i].getField("columnname"), Sqlc.TransformaNombreColumna(efdauxiliar[i].getField("columnname")), "", true);
2455        auxControl.setReportEngine(xmlEngine);
2456        htmlHidden.append(auxControl.toXml()).append("\n");
2457      }
2458    }
2459    xmlDocument.setParameter("hiddens", htmlHidden.toString());
2460
2461    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
2462    for (int i=0;i< efd.length; i++) {
2463      WADControl auxControl = null;
2464      try {
2465        auxControl = WadUtility.getControl(pool, efd[i], isreadonly, tabName, "", xmlEngine, false, false);
2466      } catch (Exception JavaDoc ex) {
2467        throw new ServletException(ex);
2468      }
2469      html.append(auxControl.toXml()).append("\n");
2470    }
2471
2472    xmlDocument.setParameter("fields", html.toString());
2473    WadUtility.writeFile(fileDir, tabName + "_Edition.xml", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlDocument.print());
2474  }
2475
2476  private void processTabHtmlEdition(FieldProvider[] efd, FieldProvider[] efdauxiliar, File fileDir, String JavaDoc strTab, String JavaDoc tabName, String JavaDoc keyColumnName, String JavaDoc tabNamePresentation, String JavaDoc windowId, FieldsData[] parentsFieldsData, Vector JavaDoc<Object JavaDoc> vecFields, boolean isreadonly, String JavaDoc isSOTrx, String JavaDoc strTable, double pixelSize, String JavaDoc strLanguage) throws ServletException, IOException {
2477    if (log4j.isDebugEnabled()) log4j.debug("Procesig edition html" + (strLanguage.equals("")?"":" translated") + ": " + strTab + ", " + tabName);
2478    XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/Template_Edition").createXmlDocument();
2479    xmlDocument.setParameter("tab", tabNamePresentation);
2480    xmlDocument.setParameter("form", tabName+ "_Relation.html");
2481    xmlDocument.setParameter("key", "inp" + Sqlc.TransformaNombreColumna(keyColumnName));
2482    xmlDocument.setParameter("keyId", keyColumnName);
2483    xmlDocument.setParameter("tabId", strTab);
2484    xmlDocument.setParameter("tableId", strTable);
2485    Vector JavaDoc<Object JavaDoc> vecDisplayLogic = new Vector JavaDoc<Object JavaDoc>();
2486    EditionFieldsData efdDl[] = EditionFieldsData.selectDisplayLogic(pool, strTab);
2487    if (efdDl!=null) {
2488      for (int i=0;i< efdDl.length; i++) {
2489        WadUtility.displayLogic(efdDl[i].displaylogic, vecDisplayLogic, parentsFieldsData, new Vector JavaDoc<Object JavaDoc>(), vecFields, windowId, new Vector JavaDoc<Object JavaDoc>());
2490      }
2491    }
2492    Vector JavaDoc<Object JavaDoc> vecAuxiliar = new Vector JavaDoc<Object JavaDoc>();
2493    StringBuffer JavaDoc htmlHidden = new StringBuffer JavaDoc();
2494    if (efdauxiliar!=null) {
2495      for (int i=0;i< efdauxiliar.length; i++) {
2496        WADControl auxControl = new WADHidden(efdauxiliar[i].getField("columnname"), Sqlc.TransformaNombreColumna(efdauxiliar[i].getField("columnname")), "", true);
2497        auxControl.setReportEngine(xmlEngine);
2498        htmlHidden.append(auxControl.toString()).append("\n");
2499        vecAuxiliar.addElement(FormatUtilities.replace(efdauxiliar[i].getField("columnname")));
2500      }
2501    }
2502
2503    FieldsData[] dataReload = FieldsData.selectValidationTab(pool, strTab);
2504    Vector JavaDoc<Object JavaDoc> vecReloads = new Vector JavaDoc<Object JavaDoc>();
2505    if (dataReload!=null && dataReload.length>0) {
2506      for (int z=0;z<dataReload.length;z++) {
2507        String JavaDoc code = dataReload[z].whereclause + ((!dataReload[z].whereclause.equals("") && !dataReload[z].referencevalue.equals(""))?" AND ":"") + dataReload[z].referencevalue;
2508        WadUtility.getComboReloadText(code, vecFields, parentsFieldsData, vecReloads, "", dataReload[z].columnname);
2509      }
2510    }
2511
2512    Properties JavaDoc importsCSS = new Properties JavaDoc();
2513    Properties JavaDoc importsJS = new Properties JavaDoc();
2514    Properties JavaDoc javaScriptFunctions = new Properties JavaDoc();
2515    StringBuffer JavaDoc displayLogicFunction = new StringBuffer JavaDoc();
2516    StringBuffer JavaDoc validations = new StringBuffer JavaDoc();
2517    StringBuffer JavaDoc onload = new StringBuffer JavaDoc();
2518    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
2519    String JavaDoc strFieldGroup = "";
2520    int columnType = 0;
2521    html.append("<tr>\n");
2522    html.append(" <td class=\"TableEdition_OneCell_width\"></td>\n");
2523    html.append(" <td class=\"TableEdition_TwoCells_width\"></td>\n");
2524    html.append(" <td class=\"TableEdition_OneCell_width\"></td>\n");
2525    html.append(" <td class=\"TableEdition_TwoCells_width\"></td>\n");
2526    html.append("</tr>\n");
2527    for (int i=0;i< efd.length; i++) {
2528      WADControl auxControl = null;
2529      try {
2530        auxControl = WadUtility.getControl(pool, efd[i], isreadonly, tabName, strLanguage, xmlEngine, (WadUtility.isInVector(vecDisplayLogic, efd[i].getField("columnname"))), WadUtility.isInVector(vecReloads, efd[i].getField("columnname")));
2531      } catch (Exception JavaDoc ex) {
2532        throw new ServletException(ex);
2533      }
2534      if (WadUtility.isNewGroup(auxControl, strFieldGroup)) {
2535        strFieldGroup = auxControl.getData("AD_FieldGroup_ID");
2536        html.append(" <tr><td colspan=\"4\">\n");
2537        html.append(" <table border=0 cellspacing=0 cellpadding=0 class=\"FieldGroup\"><tr class=\"FieldGroup_TopMargin\"></tr>\n<tr>\n");
2538        html.append("<td class=\"FieldGroupTitle_Left\"><img SRC=\"../../../../../web/images/blank.gif\" class=\"FieldGroupTitle_Left_bg\" border=0/></td>");
2539        String JavaDoc strText="";
2540        if (strLanguage.equals("")) strText = EditionFieldsData.fieldGroupName(pool, strFieldGroup);
2541        else strText = EditionFieldsData.fieldGroupNameTrl(pool, strLanguage, strFieldGroup);
2542        String JavaDoc total=Double.toString((strText.length()+1) * pixelSize);
2543        html.append("<td class=\"FieldGroupTitle\">").append(strText).append("</td>");
2544        html.append("<td class=\"FieldGroupTitle_Right\"><img SRC=\"../../../../../web/images/blank.gif\" class=\"FieldGroupTitle_Right_bg\" border=0/></td>");
2545        html.append("<td class=\"FieldGroupContent\">&nbsp;</td></tr>\n<tr class=\"FieldGroup_BottomMargin\"></tr></table>");
2546        html.append(" </td></tr>\n");
2547      }
2548
2549      if (log4j.isDebugEnabled()) log4j.debug("Column: " + auxControl.getData("ColumnName") + ", col: " + columnType);
2550      // hidden inputs
2551
if (auxControl.getData("IsDisplayed").equals("N")) {
2552        htmlHidden.append(auxControl.toString()).append("\n");
2553      } else {
2554        if (auxControl.getData("IsSameLine").equals("Y")) {
2555          columnType = COLUMN_2_OF_2;
2556          html.append("<td");
2557        } else if (i < efd.length -1 && efd[i+1].getField("issameline").equals("Y") && efd[i+1].getField("isdisplayed").equals("Y")) {
2558          columnType = COLUMN_1_OF_2;
2559          html.append("<tr><td");
2560        } else {
2561          columnType = COLUMN_1_OF_1;
2562          html.append("<tr><td");
2563        }
2564        WadUtility.setLabel(pool, auxControl, isSOTrx.equals("Y"), "inp" + Sqlc.TransformaNombreColumna(keyColumnName));
2565        String JavaDoc label = auxControl.toLabel();
2566        if (!label.equals("")) {
2567          html.append(" class=\"TitleCell\" id=\"").append(auxControl.getData("ColumnName")).append("_lbl_td\">").append(label.replace("\n", ""));
2568          if (columnType == COLUMN_1_OF_1) html.append("</td>\n<td colspan=\"3\" class=\"").append(auxControl.getType()).append("_ContentCell\" id=\"").append(auxControl.getData("ColumnName")).append("_inp_td\">");
2569          else html.append("</td>\n<td class=\"").append(auxControl.getType()).append("_ContentCell\" id=\"").append(auxControl.getData("ColumnName")).append("_inp_td\">");
2570        } else {
2571          html.append(" class=\"").append(auxControl.getType()).append("_ContentCell\" id=\"").append(auxControl.getData("ColumnName")).append("_inp_td\"");
2572          if (columnType == COLUMN_1_OF_1) html.append(" colspan=\"4\">");
2573          else html.append(" colspan=\"2\">");
2574        }
2575
2576        boolean isCombo = (auxControl.getData("AD_Reference_ID").equals("17") || auxControl.getData("AD_Reference_ID").equals("18") || auxControl.getData("AD_Reference_ID").equals("19"));
2577        if (columnType==COLUMN_1_OF_1) {
2578          if (Integer.valueOf(auxControl.getData("DisplayLength")).intValue() < (MAX_SIZE_EDITION_1_COLUMNS/4)) {
2579            auxControl.setData("DisplayLength", Double.toString(MAX_SIZE_EDITION_1_COLUMNS * (isCombo?7.5:1)));
2580            auxControl.setData("CssSize", "OneCell");
2581          } else if (Integer.valueOf(auxControl.getData("DisplayLength")).intValue() > (MAX_SIZE_EDITION_1_COLUMNS/2)) {
2582            auxControl.setData("DisplayLength", Double.toString(MAX_SIZE_EDITION_1_COLUMNS * (isCombo?7.5:1)));
2583            auxControl.setData("CssSize", "FiveCells");
2584          } else {
2585            auxControl.setData("DisplayLength", Double.toString((MAX_SIZE_EDITION_1_COLUMNS/2) * (isCombo?7.5:1)));
2586            auxControl.setData("CssSize", "TwoCells");
2587          }
2588        } else {
2589          if (Integer.valueOf(auxControl.getData("DisplayLength")).intValue() > (MAX_SIZE_EDITION_2_COLUMNS/2)) {
2590            auxControl.setData("DisplayLength", Double.toString(MAX_SIZE_EDITION_2_COLUMNS * (isCombo?7.5:1)));
2591            auxControl.setData("CssSize", "TwoCells");
2592          } else {
2593            auxControl.setData("DisplayLength", Double.toString((MAX_SIZE_EDITION_2_COLUMNS/2) * (isCombo?7.5:1)));
2594            auxControl.setData("CssSize", "OneCell");
2595          }
2596        }
2597        html.append(auxControl.toString());
2598        // end of input tag
2599
html.append("</td>\n");
2600        if (columnType == COLUMN_1_OF_1 || columnType == COLUMN_2_OF_2) html.append("</tr>\n");
2601        //Getting JavaScript
2602
{
2603          Vector JavaDoc<String JavaDoc[]> auxJavaScript = auxControl.getJSCode();
2604          if (auxJavaScript!=null) {
2605            for (int j=0;j<auxJavaScript.size();j++) {
2606              String JavaDoc[] auxObj = auxJavaScript.elementAt(j);
2607              javaScriptFunctions.setProperty(auxObj[0], auxObj[1]);
2608            }
2609          }
2610        } //End getting JavaScript
2611
//Getting css imports
2612
{
2613          Vector JavaDoc<String JavaDoc[]> auxCss = auxControl.getCSSImport();
2614          if (auxCss!=null) {
2615            for (int j=0;j<auxCss.size();j++) {
2616              String JavaDoc[] auxObj = auxCss.elementAt(j);
2617              importsCSS.setProperty(auxObj[0], auxObj[1]);
2618            }
2619          }
2620        } //End getting css imports
2621
//Getting js imports
2622
{
2623          Vector JavaDoc<String JavaDoc[]> auxJs = auxControl.getImport();
2624          if (auxJs!=null) {
2625            for (int j=0;j<auxJs.size();j++) {
2626              String JavaDoc[] auxObj = auxJs.elementAt(j);
2627              importsJS.setProperty(auxObj[0], auxObj[1]);
2628            }
2629          }
2630        } //End getting js imports
2631
if (!auxControl.getValidation().equals("")) validations.append(auxControl.getValidation()).append("\n");
2632        if (!auxControl.getOnLoad().equals("")) onload.append(auxControl.getOnLoad()).append("\n");
2633        displayLogicFunction.append(WadUtility.getDisplayLogic(auxControl, new Vector JavaDoc<Object JavaDoc>(), parentsFieldsData, vecAuxiliar, vecFields, windowId, new Vector JavaDoc<Object JavaDoc>(), isreadonly));
2634      }
2635    }
2636
2637    xmlDocument.setParameter("hiddenControlDesign", htmlHidden.toString());
2638    xmlDocument.setParameter("controlDesign", html.toString());
2639    StringBuffer JavaDoc sbImportCSS = new StringBuffer JavaDoc();
2640    for (Enumeration JavaDoc e = importsCSS.propertyNames();e.hasMoreElements();) {
2641      String JavaDoc _name = (String JavaDoc)e.nextElement();
2642      sbImportCSS.append("<link rel=\"stylesheet\" type=\"text/css\" HREF=\"").append(importsCSS.getProperty(_name)).append("\"/>\n");
2643    }
2644    xmlDocument.setParameter("importCSS", sbImportCSS.toString());
2645    StringBuffer JavaDoc sbImportJS = new StringBuffer JavaDoc();
2646    boolean hasCalendar = false;
2647    boolean calendarInserted = false;
2648    boolean calendarLangInserted = false;
2649    for (Enumeration JavaDoc e = importsJS.propertyNames();e.hasMoreElements();) {
2650      String JavaDoc _name = (String JavaDoc)e.nextElement();
2651      if (_name.startsWith("calendar")) hasCalendar = true;
2652      if (!_name.equals("calendarLang") || calendarInserted) {
2653        sbImportJS.append("<script language=\"JavaScript\" SRC=\"").append(importsJS.getProperty(_name)).append("\" type=\"text/javascript\"></script>\n");
2654        if (_name.equals("calendarLang")) calendarLangInserted = true;
2655      }
2656      if (_name.equals("calendar")) calendarInserted = true;
2657    }
2658    if (hasCalendar && !calendarLangInserted) sbImportJS.append("<script language=\"JavaScript\" SRC=\"").append(importsJS.getProperty("calendarLang")).append("\" type=\"text/javascript\"></script>\n");
2659    xmlDocument.setParameter("importJS", sbImportJS.toString());
2660    StringBuffer JavaDoc script = new StringBuffer JavaDoc();
2661    for (Enumeration JavaDoc e = javaScriptFunctions.propertyNames();e.hasMoreElements();) {
2662      String JavaDoc _name = (String JavaDoc)e.nextElement();
2663      script.append(javaScriptFunctions.getProperty(_name)).append("\n");
2664    }
2665    script.append("\nfunction reloadComboReloads").append(strTab).append("(changedField) {\n");
2666    script.append(" submitCommandForm(changedField, false, null, '../ad_callouts/ComboReloads' + document.frmMain.inpTabId.value + '.html', 'frameOculto', null, null, true);\n");
2667    script.append(" return true;\n");
2668    script.append("}\n");
2669    script.append("\nfunction depurarClient(action, Formulario, valor) {\n");
2670    script.append(" var frm=document.frmMain;\n");
2671    script.append(validations);
2672    script.append(" return true;\n");
2673    script.append("}\n");
2674
2675    script.append("\nfunction displayLogic() {\n");
2676    script.append(displayLogicFunction);
2677    script.append(" return true;\n");
2678    script.append("}\n");
2679
2680    script.append("\nfunction onloadClient() {\n");
2681    script.append(" var frm=document.frmMain;\n");
2682    script.append(" var key = eval(\"document.frmMain.\" + frm.inpKeyName.value);");
2683    script.append(onload);
2684    script.append(" displayLogic();\n");
2685// script.append(" setInputValue(frm.inpLastFieldChanged, \"\");\n");
2686
script.append(" return true;\n");
2687    script.append("}\n");
2688
2689    xmlDocument.setParameter("script", script.toString());
2690    WadUtility.writeFile(fileDir, tabName + "_Edition.html", xmlDocument.print());
2691  }
2692
2693/*#############################################################################################################################
2694# Utilities #
2695###############################################################################################################################*/

2696  private void getSubTabs (Vector JavaDoc<Object JavaDoc> vec, String JavaDoc strTabParent, String JavaDoc strTabSelected, String JavaDoc strLanguage) throws IOException, ServletException {
2697    TabsData[] aux = null;
2698    if (strLanguage==null || strLanguage.equals("")) aux = TabsData.selectSubtabs(pool, strTabParent);
2699    else aux = TabsData.selectSubtabsTrl(pool, strLanguage, strTabParent);
2700    if (aux==null || aux.length<=0) return;
2701    for (int i=0;i<aux.length;i++) {
2702      vec.addElement(aux[i]);
2703      getSubTabs(vec, aux[i].tabid, strTabSelected, strLanguage);
2704    }
2705  }
2706
2707  private TabsData[] getPrimaryTabs(String JavaDoc strWindowId, String JavaDoc strTabSelected, int level, int heightTabs, int incrTabs, String JavaDoc strLanguage) throws IOException, ServletException {
2708    TabsData[] aux=null;
2709    TabsData[] aux1=null;
2710    int mayor=0;
2711    Vector JavaDoc<Object JavaDoc> vec = new Vector JavaDoc<Object JavaDoc>();
2712    if (strLanguage!=null && !strLanguage.equals("")) aux1 = TabsData.selectTabParentTrl(pool, strLanguage, strWindowId);
2713    else aux1 = TabsData.selectTabParent(pool, strWindowId);
2714    if (aux1==null || aux1.length==0) return null;
2715    for (int i=0;i<aux1.length;i++) {
2716      vec.addElement(aux1[i]);
2717      getSubTabs(vec, aux1[i].tabid, strTabSelected, strLanguage);
2718    }
2719    aux = new TabsData[vec.size()];
2720    vec.copyInto(aux);
2721    for (int i=0;i<aux.length;i++)
2722      if (mayor<Integer.valueOf(aux[i].tablevel).intValue()) mayor=Integer.valueOf(aux[i].tablevel).intValue();
2723    for (int i=0;i<aux.length;i++) debugTab(aux[i], strTabSelected, level, heightTabs, incrTabs, mayor);
2724    return aux;
2725  }
2726
2727  private void debugTab(TabsData tab, String JavaDoc strTab, int level, int heightTabs, int incrTabs, int mayor) throws ServletException {
2728    String JavaDoc tabName = FormatUtilities.replace(tab.tabname);
2729    if (strTab.equals(tab.tabid)) {
2730      tab.tdClass="";
2731      tab.href = "return false;";
2732    } else {
2733      tab.tdClass="";
2734      tab.href = "submitCommandForm('DEFAULT', false, null, '" + tabName + "_Relation.html', 'frameAplicacion');return false;";
2735      if ((level+1)>=Integer.valueOf(tab.tablevel).intValue()) tab.href = "submitCommandForm('" + ((level>Integer.valueOf(tab.tablevel).intValue())?"DEFAULT":"TAB") + "', " + ((level>=Integer.valueOf(tab.tablevel).intValue())?"false":"true") + ", null, '" + tabName + "_Relation.html', 'frameAplicacion');return false;";
2736      else tab.href = "return false;";
2737    }
2738    int height = ((mayor-Integer.valueOf(tab.tablevel).intValue())*incrTabs + heightTabs);
2739    tab.tdHeight = Integer.toString(height);
2740  }
2741
2742  private int parentTabId(TabsData[] allTabs, String JavaDoc tabId) throws ServletException, IOException {
2743    if (allTabs==null || allTabs.length==0) return -1;
2744    else if (tabId==null || tabId.equals("")) return -1;
2745    else if (tabId.equals(allTabs[0].tabid)) return -1;
2746    String JavaDoc parentTab="";
2747    for (int i=1;i<allTabs.length;i++) {
2748      if (allTabs[i].tabid.equals(tabId)) {
2749        parentTab = allTabs[i].parentKey;
2750        break;
2751      }
2752    }
2753    if (!parentTab.equals("-1")) {
2754      for (int i=0;i<allTabs.length;i++) {
2755        if (allTabs[i].tabid.equals(parentTab)) return i;
2756      }
2757    }
2758    return -1;
2759  }
2760
2761
2762  public void fieldsOfTableDir(String JavaDoc tableInit, String JavaDoc name, String JavaDoc required, Vector JavaDoc<Object JavaDoc> vecFields, Vector JavaDoc<Object JavaDoc> vecTables, Vector JavaDoc<Object JavaDoc> vecWhere) throws ServletException{
2763    int ilength = name.length();
2764    String JavaDoc tableName = name.substring(0,ilength-3);
2765    FieldsData fdi[] = FieldsData.identifierColumns(pool, tableName);
2766    vecTables.addElement("left join " + tableName + " on (" + tableInit + "." + name + " = " + tableName + "." + name + ")");
2767    for (int i=0;i< fdi.length; i++) {
2768      if (fdi[i].reference.equals("19")) fieldsOfTableDir(tableName, fdi[i].name, fdi[i].required, vecFields, vecTables, vecWhere);
2769      else vecFields.addElement(tableName + "." + fdi[i].name);
2770    }
2771  }
2772
2773  public int fieldsOfSearch(String JavaDoc tableInit, String JavaDoc name, String JavaDoc FilterName, String JavaDoc required, Vector JavaDoc<Object JavaDoc> vecFields, Vector JavaDoc<Object JavaDoc> vecTables, Vector JavaDoc<Object JavaDoc> vecWhere, int itable, String JavaDoc reference, String JavaDoc referencevalue) throws ServletException{
2774    itable++;
2775    int tableNum = itable;
2776    EditionFieldsData[] dataSearchs = null;
2777    if (reference.equals("30") && !referencevalue.equals("")) dataSearchs = EditionFieldsData.selectSearchs(pool, "", referencevalue);
2778    String JavaDoc tableName = "";
2779    if (dataSearchs==null || dataSearchs.length==0) {
2780      int ilength = FilterName.length();
2781      if (reference.equals("25")) tableName = "C_ValidCombination";
2782      else if (reference.equals("31")) tableName = "M_Locator";
2783      else if (reference.equals("800011")) tableName = "M_Product";
2784      else tableName = FilterName.substring(0,ilength-3);
2785      if (reference.equals("25")) FilterName = "C_ValidCombination_ID";
2786      else if (reference.equals("31")) FilterName = "M_Locator_ID";
2787      else if (reference.equals("800011")) FilterName = "M_Product_ID";
2788    } else {
2789      tableName = dataSearchs[0].reference;
2790      FilterName = dataSearchs[0].columnname;
2791    }
2792    FieldsData fdi[] = FieldsData.identifierColumns(pool, tableName);
2793    StringBuffer JavaDoc fieldsAux = new StringBuffer JavaDoc();
2794    for (int i=0;i< fdi.length; i++) {
2795      if (!fdi[i].columnname.equalsIgnoreCase(FilterName)) fieldsAux.append(", ").append(fdi[i].columnname);
2796    }
2797    vecTables.addElement("left join (select " + FilterName + fieldsAux.toString() + " from " + tableName + ") table" + tableNum + " on (" + tableInit + "." + name + " = table" + tableNum + "." + FilterName + ")");
2798    for (int i=0;i< fdi.length; i++) {
2799      if (fdi[i].reference.equals("30") || fdi[i].reference.equals("31") || fdi[i].reference.equals("35") || fdi[i].reference.equals("25") || fdi[i].reference.equals("800011") || fdi[i].reference.equals("19")) {
2800        itable=fieldsOfSearch("table" + tableNum, fdi[i].name, fdi[i].columnname, required, vecFields, vecTables, vecWhere, itable, fdi[i].reference, fdi[i].referencevalue);
2801      } else {
2802        vecFields.addElement("table" + tableNum + "." + fdi[i].columnname);
2803      }
2804    }
2805    return itable;
2806  }
2807
2808  public int fieldsOfSearch2(String JavaDoc tableInit, String JavaDoc name, String JavaDoc required, Vector JavaDoc<Object JavaDoc> vecFields, Vector JavaDoc<Object JavaDoc> vecTables, Vector JavaDoc<Object JavaDoc> vecWhere, int itable, String JavaDoc reference, String JavaDoc referencevalue) throws ServletException{
2809    itable++;
2810    int tableNum = itable;
2811    String JavaDoc tableName = "";
2812    EditionFieldsData[] dataSearchs = null;
2813    if (reference.equals("30") && !referencevalue.equals("")) dataSearchs = EditionFieldsData.selectSearchs(pool, "", referencevalue);
2814    if (dataSearchs==null || dataSearchs.length==0) {
2815      int ilength = name.length();
2816      if (reference.equals("25")) tableName = "C_ValidCombination";
2817      else if (reference.equals("31")) tableName = "M_Locator";
2818      else if (reference.equals("800011")) tableName = "M_Product";
2819      else tableName = name.substring(0,ilength-3);
2820      if (reference.equals("25")) name = "C_ValidCombination_ID";
2821      else if (reference.equals("31")) name = "M_Locator_ID";
2822      else if (reference.equals("800011")) name="M_Product_ID";
2823      else name = name;
2824    } else {
2825      tableName = dataSearchs[0].reference;
2826      name = dataSearchs[0].columnname;
2827    }
2828    FieldsData fdi[] = FieldsData.identifierColumns(pool, tableName);
2829    if (itable>1) {
2830      vecTables.addElement(" left join " + tableName + " table" + tableNum + " on (" + tableInit + "." + name + " = table" + tableNum + "." + name + ")");
2831    }
2832    for (int i=0;i< fdi.length; i++) {
2833      if (fdi[i].reference.equals("30") || fdi[i].reference.equals("800011") || fdi[i].reference.equals("31") || fdi[i].reference.equals("35") || fdi[i].reference.equals("25")) {
2834        itable=fieldsOfSearch2("table" + tableNum, fdi[i].columnname, fdi[i].required, vecFields, vecTables, vecWhere, itable, fdi[i].reference, fdi[i].referencevalue);
2835      } else {
2836        vecFields.addElement("table" + tableNum + "." + fdi[i].columnname);
2837      }
2838    }
2839    return itable;
2840  }
2841/*
2842  public void connect() throws ClassNotFoundException, SQLException {
2843      log4j.info("Carga del driver: " + strDriver);
2844      Class.forName(strDriver);
2845      log4j.info("Driver cargado");
2846      log4j.info("Conexión con: "+ strURL);
2847      connection=DriverManager.getConnection(strURL);
2848      log4j.info("connect realizado");
2849  }
2850
2851  public void closeConnection() {
2852    try {
2853      connection.close();
2854    } catch(SQLException e){
2855      log4j.error("Error de SQL en closeConnection: " + e);
2856    }
2857  }
2858
2859  public void startElement(String name, Attributes amap) throws SAXException {
2860    log4j.debug("Configuration: startElement is called: element name=" + name);
2861    if (name.trim().equalsIgnoreCase("CONNECTION")) {
2862      for (int i = 0; i < amap.getLength(); i++) {
2863        if (amap.getQName(i).equals("driver")) {
2864          strDriver = amap.getValue(i);
2865        } else if (amap.getQName(i).equals("URL")) {
2866          strURL = amap.getValue(i);
2867        }
2868      }
2869    }
2870  }
2871*/

2872  public void createXmlEngine(String JavaDoc fileConnection) {
2873    xmlEngine = new XmlEngine();
2874    xmlEngine.isResource = true;
2875    xmlEngine.fileBaseLocation = new File(".");
2876    xmlEngine.strReplaceWhat = null;
2877    xmlEngine.strReplaceWith = null;
2878    xmlEngine.strTextDividedByZero = "TextDividedByZero";
2879    xmlEngine.fileXmlEngineFormat = new File (fileConnection, "Format.xml");
2880    log4j.debug("xmlEngine format file: " + xmlEngine.fileXmlEngineFormat.getAbsoluteFile());
2881    xmlEngine.initialize();
2882  }
2883
2884  public void createPool(String JavaDoc strFileConnection) {
2885    pool = new WadConnection(strFileConnection);
2886  }
2887  
2888  public FieldsData copyarrayElement(FieldsData from) {
2889    FieldsData toAux = new FieldsData();
2890    toAux.realname = from.realname;
2891    toAux.name = from.name;
2892    toAux.nameref = from.nameref;
2893    toAux.xmltext = from.xmltext;
2894    toAux.reference = from.reference;
2895    toAux.referencevalue = from.referencevalue;
2896    toAux.required = from.required;
2897    toAux.isdisplayed = from.isdisplayed;
2898    toAux.isupdateable = from.isupdateable;
2899    toAux.defaultvalue = from.defaultvalue;
2900    toAux.fieldlength = from.fieldlength;
2901    toAux.textAlign = from.textAlign;
2902    toAux.xmlFormat = from.xmlFormat;
2903    toAux.displaylength = from.displaylength;
2904    toAux.columnname = from.columnname;
2905    toAux.whereclause = from.whereclause;
2906    toAux.tablename = from.tablename;
2907    toAux.type = from.type;
2908    toAux.issessionattr = from.issessionattr;
2909    toAux.iskey = from.iskey;
2910    toAux.isparent = from.isparent;
2911    toAux.accesslevel = from.accesslevel;
2912    toAux.isreadonly = from.isreadonly;
2913    toAux.issecondarykey = from.issecondarykey;
2914    toAux.showinrelation = from.showinrelation;
2915    toAux.isencrypted = from.isencrypted;
2916    toAux.sortno = from.sortno;
2917    toAux.istranslated = from.istranslated;
2918    toAux.id = from.id;
2919    toAux.htmltext = from.htmltext;
2920    toAux.htmltexttrl = from.htmltexttrl;
2921    toAux.xmltexttrl = from.xmltexttrl;
2922    toAux.tablenametrl = from.tablenametrl;
2923    toAux.nowrap = from.nowrap;
2924    toAux.iscolumnencrypted = from.iscolumnencrypted;
2925    toAux.isdesencryptable = from.isdesencryptable;
2926    toAux.adReferenceValueId = from.adReferenceValueId;
2927    return toAux;
2928  }
2929
2930  public FieldsData[] copyarray(FieldsData[] from) {
2931    log4j.debug("Starting copyarray: " + from.length);
2932    if (from==null) return null;
2933    FieldsData[] to = new FieldsData[from.length];
2934    for (int i=0;i<from.length;i++) {
2935      log4j.debug("For copyarray");
2936      to[i] = copyarrayElement(from[i]);
2937    }
2938    return to;
2939  }
2940
2941  public void readProperties(String JavaDoc strFileProperties) {
2942// Read properties file.
2943
Properties JavaDoc properties = new Properties JavaDoc();
2944    try {
2945        log4j.info("strFileProperties: " + strFileProperties);
2946        properties.load(new FileInputStream(strFileProperties));
2947        jsDateFormat = properties.getProperty("dateFormat.js");
2948        log4j.info("jsDateFormat: " + jsDateFormat);
2949        sqlDateFormat = properties.getProperty("dateFormat.sql");
2950        log4j.info("sqlDateFormat: " + sqlDateFormat);
2951    } catch (IOException e) {
2952       // catch possible io errors from readLine()
2953
System.out.println("Uh oh, got an IOException error!");
2954       e.printStackTrace();
2955    }
2956  }
2957
2958}
2959
Popular Tags