1 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 ; 36 import java.util.Enumeration ; 37 import java.util.Properties ; 38 39 import org.xml.sax.helpers.DefaultHandler ; 40 41 import org.apache.log4j.Logger; 42 import org.apache.log4j.PropertyConfigurator; 43 44 public class Wad extends DefaultHandler { 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 IMAGE_DEFAULT = "blank.gif"; 65 XmlEngine xmlEngine; 66 protected static WadConnection pool; 67 String strSystemSeparator; 68 static final String calendarDescription = "Calendar"; 69 static final String clockDescription = "Clock"; 70 static final String calculatorDescription = "Calculator"; 71 static String calendarDescriptionTrl = ""; 72 static String clockDescriptionTrl = ""; 73 static String calculatorDescriptionTrl = ""; 74 static String jsDateFormat; 75 static String sqlDateFormat; 76 77 static Logger log4j = Logger.getLogger(Wad.class); 78 79 public static void main(String argv[]) throws Exception { 80 PropertyConfigurator.configure("log4j.lcf"); 81 String strWindowName; 82 String dirFin; 83 String dirReference; 84 String dirWebXml; 85 String dirActionButton; 86 boolean generateWebXml; 87 boolean generateTabs; 88 String dirBaseTrl; 89 String translateStr; 90 String dirWebClients; 91 String basePath; 92 String attachPath; 93 String webPath; 94 String 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 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 strWindowName = argv[1]; 111 112 if(argv.length <= 2) dirFin = "."; 114 else dirFin = argv[2]; 115 116 if(argv.length <= 3) dirReference = dirFin; 119 else dirReference = argv[3]; 120 121 if(argv.length <= 4) dirWebXml = dirFin; 123 else dirWebXml = argv[4]; 124 125 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(".xml"), true, true); 268 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 e) { 300 wad.pool.destroy(); 301 throw new Exception (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 <Object > vecFields = new Vector <Object >(); 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 <Object > vecFields = new Vector <Object >(); 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 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 <Object > vecFields = new Vector <Object >(); 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 <Object > vecFields = new Vector <Object >(); 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 <Object > vecFields = new Vector <Object >(); 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 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 <Object > vecFields = new Vector <Object >(); 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 attachPath, String webPath) throws ServletException, IOException { 455 try { 456 log4j.info("Processing web.xml"); 457 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/webConf").createXmlDocument(); 458 StringBuffer sb = new StringBuffer (); 459 460 try { 461 if (fileClients!=null) { 462 BufferedReader fileBuffer = new BufferedReader(new FileReader(fileClients)); 463 464 String 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 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" + 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 dirBaseTrl, String translateStr, File fileBase, File fileBaseAplication) throws Exception { 490 try { 491 String tabNamePresentation = tabsData.realtabname; 492 String tabName = FormatUtilities.replace(tabNamePresentation); 493 String windowName = FormatUtilities.replace(tabsData.windowname); 494 String tableName = FieldsData.tableName(pool, tabsData.tabid); 495 String 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 504 if (allTabs==null || allTabs.length==0) throw new Exception ("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 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 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 <Object > vecFields = new Vector <Object >(); 542 Vector <Object > vecTables = new Vector <Object >(); 543 Vector <Object > vecWhere = new Vector <Object >(); 544 Vector <Object > vecOrder = new Vector <Object >(); 545 Vector <Object > vecParameters = new Vector <Object >(); 546 Vector <Object > vecTableParameters = new Vector <Object >(); 547 Vector <Object > vecTotalParameters = new Vector <Object >(); 548 processTable(parentsFieldsData, tabsData.tabid, vecFields, vecTables, vecWhere, vecOrder, vecParameters, tableName, tabsData.windowtype, tabsData.tablevel, vecTableParameters, fieldsData); 549 StringBuffer strFields = new StringBuffer (); 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 e = vecFields.elements() ; e.hasMoreElements() ;) { 558 String fieldElement = (String )e.nextElement(); 559 strFields.append(fieldElement + ", \n"); 560 } 561 log4j.debug("Fields of select: " + strFields.toString()); 562 StringBuffer strTables = new StringBuffer (); 563 for (Enumeration e = vecTables.elements() ; e.hasMoreElements() ;) { 564 String tableElement = (String )e.nextElement(); 565 strTables.append((tableElement.trim().toLowerCase().startsWith("left join")?" ":", ") + tableElement); 566 } 567 log4j.debug("Tables of select: " + strTables.toString()); 568 StringBuffer strWhere = new StringBuffer (); 569 for (Enumeration e = vecWhere.elements() ; e.hasMoreElements();) { 570 String whereElement = (String )e.nextElement(); 571 strWhere.append((!whereElement.startsWith(" AND")?" AND ":"") + whereElement); 572 } 573 String 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 strParam = (String )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 strOrder = new StringBuffer (); 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 e = vecOrder.elements() ; e.hasMoreElements() ;) { 593 String orderElement = (String )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 parentwhereclause = ""; 613 FieldsData auxFieldsData[]=null; 614 if (parentTabIndex!=-1 && allTabs!=null && allTabs.length>0) { 615 parentwhereclause = FieldsData.selectParentWhereClause(pool, allTabs[parentTabIndex].tabid); 616 Vector <Object > vecParametersParent = new Vector <Object >(); 617 WadUtility.buildSQL(parentwhereclause, vecParametersParent); 618 parentwhereclause = ""; 619 if (vecParametersParent.size()>0) { 620 for (int h=0;h<vecParametersParent.size();h++) { 621 String strParam = (String )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 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 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 gridProps = new Properties (); 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 670 processTabXSQLSortTab(parentsFieldsData, fileDir, tabsData.tabid, tabName, tableName, windowName, keyColumnName, tabsData.adColumnsortorderId, tabsData.adColumnsortyesnoId, vecParameters, vecTableParameters); 671 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 678 processTabXmlSortTab(parentsFieldsData, fileDir, tabsData.tabid, tabName, keyColumnName); 679 682 processTabHtmlSortTab(parentsFieldsData, fileDir, tabsData.tabid, tabName, tabsData.realwindowname, keyColumnName, tabNamePresentation, allTabs, strProcess, strDirectPrint, strParentNameDescription, windowName, ""); 683 } else { 684 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 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 698 processTabComboReloads(fileFinReloads, tabsData.tabid, parentsFieldsData, vecFields, isSOTrx); 699 700 701 704 processTabXmlRelation(parentsFieldsData, fileDir, tabsData.tabid, tabName, keyColumnName, gridControl); 705 706 709 processTabHtmlRelation(parentsFieldsData, fileDir, tabsData.tabid, tabName, keyColumnName, tabsData.isreadonly.equals("Y"), strParentNameDescription, gridControl, false, "", tabNamePresentation, tabsData.tableId); 710 711 714 processTabXmlEdition(fileDir, tabsData.tabid, tabName, tabsData.key, tabsData.isreadonly.equals("Y"), efd, efdauxiliar); 715 716 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 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 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 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 processTabHtmlRelation(parentsFieldsData, fileDirTrl, tabsData.tabid, tabName, keyColumnName, tabsData.isreadonly.equals("Y"), strParentNameDescription, gridControl, true, dataLang[pos].adLanguage, tabNamePresentation, tabsData.tableId); 774 775 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 } 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 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 tableName) { 806 Vector <Object > vecAuxSelCol = new Vector <Object >(0); 807 Vector <Object > vecSelCol = new Vector <Object >(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 } 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 strTab, Vector <Object > vecFields, Vector <Object > vecTables, Vector <Object > vecWhere, Vector <Object > vecOrder, Vector <Object > vecParameters, String tableName, String windowType, String tablevel, Vector <Object > vecTableParameters, FieldsData[] fieldsDataSelectAux) throws ServletException, IOException { 917 int ilist = 0; 918 int itable = 0; 919 Vector <Object > vecCounters = new Vector <Object >(); 920 Vector <Object > vecOrderAux = new Vector <Object >(); 921 String 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") && fieldsData[i].isdisplayed.equals("Y")) { 935 Vector <Object > vecSubFields = new Vector <Object >(); 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 strFields = new StringBuffer (); 939 strFields.append(" ("); 940 boolean boolFirst = true; 941 for (Enumeration e = vecSubFields.elements() ; e.hasMoreElements() ;) { 942 String tableField = (String )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")) { Vector <Object > vecSubFields = new Vector <Object >(); 955 WadUtility.columnIdentifier (pool, tableName, fieldsData[i].required.equals("Y"), fieldsData[i], vecCounters, false, vecSubFields, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat); 956 StringBuffer strFields = new StringBuffer (); 957 strFields.append(" ( "); 958 boolean boolFirst = true; 959 for (Enumeration e = vecSubFields.elements() ; e.hasMoreElements() ;) { 960 String tableField = (String )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")) { Vector <Object > vecSubFields = new Vector <Object >(); 973 WadUtility.columnIdentifier (pool, tableName, fieldsData[i].required.equals("Y"), fieldsData[i], vecCounters, false, vecSubFields, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat); 974 StringBuffer strFields = new StringBuffer (); 975 strFields.append(" ( "); 976 boolean boolFirst = true; 977 for (Enumeration e = vecSubFields.elements() ; e.hasMoreElements() ;) { 978 String tableField = (String )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 <Object > vecSubFields = new Vector <Object >(); 991 WadUtility.columnIdentifier(pool, tableName, fieldsData[i].required.equals("Y"), fieldsData[i], vecCounters, false, vecSubFields, vecTables, vecWhere, vecParameters, vecTableParameters, sqlDateFormat); 992 StringBuffer strFields = new StringBuffer (); 993 strFields.append(" ( "); 994 boolean boolFirst = true; 995 for (Enumeration e = vecSubFields.elements() ; e.hasMoreElements() ;) { 996 String tableField = (String )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")) { Vector <Object > vecSubFields = new Vector <Object >(); 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 strFields = new StringBuffer (); 1012 strFields.append(" ("); 1013 boolean boolFirst = true; 1014 for (Enumeration e = vecSubFields.elements() ; e.hasMoreElements() ;) { 1015 String tableField = (String )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")) { StringBuffer strFields = new StringBuffer (); 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")) { 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 strWhere = new StringBuffer (); 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 [] aux={new String (fieldsData[i].name), new String (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 aux = findOrderVector(vecOrderAux, sfd1[i].name); 1060 if (aux!=null && aux.length()>0) vecOrder.addElement(aux); 1061 } 1062 } 1063 } 1064 1065 private String findOrderVector(Vector <Object > vecOrder, String name) { 1066 if (vecOrder.size()==0 || name.equals("")) return ""; 1067 for (int i=0;i<vecOrder.size();i++) { 1068 String [] aux = (String []) 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 strTab, String tabName, String tableName, String windowName, String keyColumnName, String strTables, String strOrder, String strWhere, Vector <Object > vecFields, String isSOTrx, TabsData[] allTabs, String strWindow, String accesslevel, EditionFieldsData[] selCol, boolean isSecondaryKey, String grandfatherField, String tablevel, String tableId, String windowType, String strColumnSortOrderId, String whereClauseParams, String parentwhereclause, String strProcess, String strDirectPrint, boolean strReadOnly, Vector <Object > vecParametersTop, Vector <Object > vecTableParametersTop) throws ServletException, IOException { 1076 log4j.debug("Processing Sort Tab java: " + strTab + ", " + tabName); 1077 XmlDocument xmlDocument; 1078 int parentTab = parentTabId(allTabs, strTab); 1079 String hasTree = TableLinkData.hasTree(pool, strTab); 1080 1081 String [] discard = {"", "", ""}; 1082 if (parentsFieldsData==null || parentsFieldsData.length == 0) { 1083 discard[0] = "parent"; } 1085 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 if (parentsFieldsData!=null && parentsFieldsData.length>0) { 1117 Vector <Object > vecCounters2 = new Vector <Object >(); 1118 Vector <Object > vecFields2 = new Vector <Object >(); 1119 Vector <Object > vecTable2 = new Vector <Object >(); 1120 Vector <Object > vecWhere2 = new Vector <Object >(); 1121 Vector <Object > vecParameters2 = new Vector <Object >(); 1122 Vector <Object > vecTableParameters2 = new Vector <Object >(); 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 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 Vector <Object > vecAuxiliarPFields = new Vector <Object >(); 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 strTab, String tabName, String tableName, String windowName, String keyColumnName, String strTables, String strOrder, String strWhere, String strFilter, Vector <Object > vecFields, Vector <Object > vecParametersTop, String isSOTrx, TabsData[] allTabs, String strWindow, String accesslevel, EditionFieldsData[] selCol, boolean isSecondaryKey, String grandfatherField, String tablevel, String tableId, String windowType, boolean strReadOnly, String whereClauseParams, String parentwhereclause, String editReference, String strProcess, String strDirectPrint, Vector <Object > 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 createFromProcess = FieldsData.hasCreateFromButton(pool, strTab); 1176 boolean hasCreateFrom = !createFromProcess.equals("0"); 1177 String postedProcess = FieldsData.hasPostedButton(pool, strTab); 1178 boolean hasPosted = !postedProcess.equals("0"); 1179 String strhasEncryption = FieldsData.hasEncryptionFields(pool, strTab); 1180 boolean hasEncryption = (strhasEncryption!=null&&!strhasEncryption.equals("0")); 1181 int parentTab = parentTabId(allTabs, strTab); 1182 String hasTree = TableLinkData.hasTree(pool, strTab); 1183 StringBuffer dl = new StringBuffer (); 1184 Vector <Object > vecAuxiliarFields = new Vector <Object >(); 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 <Object > vecContext = new Vector <Object >(); 1203 Vector <Object > vecDL = new Vector <Object >(); 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 [] discard = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "hasReference"}; 1220 if (parentsFieldsData==null || parentsFieldsData.length == 0) { 1221 discard[0] = "parent"; hasParentsFields=false; 1223 } 1224 if (tableName.toUpperCase().endsWith("_ACCESS")) { 1225 discard[18] = "client"; 1226 discard[1] = "org"; 1227 } 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 <Object > vecTotalParameters = new Vector <Object >(); 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 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 fieldsRelationStructure = new StringBuffer (); 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")) { fieldsDataSelect[i].name = fieldsDataSelect[i].name + "R"; } 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 if (parentsFieldsData!=null && parentsFieldsData.length>0) { 1337 Vector <Object > vecCounters2 = new Vector <Object >(); 1338 Vector <Object > vecFields2 = new Vector <Object >(); 1339 Vector <Object > vecTable2 = new Vector <Object >(); 1340 Vector <Object > vecWhere2 = new Vector <Object >(); 1341 Vector <Object > vecParameters2 = new Vector <Object >(); 1342 Vector <Object > vecTableParameters2 = new Vector <Object >(); 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 <Object > vector = new Vector <Object >(); 1351 boolean defaultValue; 1352 { 1353 Vector <Object > vecFieldsSelect = new Vector <Object >(); 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"; 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 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 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 Vector <Object > vecAuxiliarPFields = new Vector <Object >(); 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 1493 1494 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 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 1593 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 { 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 { 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 strDefaultValues = new StringBuffer (); 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 controlsJavaSource = new StringBuffer (); 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 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 generateStaticWhere(String strWhere, Vector <Object > vecParameters) { 1691 StringBuffer result = new StringBuffer (); 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 strParam = (String )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 strTab, String tabName, String tableName, String windowName, String keyColumnName, String strColumnSortOrderId, String strColumnSortYNId, Vector <Object > vecParametersTop, Vector <Object > vecTableParametersTop) throws ServletException, IOException { 1711 log4j.debug("Processing Sort Tab xsql: " + strTab + ", " + tabName); 1712 XmlDocument xmlDocumentXsql; 1713 String [] discard = {"", ""}; 1714 if (parentsFieldsData==null || parentsFieldsData.length == 0) discard[0] = "parent"; 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 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 strOrder = " ORDER BY " + tableName + "." + strSortField; 1733 1734 String strFields = ""; 1735 String strTables = ""; 1736 String strWhere = ""; 1737 { 1738 Vector <Object > vecCounters = new Vector <Object >(); 1739 Vector <Object > vecFields = new Vector <Object >(); 1740 Vector <Object > vecTable = new Vector <Object >(); 1741 Vector <Object > vecWhere = new Vector <Object >(); 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 strAux = (String ) 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 xmlDocumentXsql.setParameter("tables", strTables); 1764 xmlDocumentXsql.setParameter("where", strWhere); 1765 xmlDocumentXsql.setParameter("order", strOrder); 1766 StringBuffer strParameters = new StringBuffer (); 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 if (parentsFieldsData!=null && parentsFieldsData.length>0) { 1776 Vector <Object > vecCounters = new Vector <Object >(); 1777 Vector <Object > vecFields = new Vector <Object >(); 1778 Vector <Object > vecTable = new Vector <Object >(); 1779 Vector <Object > vecWhere = new Vector <Object >(); 1780 Vector <Object > vecParameters = new Vector <Object >(); 1781 Vector <Object > vecTableParameters = new Vector <Object >(); 1782 vecCounters.addElement("0"); 1783 vecCounters.addElement("0"); 1784 String 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 strAux = (String ) 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 if (parentsFieldsData!=null && parentsFieldsData.length>0) { 1811 Vector <Object > vecCounters = new Vector <Object >(); 1812 Vector <Object > vecFields = new Vector <Object >(); 1813 Vector <Object > vecTable = new Vector <Object >(); 1814 Vector <Object > vecWhere = new Vector <Object >(); 1815 Vector <Object > vecParameters = new Vector <Object >(); 1816 Vector <Object > vecTableParameters = new Vector <Object >(); 1817 vecCounters.addElement("0"); 1818 vecCounters.addElement("0"); 1819 String 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 strAux = (String ) 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 strTab, String tabName, String tableName, String windowName, String keyColumnName, String strFields, String strTables, String strOrder, String strWhere, Vector <Object > vecParametersTop, String strFilter, EditionFieldsData[] selCol, String tablevel, String windowType, Vector <Object > vecTableParametersTop, FieldsData[] fieldsDataSelectAux) throws ServletException, IOException { 1848 log4j.debug("Procesig xsql: " + strTab + ", " + tabName); 1849 XmlDocument xmlDocumentXsql; 1850 String [] discard = {"", "", "", "", "", "", ""}; 1851 if (parentsFieldsData==null || parentsFieldsData.length == 0) discard[0] = "parent"; if (tableName.toUpperCase().endsWith("_ACCESS")) { 1853 discard[6] = "client"; 1854 discard[1] = "org"; 1855 } 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 xmlDocumentXsql.setParameter("tables", strTables); 1880 xmlDocumentXsql.setParameter("where", strWhere); 1881 xmlDocumentXsql.setParameter("filter", strFilter); 1882 xmlDocumentXsql.setParameter("order", strOrder); 1883 StringBuffer strParameters = new StringBuffer (); 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 if (parentsFieldsData!=null && parentsFieldsData.length>0) { 1893 Vector <Object > vecCounters = new Vector <Object >(); 1894 Vector <Object > vecFields = new Vector <Object >(); 1895 Vector <Object > vecTable = new Vector <Object >(); 1896 Vector <Object > vecWhere = new Vector <Object >(); 1897 Vector <Object > vecParameters = new Vector <Object >(); 1898 Vector <Object > vecTableParameters = new Vector <Object >(); 1899 vecCounters.addElement("0"); 1900 vecCounters.addElement("0"); 1901 String 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 strAux = (String ) 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 if (parentsFieldsData!=null && parentsFieldsData.length>0) { 1928 Vector <Object > vecCounters = new Vector <Object >(); 1929 Vector <Object > vecFields = new Vector <Object >(); 1930 Vector <Object > vecTable = new Vector <Object >(); 1931 Vector <Object > vecWhere = new Vector <Object >(); 1932 Vector <Object > vecParameters = new Vector <Object >(); 1933 Vector <Object > vecTableParameters = new Vector <Object >(); 1934 vecCounters.addElement("0"); 1935 vecCounters.addElement("0"); 1936 String 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 strAux = (String ) 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 { 1963 FieldsData fieldsAux[] = FieldsData.selectAuxiliar(pool, "@SQL=", strTab); 1964 for (int i=0;i< fieldsAux.length; i++) { 1965 Vector <Object > vecParametros = new Vector <Object >(); 1966 fieldsAux[i].defaultvalue = WadUtility.getSQLWadContext(fieldsAux[i].defaultvalue, vecParametros); 1967 StringBuffer parametros = new StringBuffer (); 1968 for (Enumeration e = vecParametros.elements() ; e.hasMoreElements() ;) { 1969 String paramsElement = (String )e.nextElement(); 1970 parametros.append("\n" + paramsElement); 1971 } 1972 fieldsAux[i].whereclause = parametros.toString(); 1973 } 1974 xmlDocumentXsql.setData("structure9", fieldsAux); 1975 } 1976 { 1978 FieldsData fieldsDef[] = FieldsData.selectDefaultValue(pool, "", strTab); 1979 Vector <Object > v = new Vector <Object >(); 1980 int itable=0; 1981 for (int i=0;i< fieldsDef.length; i++) { 1982 Vector <Object > vecParametros = new Vector <Object >(); 1983 if (fieldsDef[i].defaultvalue.startsWith("@SQL=")) { 1984 fieldsDef[i].defaultvalue = WadUtility.getSQLWadContext(fieldsDef[i].defaultvalue, vecParametros); 1985 StringBuffer parametros = new StringBuffer (); 1986 for (Enumeration e = vecParametros.elements() ; e.hasMoreElements() ;) { 1987 String paramsElement = (String )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 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 <Object > vecFields2 = new Vector <Object >(); 2013 Vector <Object > vecTables2 = new Vector <Object >(); 2014 Vector <Object > vecWhere2 = new Vector <Object >(); 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 strFields2 = new StringBuffer (); 2019 strFields2.append(" ( "); 2020 boolean boolFirst = true; 2021 for (Enumeration e = vecFields2.elements() ; e.hasMoreElements() ;) { 2022 String tableField = (String )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 fields = new StringBuffer (); 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 tableN = "AD_Image"; 2051 fieldsDef[i].name = fieldsDef[i].name; 2052 Vector <Object > vecTables2 = new Vector <Object >(); 2053 Vector <Object > vecWhere2 = new Vector <Object >(); 2054 vecTables2.addElement(tableN + " table1"); 2055 StringBuffer strFields2 = new StringBuffer (); 2056 strFields2.append(" ( table1.ImageURL ) AS ").append(fieldsDef[i].columnname); 2057 StringBuffer fields = new StringBuffer (); 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 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 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 strColumnName = FieldsData.columnIdentifier(pool, tableN); 2090 StringBuffer fields = new StringBuffer (); 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 { 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 <Object > vecParametros = new Vector <Object >(); 2107 fieldsAux[i].reference = fieldsAux[i].adProcessId + "_" + FormatUtilities.replace(fieldsAux[i].columnname); 2108 fieldsAux[i].defaultvalue = WadUtility.getSQLWadContext(fieldsAux[i].defaultvalue, vecParametros); 2109 StringBuffer parametros = new StringBuffer (); 2110 for (Enumeration e = vecParametros.elements() ; e.hasMoreElements() ;) { 2111 String paramsElement = (String )e.nextElement(); 2112 parametros.append("\n" + paramsElement); 2113 } 2114 fieldsAux[i].whereclause = parametros.toString(); 2115 } 2116 } 2117 xmlDocumentXsql.setData("structure16", fieldsAux); 2118 } 2119 { 2121 FieldsData fieldsDataUpdate[] = FieldsData.selectUpdatables(pool, strTab); 2122 for (int i=0;i< fieldsDataUpdate.length; i++) { 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 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 <Object > vecAux = new Vector <Object >(); 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 <Object > vecDDef = new Vector <Object >(); 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 strTab, FieldsData[] parentsFieldsData, Vector <Object > vecFields, String 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 <Object > vecReloads = new Vector <Object >(); 2231 Vector <Object > vecTotal = new Vector <Object >(); 2232 FieldsData[] result = null; 2233 for (int i=0;i<data.length;i++) { 2234 String 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")) { 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")) { 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 where = new StringBuffer (); 2251 Vector <Object > vecFields1 = new Vector <Object >(); 2252 Vector <Object > vecTables = new Vector <Object >(); 2253 Vector <Object > vecWhere = new Vector <Object >(); 2254 Vector <Object > vecParameters = new Vector <Object >(); 2255 Vector <Object > vecTableParameters = new Vector <Object >(); 2256 String 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")) { 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 table_Name = tableDir[0].name.substring(0,tableDir[0].name.length()-3); 2287 Vector <Object > vecFields1 = new Vector <Object >(); 2288 Vector <Object > vecTables = new Vector <Object >(); 2289 Vector <Object > vecWhere = new Vector <Object >(); 2290 Vector <Object > vecParameters = new Vector <Object >(); 2291 Vector <Object > vecTableParameters = new Vector <Object >(); 2292 String 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 strTab, String tabName, String keyColumnName) throws ServletException, IOException { 2330 log4j.debug("Procesig relation sort tab xml: " + strTab + ", " + tabName); 2331 String [] discard = {""}; 2332 if (parentsFieldsData==null || parentsFieldsData.length == 0) discard[0] = new String ("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 strTab, String tabName, String windowName, String keyColumnName, String tabNamePresentation, TabsData[] allTabs, String strProcess, String strDirectPrint, String strParentNameDescription, String WindowPathName, String strLanguage) throws ServletException, IOException { 2343 log4j.debug("Procesig relation sort tab html: " + strTab + ", " + tabName); 2344 XmlDocument xmlDocumentRHtml; 2345 String [] discard = new String [3]; 2346 if (strProcess.equals("")) { 2347 discard[0] = new String ("printButton"); 2348 } else { 2349 discard[0] = new String (""); 2350 } 2351 if (allTabs.length<=NUM_TABS) discard[1] = new String ("tabButton"); 2352 else discard[1] = new String (""); 2353 if (parentsFieldsData.length == 0) discard[2] = new String ("parent"); 2354 else discard[2] = new String (""); 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 strTab, String tabName, String keyColumnName, WADControl relationControl) throws ServletException, IOException { 2373 log4j.debug("Procesig relation xml: " + strTab + ", " + tabName); 2374 String [] discard = {""}; 2375 if (parentsFieldsData==null || parentsFieldsData.length == 0) discard[0] = new String ("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 strTab, String tabName, String keyColumnName, boolean isreadonly, String strParentNameDescription, WADControl control, boolean isTranslated, String adLanguage, String tabNamePresentation, String strTable) throws ServletException, IOException { 2387 log4j.debug("Procesig relation html" + (isTranslated?" translated":"") + ": " + strTab + ", " + tabName); 2388 String [] discard = new String [1]; 2389 if (parentsFieldsData.length == 0) discard[0] = new String ("parent"); 2390 else discard[0] = new String (""); 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 <String >(), 1)); 2405 xmlDocument.setParameter("importJS", getVectorElementsNotRepeated(control.getImport(), new Vector <String >(), 2)); 2406 StringBuffer script = new StringBuffer (); 2407 script.append(getVectorElementsNotRepeated(control.getJSCode(), new Vector <String >(), 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 getVectorElementsNotRepeated(Vector <String []> data, Vector <String > addedElements, int type) { 2419 if (addedElements==null) addedElements = new Vector <String >(); 2420 if (data==null) return ""; 2421 StringBuffer text = new StringBuffer (); 2422 for (int i=0;i<data.size();i++) { 2423 String [] 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 <String > data, String 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 aux = data.elementAt(i); 2442 if (aux.equalsIgnoreCase(value)) return true; 2443 } 2444 return false; 2445 } 2446 2447 private void processTabXmlEdition(File fileDir, String strTab, String tabName, String 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 htmlHidden = new StringBuffer (); 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 html = new StringBuffer (); 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 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 strTab, String tabName, String keyColumnName, String tabNamePresentation, String windowId, FieldsData[] parentsFieldsData, Vector <Object > vecFields, boolean isreadonly, String isSOTrx, String strTable, double pixelSize, String 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 <Object > vecDisplayLogic = new Vector <Object >(); 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 <Object >(), vecFields, windowId, new Vector <Object >()); 2490 } 2491 } 2492 Vector <Object > vecAuxiliar = new Vector <Object >(); 2493 StringBuffer htmlHidden = new StringBuffer (); 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 <Object > vecReloads = new Vector <Object >(); 2505 if (dataReload!=null && dataReload.length>0) { 2506 for (int z=0;z<dataReload.length;z++) { 2507 String 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 importsCSS = new Properties (); 2513 Properties importsJS = new Properties (); 2514 Properties javaScriptFunctions = new Properties (); 2515 StringBuffer displayLogicFunction = new StringBuffer (); 2516 StringBuffer validations = new StringBuffer (); 2517 StringBuffer onload = new StringBuffer (); 2518 StringBuffer html = new StringBuffer (); 2519 String 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 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 strText=""; 2540 if (strLanguage.equals("")) strText = EditionFieldsData.fieldGroupName(pool, strFieldGroup); 2541 else strText = EditionFieldsData.fieldGroupNameTrl(pool, strLanguage, strFieldGroup); 2542 String 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\"> </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 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 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 html.append("</td>\n"); 2600 if (columnType == COLUMN_1_OF_1 || columnType == COLUMN_2_OF_2) html.append("</tr>\n"); 2601 { 2603 Vector <String []> auxJavaScript = auxControl.getJSCode(); 2604 if (auxJavaScript!=null) { 2605 for (int j=0;j<auxJavaScript.size();j++) { 2606 String [] auxObj = auxJavaScript.elementAt(j); 2607 javaScriptFunctions.setProperty(auxObj[0], auxObj[1]); 2608 } 2609 } 2610 } { 2613 Vector <String []> auxCss = auxControl.getCSSImport(); 2614 if (auxCss!=null) { 2615 for (int j=0;j<auxCss.size();j++) { 2616 String [] auxObj = auxCss.elementAt(j); 2617 importsCSS.setProperty(auxObj[0], auxObj[1]); 2618 } 2619 } 2620 } { 2623 Vector <String []> auxJs = auxControl.getImport(); 2624 if (auxJs!=null) { 2625 for (int j=0;j<auxJs.size();j++) { 2626 String [] auxObj = auxJs.elementAt(j); 2627 importsJS.setProperty(auxObj[0], auxObj[1]); 2628 } 2629 } 2630 } 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 <Object >(), parentsFieldsData, vecAuxiliar, vecFields, windowId, new Vector <Object >(), isreadonly)); 2634 } 2635 } 2636 2637 xmlDocument.setParameter("hiddenControlDesign", htmlHidden.toString()); 2638 xmlDocument.setParameter("controlDesign", html.toString()); 2639 StringBuffer sbImportCSS = new StringBuffer (); 2640 for (Enumeration e = importsCSS.propertyNames();e.hasMoreElements();) { 2641 String _name = (String )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 sbImportJS = new StringBuffer (); 2646 boolean hasCalendar = false; 2647 boolean calendarInserted = false; 2648 boolean calendarLangInserted = false; 2649 for (Enumeration e = importsJS.propertyNames();e.hasMoreElements();) { 2650 String _name = (String )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 script = new StringBuffer (); 2661 for (Enumeration e = javaScriptFunctions.propertyNames();e.hasMoreElements();) { 2662 String _name = (String )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(" 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 2696 private void getSubTabs (Vector <Object > vec, String strTabParent, String strTabSelected, String 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 strWindowId, String strTabSelected, int level, int heightTabs, int incrTabs, String strLanguage) throws IOException, ServletException { 2708 TabsData[] aux=null; 2709 TabsData[] aux1=null; 2710 int mayor=0; 2711 Vector <Object > vec = new Vector <Object >(); 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 strTab, int level, int heightTabs, int incrTabs, int mayor) throws ServletException { 2728 String 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 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 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 tableInit, String name, String required, Vector <Object > vecFields, Vector <Object > vecTables, Vector <Object > vecWhere) throws ServletException{ 2763 int ilength = name.length(); 2764 String 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 tableInit, String name, String FilterName, String required, Vector <Object > vecFields, Vector <Object > vecTables, Vector <Object > vecWhere, int itable, String reference, String 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 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 fieldsAux = new StringBuffer (); 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 tableInit, String name, String required, Vector <Object > vecFields, Vector <Object > vecTables, Vector <Object > vecWhere, int itable, String reference, String referencevalue) throws ServletException{ 2809 itable++; 2810 int tableNum = itable; 2811 String 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 2872 public void createXmlEngine(String 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 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 strFileProperties) { 2942 Properties properties = new Properties (); 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 System.out.println("Uh oh, got an IOException error!"); 2954 e.printStackTrace(); 2955 } 2956 } 2957 2958} 2959 | Popular Tags |