From ad4965a141cf6723927d1e754b8c2e73b82c28bc Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 21 Feb 2007 06:31:33 +0000 Subject: [PATCH] * refactoring and cleanup of 2pack --- .../src/org/adempiere/pipo/CreateZipFile.java | 118 + base/src/org/adempiere/pipo/GenericPO.java | 117 + base/src/org/adempiere/pipo/PackIn.java | 235 ++ .../src/org/adempiere/pipo/PackInHandler.java | 3457 +++++++++++++++++ base/src/org/adempiere/pipo/PackOut.java | 2959 ++++++++++++++ base/src/org/adempiere/pipo/PackRoll.java | 536 +++ 6 files changed, 7422 insertions(+) create mode 100644 base/src/org/adempiere/pipo/CreateZipFile.java create mode 100644 base/src/org/adempiere/pipo/GenericPO.java create mode 100644 base/src/org/adempiere/pipo/PackIn.java create mode 100644 base/src/org/adempiere/pipo/PackInHandler.java create mode 100644 base/src/org/adempiere/pipo/PackOut.java create mode 100644 base/src/org/adempiere/pipo/PackRoll.java diff --git a/base/src/org/adempiere/pipo/CreateZipFile.java b/base/src/org/adempiere/pipo/CreateZipFile.java new file mode 100644 index 0000000000..666c00432a --- /dev/null +++ b/base/src/org/adempiere/pipo/CreateZipFile.java @@ -0,0 +1,118 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 Adempiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * + * Copyright (C) 2005 Robert Klein. robeklein@hotmail.com + * _____________________________________________ + *****************************************************************************/ +package org.adempiere.pipo; + + +import java.io.*; +import java.util.zip.*; +import java.util.*; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Target; +import org.apache.tools.ant.taskdefs.Zip; +import org.apache.tools.ant.taskdefs.GZip; +import org.apache.tools.ant.taskdefs.Tar; +import org.apache.tools.ant.taskdefs.Expand; +/** + * Compress package + * + * @author Rob Klein + * @version $Id: ImportFAJournal2.java,v 1.0 $ + * + */ +public class CreateZipFile { + + + /** + * Zip the srcFolder into the destFileZipFile. All the folder subtree of the src folder is added to the destZipFile + * archive. + * + * + * @param srcFolder File, the path of the srcFolder + * @param destZipFile File, the path of the destination zipFile. This file will be created or erased. + */ + static public void zipFolder(File srcFolder, File destZipFile, String includesdir) + { + Zip zipper = new Zip(); + zipper.setDestFile(destZipFile); + zipper.setBasedir(srcFolder); + zipper.setIncludes(includesdir); + zipper.setUpdate(true); + zipper.setCompress(true); + zipper.setCaseSensitive(false); + zipper.setFilesonly(false); + zipper.setTaskName("zip"); + zipper.setTaskType("zip"); + zipper.setProject(new Project()); + zipper.setOwningTarget(new Target()); + zipper.execute(); + System.out.println(destZipFile); + } + static public void tarFolder(File srcFolder, File destTarFile, String includesdir) + { + Tar tarer = new Tar(); + tarer.setDestFile(destTarFile); + tarer.setBasedir(srcFolder); + tarer.setIncludes(includesdir); + tarer.setCaseSensitive(false); + tarer.setTaskName("tar"); + tarer.setTaskType("tar"); + tarer.setProject(new Project()); + tarer.setOwningTarget(new Target()); + tarer.execute(); + } + static public void gzipFile(File srcFile, File destFile) + { + GZip GZiper = new GZip(); + GZiper.setDestfile(destFile); + GZiper.setSrc(srcFile); + GZiper.setTaskName("gzip"); + GZiper.setTaskType("gzip"); + GZiper.setProject(new Project()); + GZiper.setOwningTarget(new Target()); + GZiper.execute(); + } + static public void unpackFile(File zipFilepath, File destinationDir) + { + Expand Unzipper = new Expand(); + Unzipper.setDest(destinationDir); + Unzipper.setSrc(zipFilepath); + Unzipper.setTaskType ("unzip"); + Unzipper.setTaskName ("unzip"); + Unzipper.setProject(new Project()); + Unzipper.setOwningTarget(new Target()); + Unzipper.execute(); + } + static public String getParentDir(File zipFilepath) + { + String ParentDir=null; + try { + ZipFile zipFile = new ZipFile(zipFilepath); + Enumeration entries = zipFile.entries(); + ZipEntry entry = (ZipEntry)entries.nextElement(); + File tempfile = new File(entry.getName()); + while (tempfile.getParent()!=null) + tempfile = tempfile.getParentFile(); + return tempfile.getName(); + } catch (IOException ioe) { + System.err.println("Unhandled exception:"); + ioe.printStackTrace(); + return ""; + } + } + }// CreateZipFile + + diff --git a/base/src/org/adempiere/pipo/GenericPO.java b/base/src/org/adempiere/pipo/GenericPO.java new file mode 100644 index 0000000000..c331d0e263 --- /dev/null +++ b/base/src/org/adempiere/pipo/GenericPO.java @@ -0,0 +1,117 @@ +/******************************************************************************* + * Product: Adempiere ERP & CRM Smart Business Solution * Copyright (C) + * 1999-2006 Adempiere, Inc. All Rights Reserved. * This program is free + * software; you can redistribute it and/or modify it * under the terms version + * 2 of the GNU General Public License as published * by the Free Software + * Foundation. This program is distributed in the hope * that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied * warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General + * Public License for more details. * You should have received a copy of the GNU + * General Public License along * with this program; if not, write to the Free + * Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA. * + * + * Copyright (C) 2004 Marco LOMBARDO. lombardo@mayking.com Contributor(s): + * __________________________________________ + ******************************************************************************/ + +// ---------------------------------------------------------------------- +// Generic PO. +// Used to insert/update data from a adempieredata.xml file. +package org.adempiere.pipo; + +// import for GenericPO +import java.util.*; +import java.sql.*; +import java.math.*; +import org.compiere.util.*; +import org.compiere.model.*; + +public class GenericPO extends PO { + + // private Logger log = Logger.getCLogger(getClass()); + + /** Standard Constructor */ + public GenericPO(Properties ctx, int ID) { + super(ctx, ID, null, null); + } + + /** Load Constructor */ + public GenericPO(Properties ctx, ResultSet rs) { + super(ctx, 0, null, rs); + } + + public GenericPO(Properties ctx, int ID, String trxName) { + super(ctx, ID, trxName, null); + } + + public GenericPO(Properties ctx, ResultSet rs, String trxName) { + super(ctx, 0, trxName, rs); + } + + private int Table_ID = 0; + + /** Load Meta Data */ + protected POInfo initPO(Properties ctx) { + Table_ID = Integer.valueOf(ctx.getProperty("adempieredataTable_ID")) + .intValue(); + // log.info("Table_ID: "+Table_ID); + POInfo poi = POInfo.getPOInfo(ctx, Table_ID); + return poi; + } + + public String toString() { + StringBuffer sb = new StringBuffer("GenericPO[Table=").append( + "" + Table_ID + ",ID=").append(get_ID()).append("]"); + return sb.toString(); + } + + public static final int AD_ORGTRX_ID_AD_Reference_ID = 130; + + /** + * Set Trx Organization. Performing or initiating organization + */ + public void setAD_OrgTrx_ID(int AD_OrgTrx_ID) { + if (AD_OrgTrx_ID == 0) + set_Value("AD_OrgTrx_ID", null); + else + set_Value("AD_OrgTrx_ID", new Integer(AD_OrgTrx_ID)); + } + + /** + * Get Trx Organization. Performing or initiating organization + */ + public int getAD_OrgTrx_ID() { + Integer ii = (Integer) get_Value("AD_OrgTrx_ID"); + if (ii == null) + return 0; + return ii.intValue(); + } + + // setValue + public void setValue(String columnName, Object value) { + set_Value(columnName, value); + } + + // setValueNoCheck + public void setValueNoCheck(String columnName, Object value) { + set_ValueNoCheck(columnName, value); + } + + // setValue + public void setValue(int index, Object value) { + set_Value(index, value); + } + + public void copyRS(PO From, PO To) { + copyValues(From, To); + } + + @Override + protected int get_AccessLevel() { + // TODO Auto-generated method stub + return 0; + } + +} // GenericPO + diff --git a/base/src/org/adempiere/pipo/PackIn.java b/base/src/org/adempiere/pipo/PackIn.java new file mode 100644 index 0000000000..ab38f2e455 --- /dev/null +++ b/base/src/org/adempiere/pipo/PackIn.java @@ -0,0 +1,235 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 Adempiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * + * Copyright (C) 2005 Robert KLEIN. robeklein@hotmail.com + * + *****************************************************************************/ + +package org.adempiere.pipo; + +import java.io.File; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.parsers.SAXParser; +import org.compiere.process.ProcessInfoParameter; +import org.compiere.process.SvrProcess; +import org.compiere.util.CLogger; +import org.compiere.db.CConnection; +import org.compiere.model.*; +import org.compiere.util.CLogMgt; +import org.compiere.util.DB; +import org.compiere.util.Env; +import org.compiere.util.Ini; +import org.compiere.util.Util; + +import java.util.Properties; +import java.util.logging.*; + +/** + * IntPackIn Tool. + * + * @author: Robert KLEIN. robeklein@hotmail.com + */ +public class PackIn extends SvrProcess { + + /** Logger */ + private CLogger log = CLogger.getCLogger("PackIn"); + public static String m_UpdateMode = "false"; + public static String m_Database = "Oracle"; + public static String m_Package_Dir = null; + public int p_PackIn_ID = 0; + + protected void prepare() { + p_PackIn_ID = getRecord_ID(); + ProcessInfoParameter[] para = getParameter(); + for (int i = 0; i < para.length; i++) { + } + } // prepare + + /** + * Uses PackInHandler to update AD. + * + * @param fileName + * xml file to read + * @return status message + */ + public String importXML(String fileName, Properties ctx, String trxName) { + log.info("importXML:" + fileName); + File in = new File(fileName); + if (!in.exists()) { + String msg = "File does not exist: " + fileName; + log.info("importXML:" + msg); + return msg; + } + try { + log.info("starting"); + System.setProperty("javax.xml.parsers.SAXParserFactory", + "org.apache.xerces.jaxp.SAXParserFactoryImpl"); + PackInHandler handler = new PackInHandler(); + handler.set_TrxName(trxName); + handler.setCtx(ctx); + SAXParserFactory factory = SAXParserFactory.newInstance(); + SAXParser parser = factory.newSAXParser(); + String msg = "Start Parser"; + log.info(msg); + parser.parse(in, handler); + msg = "End Parser"; + log.info(msg); + return "OK."; + } catch (Exception e) { + log.log(Level.SEVERE, "importXML:", e); + return e.toString(); + } + } + + /** + * Doit + * + * @return "" + * + */ + protected String doIt() { + + X_AD_Package_Imp_Proc adPackageImp = new X_AD_Package_Imp_Proc(getCtx(), + p_PackIn_ID, null); + + // Create Target directory if required + String fileSeparator = null; + File tempfile = new File(""); + fileSeparator = tempfile.separator; + File targetDir = new File(adPackageImp.getAD_Package_Dir() + fileSeparator + + "packages"); + + if (!targetDir.exists()) { + boolean success = (new File(adPackageImp.getAD_Package_Dir() + + fileSeparator + "packages")).mkdirs(); + if (!success) { + log.info("Target directory creation failed"); + } + } + + // Unzip package + File zipFilepath = new File(adPackageImp.getAD_Package_Source()); + log.info("zipFilepath->" + zipFilepath); + String PackageName = CreateZipFile.getParentDir(zipFilepath); + CreateZipFile.unpackFile(zipFilepath, targetDir); + + String dict_file = adPackageImp.getAD_Package_Dir() + fileSeparator + + "packages" + fileSeparator + PackageName + fileSeparator + + "dict" + fileSeparator + "PackOut.xml"; + log.info("dict file->" + dict_file); + PackIn impXML = new PackIn(); + + if (adPackageImp.isAD_Override_Dict() == true) + impXML.m_UpdateMode = "true"; + else + impXML.m_UpdateMode = "false"; + + impXML.m_Package_Dir = adPackageImp.getAD_Package_Dir() + fileSeparator + + "packages" + fileSeparator + PackageName + fileSeparator; + if (DB.isOracle()) + impXML.m_Database = "Oracle"; + else if (DB.isPostgreSQL()) + impXML.m_Database = "PostgreSQL"; + + // call XML Handler + impXML.importXML(dict_file, getCtx(), get_TrxName()); + + // Generate Model Classes + // globalqss - don't call Generate Model must be done manual + // String args[] = + // {IntPackIn.getAD_Package_Dir()+"/dbPort/src/org/compiere/model/", + // "org.compiere.model","'U'"}; + // org.compiere.util.GenerateModel.main(args) ; + + return "Finish Process"; + } // doIt + + /*************************************************************************** + * + * @param args + * XMLfile host port db username password + */ + public static void main(String[] args) { + if (args.length < 1) { + System.out + .println("Please give the file name to read as first parameter."); + System.exit(1); + } + + String file = args[0]; + org.compiere.Adempiere.startup(true); + + // globalqss - added argument 8 to generate system sequences + if (args.length > 8 && args[8].equals(Ini.P_ADEMPIERESYS)) { + System.out.println("**** WARNING: Working with system sequences " + + Ini.P_ADEMPIERESYS + " ****"); + Ini.setProperty(Ini.P_ADEMPIERESYS, true); + } + + PackIn impXML = new PackIn(); + // org.compiere.Compiere.startupEnvironment(true); + // Force connection if there are enough parameters. Else we work with + // Compiere.properties + if (args.length >= 6) { + // CConnection cc = CConnection.get("PostgreSQL", args[1], + // Integer.valueOf(args[2]).intValue(), args[5], args[3], args[4]); + CConnection cc = CConnection.get(); + // System.out.println("DB Connect String1:"+cc.getDbName()); + impXML.m_Database = cc.getType(); + DB.setDBTarget(cc); + } + + // Level.OFF, Level.SEVERE, Level.WARNING, Level.INFO, + // Level.CONFIG, Level.FINE, Level.FINER, Level.FINEST, Level.ALL + + Level logLevel = Level.FINER; + + switch (Integer.parseInt(args[6])) { + case 1: + logLevel = Level.OFF; + break; + case 2: + logLevel = Level.SEVERE; + break; + case 3: + logLevel = Level.WARNING; + break; + case 4: + logLevel = Level.INFO; + break; + case 5: + logLevel = Level.CONFIG; + break; + case 6: + logLevel = Level.FINE; + break; + case 7: + logLevel = Level.FINER; + break; + case 8: + logLevel = Level.FINEST; + break; + case 9: + logLevel = Level.ALL; + break; + } + CLogMgt.setLevel(logLevel); + CLogMgt.setLoggerLevel(logLevel, null); + + // impXML.setUpdateMode(args[7]); + impXML.m_UpdateMode = args[7]; + impXML.importXML(file, Env.getCtx(), null); + + System.exit(0); + } // main +} // PackIn diff --git a/base/src/org/adempiere/pipo/PackInHandler.java b/base/src/org/adempiere/pipo/PackInHandler.java new file mode 100644 index 0000000000..4fc32d17ec --- /dev/null +++ b/base/src/org/adempiere/pipo/PackInHandler.java @@ -0,0 +1,3457 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 Adempiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * + * Copyright (C) 2004 Marco LOMBARDO. lombardo@mayking.com + * Contributor(s): Robert KLEIN. robeklein@hotmail.com + *_____________________________________________ + *****************************************************************************/ + +package org.adempiere.pipo; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Properties; +import java.sql.*; +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.Level; + +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.sax.TransformerHandler; +import javax.xml.transform.sax.SAXTransformerFactory; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; + +import org.xml.sax.SAXException; +import org.xml.sax.helpers.AttributesImpl; +import org.compiere.Adempiere; +import org.compiere.model.*; +import org.compiere.util.AdempiereUserError; +import org.compiere.util.DB; +import org.compiere.util.Env; +import org.compiere.util.CLogger; +import org.compiere.util.ValueNamePair; +import org.xml.sax.Attributes; + +import org.xml.sax.helpers.DefaultHandler; + + + +/** + * SAX Handler for parsing XML description of the GUI. + * + * @author Marco LOMBARDO, lombardo@mayking.com + * @author Robert KLEIN, robeklein@hotmail + * + */ +public class PackInHandler extends DefaultHandler { + + /** + * PackInHandler Handler + */ + public PackInHandler () { + + } // PackInHandler + + private X_AD_Menu m_Menu; // MMenu not used to avoid auto creation of AD_TREENODEMM + private MWindow m_Window = null; + private MPreference m_Preference = null; + private MProcess m_Process = null; + private X_AD_Process_Para m_Process_para = null; + private MTask m_Task = null; + private MForm m_Form = null; + private X_AD_Workbench m_Workbench = null; + private X_AD_WorkbenchWindow m_Workbenchwindow = null; + private X_AD_Reference m_Reference = null; + private X_AD_Ref_List m_Ref_List = null; + private X_AD_PrintFormatItem m_PrintFormatItem = null; + private X_AD_PrintFormat m_PrintFormat = null; + private X_AD_ImpFormat m_ImpFormat = null; + private X_AD_ImpFormat_Row m_ImpFormat_row = null; + private X_AD_ReportView m_Reportview = null; + private X_AD_ReportView_Col m_Reportview_Col = null; + private MTable m_Table = null; + private MRole m_Role = null; + private MColumn m_Column = null; + private MTab m_Tab; + private MField m_Field = null; + private String d_menu[][] = new String [100][16]; + private int menu_seq=0; + /** Original Values */ + public Object[] m_oldValue = null; + /** New Valies */ + public Object[] m_newValue = null; + /** Set this if you want to update Dictionary */ + public String m_UpdateMode = "true"; + String packageDirectory = null; + public String m_DatabaseType = "Oracle"; + private boolean adempiereAD = false; + private boolean adempieredata = false; + private String d_tablename = null; + private String d_rowname = null; + private GenericPO genericPO = null; + private HashMap defaults = new HashMap(); + StringBuffer sqlB = null; + private int m_AD_Client_ID = 0; + int AD_Package_Imp_ID=0; + int AD_Package_Imp_Inst_ID=0; + int AD_Backup_ID =0; + private CLogger log = CLogger.getCLogger("PackIn"); + OutputStream fw_document = null; + private TransformerHandler hd_documemt = null; + private AttributesImpl attsOut = null; + private StreamResult streamResult_document = null; + private SAXTransformerFactory tf_document = null; + private Transformer serializer_document = null; + private int Start_Doc = 0; + private String Object_Status = null; + private String logDate = null; + private String PK_Status = "Installing"; + String fileDate = null; + boolean force = true; // This is set to true if the "-f" option + // is specified on the command line. + String fileSeperator=null; + // transaction name + private String m_trxName = null; + private Properties m_ctx = null; + + + /** + * Receive notification of the start of an element. + * + * @param uri namespace + * @param localName simple name + * @param qName qualified name + * @param atts attributes + * @throws org.xml.sax.SAXException + */ + public void startElement (String uri, String localName, String qName, Attributes atts) + throws org.xml.sax.SAXException { + +// Create the package log + if (Start_Doc==0){ + PackIn pack = new PackIn(); + packageDirectory = pack.m_Package_Dir; + m_UpdateMode = pack.m_UpdateMode; + m_DatabaseType = pack.m_Database; + File file = new File(""); + fileSeperator = file.separator; + SimpleDateFormat formatter_file = new SimpleDateFormat("yyMMddHHmmssZ"); + SimpleDateFormat formatter_log = new SimpleDateFormat("MM/dd/yy HH:mm:ss"); + Date today = new Date(); + fileDate = formatter_file.format(today); + logDate = formatter_log.format(today); + + String file_document = packageDirectory+fileSeperator+"doc"+fileSeperator+"Importlog_"+fileDate+".xml"; + log.info("file_document="+file_document); + try { + fw_document = new FileOutputStream (file_document, false); + } catch (FileNotFoundException e1) { + log.info ("startElement:"+e1); + } + streamResult_document = new StreamResult(fw_document); + tf_document = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); + + try { + hd_documemt = tf_document.newTransformerHandler(); + } catch (TransformerConfigurationException e2) { + log.info ("startElement:"+e2); + } + serializer_document = hd_documemt.getTransformer(); + serializer_document.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1"); + serializer_document.setOutputProperty(OutputKeys.INDENT,"yes"); + hd_documemt.setResult(streamResult_document); + hd_documemt.startDocument(); + attsOut = new AttributesImpl(); + attsOut.clear(); + hd_documemt.processingInstruction("xml-stylesheet","type=\"text/css\" href=\"adempiereDocument.css\""); + Start_Doc=1; + } + // Check namespace. + String elementValue = null; + if ("".equals (uri)) + elementValue = qName; + else + elementValue = uri + localName; + + // adempiereAD. + if (elementValue.equals("adempiereAD")) { + log.info("adempiereAD updateMode="+m_UpdateMode); + adempiereAD = true; + //Start package log + hd_documemt.startElement("","","adempiereDocument",attsOut); + hd_documemt.startElement("","","header",attsOut); + hd_documemt.characters((atts.getValue("Name")+" Install Log").toCharArray(),0,(atts.getValue("Name")+" Install Log").length()); + hd_documemt.endElement("","","header"); + hd_documemt.startElement("","","H3",attsOut); + hd_documemt.characters(("Package Name:" ).toCharArray(),0,("Package Name:" ).length()); + hd_documemt.endElement("","","H3"); + hd_documemt.startElement("","","packagename4log",attsOut); + hd_documemt.characters(atts.getValue("Name").toCharArray(),0,atts.getValue("Name").length()); + hd_documemt.endElement("","","packagename4log"); + hd_documemt.startElement("","","H3",attsOut); + hd_documemt.characters(("Version:" ).toCharArray(),0,("Version:" ).length()); + hd_documemt.endElement("","","H3"); + hd_documemt.startElement("","","Version",attsOut); + hd_documemt.characters(atts.getValue("Version").toCharArray(),0,atts.getValue("Version").length()); + hd_documemt.endElement("","","Version"); + hd_documemt.startElement("","","H3",attsOut); + hd_documemt.characters(("Package Install Date:" ).toCharArray(),0,("Package Install Date:" ).length()); + hd_documemt.endElement("","","H3"); + hd_documemt.startElement("","","installDate",attsOut); + hd_documemt.characters(logDate.toCharArray(),0,logDate.length()); + hd_documemt.endElement("","","installDate"); + hd_documemt.startElement("","","H3",attsOut); + hd_documemt.characters(("Min. Compiere Version:" ).toCharArray(),0,("Min. Compiere Version:" ).length()); + hd_documemt.endElement("","","H3"); + hd_documemt.startElement("","","CompVer",attsOut); + hd_documemt.characters(atts.getValue("CompVer").toCharArray(),0,atts.getValue("CompVer").length()); + hd_documemt.endElement("","","CompVer"); + hd_documemt.startElement("","","H3",attsOut); + hd_documemt.characters(("Min. Database Date:" ).toCharArray(),0,("Min. Database Date:" ).length()); + hd_documemt.endElement("","","H3"); + hd_documemt.startElement("","","DataBase",attsOut); + hd_documemt.characters(atts.getValue("DataBase").toCharArray(),0,atts.getValue("DataBase").length()); + hd_documemt.endElement("","","DataBase"); + + createImp_Sum_table ("AD_Package_Imp_Backup"); + createImp_Sum_table ("AD_Package_Imp"); + createImp_Sum_table ("AD_Package_Imp_Inst"); + createImp_Sum_table ("AD_Package_Imp_Detail"); + + // Update Summary Package History Table + String sql2 = "SELECT AD_PACKAGE_IMP_INST_ID FROM AD_PACKAGE_IMP_INST WHERE NAME =" + + "'" + atts.getValue("Name") + + "' AND PK_VERSION ='" + atts.getValue("Version") + "'"; + int PK_preInstalled = DB.getSQLValue(m_trxName,sql2); + + AD_Package_Imp_ID = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Package_Imp", null); + + sqlB = new StringBuffer ("Insert INTO AD_Package_Imp" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_PACKAGE_IMP_ID, RELEASENO, PK_VERSION, VERSION " + + ", DESCRIPTION, NAME, CREATOR" + + ", CREATORCONTACT, CREATEDDATE,UPDATEDDATE,PK_STATUS)" + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + AD_Package_Imp_ID + + ", '" + atts.getValue("CompVer") + + "', '" + atts.getValue("Version") + + "', '" + atts.getValue("DataBase") + + "', '" + atts.getValue("Description").replaceAll("'","''").replaceAll(",","") + + "', '" + atts.getValue("Name") + + "', '" + atts.getValue("creator") + + "', '" + atts.getValue("creatorcontact") + + "', '" + atts.getValue("createddate") + + "', '" + atts.getValue("updateddate") + + "', '" + PK_Status + +"')"); + Env.getAD_User_ID(m_ctx); + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to Package import failed"); + + if ( PK_preInstalled == -1){ + AD_Package_Imp_Inst_ID = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Package_Imp_Inst", null); + + //Insert Package into package install log + sqlB = new StringBuffer ("Insert INTO AD_Package_Imp_Inst" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_PACKAGE_IMP_INST_ID, RELEASENO, PK_VERSION, VERSION " + + ", DESCRIPTION, NAME, CREATOR" + + ", CREATORCONTACT, CREATEDDATE,UPDATEDDATE,PK_STATUS)" + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + AD_Package_Imp_Inst_ID + + ", '" + atts.getValue("CompVer") + + "', '" + atts.getValue("Version") + + "', '" + atts.getValue("DataBase") + + "', '" + atts.getValue("Description").replaceAll("'","''").replaceAll(",","") + + "', '" + atts.getValue("Name") + + "', '" + atts.getValue("creator") + + "', '" + atts.getValue("creatorcontact") + + "', '" + atts.getValue("createddate") + + "', '" + atts.getValue("updateddate") + + "', '" + PK_Status + +"')"); + + Env.getAD_User_ID(m_ctx); + no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to Package List import failed"); + } + else{ + //Update package list with package status + AD_Package_Imp_Inst_ID = PK_preInstalled; + sqlB = new StringBuffer ("UPDATE AD_Package_Imp_Inst " + + "SET PK_Status = '" + PK_Status + + "' WHERE AD_Package_Imp_Inst_ID = "+AD_Package_Imp_Inst_ID); + no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to package summary failed"); + } + + } + // adempieredata element. + // some fields i.e. "table" are commons. + else if (elementValue.equals("adempieredata") || elementValue.equals("data")) { + log.info(elementValue); + adempieredata = true; + if (atts.getValue("clientname") != null) { + m_AD_Client_ID = get_ID("AD_Client", atts.getValue("clientname")); + Env.setContext(m_ctx, "AD_Client_ID", m_AD_Client_ID); + log.info("adempieredata: client set to "+m_AD_Client_ID+" "+atts.getValue("clientname")); + } + } + else if (elementValue.equals("menu")) { + log.info(elementValue+" "+atts.getValue("ADMenuNameID")); + //String entitytype = atts.getValue("EntityType"); + //if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode == true ) { + + d_menu[menu_seq][0] = atts.getValue("ADMenuNameID"); + d_menu[menu_seq][1] = atts.getValue("ADWindowNameID"); + d_menu[menu_seq][2] = atts.getValue("ADProcessNameID"); + d_menu[menu_seq][3] = atts.getValue("ADFormNameID"); + d_menu[menu_seq][4] = atts.getValue("ADTaskNameID"); + d_menu[menu_seq][5] = atts.getValue("ADWorkbenchNameID"); + d_menu[menu_seq][6] = atts.getValue("ADWorkflowNameID"); + d_menu[menu_seq][7] = (atts.getValue("Action") != null ? atts.getValue("Action") : " "); + d_menu[menu_seq][8] = atts.getValue("Description").replaceAll("'","''").replaceAll(",",""); + d_menu[menu_seq][9] = atts.getValue("EntityType"); + d_menu[menu_seq][10] = atts.getValue("isReadOnly"); + d_menu[menu_seq][11] = atts.getValue("isSOTrx"); + d_menu[menu_seq][12] = atts.getValue("isSummary"); + d_menu[menu_seq][13] = atts.getValue("ADParentMenuNameID"); + d_menu[menu_seq][14] = atts.getValue("ADParentSeqno"); + d_menu[menu_seq][15] = atts.getValue("isActive"); + menu_seq=menu_seq+1; + //} + } + // window element. + else if (elementValue.equals("window")) { + log.info(elementValue+" "+atts.getValue("Name")); + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + String name = atts.getValue("Name"); + int id= get_ID("AD_Window", name); + m_Window = new MWindow(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Window",m_Window); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_Window.setName(name); + name = atts.getValue("ADImageNameID"); + id = get_IDWithColumn("AD_Image", "Name", name); + m_Window.setAD_Image_ID(id); + name = atts.getValue("ADColorNameID"); + id = get_IDWithColumn("AD_Color", "Name", name); + m_Window.setAD_Color_ID(id); + m_Window.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Window.setEntityType(atts.getValue("EntityType")); + m_Window.setHelp (atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Window.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Window.setIsBetaFunctionality(Boolean.valueOf(atts.getValue("isBetaFunctionality")).booleanValue()); + m_Window.setIsDefault(Boolean.valueOf(atts.getValue("isDefault")).booleanValue()); + m_Window.setIsSOTrx(Boolean.valueOf(atts.getValue("isSOTrx")).booleanValue()); + m_Window.setName (atts.getValue("Name")); + m_Window.setProcessing (false); + //m_Window.setWinHeight(Integer.parseInt(atts.getValue("WinHeight"))); + //m_Window.setWinWidth (Integer.parseInt(atts.getValue("WinWidth"))); + m_Window.setWindowType (atts.getValue("WindowType")); + m_Window.save(m_trxName); + if (m_Window.save(m_trxName) == true){ + record_log (1, m_Window.getName(),"Window", m_Window.get_ID(),AD_Backup_ID, Object_Status,"AD_Window",get_IDWithColumn("AD_Table", "TableName", "AD_Window")); + } + else{ + record_log (0, m_Window.getName(),"Window", m_Window.get_ID(),AD_Backup_ID, Object_Status,"AD_Window",get_IDWithColumn("AD_Table", "TableName", "AD_Window")); + } + } + } +// preference element. + else if (elementValue.equals("preference")) { + log.info(elementValue); + //TODO Add User_ID + int windowid = get_ID("AD_Window", atts.getValue("ADWindowNameID")); + sqlB = new StringBuffer ("select AD_Preference_ID from AD_Preference where " + + " Attribute = '"+atts.getValue("Attribute") +"'" + + " and AD_Window_ID = ?"); + int id = DB.getSQLValue(m_trxName, sqlB.toString (), windowid); + m_Preference = new MPreference(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Preference",m_Preference); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + sqlB = null; + m_Preference.setAD_Window_ID(windowid); + m_Preference.setAttribute(atts.getValue("Attribute")); + m_Preference.setValue(atts.getValue("Value")); + if (m_Preference.save(m_trxName) == true){ + record_log (1, m_Preference.getAttribute(),"Preference", m_Preference.get_ID(),AD_Backup_ID, Object_Status,"AD_Preference",get_IDWithColumn("AD_Table", "TableName", "AD_Preference")); + } + else{ + record_log (0, m_Preference.getAttribute(),"Preference", m_Preference.get_ID(),AD_Backup_ID, Object_Status,"AD_Preference",get_IDWithColumn("AD_Table", "TableName", "AD_Preference")); + } + } + // tab element. + else if (elementValue.equals("tab")) { + log.info(elementValue+" "+atts.getValue("ADTabNameID")); + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0) { + + String name = atts.getValue("ADTabNameID"); + int tableid = get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID")); + int windowid = get_ID("AD_Window", atts.getValue("ADWindowNameID")); + sqlB = new StringBuffer ("select AD_Tab_ID from AD_Tab where AD_Window_ID = " + windowid + + " and Name = '"+name +"'" + + " and AD_Table_ID = ?"); + + int id = DB.getSQLValue(m_trxName, sqlB.toString (), tableid); + m_Tab = new MTab(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Tab",m_Tab); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + sqlB = null; + m_Tab.setName(name); + id = 0; + if (atts.getValue("ADColumnSortYesNoNameID")!= null){ + name = atts.getValue("ADColumnSortYesNoNameID"); + id = get_IDWithColumn("AD_Column", "Name", name); + m_Tab.setAD_ColumnSortYesNo_ID(id); + } + if (atts.getValue("ADColumnSortOrderNameID")!= null){ + name = atts.getValue("ADColumnSortOrderNameID"); + id = get_IDWithColumn("AD_Column", "Name", name); + m_Tab.setAD_ColumnSortOrder_ID(id); + } + if (atts.getValue("ADImageNameID")!= null){ + name = atts.getValue("ADImageNameID"); + id = get_IDWithColumn("AD_Image", "Name", name); + m_Tab.setAD_Image_ID(id); + } + if (atts.getValue("ADProcessNameID")!= null){ + name = atts.getValue("ADProcessNameID"); + id = get_IDWithColumn("AD_Process", "Name", name); + m_Tab.setAD_Process_ID(id); + } + if (atts.getValue("ADTableNameID")!= null){ + name = atts.getValue("ADTableNameID"); + id = get_IDWithColumn("AD_Table", "TableName", name); + m_Tab.setAD_Table_ID(id); + } + if (atts.getValue("ADColumnNameID")!= null){ + name = atts.getValue("ADColumnNameID"); + id = get_IDWithMasterAndColumn ("AD_Column","Name", atts.getValue("ADColumnNameID"), "AD_Table", get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID"))); + m_Tab.setAD_Column_ID(id); + } + if (atts.getValue("ADWindowNameID")!= null){ + name = atts.getValue("ADWindowNameID"); + id = get_IDWithColumn("AD_Window", "Name", name); + m_Tab.setAD_Window_ID(id); + } + if (atts.getValue("IncludedTabNameID")!= null){ + name = atts.getValue("IncludedTabNameID"); + id = get_IDWithColumn("AD_Tab", "Name", name); + m_Tab.setIncluded_Tab_ID(id); + } + m_Tab.setCommitWarning(atts.getValue("CommitWarning")); + m_Tab.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Tab.setEntityType (atts.getValue("EntityType")); + m_Tab.setHasTree(Boolean.valueOf(atts.getValue("isHasTree")).booleanValue()); + m_Tab.setHelp (atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Tab.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Tab.setImportFields (atts.getValue("ImportFields")); + m_Tab.setIsInfoTab (Boolean.valueOf(atts.getValue("isInfoTab")).booleanValue()); + m_Tab.setIsReadOnly (Boolean.valueOf(atts.getValue("isReadOnly")).booleanValue()); + m_Tab.setIsSingleRow (Boolean.valueOf(atts.getValue("isSingleRow")).booleanValue()); + m_Tab.setIsSortTab (Boolean.valueOf(atts.getValue("isSortTab")).booleanValue()); + m_Tab.setIsTranslationTab (Boolean.valueOf(atts.getValue("IsTranslationTab")).booleanValue()); + m_Tab.setName (atts.getValue("Name")); + m_Tab.setOrderByClause (atts.getValue("OrderByClause")); + m_Tab.setProcessing(false); + m_Tab.setSeqNo (Integer.parseInt(atts.getValue("SeqNo"))); + m_Tab.setTabLevel (Integer.parseInt(atts.getValue("TabLevel"))); + m_Tab.setWhereClause (atts.getValue("WhereClause")); + if (m_Tab.save(m_trxName) == true){ + record_log (1, m_Tab.getName(),"Tab", m_Tab.get_ID(),AD_Backup_ID, Object_Status,"AD_Tab",get_IDWithColumn("AD_Table", "TableName", "AD_Tab")); + } else { + record_log (0, m_Tab.getName(),"Tab", m_Tab.get_ID(),AD_Backup_ID, Object_Status,"AD_Tab",get_IDWithColumn("AD_Table", "TableName", "AD_Tab")); + } + + } + } + // field element. + else if (elementValue.equals("field")) { + log.info(elementValue+" "+atts.getValue("Name")); + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0) { + String name = atts.getValue("Name"); + String tabname = atts.getValue("ADTabNameID"); + String colname = atts.getValue("ADColumnNameID"); +// log.info("Column Name ->"+colname); +// log.info("Database Name ->"+m_DatabaseType); + /** + //Adjust for difference between Oracle and PostgreSql DataTypes + if (m_DatabaseType.equals("Oracle")){ + if (colname.equals("TIMESTAMP")) + colname = "Date"; + else if (colname.equals("TIMESTAMP+Time")) + colname = "Date+Time"; + else if (colname.equals("NUMERIC")) + colname = "Number";} + else if (m_DatabaseType.equals("Sybase")){ + if (colname.equals("TIMESTAMP")) + colname = "Date"; + else if (colname.equals("TIMESTAMP+Time")) + colname = "Date+Time"; + else if (colname.equals("NUMERIC")) + colname = "Number";} + else if (m_DatabaseType.equals("PostgreSQL")){ + log.info("Before Column Name ->"+colname); + if (colname.equals("Date")) + colname = "TIMESTAMP"; + else if (colname.equals("Date+Time")) + colname = "TIMESTAMP+Time"; + else if (colname.equals("Number")) + colname = "NUMERIC"; + log.info("After Column Name ->"+colname); } + **/ + int tableid = get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID")); + int windowid = get_ID("AD_Window", atts.getValue("ADWindowNameID")); + //log.info("Column Name ->"+colname); + int columnid = get_IDWithMasterAndColumn ("AD_Column","ColumnName", colname, "AD_Table", tableid); + //log.info("ColumnID->"+columnid); + sqlB = new StringBuffer ("select AD_Tab_ID from AD_Tab where AD_Window_ID = " + windowid + + " and Name = '"+tabname +"'" + + " and AD_Table_ID = ?"); + int tabid = DB.getSQLValue(m_trxName, sqlB.toString (), tableid); + + if (tabid > 0 ) + { + + sqlB = new StringBuffer ("select AD_Field_ID from AD_Field where AD_Column_ID = "+columnid + + " and AD_Tab_ID = ?"); + int id = DB.getSQLValue(m_trxName, sqlB.toString (), tabid); + m_Field = new MField(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Field",m_Field); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_Field.setName(atts.getValue("Name")); + m_Field.setAD_Column_ID(columnid); + name = atts.getValue("ADFieldGroupNameID"); + id = get_IDWithColumn("AD_FieldGroup", "Name", name); + m_Field.setAD_FieldGroup_ID(id); + m_Field.setAD_Tab_ID(tabid); + m_Field.setEntityType (atts.getValue("EntityType")); + m_Field.setIsSameLine(Boolean.valueOf(atts.getValue("SameLine")).booleanValue()); + m_Field.setIsCentrallyMaintained(Boolean.valueOf(atts.getValue("isCentrallyMaintained")).booleanValue()); + m_Field.setIsDisplayed(Boolean.valueOf(atts.getValue("Displayed")).booleanValue()); + //m_Field.setIsEncrypted(Boolean.valueOf(atts.getValue("isEncrypted")).booleanValue()); + m_Field.setIsFieldOnly(Boolean.valueOf(atts.getValue("isFieldOnly")).booleanValue()); + m_Field.setIsHeading(Boolean.valueOf(atts.getValue("isHeading")).booleanValue()); + m_Field.setIsReadOnly(Boolean.valueOf(atts.getValue("isReadOnly")).booleanValue()); + m_Field.setSeqNo(Integer.parseInt(atts.getValue("SeqNo"))); + m_Field.setDisplayLength(Integer.parseInt(atts.getValue("DisplayLength"))); + m_Field.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Field.setHelp(atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Field.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Field.setSortNo(new BigDecimal(atts.getValue("SortNo"))); + m_Field.setDisplayLogic(atts.getValue("DisplayLogic")); + if (m_Field.save(m_trxName) == true){ + record_log (1, m_Field.getName(),"Field", m_Field.get_ID(),AD_Backup_ID, Object_Status,"AD_Field",get_IDWithColumn("AD_Table", "TableName", "AD_Field")); + } + else{ + record_log (0, m_Field.getName(),"Field", m_Field.get_ID(),AD_Backup_ID, Object_Status,"AD_Field",get_IDWithColumn("AD_Table", "TableName", "AD_Field")); + } + } + else + log.severe("Tab do not exist to field Name: "+ name); + + } + } + // process element. + else if (elementValue.equals("process")) { + log.info(elementValue+" "+atts.getValue("Name")); + int id = 0; + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + String name = atts.getValue("Name"); + + + // Get New process. + id=get_ID("AD_Process", name); + + if (id > 0){ + m_Process = new MProcess(m_ctx, id, m_trxName); + AD_Backup_ID = copyRecord("AD_Process",m_Process); + Object_Status = "Update"; + } + else{ + m_Process = new MProcess(m_ctx, id, m_trxName); + id = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Process", m_trxName); + m_Process.setAD_Process_ID(id); + Object_Status = "New"; + AD_Backup_ID =0; + } + m_Process.setName(name); + name = atts.getValue("ADWorkflowNameID"); + id = get_IDWithColumn("AD_Workflow", "Name", name); + + m_Process.setAD_Workflow_ID(id); + name = atts.getValue("ADProcessNameID"); + + name = atts.getValue("ADPrintFormatNameID"); + id = get_IDWithColumn("AD_PrintFormat", "Name", name); + m_Process.setAD_PrintFormat_ID(id); + name = atts.getValue("ADReportViewNameID"); + id = get_IDWithColumn("AD_ReportView", "Name", name); + m_Process.setAD_ReportView_ID(id); + m_Process.setAccessLevel(atts.getValue("AccessLevel")); + m_Process.setClassname(atts.getValue("Classname")); + m_Process.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Process.setEntityType(atts.getValue("EntityType")); + m_Process.setHelp(atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Process.setIsBetaFunctionality(Boolean.valueOf(atts.getValue("isBetaFunctionality")).booleanValue()); + m_Process.setIsDirectPrint(Boolean.valueOf(atts.getValue("isDirectPrint")).booleanValue()); + m_Process.setIsReport(Boolean.valueOf(atts.getValue("isReport")).booleanValue()); + m_Process.setName(atts.getValue("Name")); + + m_Process.setProcedureName(atts.getValue("ProcedureName")); + m_Process.setStatistic_Count(0); + m_Process.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Process.setStatistic_Seconds(0); + m_Process.setValue(atts.getValue("Value")); + m_Process.setWorkflowValue(atts.getValue("WorkflowValue")); + if (m_Process.save(m_trxName) == true){ + record_log (1, m_Process.getName(),"Process", m_Process.get_ID(),AD_Backup_ID, Object_Status,"AD_Process",get_IDWithColumn("AD_Table", "TableName", "AD_Process")); + } + else{ + record_log (0, m_Process.getName(),"Process", m_Process.get_ID(),AD_Backup_ID, Object_Status,"AD_Process",get_IDWithColumn("AD_Table", "TableName", "AD_Process")); + } + } + } + // processpara element. + else if (elementValue.equals("processpara")) { + log.info(elementValue+" "+atts.getValue("Name")); + + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + String name = atts.getValue("Name"); + + int id = get_IDWithMaster("AD_Process_Para", name, "AD_Process", atts.getValue("ADProcessNameID")); + X_AD_Process_Para m_Process_para = new X_AD_Process_Para(m_ctx, id, m_trxName); + if (id>0){ + AD_Backup_ID = copyRecord("AD_Process_Para",m_Process_para); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_Process_para.setName(atts.getValue("Name")); + name = atts.getValue("ADProcessNameID"); + id = get_IDWithColumn("AD_Process", "Name", name); + m_Process_para.setAD_Process_ID(id); + name = atts.getValue("ADElementNameID"); + id = get_IDWithColumn("AD_Element", "Name", name); + m_Process_para.setAD_Element_ID(id); + name = atts.getValue("ADReferenceNameID"); + /** + //Adjust for difference between Oracle and PostgreSql DataTypes + if (m_DatabaseType.equals("Oracle")){ + if (name.equals("TIMESTAMP")) + name = "Date"; + else if (name.equals("TIMESTAMP+Time")) + name = "Date+Time"; + else if (name.equals("NUMERIC")) + name = "Number";} + else if (m_DatabaseType.equals("Sybase")){ + if (name.equals("TIMESTAMP")) + name = "Date"; + else if (name.equals("TIMESTAMP+Time")) + name = "Date+Time"; + else if (name.equals("NUMERIC")) + name = "Number";} + else if (m_DatabaseType.equals("PostgreSQL")){ + if (name.equals("Date")) + name = "TIMESTAMP"; + else if (name.equals("Date+Time")) + name = "TIMESTAMP+Time"; + else if (name.equals("Number")) + name = "NUMERIC";} + **/ + id = get_IDWithColumn("AD_Reference", "Name", name); + m_Process_para.setAD_Reference_ID(id); + name = atts.getValue("ADReferenceValueNameID"); + id = get_IDWithColumn("AD_Reference", "Name", name); + m_Process_para.setAD_Reference_Value_ID(id); + name = atts.getValue("ADValRuleNameID"); + id = get_IDWithColumn("AD_Val_Rule", "Name", name); + m_Process_para.setAD_Val_Rule_ID(id); + m_Process_para.setColumnName(atts.getValue("ColumnName")); + m_Process_para.setDefaultValue(atts.getValue("DefaultValue")); + m_Process_para.setDefaultValue2(atts.getValue("DefaultValue2")); + m_Process_para.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Process_para.setEntityType(atts.getValue("EntityType")); + m_Process_para.setHelp(atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Process_para.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Process_para.setName(atts.getValue("Name")); + m_Process_para.setVFormat(atts.getValue("VFormat")); + m_Process_para.setValueMax(atts.getValue("ValueMax")); + m_Process_para.setValueMin(atts.getValue("ValueMin")); + m_Process_para.setSeqNo(Integer.parseInt(atts.getValue("SeqNo"))); + m_Process_para.setFieldLength(Integer.parseInt(atts.getValue("FieldLength"))); + m_Process_para.setIsCentrallyMaintained(Boolean.valueOf(atts.getValue("isCentrallyMaintained")).booleanValue()); + m_Process_para.setIsMandatory(Boolean.valueOf(atts.getValue("isMandatory")).booleanValue()); + m_Process_para.setIsRange(Boolean.valueOf(atts.getValue("isRange")).booleanValue()); + if (m_Process_para.save(m_trxName) == true){ + record_log (1, m_Process_para.getName(),"Process_para", m_Process_para.get_ID(),AD_Backup_ID, Object_Status,"AD_Process_para",get_IDWithColumn("AD_Table", "TableName", "AD_Process_para")); + } + else{ + record_log (0, m_Process_para.getName(),"Process_para", m_Process_para.get_ID(),AD_Backup_ID, Object_Status,"AD_Process_para",get_IDWithColumn("AD_Table", "TableName", "AD_Process_para")); + } + } + } + // table element. + else if (elementValue.equals("table")) { + log.info(elementValue+" "+atts.getValue("ADTableNameID")); + String entitytype = atts.getValue("EntityType"); + + if (entitytype.equals("U") || entitytype.equals("D") && m_UpdateMode.equals("true")) { + + String tableName = atts.getValue("ADTableNameID"); + + int id = get_IDWithColumn("AD_Table", "TableName", tableName); + + m_Table = new MTable(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Table",m_Table); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_Table.setTableName(tableName); + String Name = atts.getValue("ADWindowNameID"); + id = get_IDWithColumn("AD_Window", "Name", Name); + m_Table.setAD_Window_ID(id); + Name = atts.getValue("POWindowNameID"); + if (Name != null){ + id = get_IDWithColumn("AD_Window", "Name", Name); + m_Table.setPO_Window_ID(id); + } + else + Name = atts.getValue("ADValRuleNameID"); + id = get_IDWithColumn("AD_Val_Rule", "Name", Name); + + m_Table.setAD_Val_Rule_ID(id); + m_Table.setAccessLevel (atts.getValue("AccessLevel")); + m_Table.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Table.setEntityType(atts.getValue("EntityType")); + m_Table.setHelp(atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Table.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Table.setImportTable(atts.getValue("ImportTable")); + m_Table.setIsChangeLog(Boolean.valueOf(atts.getValue("isChangeLog")).booleanValue()); + m_Table.setIsDeleteable(Boolean.valueOf(atts.getValue("isDeleteable")).booleanValue()); + m_Table.setIsHighVolume(Boolean.valueOf(atts.getValue("isHighVolume")).booleanValue()); + m_Table.setIsSecurityEnabled(Boolean.valueOf(atts.getValue("isSecurityEnabled")).booleanValue()); + m_Table.setIsView(Boolean.valueOf(atts.getValue("isView")).booleanValue()); + //m_Table.setLoadSeq(Integer.parseInt(atts.getValue("LoadSeq"))); + m_Table.setName(atts.getValue("Name")); + m_Table.setReplicationType(atts.getValue("ReplicationType")); + m_Table.setTableName(atts.getValue("TableName")); +// log.info("in3"); + attsOut.clear(); + if (m_Table.save(m_trxName) == true){ + record_log (1, m_Table.getName(),"Table", m_Table.get_ID(),AD_Backup_ID, Object_Status,"AD_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Table")); + } + else{ + record_log (0, m_Table.getName(),"Table", m_Table.get_ID(),AD_Backup_ID, Object_Status,"AD_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Table")); + } + } + } + // column element. + else if (elementValue.equals("column")) { + log.info(elementValue+" "+atts.getValue("ColumnName")); + int success=0; + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + String columnName = atts.getValue("ColumnName"); + + int tableid = get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID")); + int id =get_IDWithMasterAndColumn ("AD_Column", "ColumnName", columnName, "AD_Table", tableid); + m_Column = new MColumn(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Column",m_Column); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_Column.setColumnName(columnName); + + String Name = atts.getValue("ADProcessNameID"); + id = get_IDWithColumn("AD_Process", "Name", Name); + m_Column.setAD_Process_ID(id); + Name = atts.getValue("ADReferenceNameID"); +// log.info("Column Name1 ->"+Name); +// log.info("Database Name ->"+m_DatabaseType); + /** + //Adjust for difference between Oracle and PostgreSql DataTypes + if (m_DatabaseType.equals("Oracle")){ + if (Name.equals("TIMESTAMP")) + Name = "Date"; + else if (Name.equals("TIMESTAMP+Time")) + Name = "Date+Time"; + else if (Name.equals("NUMERIC")) + Name = "Number";} + else if (m_DatabaseType.equals("Sybase")){ + if (Name.equals("TIMESTAMP")) + Name = "Date"; + else if (Name.equals("TIMESTAMP+Time")) + Name = "Date+Time"; + else if (Name.equals("NUMERIC")) + Name = "Number";} + else if (m_DatabaseType.equals("PostgreSQL")){ + if (Name.equals("Date")) + Name = "TIMESTAMP"; + else if (Name.equals("Date+Time")) + Name = "TIMESTAMP+Time"; + else if (Name.equals("Number")) + Name = "NUMERIC";} + **/ +// log.info("Column Name2 ->"+Name); + id = get_IDWithColumn("AD_Reference", "Name", Name); + m_Column.setAD_Reference_ID(id); +// log.info("Column ID ->"+id); + Name = atts.getValue("ADTableNameID"); + id = get_IDWithColumn("AD_Table", "TableName", Name); + m_Column.setAD_Table_ID(id); + + Name = atts.getValue("ADValRuleNameID"); + id = get_IDWithColumn("AD_Val_Rule", "Name", Name); + m_Column.setAD_Val_Rule_ID(id); + Name = atts.getValue("ADReferenceNameValueID"); + id = get_IDWithColumn("AD_Reference", "Name", Name); + m_Column.setAD_Reference_Value_ID(id); + m_Column.setCallout(atts.getValue("Callout")); + m_Column.setColumnSQL(atts.getValue("ColumnSQL")); + + m_Column.setColumnName(atts.getValue("ColumnName")); + m_Column.setDefaultValue(atts.getValue("DefaultValue")); + m_Column.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Column.setEntityType(atts.getValue("EntityType")); + + if (Integer.parseInt(atts.getValue("FieldLength")) >0) + m_Column.setFieldLength (Integer.parseInt(atts.getValue("FieldLength"))); + m_Column.setHelp(atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Column.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Column.setIsAlwaysUpdateable((Boolean.valueOf(atts.getValue("isAlwaysUpdateable")).booleanValue())); + //m_Column.setIsEncrypted(atts.getValue("isEncrypted")); + m_Column.setIsIdentifier((Boolean.valueOf(atts.getValue("isIdentifier")).booleanValue())); + m_Column.setIsKey((Boolean.valueOf(atts.getValue("isKey")).booleanValue())); + m_Column.setIsMandatory((Boolean.valueOf(atts.getValue("isMandatory")).booleanValue())); + + m_Column.setIsParent((Boolean.valueOf(atts.getValue("isParent")).booleanValue())); + m_Column.setIsSelectionColumn((Boolean.valueOf(atts.getValue("isSelectionColumn")).booleanValue())); + m_Column.setIsSyncDatabase (atts.getValue("getIsSyncDatabase")); + + m_Column.setIsTranslated((Boolean.valueOf(atts.getValue("isTranslated")).booleanValue())); + m_Column.setIsUpdateable((Boolean.valueOf(atts.getValue("isUpdateable")).booleanValue())); + m_Column.setName(atts.getValue("Name")); + m_Column.setReadOnlyLogic(atts.getValue("ReadOnlyLogic")); + + if (Integer.parseInt(atts.getValue("SeqNo")) >0) + m_Column.setSeqNo(Integer.parseInt(atts.getValue("SeqNo"))); + m_Column.setVFormat(atts.getValue("VFormat")); + if (atts.getValue("ValueMax") != null) + m_Column.setValueMax(atts.getValue("ValueMax")); + if (atts.getValue("ValueMin") != null) + m_Column.setValueMin(atts.getValue("ValueMin")); + m_Column.setVersion(new BigDecimal("0.0")); + + // Setup Element. + id = get_IDWithColumn("AD_Element", "ColumnName", m_Column.getColumnName()); + X_AD_Element element = new X_AD_Element(m_ctx, id, m_trxName); + + String Object_Status_col = Object_Status; + if (element.getAD_Element_ID() == 0) { + //Object_Status = "New"; + element.setColumnName(m_Column.getColumnName()); + element.setEntityType(m_Column.getEntityType()); + element.setPrintName(m_Column.getColumnName()); + + element.setName(m_Column.getColumnName()); + if (element.save(m_trxName) == true){ + record_log (1, m_Column.getName(),"Element", element.getAD_Element_ID(),AD_Backup_ID, "New","AD_Element",get_IDWithColumn("AD_Table", "TableName", "AD_Element")); + } else { + record_log (0, m_Column.getName(),"Element", element.getAD_Element_ID(),AD_Backup_ID, "New","AD_Element",get_IDWithColumn("AD_Table", "TableName", "AD_Element")); + } + } + + Object_Status = Object_Status_col; + m_Column.setAD_Element_ID(element.getAD_Element_ID()); + + boolean recreateColumn = + ( + m_Column.is_new() + || m_Column.is_ValueChanged("AD_Reference_ID") + || m_Column.is_ValueChanged("FieldLength") + || m_Column.is_ValueChanged("ColumnName") + || m_Column.is_ValueChanged("IsMandatory") + ); + + // changed default ?? + // m_Column.is_ValueChanged("DefaultValue") doesn't work well with nulls + if (! recreateColumn) { + String oldDefault = (String) m_Column.get_ValueOld("DefaultValue"); + String newDefault = (String) m_Column.get_Value("DefaultValue"); + if (oldDefault != null && oldDefault.length() == 0) + oldDefault = null; + if (newDefault != null && newDefault.length() == 0) + newDefault = null; + if ((oldDefault == null && newDefault != null) || + (oldDefault != null && newDefault == null)) { + recreateColumn = true; + } else if (oldDefault != null && newDefault != null) { + if (! oldDefault.equals(newDefault)) + recreateColumn = true; + } + } + + if (m_Column.save(m_trxName) == true){ + record_log (1, m_Column.getName(),"Column", m_Column.get_ID(),AD_Backup_ID, Object_Status,"AD_Column",get_IDWithColumn("AD_Table", "TableName", "AD_Column")); + } else { + record_log (0, m_Column.getName(),"Column", m_Column.get_ID(),AD_Backup_ID, Object_Status,"AD_Column",get_IDWithColumn("AD_Table", "TableName", "AD_Column")); + } + + if (recreateColumn) { + success = createcolumn (m_Column); + + if (success == 1){ + record_log (1, m_Column.getColumnName(),"dbColumn", m_Column.get_ID(),0, Object_Status,atts.getValue("ADTableNameID").toUpperCase(),get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID").toUpperCase())); + } else { + record_log (0, m_Column.getColumnName(),"dbColumn", m_Column.get_ID(),0, Object_Status,atts.getValue("ADTableNameID").toUpperCase(),get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID").toUpperCase())); + } + } + } + } + + // Role element. + else if (elementValue.equals("role")) { + log.info(elementValue+" "+atts.getValue("Name")); + + String name = atts.getValue("Name"); + + int id = get_ID("AD_Role", name); + m_Role = new MRole(m_ctx, id, m_trxName); + + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Role",m_Role); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + + m_Role.setName(name); + name = atts.getValue("treemenuname"); + if (name!= null){ + id = get_IDWithColumn("AD_Tree", "Name", name); + m_Role.setAD_Tree_Menu_ID(id); + } + + name = null; + name = atts.getValue("treeorgname"); + if (name!= null){ + id = get_IDWithColumn("AD_Tree", "Name", name); + m_Role.setAD_Tree_Org_ID(id); + } + + name = null; + name = atts.getValue("currencycode"); + if (name!= null){ + id = get_IDWithColumn("C_Currency", "ISO_Code", name); + m_Role.setC_Currency_ID(id); + } + + name = null; + name = atts.getValue("supervisorid"); + if (name!= null){ + id = get_IDWithColumn("AD_User", "Name", name); + m_Role.setC_Currency_ID(id); + } + + m_Role.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Role.setAmtApproval(new BigDecimal(atts.getValue("AmtApproval"))); + m_Role.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Role.setIsAccessAllOrgs(atts.getValue("isAccessAllOrgs") != null ? Boolean.valueOf(atts.getValue("isAccessAllOrgs")).booleanValue():true); + m_Role.setIsCanApproveOwnDoc(atts.getValue("isCanApproveOwnDoc") != null ? Boolean.valueOf(atts.getValue("isCanApproveOwnDoc")).booleanValue():true); + m_Role.setIsCanExport(atts.getValue("isCanExport") != null ? Boolean.valueOf(atts.getValue("isCanExport")).booleanValue():true); + m_Role.setIsCanReport(atts.getValue("isCanReport") != null ? Boolean.valueOf(atts.getValue("isCanReport")).booleanValue():true); + m_Role.setIsChangeLog(atts.getValue("isChangeLog") != null ? Boolean.valueOf(atts.getValue("isChangeLog")).booleanValue():true); + m_Role.setIsManual(atts.getValue("isManual") != null ? Boolean.valueOf(atts.getValue("isManual")).booleanValue():true); + m_Role.setIsPersonalAccess(atts.getValue("isPersonalAccess") != null ? Boolean.valueOf(atts.getValue("isPersonalAccess")).booleanValue():true); + m_Role.setIsPersonalLock(atts.getValue("isPersonalLock") != null ? Boolean.valueOf(atts.getValue("isPersonalLock")).booleanValue():true); + m_Role.setIsShowAcct(atts.getValue("isShowAcct") != null ? Boolean.valueOf(atts.getValue("isShowAcct")).booleanValue():true); + m_Role.setIsUseUserOrgAccess(atts.getValue("isUseUserOrgAccess") != null ? Boolean.valueOf(atts.getValue("isUseUserOrgAccess")).booleanValue():true); + m_Role.setOverwritePriceLimit(atts.getValue("isOverwritePriceLimit") != null ? Boolean.valueOf(atts.getValue("isOverwritePriceLimit")).booleanValue():true); + m_Role.setPreferenceType(atts.getValue("PreferenceType")); + m_Role.setUserLevel(atts.getValue("UserLevel")); + + if (m_Role.save(m_trxName) == true){ + + record_log (1, m_Role.getName(),"Role", m_Role.get_ID(),AD_Backup_ID, Object_Status,"AD_Role",get_IDWithColumn("AD_Table", "TableName", "AD_Role")); + } + else{ + + record_log (0, m_Role.getName(),"Role", m_Role.get_ID(),AD_Backup_ID, Object_Status,"AD_Role",get_IDWithColumn("AD_Table", "TableName", "AD_Role")); + } + } + + + else if (elementValue.equals("userrole")) { + log.info(elementValue); + int roleid =0; + int userid =0; + int orgid =0; + + if (atts.getValue("username")!=null){ + String name = atts.getValue("username"); + sqlB = new StringBuffer ("SELECT AD_User_ID FROM AD_User WHERE Name= ?"); + userid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + if (atts.getValue("rolename")!=null){ + String name = atts.getValue("rolename"); + sqlB = new StringBuffer ("SELECT AD_Role_ID FROM AD_Role WHERE Name= ?"); + roleid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + if (atts.getValue("orgname")!=null){ + String name = atts.getValue("orgname"); + sqlB = new StringBuffer ("SELECT AD_Org_ID FROM AD_Org WHERE Name= ?"); + orgid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + sqlB = new StringBuffer ("SELECT count(*) FROM AD_User_Roles WHERE AD_User_ID = ? and AD_Role_ID = ? and AD_Org_ID = "+orgid); + int count = DB.getSQLValue(m_trxName,sqlB.toString(),userid,roleid); + if (count>0){ + //AD_Backup_ID = copyRecord("AD_Role",m_Role); + Object_Status = "Update"; + sqlB = new StringBuffer ("UPDATE AD_User_Roles " + + "SET isActive = '" + atts.getValue("isActive")+"'" + + " WHERE AD_User_ID = " + userid + + " and AD_Role_ID = " + roleid + + " and AD_Org_ID = " + orgid ); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to user roles failed"); + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + sqlB = new StringBuffer ("Insert INTO AD_User_Roles" + + "(AD_Client_ID, CreatedBy, UpdatedBy, " + + "AD_User_ID, AD_Role_ID, AD_Org_ID, isActive) " + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " +userid + + ", " + roleid + + ", " + orgid + + ", '" + atts.getValue("isActive")+"')"); + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to user roles failed"); + } + } + + else if (elementValue.equals("orgrole")) { + log.info(elementValue); + int roleid =0; + int orgid =0; + + if (atts.getValue("rolename")!=null){ + String name = atts.getValue("rolename"); + sqlB = new StringBuffer ("SELECT AD_Role_ID FROM AD_Role WHERE Name= ?"); + roleid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + if (atts.getValue("orgname")!=null){ + String name = atts.getValue("orgname"); + sqlB = new StringBuffer ("SELECT AD_Org_ID FROM AD_Org WHERE Name= ?"); + orgid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + sqlB = new StringBuffer ("SELECT count(*) FROM AD_Role_OrgAccess WHERE AD_Role_ID=? and AD_Org_ID=?"); + int count = DB.getSQLValue(m_trxName,sqlB.toString(),roleid,orgid); + if (count>0){ + Object_Status = "Update"; + sqlB = new StringBuffer ("UPDATE AD_Role_OrgAccess " + + "SET isActive = '" + atts.getValue("isActive") + + "', isReadOnly = '" + atts.getValue("isReadOnly") + + "' WHERE AD_Role_ID = " + roleid + + " and AD_Org_ID = " + orgid ); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to org access failed"); + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + sqlB = new StringBuffer ("Insert INTO AD_Role_OrgAccess" + + "(AD_Client_ID, CreatedBy, UpdatedBy, " + + "AD_Role_ID, AD_Org_ID, isActive, isReadOnly) " + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + roleid + + ", " + orgid + + ", '" + atts.getValue("isActive") + + "', '" + atts.getValue("isReadOnly")+"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to org access failed"); + } + } + + else if (elementValue.equals("windowaccess")) { + log.info(elementValue); + int roleid =0; + int windowid =0; + + if (atts.getValue("rolename")!=null){ + String name = atts.getValue("rolename"); + sqlB = new StringBuffer ("SELECT AD_Role_ID FROM AD_Role WHERE Name= ?"); + roleid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + if (atts.getValue("windowname")!=null){ + String name = atts.getValue("windowname"); + sqlB = new StringBuffer ("SELECT AD_Window_ID FROM AD_Window WHERE Name= ?"); + windowid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + sqlB = new StringBuffer ("SELECT count(*) FROM AD_Window_Access WHERE AD_Role_ID=? and AD_Window_ID=?"); + int count = DB.getSQLValue(m_trxName,sqlB.toString(),roleid,windowid); + if (count>0){ + Object_Status = "Update"; + sqlB = new StringBuffer ("UPDATE AD_Window_Access " + + "SET isActive = '" + atts.getValue("isActive") + + "', isReadWrite = '" + atts.getValue("isReadWrite") + + "' WHERE AD_Role_ID = " + roleid + + " and AD_Window_ID = " + windowid ); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to window access failed"); + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + sqlB = new StringBuffer ("Insert INTO AD_Window_Access" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_Role_ID, AD_Window_ID, isActive, isReadWrite) " + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + roleid + + ", " + windowid + + ", '" + atts.getValue("isActive") + + "', '" + atts.getValue("isReadWrite")+"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to window access failed"); + } + } + + else if (elementValue.equals("processaccess")) { + log.info(elementValue); + int roleid =0; + int processid =0; + + if (atts.getValue("rolename")!=null){ + String name = atts.getValue("rolename"); + sqlB = new StringBuffer ("SELECT AD_Role_ID FROM AD_Role WHERE Name= ?"); + roleid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + if (atts.getValue("processname")!=null){ + String name = atts.getValue("processname"); + sqlB = new StringBuffer ("SELECT AD_Process_ID FROM AD_Process WHERE Name= ?"); + processid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + sqlB = new StringBuffer ("SELECT count(*) FROM AD_Process_Access WHERE AD_Role_ID=? and AD_Process_ID=?"); + int count = DB.getSQLValue(m_trxName,sqlB.toString(),roleid,processid); + if (count>0){ + Object_Status = "Update"; + sqlB = new StringBuffer ("UPDATE AD_Process_Access " + + "SET isActive = '" + atts.getValue("isActive") + + "', isReadWrite = '" + atts.getValue("isReadWrite") + + "' WHERE AD_Role_ID = " + roleid + + " and AD_Process_ID = " + processid ); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to process access failed"); + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + sqlB = new StringBuffer ("Insert INTO AD_Process_Access" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_Role_ID, AD_Process_ID, isActive, isReadWrite) " + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + roleid + + ", " + processid + + ", '" + atts.getValue("isActive") + + "', '" + atts.getValue("isReadWrite")+"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to process access failed"); + } + } + + else if (elementValue.equals("formaccess")) { + log.info(elementValue); + int roleid =0; + int formid =0; + + if (atts.getValue("rolename")!=null){ + String name = atts.getValue("rolename"); + sqlB = new StringBuffer ("SELECT AD_Role_ID FROM AD_Role WHERE Name= ?"); + roleid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + if (atts.getValue("formname")!=null){ + String name = atts.getValue("formname"); + sqlB = new StringBuffer ("SELECT AD_Form_ID FROM AD_Process WHERE Name= ?"); + formid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + sqlB = new StringBuffer ("SELECT count(*) FROM AD_Form_Access WHERE AD_Role_ID=? and AD_Form_ID=?"); + int count = DB.getSQLValue(m_trxName,sqlB.toString(),roleid,formid); + if (count>0){ + Object_Status = "Update"; + sqlB = new StringBuffer ("UPDATE AD_Form_Access " + + "SET isActive = '" + atts.getValue("isActive") + + "', isReadWrite = '" + atts.getValue("isReadWrite") + + "' WHERE AD_Role_ID = " + roleid + + " and AD_Form_ID = " + formid ); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to form access failed"); + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + sqlB = new StringBuffer ("Insert INTO AD_Form_Access" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_Role_ID, AD_Form_ID, isActive, isReadWrite) " + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + roleid + + ", " + formid + + ", '" + atts.getValue("isActive") + + "', '" + atts.getValue("isReadWrite")+"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to form access failed"); + } + } + + + else if (elementValue.equals("workflowaccess")) { + log.info(elementValue); + int roleid =0; + int workflowid =0; + + if (atts.getValue("rolename")!=null){ + String name = atts.getValue("rolename"); + sqlB = new StringBuffer ("SELECT AD_Role_ID FROM AD_Role WHERE Name= ?"); + roleid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + if (atts.getValue("workflowname")!=null){ + String name = atts.getValue("workflowname"); + sqlB = new StringBuffer ("SELECT AD_Workflow_ID FROM AD_Workflow WHERE Name= ?"); + workflowid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + sqlB = new StringBuffer ("SELECT count(*) FROM AD_Workflow_Access WHERE AD_Role_ID=? and AD_Workflow_ID=?"); + int count = DB.getSQLValue(m_trxName,sqlB.toString(),roleid,workflowid); + if (count>0){ + Object_Status = "Update"; + sqlB = new StringBuffer ("UPDATE AD_Workflow_Access " + + "SET isActive = '" + atts.getValue("isActive") + + "', isReadWrite = '" + atts.getValue("isReadWrite") + + "' WHERE AD_Role_ID = " + roleid + + " and AD_Workflow_ID = " + workflowid ); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to workflow access failed"); + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + sqlB = new StringBuffer ("Insert INTO AD_Workflow_Access" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_Role_ID, AD_Workflow_ID, isActive, isReadWrite) " + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + roleid + + ", " + workflowid + + ", '" + atts.getValue("isActive") + + "', '" + atts.getValue("isReadWrite")+"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to workflow access failed"); + } + } + + else if (elementValue.equals("taskaccess")) { + log.info(elementValue); + int roleid =0; + int taskid =0; + + if (atts.getValue("rolename")!=null){ + String name = atts.getValue("rolename"); + sqlB = new StringBuffer ("SELECT AD_Role_ID FROM AD_Role WHERE Name= ?"); + roleid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + if (atts.getValue("taskname")!=null){ + String name = atts.getValue("taskname"); + sqlB = new StringBuffer ("SELECT AD_Task_ID FROM AD_Task WHERE Name= ?"); + taskid = DB.getSQLValue(m_trxName,sqlB.toString(),name); + } + + sqlB = new StringBuffer ("SELECT count(*) FROM AD_Task_Access WHERE AD_Role_ID=? and AD_Task_ID=?"); + int count = DB.getSQLValue(m_trxName,sqlB.toString(),roleid,taskid); + if (count>0){ + Object_Status = "Update"; + sqlB = new StringBuffer ("UPDATE AD_Task_Access " + + "SET isActive = '" + atts.getValue("isActive") + + "', isReadWrite = '" + atts.getValue("isReadWrite") + + "' WHERE AD_Role_ID = " + roleid + + " and AD_Task_ID = " + taskid ); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to task access failed"); + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + sqlB = new StringBuffer ("Insert INTO AD_Task_Access" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_Role_ID, AD_Task_ID, isActive, isReadWrite) " + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + roleid + + ", " + taskid + + ", '" + atts.getValue("isActive") + + "', '" + atts.getValue("isReadWrite")+"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to task access failed"); + } + } + + + // task element. + else if (elementValue.equals("task")) { + log.info(elementValue+" "+atts.getValue("ADTaskNameID")); + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + String name = atts.getValue("ADTaskNameID"); + int id = get_ID("AD_Task", name); + m_Task = new MTask(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Task",m_Task); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_Task.setAccessLevel(atts.getValue("AccessLevel")); + m_Task.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Task.setEntityType(atts.getValue("EntityType")); + m_Task.setHelp(atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Task.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Task.setName(name); + m_Task.setOS_Command(atts.getValue("OS_Command")); + if (m_Task.save(m_trxName) == true){ + record_log (1, m_Task.getName(),"Task", m_Task.get_ID(),AD_Backup_ID, Object_Status,"AD_Task",get_IDWithColumn("AD_Table", "TableName", "AD_Task")); + } + else{ + record_log (0, m_Task.getName(),"Task", m_Task.get_ID(),AD_Backup_ID, Object_Status,"AD_Task",get_IDWithColumn("AD_Table", "TableName", "AD_Task")); + } + } + } + // form element. + else if (elementValue.equals("form")) { + log.info(elementValue+" "+atts.getValue("ADFormNameID")); + + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + String name = atts.getValue("ADFormNameID"); + int id = get_ID("AD_Form", name); + m_Form = new MForm(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Form",m_Form); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_Form.setClassname (atts.getValue("Classname")); + m_Form.setIsBetaFunctionality (Boolean.valueOf(atts.getValue("isBetaFunctionality")).booleanValue()); + m_Form.setAccessLevel(atts.getValue("AccessLevel")); + m_Form.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Form.setEntityType(atts.getValue("EntityType")); + m_Form.setHelp(atts.getValue("Help").replaceAll(",","")); + m_Form.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Form.setName(atts.getValue("Name")); + + if (m_Form.save(m_trxName) == true){ + record_log (1, m_Form.getName(),"Form", m_Form.get_ID(),AD_Backup_ID, Object_Status,"AD_Form",get_IDWithColumn("AD_Table", "TableName", "AD_Form")); + } + else{ + record_log (0, m_Form.getName(),"Form", m_Form.get_ID(),AD_Backup_ID, Object_Status,"AD_Form",get_IDWithColumn("AD_Table", "TableName", "AD_Form")); + } + } + } +// impformat element. + else if (elementValue.equals("impformat")) { + log.info(elementValue+" "+atts.getValue("Name")); + + int id = get_ID("AD_ImpFormat", atts.getValue("Name")); + m_ImpFormat = new X_AD_ImpFormat(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_ImpFormat",m_ImpFormat); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_ImpFormat.setName(atts.getValue("Name")); + String Name = atts.getValue("ADTableNameID"); + id = get_IDWithColumn("AD_Table", "TableName", Name); + m_ImpFormat.setAD_Table_ID(id); + m_ImpFormat.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_ImpFormat.setProcessing(atts.getValue("isProcessing") != null ? Boolean.valueOf(atts.getValue("isProcessing")).booleanValue():true); + m_ImpFormat.setName(atts.getValue("Name")); + m_ImpFormat.setDescription(atts.getValue("Description")); + m_ImpFormat.setFormatType(atts.getValue("FormatType")); + m_ImpFormat.save(m_trxName); + if (m_ImpFormat.save(m_trxName) == true){ + record_log (1, m_ImpFormat.getName(),"ImpFormat", m_ImpFormat.get_ID(),AD_Backup_ID, Object_Status,"AD_ImpFormat",get_IDWithColumn("AD_Table", "TableName", "AD_ImpFormat")); + } + else{ + record_log (0, m_ImpFormat.getName(),"ImpFormat", m_ImpFormat.get_ID(),AD_Backup_ID, Object_Status,"AD_ImpFormat",get_IDWithColumn("AD_Table", "TableName", "AD_ImpFormat")); + } + } + //impformatrow element + else if (elementValue.equals("impformatrow")) { + log.info(elementValue+" "+atts.getValue("Name")); + + int impformid = get_ID("AD_ImpFormat", atts.getValue("ADImpFormatNameID")); + int tableid = get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID")); + int columnid = get_IDWithMasterAndColumn ("AD_Column","ColumnName", atts.getValue("ADColumnNameID"), "AD_Table", tableid); + sqlB = new StringBuffer ("SELECT AD_ImpFormat_Row_ID FROM AD_ImpFormat_Row WHERE AD_Column_ID=? and AD_ImpFormat_ID=?"); + int id = DB.getSQLValue(m_trxName,sqlB.toString(),columnid,impformid); + m_ImpFormat_row = new X_AD_ImpFormat_Row(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_ImpFormat",m_ImpFormat_row); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_ImpFormat_row.setName(atts.getValue("Name")); + m_ImpFormat_row.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_ImpFormat_row.setAD_Column_ID(columnid); + m_ImpFormat_row.setAD_ImpFormat_ID(impformid); + m_ImpFormat_row.setDataFormat(atts.getValue("DataFormat")); + m_ImpFormat_row.setDataType(atts.getValue("DataType")); + m_ImpFormat_row.setDecimalPoint(atts.getValue("DecimalPoint")); + m_ImpFormat_row.setDivideBy100(atts.getValue("isDivideBy100") != null ? Boolean.valueOf(atts.getValue("isDivideBy100")).booleanValue():true); + m_ImpFormat_row.setConstantValue(atts.getValue("ConstantValue")); + m_ImpFormat_row.setCallout(atts.getValue("Callout")); + m_ImpFormat_row.setEndNo(Integer.parseInt(atts.getValue("EndNo"))); + m_ImpFormat_row.setScript(atts.getValue("Script")); + m_ImpFormat_row.setSeqNo(Integer.parseInt(atts.getValue("SeqNo"))); + m_ImpFormat_row.setStartNo(Integer.parseInt(atts.getValue("StartNo"))); + m_ImpFormat_row.save(m_trxName); + if (m_ImpFormat_row.save(m_trxName) == true){ + record_log (1, m_ImpFormat_row.getName(),"ImpFormat", m_ImpFormat_row.get_ID(),AD_Backup_ID, Object_Status,"AD_ImpFormat",get_IDWithColumn("AD_Table", "TableName", "m_ImpFormat_row")); + } + else{ + record_log (0, m_ImpFormat_row.getName(),"ImpFormat", m_ImpFormat_row.get_ID(),AD_Backup_ID, Object_Status,"AD_ImpFormat",get_IDWithColumn("AD_Table", "TableName", "m_ImpFormat_row")); + } + } + + + // workbench element. + else if (elementValue.equals("workbench")) { + log.info(elementValue+" "+atts.getValue("ADWorkbenchNameID")); + String entitytype = atts.getValue("EntityType"); + String name = atts.getValue("ADWorkbenchNameID"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + int id = get_ID("AD_Workbench", name); + m_Workbench = new X_AD_Workbench(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Workbench",m_Workbench); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + + int tableid = get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID")); + int columnid = get_IDWithMasterAndColumn ("AD_Column","ColumnName", atts.getValue("ADColumnNameID"), "AD_Table", tableid); + m_Workbench.setAD_Column_ID(columnid); + m_Workbench.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Workbench.setEntityType(atts.getValue("EntityType")); + m_Workbench.setHelp(atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Workbench.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Workbench.setName(atts.getValue("Name")); + //m_Workbench.setPA_Goal_ID(Integer.parseInt(atts.getValue("PAGoalID"))); + if (m_Workbench.save(m_trxName) == true){ + record_log (1, m_Workbench.getName(),"Workbench", m_Workbench.get_ID(),AD_Backup_ID, Object_Status,"AD_Workbench",get_IDWithColumn("AD_Table", "TableName", "AD_Workbench")); + } + else{ + record_log (0, m_Workbench.getName(),"Workbench", m_Workbench.get_ID(),AD_Backup_ID, Object_Status,"AD_Workbench",get_IDWithColumn("AD_Table", "TableName", "AD_Workbench")); + } + } + } + +// Snipit element. + else if (elementValue.equals("codesnipit")) { + log.info(elementValue); + Object_Status = "Update"; + String releaseNumber = atts.getValue("ReleaseNo"); + //Check Release Number + if(Adempiere.MAIN_VERSION.equals(releaseNumber)||releaseNumber.equals("all")){ + String sourceName = atts.getValue("filename"); + String targetDirectory = atts.getValue("filedir"); + String oldCode = atts.getValue("oldcode"); + String newCode = atts.getValue("newcode"); + + int idDetail=0; + InputStream source; // Stream for reading from the source file. + OutputStream copy; // Stream for writing the copy. + File currentDirectory = new File("."); + + String packagePath=null; + String sourcePath=null; + + //get compiere-all directory + try { + packagePath = currentDirectory.getCanonicalPath(); + File parentDirectory = new File(packagePath); + + while (!parentDirectory.getName().equals("packages")){ + parentDirectory = parentDirectory.getParentFile(); + } + parentDirectory = parentDirectory.getParentFile(); + sourcePath = parentDirectory.getCanonicalPath(); + } catch (IOException e1) { + System.out.println("Can't find compiere-all directory."); + } + + + // Create backup directory if required + File backupDir = new File(packagePath+fileSeperator+"backup"+fileSeperator); + if (!backupDir.exists()){ + boolean success = (new File(packagePath+fileSeperator+"backup"+fileSeperator)).mkdirs(); + if (!success) { + log.info("Backup directory creation failed"); + } + } + + //Correct target directory for proper file seperator + String fullDirectory = sourcePath+targetDirectory; + String targetDirectoryModified=null; + char slash1 = '\\'; + char slash2 = '/'; + if (fileSeperator.equals("/")) + targetDirectoryModified = fullDirectory.replace(slash1,slash2); + else + targetDirectoryModified = fullDirectory.replace(slash2,slash1); + + File file = new File(targetDirectoryModified+sourceName); + log.info(targetDirectoryModified+sourceName); + // check to see if overwrites are allowed + if (file.exists() && force == false) { + System.out.println( + "Output file exists. Use the -f option to replace it."); + return; + } + //backup file to package directory + else if (file.exists() && force == true) { + Object_Status = "Update"; + log.info("Target Backup:"+targetDirectoryModified+sourceName); + source = OpenInputfile(targetDirectoryModified+sourceName); + SimpleDateFormat formatter_file = new SimpleDateFormat("yyMMddHHmmssSSSSZ"); + Date today = new Date(); + fileDate = formatter_file.format(today); + copy = OpenOutputfile(packagePath+fileSeperator+"backup"+fileSeperator+fileDate+"_"+sourceName); + log.info("Source Backup:"+packagePath+fileSeperator+"backup"+fileSeperator+fileDate+"_"+sourceName); + copyFile (source,copy); + log.info("Backup Complete"); + } + + int success = readReplace(targetDirectoryModified+sourceName, oldCode, newCode); + +// Record in log + int idBackup = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Package_Imp_Backup", m_trxName); + if (success != -1){ + try { + idDetail = record_log (1, sourceName,"codesnipit", 0,0, Object_Status,sourceName,0); + } catch (SAXException e) { + log.info ("setfile:"+e); + } + } + else{ + try { + idDetail = record_log (0, sourceName,"codesnipit", 0,0, Object_Status,sourceName,0); + } catch (SAXException e) { + log.info ("setfile:"+e); + } + } + //Record in transaction file + sqlB = new StringBuffer ("Insert INTO AD_Package_Imp_Backup" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_PACKAGE_IMP_BACKUP_ID, AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID," + + " AD_PACKAGE_IMP_ORG_DIR, AD_PACKAGE_IMP_BCK_DIR)" + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + idBackup + + ", " + idDetail + + ", " + AD_Package_Imp_ID + + ", '" + targetDirectoryModified+sourceName + + "', '" + packagePath+fileSeperator+"backup"+fileSeperator+fileDate+"_"+sourceName + +"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to import backup failed"); + + } + } + + +// Copy Code to destination + else if (elementValue.equals("distfile")) { + log.info(elementValue+" "+atts.getValue("name")); + + String releaseNumber = atts.getValue("ReleaseNo"); + //log.info(atts.getValue("ReleaseNo")); + //log.info(Compiere.MAIN_VERSION); + //Check Release Number + if(releaseNumber==null||Adempiere.MAIN_VERSION.equals(releaseNumber)||releaseNumber.equals("all")){ + String sourceName = atts.getValue("name"); + String sourceDirectory = atts.getValue("sourceDirectory"); + String targetDirectory = atts.getValue("targetDirectory"); + + Object_Status = "New"; + int idDetail=0; + InputStream source; // Stream for reading from the source file. + OutputStream copy; // Stream for writing the copy. + + String packagePath=null; + String sourcePath=null; + + //get compiere-all directory + try { + packagePath = packageDirectory; + File parentDirectory = new File(packagePath); + while (!parentDirectory.getName().equals("packages")){ + parentDirectory = parentDirectory.getParentFile(); + } + parentDirectory = parentDirectory.getParentFile(); + sourcePath = parentDirectory.getCanonicalPath(); + } catch (IOException e1) { + System.out.println("Can't find compiere-all directory."); + } + + + // Create backup directory if required + File backupDir = new File(packagePath+fileSeperator+"backup"+fileSeperator); + if (!backupDir.exists()){ + boolean success = (new File(packagePath+fileSeperator+"backup"+fileSeperator)).mkdirs(); + if (!success) { + log.info("Backup directory creation failed"); + } + } + + + //Correct target directory for proper file seperator + String fullDirectory = sourcePath+targetDirectory; + String targetDirectoryModified=null; + char slash1 = '\\'; + char slash2 = '/'; + if (fileSeperator.equals("/")) + targetDirectoryModified = fullDirectory.replace(slash1,slash2); + else + targetDirectoryModified = fullDirectory.replace(slash2,slash1); + + File file = new File(targetDirectoryModified+sourceName); + //check to see if overwrites are allowed + if (file.exists() && force == false) { + System.out.println( + "Output file exists. Use the -f option to replace it."); + return; + } + //backup file to package directory + else if (file.exists() && force == true) { + Object_Status = "Update"; + log.info("Target Backup:"+targetDirectoryModified+sourceName); + source = OpenInputfile(targetDirectoryModified+sourceName); + SimpleDateFormat formatter_file = new SimpleDateFormat("yyMMddHHmmssSSSSZ"); + Date today = new Date(); + fileDate = formatter_file.format(today); + copy = OpenOutputfile(packagePath+fileSeperator+"backup"+fileSeperator+fileDate+"_"+sourceName); + log.info("Source Backup:"+packagePath+fileSeperator+"backup"+fileSeperator+fileDate+"_"+sourceName); + copyFile (source,copy); + log.info("Backup Complete"); + } + +// Correct dist directory for proper file seperator + String distDirectoryModified=null; + if (fileSeperator.equals("/")) + distDirectoryModified = sourceDirectory.replace(slash1,slash2); + else + distDirectoryModified = sourceDirectory.replace(slash2,slash1); + source = OpenInputfile(packagePath+distDirectoryModified+sourceName); + +// Create Target directory if required + File targetDir = new File(targetDirectoryModified); + if (!targetDir.exists()){ + boolean success = (new File(targetDirectoryModified)).mkdirs(); + if (!success) { + log.info("Target directory creation failed"); + } + } + copy = OpenOutputfile(targetDirectoryModified+sourceName); + //Copy File + int success = copyFile (source,copy); + //Record in log + int idBackup = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Package_Imp_Backup", m_trxName); + if (success != -1){ + try { + idDetail = record_log (1, sourceName,"file", 0,0, Object_Status,sourceName,0); + } catch (SAXException e) { + log.info ("setfile:"+e); + } + } + else{ + try { + idDetail = record_log (0, sourceName,"file", 0,0, Object_Status,sourceName,0); + } catch (SAXException e) { + log.info ("setfile:"+e); + } + } + //Record in transaction file + sqlB = new StringBuffer ("Insert INTO AD_Package_Imp_Backup" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_PACKAGE_IMP_BACKUP_ID, AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID," + + " AD_PACKAGE_IMP_ORG_DIR, AD_PACKAGE_IMP_BCK_DIR)" + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + idBackup + + ", " + idDetail + + ", " + AD_Package_Imp_ID + + ", '" + targetDirectoryModified+sourceName + + "', '" + packagePath+fileSeperator+"backup"+fileSeperator+fileDate+"_"+sourceName + +"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to import backup failed"); + + } + } + // workbenchwindow element + else if (elementValue.equals("workbenchwindow")) { +// TODO: Solve for lack of name to identify window + log.info(elementValue+" not supported yet"); + } + else if (elementValue.equals("reportview")) { + log.info(elementValue+" "+atts.getValue("ADReportviewnameID")); + String entitytype = atts.getValue("EntityType"); + String name = atts.getValue("ADReportviewnameID"); + + int id = get_ID("AD_ReportView", name); + m_Reportview = new X_AD_ReportView(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Reportview",m_Reportview); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + String Name = atts.getValue("ADTableNameID"); + id = get_IDWithColumn("AD_Table", "TableName", Name); + if (id == 0 ){ + m_Table = new MTable(m_ctx, 0, m_trxName); + m_Table.setAccessLevel("3"); + m_Table.setName(Name); + m_Table.setTableName(Name); + if (m_Table.save(m_trxName) == true){ + record_log (1, m_Table.getName(),"Table", m_Table.get_ID(),0, "New","AD_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Table")); + } + else{ + record_log (0, m_Table.getName(),"Table", m_Table.get_ID(),0, "New","AD_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Table")); + } + id = get_IDWithColumn("AD_Table", "TableName", Name); + } + + m_Reportview.setAD_Table_ID(id); + m_Reportview.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Reportview.setEntityType(atts.getValue("EntityType")); + m_Reportview.setName(atts.getValue("Name")); + m_Reportview.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Reportview.setOrderByClause(atts.getValue("OrderByClause")); + m_Reportview.setWhereClause(atts.getValue("WhereClause")); + if (m_Reportview.save(m_trxName) == true){ + record_log (1, m_Reportview.getName(),"Reportview", m_Reportview.get_ID(),AD_Backup_ID, Object_Status,"AD_Reportview",get_IDWithColumn("AD_Table", "TableName", "AD_Reportview")); + } + else{ + record_log (0, m_Reportview.getName(),"Reportview", m_Reportview.get_ID(),AD_Backup_ID, Object_Status,"AD_Reportview",get_IDWithColumn("AD_Table", "TableName", "AD_Reportview")); + } + + } + + else if (elementValue.equals("printformat")) { + log.info(elementValue+" "+atts.getValue("Name")); + + String name = atts.getValue("Name"); + int id = get_IDWithColumn("AD_PrintFormat", "Name", name); + m_PrintFormat = new X_AD_PrintFormat(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_PrintFormat",m_PrintFormat); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + + name = atts.getValue("ADReportviewnameID"); + id = get_IDWithColumn("AD_ReportView", "Name", name); + m_PrintFormat.setAD_ReportView_ID(id); + name = atts.getValue("ADTableNameID"); + id = get_IDWithColumn("AD_Table", "TableName", name); + if (id == 0 ){ + m_Table = new MTable(m_ctx, 0, m_trxName); + m_Table.setAccessLevel("3"); + m_Table.setName(name); + m_Table.setTableName(name); + if (m_Table.save(m_trxName) == true){ + record_log (1, m_Table.getName(),"Table", m_Table.get_ID(),0, "New","AD_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Table")); + } + else{ + record_log (0, m_Table.getName(),"Table", m_Table.get_ID(),0, "New","AD_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Table")); + } + id = get_IDWithColumn("AD_Table", "TableName", name); + } + m_PrintFormat.setAD_Table_ID(id); + + name = atts.getValue("ADPrintTableFormatID"); + id = get_IDWithColumn("AD_PrintTableFormat", "Name", name); + m_PrintFormat.setAD_PrintTableFormat_ID(id); + name = atts.getValue("ADPrintColorID"); + id = get_IDWithColumn("AD_PrintColor", "Name", name); + + m_PrintFormat.setAD_PrintColor_ID(id); + name = atts.getValue("ADPrintFontID"); + id = get_IDWithColumn("AD_PrintFont", "Name", name); + m_PrintFormat.setAD_PrintFont_ID(id); + + name = atts.getValue("ADPrintPaperID"); + id = get_IDWithColumn("AD_PrintPaper", "Name", name); + m_PrintFormat.setAD_PrintPaper_ID(id); + + m_PrintFormat.setDescription (atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_PrintFormat.setName (atts.getValue("Name")); + m_PrintFormat.setPrinterName(atts.getValue("PrinterName")); + m_PrintFormat.setFooterMargin(Integer.parseInt(atts.getValue("FooterMargin"))); + + m_PrintFormat.setHeaderMargin(Integer.parseInt(atts.getValue("HeaderMargin"))); + m_PrintFormat.setCreateCopy(atts.getValue("CreateCopy")); + m_PrintFormat.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + + m_PrintFormat.setIsTableBased(Boolean.valueOf(atts.getValue("isTableBased")).booleanValue()); + m_PrintFormat.setIsForm(Boolean.valueOf(atts.getValue("isForm")).booleanValue()); + m_PrintFormat.setIsStandardHeaderFooter(Boolean.valueOf(atts.getValue("isStandardHeader")).booleanValue()); + + m_PrintFormat.setIsDefault(Boolean.valueOf(atts.getValue("isDefault")).booleanValue()); + if (m_PrintFormat.save(m_trxName) == true){ + record_log (1, m_PrintFormat.getName(),"PrintFormat", m_PrintFormat.get_ID(),AD_Backup_ID, Object_Status,"AD_PrintFormat",get_IDWithColumn("AD_Table", "TableName", "AD_PrintFormat")); + } + else{ + record_log (0, m_PrintFormat.getName(),"PrintFormat", m_PrintFormat.get_ID(),AD_Backup_ID, Object_Status,"AD_PrintFormat",get_IDWithColumn("AD_Table", "TableName", "AD_PrintFormat")); + } + } + + + else if (elementValue.equals("printformatitem")) { + log.info(elementValue+" "+atts.getValue("Name")); + + String name = atts.getValue("Name"); + int id = get_IDWithMaster("AD_PrintFormatItem", name,"AD_PrintFormat",atts.getValue("ADPrintFormatNameID")); + + m_PrintFormatItem = new X_AD_PrintFormatItem(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_PrintFormatItem",m_PrintFormatItem); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + m_PrintFormatItem.setName(name); + name = atts.getValue("ADPrintFormatNameID"); + id = get_IDWithColumn("AD_PrintFormat", "Name", name); + m_PrintFormatItem.setAD_PrintFormat_ID(id); + //name = atts.getValue("ADPrintFormatChildNameID"); + //id = get_IDWithColumn("AD_PrintFormat", "Name", name); + //m_PrintFormatItem.setAD_PrintFormatChild_ID(id); + name = atts.getValue("ADTableNameID"); + int tableid = get_IDWithColumn("AD_Table", "TableName", name); + name = atts.getValue("ADColumnNameID"); + id =get_IDWithMasterAndColumn ("AD_Column", "ColumnName", name, "AD_Table", tableid); + m_PrintFormatItem.setAD_Column_ID(id); + name = atts.getValue("ADPrintGraphID"); + id = get_IDWithColumn("AD_PrintGraph", "Name", name); + m_PrintFormatItem.setAD_PrintGraph_ID(id); + name = atts.getValue("ADPrintColorID"); + id = get_IDWithColumn("AD_PrintColor", "Name", name); + m_PrintFormatItem.setAD_PrintColor_ID(id); + name = atts.getValue("ADPrintFontID"); + id = get_IDWithColumn("AD_PrintFont", "Name", name); + m_PrintFormatItem.setAD_PrintFont_ID(id); + + m_PrintFormatItem.setPrintName(atts.getValue("PrintName")); + m_PrintFormatItem.setName(atts.getValue("Name")); + m_PrintFormatItem.setPrintAreaType(atts.getValue("PrintAreaType")); + + m_PrintFormatItem.setSeqNo(Integer.parseInt(atts.getValue("SeqNo"))); + m_PrintFormatItem.setPrintFormatType(atts.getValue("PrintFormatType")); + m_PrintFormatItem.setXSpace(Integer.parseInt(atts.getValue("XSpace"))); + + m_PrintFormatItem.setYSpace(Integer.parseInt(atts.getValue("YSpace"))); + m_PrintFormatItem.setXPosition(Integer.parseInt(atts.getValue("Xposition"))); + m_PrintFormatItem.setYPosition(Integer.parseInt(atts.getValue("Yposition"))); + + m_PrintFormatItem.setMaxWidth(Integer.parseInt(atts.getValue("MaxWidth"))); + m_PrintFormatItem.setMaxHeight(Integer.parseInt(atts.getValue("MaxHieght"))); + m_PrintFormatItem.setSortNo(Integer.parseInt(atts.getValue("SortNo"))); + + m_PrintFormatItem.setFieldAlignmentType(atts.getValue("FieldAlignmentType")); + m_PrintFormatItem.setLineAlignmentType(atts.getValue("LineAlignmentType")); + m_PrintFormatItem.setImageURL(atts.getValue("ImageURL")); + m_PrintFormatItem.setArcDiameter(Integer.parseInt(atts.getValue("ArcDiameter"))); + m_PrintFormatItem.setLineWidth(Integer.parseInt(atts.getValue("LineWidth"))); + m_PrintFormatItem.setShapeType(atts.getValue("ShapeType")); + + m_PrintFormatItem.setBelowColumn(Integer.parseInt(atts.getValue("BelowColumn"))); + m_PrintFormatItem.setPrintNameSuffix(atts.getValue("PrintNameSuffix")); + m_PrintFormatItem.setRunningTotalLines(Integer.parseInt(atts.getValue("RunningTotalLines"))); + + m_PrintFormatItem.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_PrintFormatItem.setIsPrinted(Boolean.valueOf(atts.getValue("isPrinted")).booleanValue()); + m_PrintFormatItem.setIsRelativePosition(Boolean.valueOf(atts.getValue("isRelativePosition")).booleanValue()); + m_PrintFormatItem.setIsNextLine(Boolean.valueOf(atts.getValue("isNextLine")).booleanValue()); + + m_PrintFormatItem.setIsHeightOneLine(Boolean.valueOf(atts.getValue("isHeightOneLine")).booleanValue()); + m_PrintFormatItem.setIsOrderBy(Boolean.valueOf(atts.getValue("isOrderBy")).booleanValue()); + m_PrintFormatItem.setIsGroupBy(Boolean.valueOf(atts.getValue("isGroupBy")).booleanValue()); + + m_PrintFormatItem.setIsPageBreak(Boolean.valueOf(atts.getValue("isPageBreak")).booleanValue()); + m_PrintFormatItem.setIsSummarized(Boolean.valueOf(atts.getValue("isSummarized")).booleanValue()); + m_PrintFormatItem.setImageIsAttached(Boolean.valueOf(atts.getValue("isImageIsAttached")).booleanValue()); + + m_PrintFormatItem.setIsAveraged(Boolean.valueOf(atts.getValue("isAveraged")).booleanValue()); + m_PrintFormatItem.setIsCounted(Boolean.valueOf(atts.getValue("isCounted")).booleanValue()); + m_PrintFormatItem.setIsSetNLPosition(Boolean.valueOf(atts.getValue("isSetNLPosition")).booleanValue()); + m_PrintFormatItem.setIsSuppressNull(Boolean.valueOf(atts.getValue("isSuppressNull")).booleanValue()); + + m_PrintFormatItem.setIsFixedWidth(Boolean.valueOf(atts.getValue("isFixedWidth")).booleanValue()); + m_PrintFormatItem.setIsNextPage(Boolean.valueOf(atts.getValue("isNextPage")).booleanValue()); + m_PrintFormatItem.setIsMaxCalc(Boolean.valueOf(atts.getValue("isMaxCalc")).booleanValue()); + m_PrintFormatItem.setIsMinCalc(Boolean.valueOf(atts.getValue("isMinCalc")).booleanValue()); + + m_PrintFormatItem.setIsRunningTotal(Boolean.valueOf(atts.getValue("isRunningTotal")).booleanValue()); + m_PrintFormatItem.setIsVarianceCalc(Boolean.valueOf(atts.getValue("isVarianceCalc")).booleanValue()); + m_PrintFormatItem.setIsDeviationCalc(Boolean.valueOf(atts.getValue("isDeviationCalc")).booleanValue()); + + if (m_PrintFormatItem.save(m_trxName) == true){ + record_log (1, m_PrintFormatItem.getName(),"PrintFormatItem", m_PrintFormatItem.get_ID(),AD_Backup_ID, Object_Status,"AD_PrintFormatItem",get_IDWithColumn("AD_Table", "TableName", "AD_PrintFormatItem")); + } + else{ + record_log (0, m_PrintFormatItem.getName(),"PrintFormatItem", m_PrintFormatItem.get_ID(),AD_Backup_ID, Object_Status,"AD_PrintFormatItem",get_IDWithColumn("AD_Table", "TableName", "AD_PrintFormatItem")); + } + } + else if (elementValue.equals("reportviewcol")) { + log.info(elementValue+" "+atts.getValue("ADReportViewColID")); + + String entitytype = atts.getValue("EntityType"); + String name = atts.getValue("ADReportViewColID"); + + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + int id = get_ID("AD_Reportview_Col", name); + m_Reportview_Col = new X_AD_ReportView_Col(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Reportview_Col",m_Reportview_Col); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + name = atts.getValue("ADReportviewnameID"); + id = get_IDWithColumn("AD_Reference", "Name", name); + m_Reportview_Col.setAD_ReportView_ID(id); + name = atts.getValue("ADColumnNameID"); + id = get_IDWithColumn("AD_Column", "Name", name); + m_Reportview_Col.setAD_Column_ID(id); + m_Reportview_Col.setFunctionColumn(atts.getValue("ADColumnNameID")); + m_Reportview_Col.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Reportview_Col.setIsGroupFunction(Boolean.valueOf(atts.getValue("ADColumnNameID")).booleanValue()); + if (m_Reportview_Col.save(m_trxName) == true){ + record_log (1, ""+m_Reportview_Col.getAD_ReportView_ID(),"Reportview_Col", m_Reportview.get_ID(),AD_Backup_ID, Object_Status,"AD_Reportview_Col",get_IDWithColumn("AD_Table", "TableName", "AD_Reportview_Col")); + } + else{ + record_log (0, ""+m_Reportview_Col.getAD_ReportView_ID(),"Reportview_Col", m_Reportview.get_ID(),AD_Backup_ID, Object_Status,"AD_Reportview_Col",get_IDWithColumn("AD_Table", "TableName", "AD_Reportview_Col")); + } + } + } + else if (elementValue.equals("SQLStatement")) { + log.info(elementValue); + + String DBType = atts.getValue("DBType"); + PreparedStatement pstmt = DB.prepareStatement(atts.getValue("statement"), m_trxName); + try { + if(DBType.equals("ALL")){ + int n = pstmt.executeUpdate(); + log.info("Executed SQL Statement: "+ atts.getValue("statement")); + } + else if(DB.isOracle() == true & DBType.equals("Oracle")){ + pstmt.executeUpdate(); + log.info("Executed SQL Statement for Oracle: "+ atts.getValue("statement")); + } + /* else if(DB.isSybase() == true & DBType.equals("Sybase")){ + pstmt.executeUpdate(); + log.info("Exceuted SQL Statement for Sybase"); + } + */ } + catch (Exception e) { + log.log(Level.SEVERE,"SQLSatement", e); + } + } + else if (elementValue.equals("reference")) { + log.info(elementValue+" "+atts.getValue("name")); + + String entitytype = atts.getValue("EntityType"); + String name = atts.getValue("name"); + + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + int id = get_ID("AD_Reference", name); + + m_Reference = new X_AD_Reference(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Reference",m_Reference); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + + m_Reference.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Reference.setEntityType(atts.getValue("EntityType")); + m_Reference.setHelp(atts.getValue("Help").replaceAll("'","''").replaceAll(",","")); + m_Reference.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Reference.setName(atts.getValue("name")); + + //m_Reference.setVFormat(atts.getValue("VFormat")); + m_Reference.setValidationType(atts.getValue("ValidationType")); + if (m_Reference.save(m_trxName) == true){ + record_log (1, m_Reference.getName(),"Reference", m_Reference.get_ID(),AD_Backup_ID, Object_Status,"AD_Reference",get_IDWithColumn("AD_Table", "TableName", "AD_Reference")); + } + else{ + record_log (0, m_Reference.getName(),"Reference", m_Reference.get_ID(),AD_Backup_ID, Object_Status,"AD_Reference",get_IDWithColumn("AD_Table", "TableName", "AD_Reference")); + } + + } + } + else if (elementValue.equals("referencelist")) { + log.info(elementValue+" "+atts.getValue("Name")); + //TODO: Solve for date issues with valuefrom valueto + String entitytype = atts.getValue("EntityType"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + String name = atts.getValue("Name"); + int Referenceid = get_IDWithColumn("AD_Reference", "Name", atts.getValue("ADRefenceNameID")); + int id = get_IDWithMaster("AD_Ref_List", name, "AD_Reference",Referenceid); + m_Ref_List = new X_AD_Ref_List(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord("AD_Ref_List",m_Ref_List); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + name = atts.getValue("ADRefenceNameID"); + id = get_IDWithColumn("AD_Reference", "Name", name); + m_Ref_List.setAD_Reference_ID(id); + m_Ref_List.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",","")); + m_Ref_List.setEntityType (atts.getValue("EntityType")); + m_Ref_List.setName(atts.getValue("Name")); + m_Ref_List.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true); + m_Ref_List.setValue(atts.getValue("Value")); + m_Ref_List.save(m_trxName); + if (m_Ref_List.save(m_trxName) == true){ + record_log (1, m_Ref_List.getName(),"Reference List", m_Ref_List.get_ID(),AD_Backup_ID, Object_Status,"AD_Ref_List",get_IDWithColumn("AD_Table", "TableName", "AD_Ref_List")); + } + else{ + record_log (0, m_Ref_List.getName(),"Reference List", m_Ref_List.get_ID(),AD_Backup_ID, Object_Status,"AD_Ref_List",get_IDWithColumn("AD_Table", "TableName", "AD_Ref_List")); + } + } + } + else if (elementValue.equals("referencetable")) { + log.info(elementValue); + + String entitytype = atts.getValue("EntityType"); + String name = atts.getValue("ADRefenceNameID"); + if (entitytype.compareTo("U") == 0 | entitytype.compareTo("D") == 0 & m_UpdateMode.compareTo("true") == 0 ) { + sqlB = new StringBuffer ("SELECT AD_Reference_ID FROM AD_Reference WHERE Name= ?"); + int id = DB.getSQLValue(m_trxName,sqlB.toString(),name); + sqlB = new StringBuffer ("SELECT Count(*) FROM AD_Ref_Table WHERE AD_Reference_ID= ?"); + int count = DB.getSQLValue(m_trxName, sqlB.toString(),id); + int tableId = get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID")); + if (tableId ==0){ + m_Table = new MTable(m_ctx, 0, m_trxName); + m_Table.setAccessLevel("3"); + m_Table.setName(atts.getValue("ADTableNameID")); + m_Table.setTableName(atts.getValue("ADTableNameID")); + if (m_Table.save(m_trxName) == true){ + record_log (1, m_Table.getName(),"Table", m_Table.get_ID(),0, "New","AD_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Table")); + } + else{ + record_log (0, m_Table.getName(),"Table", m_Table.get_ID(),0, "New","AD_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Table")); + } + tableId = get_IDWithColumn("AD_Table", "TableName", atts.getValue("ADTableNameID")); + } + name = atts.getValue("ADDisplay"); + int DisplayId =get_IDWithMasterAndColumn ("AD_Column", "ColumnName", name, "AD_Table", tableId); + if (DisplayId ==0){ + m_Column = new MColumn(m_ctx,0,m_trxName); + m_Column.setAD_Table_ID(tableId); + m_Column.setVersion(new BigDecimal("1")); + m_Column.setColumnName(name); + m_Column.setName(name); + m_Column.setAD_Reference_ID(30); + if (m_Column.save(m_trxName) == true){ + record_log (1, m_Column.getName(),"Column", m_Column.get_ID(),0, "New","AD_Column",get_IDWithColumn("AD_Table", "TableName", "AD_Column")); + } + else{ + record_log (0, m_Column.getName(),"Column", m_Column.get_ID(),0, "New","AD_Column",get_IDWithColumn("AD_Table", "TableName", "AD_Column")); + } + } + name = atts.getValue("Key"); + int keyId =get_IDWithMasterAndColumn ("AD_Column", "ColumnName", name, "AD_Table", tableId); + if (keyId ==0){ + m_Column = new MColumn(m_ctx,0,m_trxName); + m_Column.setAD_Table_ID(tableId); + m_Column.setVersion(new BigDecimal("1")); + m_Column.setColumnName(name); + m_Column.setName(name); + m_Column.setAD_Reference_ID(30); + if (m_Column.save(m_trxName) == true){ + record_log (1, m_Column.getName(),"Column", m_Column.get_ID(),0, "New","AD_Column",get_IDWithColumn("AD_Table", "TableName", "AD_Column")); + } + else{ + record_log (0, m_Column.getName(),"Column", m_Column.get_ID(),0, "New","AD_Column",get_IDWithColumn("AD_Table", "TableName", "AD_Column")); + } + } + + name = atts.getValue("ADDisplay"); + DisplayId = get_IDWithMasterAndColumn ("AD_Column", "ColumnName", name, "AD_Table", tableId); + name = atts.getValue("Key"); + keyId = get_IDWithMasterAndColumn ("AD_Column", "ColumnName", name, "AD_Table", tableId); + String entityType = atts.getValue("EntityType"); + String isValueDisplayed = atts.getValue("IsValueDisplayed"); + String OrderByClause= atts.getValue("OrderByClause").replaceAll("'","''").replaceAll(",",""); + String WhereClause= atts.getValue("WhereClause").replaceAll("'","''").replaceAll(",",""); + if (count >0 ){ + sqlB = new StringBuffer ("UPDATE AD_Ref_Table " + + "SET AD_Table_ID = " + tableId + + ", AD_Display = " + DisplayId + + ", AD_Key = " + keyId + + ", isValueDisplayed = '" + isValueDisplayed + + "', OrderByClause = '" + OrderByClause + + "', EntityType ='" + entityType + + "', WhereClause = '" + WhereClause + + "' WHERE AD_Reference_ID = " + id); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no > 0){ + record_log (1, atts.getValue("ADRefenceNameID"),"Reference Table", id,0, "Update","AD_Ref_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Ref_Table")); + } + else{ + record_log (0, atts.getValue("ADRefenceNameID"),"Reference Table", id,0, "Update","AD_Ref_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Ref_Table")); + } + + } + else{ + sqlB = new StringBuffer ("Insert INTO AD_Ref_Table" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_Reference_ID, AD_Table_ID, AD_Display, AD_Key " + + ",entityType, isValueDisplayed, OrderByClause, " + + " WhereClause )" + + "VALUES(0, 0, 0, 0, "+id + + ", " + tableId + + ", " + DisplayId + + ", " + keyId + + ", '" + entityType + + "', '" + isValueDisplayed + + "', '" + OrderByClause + + "', '" + WhereClause +"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no > 0){ + record_log (1, atts.getValue("ADRefenceNameID"),"Reference Table", id,0, "New","AD_Ref_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Ref_Table")); + } + else{ + record_log (0, atts.getValue("ADRefenceNameID"),"Reference Table", id,0, "New","AD_Ref_Table",get_IDWithColumn("AD_Table", "TableName", "AD_Ref_Table")); + } + } + } + } + else if (elementValue.equals("menuset")) { + log.info(elementValue); + setmenu (); + } + + /* **************************************** + adempieredata Handler. + **************************************** */ + // table element, adempieredata + else if (elementValue.equals("dtable")) { + log.info(elementValue+" "+atts.getValue("name")); + d_tablename = atts.getValue("name"); + } + // row element, adempieredata + else if (elementValue.equals("drow")) { + log.info(elementValue+" "+atts.getValue("name")); + d_rowname = atts.getValue("name"); + Properties ctx = m_ctx; + ctx.setProperty("adempieredataTable_ID", String.valueOf(get_IDWithColumn("AD_Table", "TableName", d_tablename))); + // name can be null if there are keyXname attributes. + if (!d_rowname.equals("")){ + int id = get_ID(d_tablename, d_rowname); + genericPO = new GenericPO(m_ctx, id, m_trxName); + if (id > 0){ + AD_Backup_ID = copyRecord(d_tablename,genericPO); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + } + // keyXname and lookupkeyXname. + else { + String sql = "select * from "+d_tablename; + String whereand = " where"; + String t_tablename = null; + String CURRENT_KEY = "key1name"; + if (!atts.getValue(CURRENT_KEY).equals("")) { + t_tablename = atts.getValue(CURRENT_KEY).substring(0, atts.getValue(CURRENT_KEY).length()-3); + sql = sql+whereand+" "+atts.getValue(CURRENT_KEY)+"="+atts.getValue("lookup"+CURRENT_KEY); + whereand = " and"; + } + CURRENT_KEY = "key2name"; + if (!atts.getValue(CURRENT_KEY).equals("")) { + t_tablename = atts.getValue(CURRENT_KEY).substring(0, atts.getValue(CURRENT_KEY).length()-3); + sql = sql+whereand+" "+atts.getValue(CURRENT_KEY)+"="+atts.getValue("lookup"+CURRENT_KEY); + whereand = " and"; + } + // Load GenericPO from rs, in fact ID could not exist e.g. Attribute Value + try { + PreparedStatement pstmt = DB.prepareStatement(sql, m_trxName); + + ResultSet rs = pstmt.executeQuery(); + if (rs.next()) { + Object_Status = "Update"; + genericPO = new GenericPO(m_ctx, rs, m_trxName); + rs.close(); + pstmt.close(); + pstmt = null; + } + else { + genericPO = new GenericPO(m_ctx, 0, m_trxName); + rs.close(); + pstmt.close(); + pstmt = null; + Object_Status = "New"; + // set keyXname. + CURRENT_KEY = "key1name"; + if (!atts.getValue(CURRENT_KEY).equals("")) { + t_tablename = atts.getValue(CURRENT_KEY).substring(0, atts.getValue(CURRENT_KEY).length()-3); + genericPO.setValueNoCheck(atts.getValue(CURRENT_KEY), atts.getValue("lookup"+CURRENT_KEY)); + } + CURRENT_KEY = "key2name"; + if (!atts.getValue(CURRENT_KEY).equals("")) { + t_tablename = atts.getValue(CURRENT_KEY).substring(0, atts.getValue(CURRENT_KEY).length()-3); + genericPO.setValueNoCheck(atts.getValue(CURRENT_KEY), atts.getValue("lookup"+CURRENT_KEY)); + } + } + + } + catch (Exception e) { + log.info ("keyXname attribute. init from rs error."+e); + } + } + // reset Table ID for GenericPO. + ctx.setProperty("adempieredataTable_ID", "0"); + // for debug GenericPO. + if (false) { + POInfo poInfo = POInfo.getPOInfo(m_ctx, get_ID("AD_Table", d_tablename)); + if (poInfo == null) + log.info("poInfo is null."); + for (int i = 0; i < poInfo.getColumnCount(); i++) { + log.info(d_tablename+" column: "+poInfo.getColumnName(i)); + } + } + // globalqss: set AD_Client_ID to the client setted in adempieredata + if (m_AD_Client_ID > 0) + genericPO.setValue("AD_Client_ID", m_AD_Client_ID); + // if new. TODO: no defaults for keyXname. + if (!d_rowname.equals("") && ((Integer)(genericPO.get_Value(d_tablename+"_ID"))).intValue() == 0) { + log.info("new genericPO, table: "+d_tablename+" name:"+d_rowname); + genericPO.setValue("Name", d_rowname); + // Set defaults. + HashMap thisDefault = (HashMap)defaults.get(d_tablename); + if (thisDefault != null) { + Iterator iter = thisDefault.values().iterator(); + ArrayList thisValue = null; + while (iter.hasNext()) { + thisValue = (ArrayList)iter.next(); + if (((String)(thisValue.get(2))).equals("String")) + genericPO.setValue((String)thisValue.get(0), (String)thisValue.get(1)); + else if (((String)(thisValue.get(2))).equals("Integer")) + genericPO.setValue((String)thisValue.get(0), Integer.valueOf((String)thisValue.get(1))); + else if (((String)(thisValue.get(2))).equals("Boolean")) + genericPO.setValue((String)thisValue.get(0), new Boolean(((String)thisValue.get(1)).equals("true") ? true : false)); + } + } + } + } + + // column element, adempieredata + else if (elementValue.equals("dcolumn")) { + log.info(elementValue+" "+atts.getValue("name")); + String columnName = atts.getValue("name"); + int tableid = get_IDWithColumn("AD_Table", "TableName", d_tablename); + int id =get_IDWithMasterAndColumn ("AD_Column", "ColumnName", columnName, "AD_Table", tableid); + StringBuffer sql = new StringBuffer ("SELECT IsUpdateable FROM AD_column WHERE AD_Column_ID = ?"); + String isUpdateable = DB.getSQLValueString(m_trxName, sql.toString(),id); + sql = new StringBuffer ("SELECT IsKey FROM AD_column WHERE AD_Column_ID = ?"); + String isKey = DB.getSQLValueString(m_trxName, sql.toString(),id); + if (isKey.equals("N") && + isUpdateable.equals("Y") && + (!atts.getValue("name").equals("CreatedBy")||!atts.getValue("name").equals("UpdatedBy"))) { + if (atts.getValue("value") != null && !atts.getValue("value").equals("null")) { + if (atts.getValue("class").equals("String") || atts.getValue("class").equals("Text") + || atts.getValue("class").equals("List")|| atts.getValue("class").equals("Yes-No") + || atts.getValue("class").equals("Table")|| atts.getValue("class").equals("Button") + || atts.getValue("class").equals("Memo")|| atts.getValue("class").equals("Text Long")) { + genericPO.setValue(atts.getValue("name").toString(), atts.getValue("value").toString()); + } + else if (atts.getValue("class").equals("Number") || atts.getValue("class").equals("Amount") + || atts.getValue("class").equals("Quantity")|| atts.getValue("class").equals("Costs+Prices")){ + genericPO.setValue(atts.getValue("name").toString(), new BigDecimal(atts.getValue("value"))); + } + else if (atts.getValue("class").equals("Integer") || atts.getValue("class").equals("ID") + || atts.getValue("class").equals("Table Direct")|| atts.getValue("class").equals("Table") + || atts.getValue("class").equals("Location (Address)")|| atts.getValue("class").equals("Account") + || atts.getValue("class").equals("Color)")|| atts.getValue("class").equals("Search") + || atts.getValue("class").equals("Locator (WH)")|| atts.getValue("class").equals("Product Attribute")) { + genericPO.setValue(atts.getValue("name").toString(), Integer.valueOf(atts.getValue("value"))); + } + else if (atts.getValue("class").equals("Boolean")) { + genericPO.setValue(atts.getValue("name"), new Boolean(atts.getValue("value").equals("true") ? true : false)); + } + else if (atts.getValue("class").equals("Date") || atts.getValue("class").equals("Date+Time") + || atts.getValue("class").equals("Time")) { + genericPO.setValue(atts.getValue("name").toString(), Timestamp.valueOf(atts.getValue("value"))); + }//Binary, Radio, RowID, Image not supported + } else { // value is null + if (atts.getValue("lookupname") != null && !"".equals(atts.getValue("lookupname"))) { + // globalqss - bring support from XML2AD to lookupname + String m_tablename = atts.getValue("name").substring(0, atts.getValue("name").length()-3); + genericPO.setValue(atts.getValue("name"), new Integer(getIDbyName(m_tablename, atts.getValue("lookupname")))); + } + } + } + } + } // startElement + + /** + * Get ID from Name for a table. + * TODO: substitute with PO.getAllIDs + * + * @param tableName + * @param name + * + */ + public int get_ID (String tableName, String name) { + int id = 0; + sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where name=?"); + + if (!tableName.startsWith("AD_")) + sqlB = sqlB.append(" and AD_Client_ID=?"); + try { + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(), m_trxName); + pstmt.setString(1, name); + if (!tableName.startsWith("AD_")) + pstmt.setInt(2, m_AD_Client_ID); + ResultSet rs = pstmt.executeQuery(); + if (rs.next()) + id = rs.getInt(1); + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("get_ID:"+e); + } + return id; + } + + /** + * Get ID from column value for a table. + * + * @param tableName + * @param columName + * @param name + */ + public int get_IDWithColumn (String tableName, String columnName, Object value) { + int id = 0; + sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where "+columnName+"=?"); + //StringBuffer sqlC = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where "+columnName+"="+value.toString()); + + if (!tableName.startsWith("AD_")) + sqlB = sqlB.append(" and AD_Client_ID=?"); + //here! + sqlB = sqlB.append(" Order By "+tableName+"_ID"); + try { + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(), m_trxName); + if (value instanceof String) + pstmt.setString(1, (String)value); + else if (value instanceof Integer) + pstmt.setInt(1, ((Integer)value).intValue()); + if (!tableName.startsWith("AD_")) + pstmt.setInt(2, m_AD_Client_ID); + + ResultSet rs = pstmt.executeQuery(); + if (rs.next()) + id = rs.getInt(1); + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("get_ID:"+e); + } + return id; + } + + /** + * Get ID from Name for a table with a Master reference. + * + * @param tableName + * @param name + * @param tableNameMaster + * @param nameMaster + */ + public int get_IDWithMaster (String tableName, String name, String tableNameMaster, String nameMaster) { + int id = 0; + sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where name=? and " + + tableNameMaster+"_ID = (select "+tableNameMaster+"_ID from "+tableNameMaster+" where name=?)"); + + try { + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(), m_trxName); + pstmt.setString(1, name); + pstmt.setString(2, nameMaster); + ResultSet rs = pstmt.executeQuery(); + if (rs.next()) + id = rs.getInt(1); + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("get_IDWithMaster:"+e); + } + return id; + } + + /** + * Get ID from Name for a table with a Master reference. + * + * @param tableName + * @param name + * @param tableNameMaster + * @param nameMaster + */ + + public int get_IDWithMasterAndColumn (String tableName, String columnName, String name, String tableNameMaster, int masterID) { + int id = 0; + sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where "+columnName+"=? and " + + tableNameMaster+"_ID =?"); + //StringBuffer sqlC = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where "+columnName+"="+name+" and " + // + tableNameMaster+"_ID ="+masterID); + //log.info(sqlC.toString()); + + try { + + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(), m_trxName); + pstmt.setString(1, name); + pstmt.setInt(2, masterID); + ResultSet rs = pstmt.executeQuery(); + if (rs.next()) + id = rs.getInt(1); + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("get_IDWithMasterAndColumn:"+e); + } + return id; + } + + /** + * Get ID from Name for a table with a Master reference ID. + * + * @param tableName + * @param name + * @param tableNameMaster + * @param masterID + */ + public int get_IDWithMaster (String tableName, String name, String tableNameMaster, int masterID) { + int id = 0; + sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where name=? and " + + tableNameMaster+"_ID=?"); + + try { + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(), m_trxName); + pstmt.setString(1, name); + pstmt.setInt(2, masterID); + ResultSet rs = pstmt.executeQuery(); + if (rs.next()) + id = rs.getInt(1); + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("get_IDWithMasterID:"+e); + } + return id; + } + + /** + * Get ID from Name for a table. + * TODO: substitute with PO.getAllIDs + * + * @param tableName + * @param name + */ + public int getIDbyName (String tableName, String name) { + int id = 0; + String sql = "SELECT "+tableName+"_ID " + + "FROM "+tableName+" " + + "WHERE name=?"; + if (!tableName.startsWith("AD_")) + sql = sql + " AND AD_Client_ID=?"; + try { + PreparedStatement pstmt = DB.prepareStatement(sql, m_trxName); + pstmt.setString(1, name); + if (!tableName.startsWith("AD_")) + pstmt.setInt(2, m_AD_Client_ID); + ResultSet rs = pstmt.executeQuery(); + if (rs.next()) + id = rs.getInt(1); + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.log(Level.SEVERE, "getID:"+e); + } + return id; + } + + /** + * Set menu tree. + * + * + * + * + */ + public void setmenu () { + + String name = null; + int idDetail =0; + int i; + for(i=0;i 0){ + AD_Backup_ID = copyRecord("AD_Menu",m_Menu); + Object_Status = "Update"; + } + else{ + Object_Status = "New"; + AD_Backup_ID =0; + } + + m_Menu.setName(name); + name = d_menu[i][1]; + int id = get_IDWithColumn("AD_Window", "Name", name); + m_Menu.setAD_Window_ID(id); + name = d_menu[i][2]; + id = get_IDWithColumn("AD_Process", "Name", name); + m_Menu.setAD_Process_ID(id); + name = d_menu[i][3]; + id = get_IDWithColumn("AD_Form", "Name", name); + m_Menu.setAD_Form_ID(id); + name = d_menu[i][4]; + id = get_IDWithColumn("AD_Task", "Name", name); + m_Menu.setAD_Task_ID(id); + name = d_menu[i][5]; + id = get_IDWithColumn("AD_Workbench", "Name", name); + m_Menu.setAD_Workbench_ID(id); + name = d_menu[i][6]; + id = get_IDWithColumn("AD_Workflow", "Name", name); + m_Menu.setAD_Workflow_ID(id); + if (d_menu[i][7].compareTo(" ") > -1 ) + m_Menu.setAction(d_menu[i][7]); + m_Menu.setDescription(d_menu[i][8]); + m_Menu.setEntityType(d_menu[i][9]); + m_Menu.setIsReadOnly(Boolean.valueOf(d_menu[i][10]).booleanValue()); + m_Menu.setIsSOTrx(Boolean.valueOf(d_menu[i][11]).booleanValue()); + m_Menu.setIsSummary(Boolean.valueOf(d_menu[i][12]).booleanValue()); + m_Menu.setIsActive(Boolean.valueOf(d_menu[i][15]).booleanValue()); + m_Menu.save(m_trxName); + if (m_Menu.save(m_trxName) == true){ + try { + idDetail = record_log (1, m_Menu.getName(),"Menu", m_Menu.get_ID(),AD_Backup_ID, Object_Status,"AD_Menu",get_IDWithColumn("AD_Table", "TableName", "AD_Menu")); + } catch (SAXException e) { + log.info ("setmenu:"+e); + } + } + else{ + try { + idDetail = record_log (0, m_Menu.getName(),"Menu", m_Menu.get_ID(),AD_Backup_ID, Object_Status,"AD_Menu",get_IDWithColumn("AD_Table", "TableName", "AD_Menu")); + } catch (SAXException e) { + log.info ("setmenu:"+e); + } + } + name = d_menu[i][13]; + id = get_ID("AD_Menu", name); + + String sql2 = "SELECT count(Parent_ID) FROM AD_TREENODEMM WHERE AD_Tree_ID = 10" + + " AND Node_ID = " + menuid; + int countRecords = DB.getSQLValue(m_trxName,sql2); + if (countRecords>0){ + StringBuffer sqlC = new StringBuffer ("select * from AD_TREENODEMM where AD_Tree_ID = 10 and " + +" Node_ID =?"); + try { + PreparedStatement pstmt1 = DB.prepareStatement(sqlC.toString(), m_trxName); + pstmt1.setInt(1, menuid); + ResultSet rs1 = pstmt1.executeQuery(); + if (rs1.next()){ + + String colValue=null; + ResultSetMetaData meta = rs1.getMetaData(); + int columns = meta.getColumnCount(); + int tableID = get_IDWithColumn("AD_Table", "TableName", "AD_TreeNodeMM"); + + for (int q = 1; q <= columns; q++){ + + String col_Name = meta.getColumnName(q); + StringBuffer sql = new StringBuffer ("SELECT AD_Column_ID FROM AD_column WHERE Upper(ColumnName) = '"+col_Name+"' AND AD_Table_ID = ?"); + int columnID = DB.getSQLValue(m_trxName, sql.toString(),tableID); + sql = new StringBuffer ("SELECT AD_Reference_ID FROM AD_COLUMN WHERE AD_Column_ID = '"+columnID+"'"); + int referenceID = DB.getSQLValue(m_trxName,sql.toString()); + int idBackup = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Package_Imp_Backup", m_trxName); + if (referenceID == 20|| referenceID == 28) + if (rs1.getObject(q).equals("Y")) + colValue = "true"; + else + colValue = "false"; + else + colValue = rs1.getObject(q).toString(); + + StringBuffer sqlD = new StringBuffer ("Insert INTO AD_Package_Imp_Backup" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_PACKAGE_IMP_BACKUP_ID, AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID," + + " AD_TABLE_ID, AD_COLUMN_ID, AD_REFERENCE_ID, COLVALUE)" + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + idBackup + + ", " + idDetail + + ", " + AD_Package_Imp_ID + + ", " + tableID + + ", " + columnID + + ", " + referenceID + + ", '" +colValue + +"')"); + int no = DB.executeUpdate (sqlD.toString(), m_trxName); + if (no == -1) + log.info("Insert to import backup failed"); + } + + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + + } + catch (Exception e) { + log.info ("get_IDWithMasterID:"+e); + } + + + sqlB = new StringBuffer ("UPDATE AD_TREENODEMM " + + "SET Parent_ID = " + id + + " , SeqNo = " + d_menu[i][14] + + " WHERE AD_Tree_ID = 10" + + " AND Node_ID = " + m_Menu.getAD_Menu_ID()); + } else { + sqlB = new StringBuffer ("Insert INTO AD_TREENODEMM" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "Parent_ID, SeqNo, AD_Tree_ID, Node_ID)" + + "VALUES(0, 0, 0, 0, " + + id + ","+ d_menu[i][14]+", 10, "+m_Menu.getAD_Menu_ID()+")"); + } + DB.executeUpdate(sqlB.toString(), m_trxName); + } + } + + /** + * Write results to log and records in history table + * + * @param success + * @param tableName + * @param objectType + * @param objectID + * @param objectStatus + * @throws SAXException + * + */ + public int record_log (int success, String objectName,String objectType, int objectID,int objectIDBackup, String objectStatus, String tableName, int AD_Table_ID) throws SAXException{ + String recordLayout; + int id = 0; + if (success == 1){ + //hd_documemt.startElement("","","Successfull",attsOut); + recordLayout = "Type:"+objectType + " - Name:"+objectName + " - ID:"+objectID +" - Action:"+objectStatus+" - Success"; + hd_documemt.startElement("","","Success",attsOut); + hd_documemt.characters(recordLayout.toCharArray(),0,recordLayout.length()); + hd_documemt.endElement("","","Success"); + //hd_documemt.endElement("","","Successfull"); + + //String sql2 = "SELECT MAX(AD_PACKAGE_IMP_DETAIL_ID) FROM AD_PACKAGE_IMP_DETAIL"; + //int id = DB.getSQLValue(m_trxName, sql2)+1; + + id = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Package_Imp_Detail", m_trxName); + + sqlB = new StringBuffer ("Insert INTO AD_Package_Imp_Detail" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID, TYPE, NAME," + + " ACTION, SUCCESS, AD_ORIGINAL_ID, AD_BACKUP_ID, TABLENAME, AD_TABLE_ID)" + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + id + + ", " + AD_Package_Imp_ID + + ", '" + objectType + + "', '" + objectName + + "', '" + objectStatus + + "', 'Success'" + + ", "+objectID + + ", "+objectIDBackup + + ", '"+tableName + + "', "+AD_Table_ID + +")"); + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to import detail failed"); + + } + else{ + PK_Status = "Completed with errors"; + hd_documemt.startElement("","","Failure",attsOut); + recordLayout = "Type:"+objectType + " - Name:"+tableName + " - ID:"+objectID +" - Action:"+objectStatus+" - Failure"; + //hd_documemt.startElement("","","Success",attsOut); + hd_documemt.characters(recordLayout.toCharArray(),0,recordLayout.length()); + //hd_documemt.endElement("","","Success"); + hd_documemt.endElement("","","Failure"); + + //String sql2 = "SELECT MAX(AD_PACKAGE_IMP_DETAIL_ID) FROM AD_PACKAGE_IMP_DETAIL"; + //int id = DB.getSQLValue(m_trxName,sql2)+1; + + id = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Package_Imp_Detail", m_trxName); + + sqlB = new StringBuffer ("Insert INTO AD_Package_Imp_Detail" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID, TYPE, NAME," + + " ACTION, SUCCESS, AD_ORIGINAL_ID, AD_BACKUP_ID, TABLENAME, AD_TABLE_ID)" + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + id + + ", " + AD_Package_Imp_ID + + ", '" + objectType + + "', '" + objectName + + "', '" + objectStatus + + "', 'Failure'" + + ", "+objectID + + ", "+objectIDBackup + + ", '"+tableName + + "', "+AD_Table_ID + +")"); + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to import detail failed"); + } + + Object_Status = "Status not set"; + return id; + } + + /** + * Check if Package History Table exists in database. If not create + * + * @param tablename + * + */ + public void createImp_Sum_table (String tablename){ + // Check if table exists. + + Connection conn = DB.getConnectionRW(); + DatabaseMetaData dbm; + try { + dbm = conn.getMetaData(); + // check if table is there + ResultSet tables = null; + if (m_DatabaseType.equals("Oracle")) + tables = dbm.getTables(null, null, tablename.toUpperCase(), null ); + else if (m_DatabaseType.equals("PostgreSQL")) + tables = dbm.getTables(null, null, tablename.toLowerCase(), null ); + + if (tables.next()) { + log.info ("Table Found"); + } + else { + if (tablename.equals("AD_Package_Imp")){ + sqlB = new StringBuffer ("CREATE TABLE "+ tablename.toUpperCase() + "( " + + tablename.toUpperCase()+"_ID NUMBER(10) NOT NULL, " + + "AD_CLIENT_ID NUMBER(10) NOT NULL, " + + "AD_ORG_ID NUMBER(10) NOT NULL, " + + "ISACTIVE CHAR(1) DEFAULT 'Y' NOT NULL, " + + "CREATED DATE DEFAULT SYSDATE NOT NULL, " + + "CREATEDBY NUMBER(10) NOT NULL, " + + "UPDATED DATE DEFAULT SYSDATE NOT NULL, " + + "UPDATEDBY NUMBER(10) NOT NULL, " + + "NAME NVARCHAR2(60) NOT NULL, " + + "PK_STATUS NVARCHAR2(22), " + + "RELEASENO NVARCHAR2(20), " + + "PK_VERSION NVARCHAR2(20), " + + "VERSION NVARCHAR2(20), " + + "DESCRIPTION NVARCHAR2(1000) NOT NULL, " + + "EMAIL NVARCHAR2(60), " + + "PROCESSED CHAR(1) DEFAULT 'N', " + + "PROCESSING CHAR(1) DEFAULT 'N', " + + "CREATOR VARCHAR2(60 ), " + + "CREATORCONTACT VARCHAR2(255), " + +" CREATEDDATE VARCHAR2(25), " + + "UPDATEDDATE VARCHAR2(25), " + + "PRIMARY KEY( "+tablename.toUpperCase() +"_ID)"+")" ); + + try { + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(),ResultSet.TYPE_FORWARD_ONLY, + ResultSet.CONCUR_UPDATABLE, null); + pstmt.executeUpdate(); + MSequence.createTableSequence (m_ctx, "AD_Package_Imp", m_trxName); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("createImp_Sum_table:"+e); + } + } + if (tablename.equals("AD_Package_Imp_Inst")){ + sqlB = new StringBuffer ("CREATE TABLE "+ tablename.toUpperCase() + "( " + + tablename.toUpperCase()+"_ID NUMBER(10) NOT NULL, " + + "AD_CLIENT_ID NUMBER(10) NOT NULL, " + + "AD_ORG_ID NUMBER(10) NOT NULL, " + + "ISACTIVE CHAR(1) DEFAULT 'Y' NOT NULL, " + + "CREATED DATE DEFAULT SYSDATE NOT NULL, " + + "CREATEDBY NUMBER(10) NOT NULL, " + + "UPDATED DATE DEFAULT SYSDATE NOT NULL, " + + "UPDATEDBY NUMBER(10) NOT NULL, " + + "NAME NVARCHAR2(60) NOT NULL, " + + "PK_STATUS NVARCHAR2(22), " + + "RELEASENO NVARCHAR2(20), " + + "PK_VERSION NVARCHAR2(20), " + + "VERSION NVARCHAR2(20), " + + "DESCRIPTION NVARCHAR2(1000) NOT NULL, " + + "EMAIL NVARCHAR2(60), " + + "PROCESSED CHAR(1) DEFAULT 'N', " + + "PROCESSING CHAR(1) DEFAULT 'N', " + + "CREATOR VARCHAR2(60 ), " + + "CREATORCONTACT VARCHAR2(255), " + +" CREATEDDATE VARCHAR2(25), " + + "UPDATEDDATE VARCHAR2(25), " + + "PRIMARY KEY( "+tablename.toUpperCase() +"_ID)"+")" ); + + try { + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(),ResultSet.TYPE_FORWARD_ONLY, + ResultSet.CONCUR_UPDATABLE, null); + pstmt.executeUpdate(); + MSequence.createTableSequence (m_ctx, "AD_Package_Imp_Inst", m_trxName); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("createImp_Sum_table:"+e); + } + } + if (tablename.equals("AD_Package_Imp_Detail")){ + sqlB = new StringBuffer ("CREATE TABLE "+ tablename.toUpperCase() + "( " + + tablename.toUpperCase()+"_ID NUMBER(10) NOT NULL, " + + "AD_CLIENT_ID NUMBER(10) NOT NULL, " + + "AD_ORG_ID NUMBER(10) NOT NULL, " + + "ISACTIVE CHAR(1) DEFAULT 'Y' NOT NULL, " + + "CREATED DATE DEFAULT SYSDATE NOT NULL, " + + "CREATEDBY NUMBER(10) NOT NULL, " + + "UPDATED DATE DEFAULT SYSDATE NOT NULL, " + + "UPDATEDBY NUMBER(10) NOT NULL, " + + "NAME NVARCHAR2(60), " + + "AD_PACKAGE_IMP_ID Number(10) NOT NULL, " + + "AD_ORIGINAL_ID Number(10) NOT NULL, " + + "AD_BACKUP_ID Number(10), " + + "ACTION NVARCHAR2(20), " + + "SUCCESS NVARCHAR2(20), " + + "TYPE NVARCHAR2(60), " + + "TABLENAME NVARCHAR2(60), " + + "AD_TABLE_ID NUMBER(10), " + + "UNINSTALL CHAR(1), " + + "PRIMARY KEY( "+tablename.toUpperCase() +"_ID)"+")" ); + + try { + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(),ResultSet.TYPE_FORWARD_ONLY, + ResultSet.CONCUR_UPDATABLE, null); + pstmt.executeUpdate(); + MSequence.createTableSequence (m_ctx, "AD_Package_Imp_Detail", m_trxName); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("createImp_Sum_table:"+e); + } + } + if (tablename.equals("AD_Package_Imp_Backup")){ + sqlB = new StringBuffer ("CREATE TABLE "+ tablename.toUpperCase() + "( " + + tablename.toUpperCase()+"_ID NUMBER(10) NOT NULL, " + + "AD_CLIENT_ID NUMBER(10) NOT NULL, " + + "AD_ORG_ID NUMBER(10) NOT NULL, " + + "ISACTIVE CHAR(1) DEFAULT 'Y' NOT NULL, " + + "CREATED DATE DEFAULT SYSDATE NOT NULL, " + + "CREATEDBY NUMBER(10) NOT NULL, " + + "UPDATED DATE DEFAULT SYSDATE NOT NULL, " + + "UPDATEDBY NUMBER(10) NOT NULL, " + + "AD_PACKAGE_IMP_ID Number(10) NOT NULL, " + + "AD_PACKAGE_IMP_DETAIL_ID Number(10) NOT NULL, " + + "AD_TABLE_ID NUMBER(10), " + + "AD_COLUMN_ID NUMBER(10), " + + "AD_REFERENCE_ID NUMBER(10), " + + "AD_PACKAGE_IMP_BCK_DIR NVARCHAR2(255), " + + "AD_PACKAGE_IMP_ORG_DIR NVARCHAR2(255), " + + "COLVALUE NVARCHAR2(2000), " + + "UNINSTALL CHAR(1), " + + "PRIMARY KEY( "+tablename.toUpperCase() +"_ID)"+")" ); + + try { + PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(),ResultSet.TYPE_FORWARD_ONLY, + ResultSet.CONCUR_UPDATABLE, null); + pstmt.executeUpdate(); + MSequence.createTableSequence (m_ctx, "AD_Package_Imp_Backup", m_trxName); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.info ("createImp_Sum_table:"+e); + } + } + } + + tables.close(); + } + + catch (SQLException e) { + log.info ("createImp_Sum_table:"+e); + } + + finally + { + if( conn != null ) + { + try + { + conn.close(); + } + catch( Exception e ){} + } + } + } + + /** + * Find and replace code + * + * @param file name + * @param old string + * @param new string + * + */ + public static int readReplace(String fname, String oldPattern, String replPattern){ + String line; + StringBuffer sb = new StringBuffer(); + + try { + + FileInputStream fis = new FileInputStream(fname); + BufferedReader reader=new BufferedReader ( new InputStreamReader(fis)); + while((line = reader.readLine()) != null) { + line = line.replaceAll(oldPattern, replPattern); + System.err.println(line); + sb.append(line+"\n"); + } + reader.close(); + BufferedWriter out=new BufferedWriter ( new FileWriter(fname)); + out.write(sb.toString()); + out.close(); + } + catch (Throwable e) { + System.err.println("error replacing codesnipit "+e); + return -1; + } + return 0; + } + + /** + * Make backup copy of record. + * + * @param tablename + * + * + * + */ + public int copyRecord(String tableName,PO from){ + // Create new record + int idBackup = 0; + String colValue=null; + int tableID = get_IDWithColumn("AD_Table", "TableName", tableName); + POInfo poInfo = POInfo.getPOInfo(m_ctx, tableID); + for (int i = 0; i < poInfo.getColumnCount(); i++){ + String colName = poInfo.getColumnName(i); + colValue=null; + + int columnID =get_IDWithMasterAndColumn ("AD_Column", "ColumnName", poInfo.getColumnName(i), "AD_Table", tableID); + StringBuffer sqlD = new StringBuffer("SELECT AD_Reference_ID FROM AD_COLUMN WHERE AD_Column_ID = '"+columnID+"'"); + int referenceID = DB.getSQLValue(m_trxName,sqlD.toString()); + + idBackup = MSequence.getNextID (Env.getAD_Client_ID(m_ctx), "AD_Package_Imp_Backup", m_trxName); + + sqlD = new StringBuffer("SELECT MAX(AD_PACKAGE_IMP_DETAIL_ID) FROM AD_PACKAGE_IMP_DETAIL"); + int idDetail = DB.getSQLValue(m_trxName,sqlD.toString())+1; + + if (referenceID == 10 || referenceID == 14 || referenceID == 34 || referenceID == 17) + if (from.get_Value(i)!= null) + colValue = from.get_Value(i).toString().replaceAll("'","''"); + else if (referenceID == 20|| referenceID == 28) + if (from.get_Value(i)!= null) + colValue = from.get_Value(i).toString().replaceAll("'","''"); + else + ;//Ignore + + sqlB = new StringBuffer ("Insert INTO AD_Package_Imp_Backup" + + "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " + + "AD_PACKAGE_IMP_BACKUP_ID, AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID," + + " AD_TABLE_ID, AD_COLUMN_ID, AD_REFERENCE_ID, COLVALUE)" + + "VALUES(" + + " "+ Env.getAD_Client_ID(m_ctx) + + ", "+ Env.getAD_Org_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", "+ Env.getAD_User_ID(m_ctx) + + ", " + idBackup + + ", " + idDetail + + ", " + AD_Package_Imp_ID + + ", " + tableID + + ", " + columnID + + ", " + referenceID + + ", '" + (colValue != null ? colValue : from.get_Value(i)) + +"')"); + + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Insert to import backup failed"); + //} + } + return idBackup; + } + + /** + * Check if column exists in database and modify. If not create column. + * + * @param tablename + * @param columnname + * @param v_AD_Reference_ID + * @param v_FieldLength + * @param v_DefaultValue + * @param v_IsMandatory + * + */ + public int createcolumn (MColumn column){ + MTable table = new MTable(m_ctx, column.getAD_Table_ID(), m_trxName); + if (table.isView()) + return 0; + + int no = 0; + + String sql = null; + ResultSet rst = null; + ResultSet rsc = null; + try { + // Find Column in Database + DatabaseMetaData md = DB.getConnectionRO().getMetaData(); + String catalog = DB.getDatabase().getCatalog(); + String schema = DB.getDatabase().getSchema(); + String tableName = table.getTableName(); + String columnName = column.getColumnName(); + if (DB.isOracle()) { + tableName = tableName.toUpperCase(); + columnName = columnName.toUpperCase(); + } else if (DB.isPostgreSQL()) { + tableName = tableName.toLowerCase(); + columnName = columnName.toLowerCase(); + } + + rst = md.getTables(catalog, schema, tableName, new String[] {"TABLE"}); + if (! rst.next()) { + // table doesn't exist + sql = table.getSQLCreate (); + } else { + // + rsc = md.getColumns(catalog, schema, tableName, columnName); + if (rsc.next()) + { + // update existing column + boolean notNull = DatabaseMetaData.columnNoNulls == rsc.getInt("NULLABLE"); + sql = column.getSQLModify(table, column.isMandatory() != notNull); + } else { + // No existing column + sql = column.getSQLAdd(table); + } + rsc.close(); + rsc = null; + } + + rst.close(); + rst = null; + log.info(sql); + + if (sql.indexOf(DB.SQLSTATEMENT_SEPARATOR) == -1) + { + no = DB.executeUpdate(sql, false, m_trxName); + } + else + { + String statements[] = sql.split(DB.SQLSTATEMENT_SEPARATOR); + for (int i = 0; i < statements.length; i++) + { + int count = DB.executeUpdate(statements[i], false, m_trxName); + no += count; + } + } + + } catch (SQLException e) { + e.printStackTrace(); + if (rsc != null) { + try { + rsc.close(); + } catch (SQLException e1) { } + rsc = null; + } + if (rst != null) { + try { + rst.close(); + } catch (SQLException e1) { } + rst = null; + } + return 0; + } + + return 1; + } + + /** + * Open input file for processing + * + * @param String file with path + * + */ + public FileInputStream OpenInputfile (String filePath) { + + FileInputStream fileTarget = null; + + try { + fileTarget = new FileInputStream(filePath); + } + catch (FileNotFoundException e ) { + System.out.println("Can't find file "); + + return null; + } + return fileTarget; + } + + /** + * Open output file for processing + * + * @param String file with path + * + */ + public OutputStream OpenOutputfile (String filePath) { + + OutputStream fileTarget = null; + + try { + fileTarget = new FileOutputStream(filePath); + } + catch (FileNotFoundException e ) { + System.out.println("Can't find file "); + + return null; + } + return fileTarget; + } + + /** + * Copyfile + * + * @param String file with path + * + */ + public int copyFile (InputStream source,OutputStream target) { + + int byteCount = 0; + int success = 0; + try { + while (true) { + int data = source.read(); + if (data < 0) + break; + target.write(data); + byteCount++; + } + source.close(); + target.close(); + + + System.out.println("Successfully copied " + byteCount + " bytes."); + } + catch (Exception e) { + System.out.println("Error occurred while copying. "+ byteCount + " bytes copied."); + System.out.println(e.toString()); + + success = -1; + } + return success; + } + + /** + * Receive notification of the end of an element. + * @param uri namespace + * @param localName simple name + * @param qName qualified name + * @throws SAXException + */ + public void endElement (String uri, String localName, String qName) throws SAXException { + // Check namespace. + String elementValue = null; + if ("".equals (uri)) + elementValue = qName; + else + elementValue = uri + localName; + // log.info("endElement: "+elementValue); + /* **************************************** + adempieredata Handler. + **************************************** */ + // row element, adempieredata + if (elementValue.equals("drow")){ + genericPO.save(m_trxName); + if (genericPO.save(m_trxName)== true) + record_log (1, genericPO.get_TableName(),"Data", genericPO.get_ID(),AD_Backup_ID, Object_Status,d_tablename,get_IDWithColumn("AD_Table", "TableName", d_tablename)); + else + record_log (0, genericPO.get_TableName(),"Data", genericPO.get_ID(),AD_Backup_ID, Object_Status,d_tablename,get_IDWithColumn("AD_Table", "TableName", d_tablename)); + + genericPO = null; + } + else if (elementValue.equals("adempiereAD")){ + if (!PK_Status.equals("Completed with errors")) + PK_Status = "Completed successfully"; + + //Update package history log with package status + sqlB = new StringBuffer ("UPDATE AD_Package_Imp " + + "SET PK_Status = '" + PK_Status + + "' WHERE AD_Package_Imp_ID = " + AD_Package_Imp_ID); + int no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to package summary failed"); + + //Update package list with package status + sqlB = new StringBuffer ("UPDATE AD_Package_Imp_Inst " + + "SET PK_Status = '" + PK_Status + + "' WHERE AD_Package_Imp_Inst_ID = " + AD_Package_Imp_Inst_ID); + no = DB.executeUpdate (sqlB.toString(), m_trxName); + if (no == -1) + log.info("Update to package list failed"); + + hd_documemt.endElement("","","adempiereDocument"); + hd_documemt.endDocument(); + try { + fw_document.close(); + } + catch (Exception e) + {} + } + } // endElement + + // globalqss - add support for trx in 3.1.2 + public void set_TrxName(String trxName) { + m_trxName = trxName; + } + + // globalqss - add support for trx in 3.1.2 + public void setCtx(Properties ctx) { + m_ctx = ctx; + } + +} // PackInHandler diff --git a/base/src/org/adempiere/pipo/PackOut.java b/base/src/org/adempiere/pipo/PackOut.java new file mode 100644 index 0000000000..c32953d6b0 --- /dev/null +++ b/base/src/org/adempiere/pipo/PackOut.java @@ -0,0 +1,2959 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 Adempiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * + * Copyright (C) + * 2004 Robert KLEIN. robeklein@hotmail.com * + * Contributor(s): ______________________________________. + *****************************************************************************/ +package org.adempiere.pipo; + +import java.io.*; +import java.sql.*; +import java.util.logging.Level; + +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.sax.SAXTransformerFactory; +import javax.xml.transform.sax.TransformerHandler; +import javax.xml.transform.stream.StreamResult; + +import org.adempiere.pipo.CreateZipFile; +import org.compiere.model.X_AD_Column; +import org.compiere.model.X_AD_Field; +import org.compiere.model.X_AD_Process; +import org.compiere.model.X_AD_Process_Para; +import org.compiere.model.X_AD_Tab; +import org.compiere.model.X_AD_Table; +import org.compiere.model.X_AD_Window; +import org.compiere.model.X_AD_Preference; +import org.compiere.model.X_AD_Menu; +import org.compiere.model.X_AD_PrintFormatItem; +import org.compiere.model.X_AD_Task; +import org.compiere.model.X_AD_Form; +import org.compiere.model.X_AD_Workbench; +import org.compiere.model.X_AD_WorkbenchWindow; +import org.compiere.model.X_AD_Reference; +import org.compiere.model.X_AD_PrintFormat; +import org.compiere.model.X_AD_ImpFormat; +import org.compiere.model.X_AD_ImpFormat_Row; +import org.compiere.model.X_AD_Ref_List; +import org.compiere.model.X_AD_ReportView; +import org.compiere.model.X_AD_ReportView_Col; +import org.compiere.model.X_AD_Role; +import org.compiere.model.X_AD_Window_Access; +import org.compiere.model.X_AD_Process_Access; +import org.compiere.model.X_AD_Form_Access; +import org.compiere.model.X_AD_Workflow_Access; +import org.compiere.model.X_AD_Task_Access; +import org.compiere.model.X_AD_Role_OrgAccess; +import org.compiere.model.X_AD_User_Roles; +import org.compiere.util.DB; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.AttributesImpl; +import org.compiere.process.*; + + +/** + * Convert AD to XML + * + * @author Robert Klein + * @version $Id: PackOut.java,v 1.0 + * + */ + +public class PackOut extends SvrProcess +{ + /** Record ID */ + private int p_PackOut_ID = 0; + private X_AD_Window m_Window = null; + private X_AD_Process_Para m_Processpara = null; + private X_AD_Table m_Table = null; + private X_AD_Column m_Column = null; + private X_AD_Tab m_Tab = null; + private X_AD_PrintFormat m_Printformat = null; + private X_AD_Field m_Field = null; + private X_AD_Menu m_Menu = null; + private X_AD_Task m_Task = null; + private X_AD_PrintFormatItem m_PrintFormatItem = null; + private X_AD_Form m_Form = null; + private X_AD_Workbench m_Workbench = null; + private X_AD_WorkbenchWindow m_Workbenchwindow = null; + private X_AD_Reference m_Reference = null; + private X_AD_Ref_List m_Ref_List = null; + private X_AD_ReportView m_Reportview = null; + private X_AD_ReportView_Col m_Reportview_Col = null; + private X_AD_Role m_Role = null; + private X_AD_Preference m_Preference= null; + private X_AD_ImpFormat m_ImpFormat= null; + private X_AD_ImpFormat_Row m_ImpFormat_Row= null; + private X_AD_Window_Access m_Window_Access = null; + private X_AD_Process_Access m_Process_Access = null; + private X_AD_Form_Access m_Form_Access = null; + private X_AD_Workflow_Access m_Workflow_Access = null; + private X_AD_Task_Access m_Task_Access = null; + private X_AD_Role_OrgAccess m_Role_OrgAccess = null; + private X_AD_User_Roles m_User_Role = null; + private String PackOutVer = "005"; + private String packagedir = null; + private String packagename = null; + private String includesdir = null; + private int Table_ID[] = new int [1000]; + private int Table_Count = 0; + private int PK_AD_Client_ID = 0; + private int PK_AD_Org_ID = 0; + String fileSeperator=null; + /** + * Prepare - e.g., get Parameters. + */ + protected void prepare() + { + p_PackOut_ID = getRecord_ID(); + ProcessInfoParameter[] para = getParameter(); + for (int i = 0; i < para.length; i++) + { + } + } // prepare + + + /** + * Start the transformation to XML + * @return info + * @throws Exception + */ + protected String doIt() throws java.lang.Exception + { + OutputStream fw_document = null; + OutputStream fw_menu = null; + log.info("doIt - AD_PACKAGE_EXP_ID=" + p_PackOut_ID); + if (p_PackOut_ID == 0) + throw new IllegalArgumentException("No Record"); + String sql1 = "SELECT * FROM AD_Package_Exp WHERE AD_Package_Exp_ID = "+p_PackOut_ID; + PreparedStatement pstmt1 = null; + pstmt1 = DB.prepareStatement (sql1, get_TrxName()); + + try { + ResultSet rs1 = pstmt1.executeQuery(); + while (rs1.next()){ + //Create the package documentation + File file = new File(""); + fileSeperator = file.separator; + packagedir = rs1.getString("File_Directory"); + packagename = packagedir + rs1.getString("Name"); + includesdir = rs1.getString("Name") + fileSeperator+"**"; + boolean success = (new File(rs1.getString("File_Directory") + rs1.getString("Name")+fileSeperator+"doc"+fileSeperator )).mkdirs(); + String file_document = rs1.getString("File_Directory") + rs1.getString("Name") +fileSeperator+ "doc"+fileSeperator+rs1.getString("Name")+"Doc.xml"; + fw_document = new FileOutputStream (file_document, false); + StreamResult streamResult_document = new StreamResult(fw_document); + SAXTransformerFactory tf_document = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); + TransformerHandler hd_documemt = tf_document.newTransformerHandler(); + Transformer serializer_document = hd_documemt.getTransformer(); + serializer_document.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1"); + serializer_document.setOutputProperty(OutputKeys.INDENT,"yes"); + hd_documemt.setResult(streamResult_document); + hd_documemt.startDocument(); + AttributesImpl atts = new AttributesImpl(); + atts.clear(); + hd_documemt.processingInstruction("xml-stylesheet","type=\"text/css\" href=\"adempiereDocument.css\""); + hd_documemt.startElement("","","adempiereDocument",atts); + hd_documemt.startElement("","","header",atts); + hd_documemt.characters((rs1.getString("Name")+" Package Description").toCharArray(),0,(rs1.getString("Name")+" Package Description").length()); + hd_documemt.endElement("","","header"); + hd_documemt.startElement("","","H1",atts); + hd_documemt.characters(("Package Name:" ).toCharArray(),0,("Package Name:" ).length()); + hd_documemt.endElement("","","H1"); + hd_documemt.startElement("","","packagename",atts); + hd_documemt.characters(rs1.getString("Name").toCharArray(),0,rs1.getString("Name").length()); + hd_documemt.endElement("","","packagename"); + hd_documemt.startElement("","","H1",atts); + hd_documemt.characters(("Creator:" ).toCharArray(),0,("Creator:").length()); + hd_documemt.endElement("","","H1"); + hd_documemt.startElement("","","creator",atts); + hd_documemt.characters(rs1.getString("UserName").toCharArray(),0,rs1.getString("UserName").length()); + hd_documemt.endElement("","","creator"); + hd_documemt.startElement("","","H1",atts); + hd_documemt.characters(("Email Address:" ).toCharArray(),0,("Email Address:" ).length()); + hd_documemt.endElement("","","H1"); + hd_documemt.startElement("","","creatorcontact",atts); + hd_documemt.characters(rs1.getString("Email").toCharArray(),0,rs1.getString("Email").length()); + hd_documemt.endElement("","","creatorcontact"); + hd_documemt.startElement("","","H1",atts); + hd_documemt.characters(("Created:" ).toCharArray(),0,("Created:" ).length()); + hd_documemt.endElement("","","H1"); + hd_documemt.startElement("","","createddate",atts); + hd_documemt.characters(rs1.getString("Created").toString().toCharArray(),0,rs1.getString("Created").toString().length()); + hd_documemt.endElement("","","createddate"); + hd_documemt.startElement("","","H1",atts); + hd_documemt.characters(("Updated:" ).toCharArray(),0,("Updated:" ).length()); + hd_documemt.endElement("","","H1"); + hd_documemt.startElement("","","updateddate",atts); + hd_documemt.characters(rs1.getString("Updated").toString().toCharArray(),0,rs1.getString("Updated".toString()).length()); + hd_documemt.endElement("","","updateddate"); + hd_documemt.startElement("","","H1",atts); + hd_documemt.characters(("Description:" ).toCharArray(),0,("Description:" ).length()); + hd_documemt.endElement("","","H1"); + hd_documemt.startElement("","","description",atts); + hd_documemt.characters(rs1.getString("Description").toCharArray(),0,rs1.getString("Description").length()); + hd_documemt.endElement("","","description"); + hd_documemt.startElement("","","H1",atts); + hd_documemt.characters(("Instructions:" ).toCharArray(),0,("Instructions:" ).length()); + hd_documemt.endElement("","","H1"); + hd_documemt.startElement("","","instructions",atts); + hd_documemt.characters(rs1.getString("Instructions").toCharArray(),0,rs1.getString("Instructions").length()); + hd_documemt.endElement("","","instructions"); + hd_documemt.startElement("","","H1",atts); + hd_documemt.characters(("Files in Package:" ).toCharArray(),0,("Files in Package:" ).length()); + hd_documemt.endElement("","","H1"); + hd_documemt.startElement("","","file",atts); + hd_documemt.characters(("File: PackOut.xml").toCharArray(),0,("File: PackOut.xml").length()); + hd_documemt.endElement("","","file"); + hd_documemt.startElement("","","filedirectory",atts); + hd_documemt.characters("Directory: \\dict\\".toCharArray(),0,("Directory: \\dict\\").length()); + hd_documemt.endElement("","","filedirectory"); + hd_documemt.startElement("","","filenotes",atts); + hd_documemt.characters("Notes: Contains all application/object settings for package".toCharArray(),0,"Notes: Contains all application/object settings for package".length()); + hd_documemt.endElement("","","filenotes"); + success = (new File(rs1.getString("File_Directory") + rs1.getString("Name")+fileSeperator+ "dict"+fileSeperator)).mkdirs(); + String file_menu = rs1.getString("File_Directory") + rs1.getString("Name") +fileSeperator+ "dict"+fileSeperator+"PackOut.xml"; + fw_menu = new FileOutputStream (file_menu, false); + StreamResult streamResult_menu = new StreamResult(fw_menu); + SAXTransformerFactory tf_menu = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); + TransformerHandler hd_menu = tf_menu.newTransformerHandler(); + Transformer serializer_menu = hd_menu.getTransformer(); + serializer_menu.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1"); + serializer_menu.setOutputProperty(OutputKeys.INDENT,"yes"); + hd_menu.setResult(streamResult_menu); + hd_menu.startDocument(); + atts.clear(); + atts.addAttribute("","","Name","CDATA",rs1.getString("Name")); + atts.addAttribute("","","Version","CDATA",rs1.getString("PK_Version")); + atts.addAttribute("","","CompVer","CDATA",rs1.getString("ReleaseNo")); + atts.addAttribute("","","DataBase","CDATA",rs1.getString("Version")); + atts.addAttribute("","","Description","CDATA",rs1.getString("Description")); + atts.addAttribute("","","creator","CDATA",rs1.getString("UserName")); + atts.addAttribute("","","creatorcontact","CDATA",rs1.getString("Email")); + atts.addAttribute("","","createddate","CDATA",rs1.getString("Created")); + atts.addAttribute("","","updateddate","CDATA",rs1.getString("Updated")); + atts.addAttribute("","","PackOutVer","CDATA",PackOutVer); + + hd_menu.startElement("","","adempiereAD",atts); + atts.clear(); + String sql = "SELECT * FROM AD_Package_Exp_Detail WHERE AD_Package_Exp_ID = "+p_PackOut_ID+" ORDER BY Line ASC"; + + PreparedStatement pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()){ + String Type = rs.getString("Type"); + log.info(rs.getString("Line")); + if (Type.compareTo("M") == 0){ + m_Menu = new X_AD_Menu (getCtx(), rs.getInt("AD_Menu_ID"), null); + if (m_Menu.isSummary() == false) { + CreateApplication (atts, hd_menu, rs.getInt("AD_Menu_ID")); + } + else { + atts = createmenuBinding(atts,m_Menu); + hd_menu.startElement("","","menu",atts); + CreateModule (atts, hd_menu, rs.getInt("AD_Menu_ID")); + hd_menu.endElement("","","menu"); + } + } + else if (Type.compareTo("P") == 0) + CreateProcess ( rs.getInt("AD_Process_ID"), atts, hd_menu ); + else if (Type.compareTo("R") == 0) + CreateReportview ( rs.getInt("AD_ReportView_ID"), atts, hd_menu ); + else if (Type.compareTo("D") == 0) + CreateData ( rs.getInt("AD_Table_ID"), rs.getString("SQLStatement"), atts, hd_menu ); + else if (Type.compareTo("T") == 0) + CreateTable (rs.getInt("AD_Table_ID"), atts, hd_menu); + else if (Type.compareTo("X") == 0) + CreateForm (rs.getInt("AD_Form_ID"), atts, hd_menu); + else if (Type.compareTo("W") == 0) + CreateWindow (rs.getInt("AD_Window_ID"), atts, hd_menu); + else if (Type.compareTo("B") == 0) + CreateWorkbench (rs.getInt("AD_Workbench_ID"), atts, hd_menu); + else if (Type.compareTo("S") == 0) + CreateRoles (rs.getInt("AD_Role_ID"), atts, hd_menu); + else if (Type.compareTo("SQL") == 0) + CreateSQL (rs.getString("SQLStatement"), rs.getString("DBType"), atts, hd_menu); + else if (Type.compareTo("IMP") == 0) + CreateImp (rs.getInt("AD_ImpFormat_ID"), atts, hd_menu); + else if (Type.compareTo("SNI") == 0) + CreateSnipit (rs.getString("Destination_Directory"),rs.getString("Destination_FileName"),rs.getString("AD_Package_Code_Old"), + rs.getString("AD_Package_Code_New"), rs.getString("ReleaseNo"), atts, hd_menu); + else if (Type.compareTo("F") == 0) + //TODO Create Workflow + CreateWorkflow (rs.getInt("AD_Workflow_ID"), atts, hd_menu); + else if (Type.compareTo("C") == 0){ + + String fullDirectory = rs1.getString("File_Directory") + rs1.getString("Name")+rs.getString("Target_Directory"); + String targetDirectoryModified=null; + char fileseperator1 = '/'; + char fileseperator2 = '\\'; + //Correct package for proper file seperator + if (fileSeperator.equals("/")){ + targetDirectoryModified = fullDirectory.replace(fileseperator2,fileseperator1); + } + else + targetDirectoryModified = fullDirectory.replace(fileseperator1,fileseperator2); + + String target_File = (targetDirectoryModified); + success = (new File(target_File).mkdirs()); + fullDirectory = rs.getString("File_Directory"); + targetDirectoryModified=null; + //Correct package for proper file seperator + if (fileSeperator.equals("/")){ + targetDirectoryModified = fullDirectory.replace(fileseperator2,fileseperator1); + } + else + targetDirectoryModified = fullDirectory.replace(fileseperator2,fileseperator1); + + CopyCode (targetDirectoryModified+rs.getString("FileName"),target_File+rs.getString("FileName")); + + atts.clear(); + + if(rs.getString("Destination_Directory") != null){ + + fullDirectory = rs.getString("Destination_Directory"); + String destinationDirectoryModified=null; + + //Correct package for proper file seperator + if (fileSeperator.equals("/")){ + destinationDirectoryModified = fullDirectory.replace(fileseperator2,fileseperator1); + } + else + destinationDirectoryModified = fullDirectory.replace(fileseperator2,fileseperator1); + + DistributeFile( rs.getString("FileName"), rs.getString("Target_Directory"), rs.getString("ReleaseNo"),destinationDirectoryModified, atts, hd_menu); + + } + + if(rs.getString("FileName") != null){ + hd_documemt.startElement("","","file",atts); + hd_documemt.characters(("File: "+rs.getString("FileName")).toCharArray(),0,("File: "+rs.getString("FileName")).length()); + hd_documemt.endElement("","","file"); + } + hd_documemt.startElement("","","filedirectory",atts); + hd_documemt.characters(("Directory: "+rs.getString("TARGET_DIRECTORY")).toCharArray(),0,("Directory: "+rs.getString("TARGET_DIRECTORY")).length()); + hd_documemt.endElement("","","filedirectory"); + + hd_documemt.startElement("","","filenotes",atts); + hd_documemt.characters(("Notes: "+rs.getString("Description")).toCharArray(),0,(("Notes: " + rs.getString("Description")).length())); + hd_documemt.endElement("","","filenotes"); + } + } + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getWindows"+ e); + } + finally + { + try + { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e) + {} + pstmt = null; + } + atts.clear(); + hd_menu.startElement("","","menuset",atts); + hd_menu.endElement("","","menuset"); + hd_menu.endElement("","","adempiereAD"); + hd_menu.endDocument();hd_documemt.endElement("","","adempiereDocument"); + hd_documemt.endDocument(); + //m_Exp.setProcessed(true); + //m_Exp.save(); + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getWindows", e); + } + finally + { + try + { + if (pstmt1 != null) + pstmt1.close (); + fw_document.close(); + fw_menu.close(); + } + catch (Exception e) + {} + pstmt1 = null; + } + + //create compressed packages + //set the files + File srcFolder = new File(""); + File destZipFile = new File(""); + File destTarFile = new File(""); + File destGZipFile = new File(""); + srcFolder = (new File(packagedir)); + destZipFile = (new File(packagename+".zip")); + destTarFile = (new File(packagename+".tar")); + destGZipFile = (new File(packagename+".tar.gz")); + + //delete the old packages if necessary + boolean success = destZipFile.delete(); + success = destTarFile.delete(); + success = destGZipFile.delete(); + + //create the compressed packages + CreateZipFile.zipFolder(srcFolder, destZipFile, includesdir); + CreateZipFile.tarFolder(srcFolder, destTarFile, includesdir); + CreateZipFile.gzipFile(destTarFile, destGZipFile); + + //Clean .tar file up + success = destTarFile.delete(); + + return "Finish Process"; + } // doIt + + public void CreateApplication (AttributesImpl atts, TransformerHandler hd_menu, int menu_id) throws SAXException + { + String sql = null; + int x = 0; + sql = "SELECT A.Node_ID, B.AD_Menu_ID, B.Name, B.AD_WINDOW_ID, B.AD_WORKFLOW_ID, B.AD_TASK_ID, " + + "B.AD_PROCESS_ID, B.AD_FORM_ID, B.AD_WORKBENCH_ID " + + "FROM AD_TreeNoDemm A, AD_Menu B " + + "WHERE A.Node_ID = " + menu_id + + " AND A.Node_ID = B.AD_Menu_ID"; + + PreparedStatement pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + + m_Menu = new X_AD_Menu (getCtx(), rs.getInt("AD_Menu_ID"), null); + atts = createmenuBinding(atts,m_Menu); + hd_menu.startElement("","","menu",atts); + if ( rs.getInt("AD_WINDOW_ID") > 0 | rs.getInt("AD_WORKFLOW_ID") > 0 | rs.getInt("AD_TASK_ID") > 0 | rs.getInt("AD_PROCESS_ID") > 0 | rs.getInt("AD_FORM_ID") > 0 | rs.getInt("AD_WORKBENCH_ID") > 0) + { + //Call CreateWindow. + if (rs.getInt("AD_WINDOW_ID") > 0) + { + CreateWindow (rs.getInt("AD_WINDOW_ID"), atts, hd_menu ); + } + //Call CreateProcess. + else if (rs.getInt("AD_PROCESS_ID") > 0) + { + CreateProcess (rs.getInt("AD_PROCESS_ID"), atts, hd_menu); + } + //Call CreateTask. + else if (rs.getInt("AD_TASK_ID") > 0) + { + CreateTask (rs.getInt("AD_TASK_ID"), atts, hd_menu); + } + //Call CreateForm. + else if (rs.getInt("AD_FORM_ID") > 0) + { + CreateForm (rs.getInt("AD_FORM_ID"), atts, hd_menu); + } + //Call CreateWorkbench + else if (rs.getInt("AD_WORKBENCH_ID") > 0) + { + CreateWorkbench (rs.getInt("AD_WORKBENCH_ID"), atts, hd_menu); + } + //Call CreateModule because entry is a summary menu + } + else + { + CreateModule (atts, hd_menu, rs.getInt("Node_ID")); + } + hd_menu.endElement("","","menu"); + } + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getWindows", e); + } + finally + { + try + { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e) + {} + pstmt = null; + } + } + + public void CreateModule (AttributesImpl atts, TransformerHandler hd_menu, int menu_id) throws SAXException + { + String sql = null; + sql = "SELECT A.Node_ID, B.AD_Menu_ID, B.Name, B.AD_WINDOW_ID, B.AD_WORKFLOW_ID, B.AD_TASK_ID, " + + "B.AD_PROCESS_ID, B.AD_FORM_ID, B.AD_WORKBENCH_ID " + + "FROM AD_TreeNoDemm A, AD_Menu B " + + "WHERE A.Parent_ID = " + menu_id + + " AND A.Node_ID = B.AD_Menu_ID"; + + PreparedStatement pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + //Menu tag Start. + m_Menu = new X_AD_Menu (getCtx(), rs.getInt("AD_Menu_ID"), null); + atts = createmenuBinding(atts,m_Menu); + hd_menu.startElement("","","menu",atts); + if ( rs.getInt("AD_WINDOW_ID") > 0 | rs.getInt("AD_WORKFLOW_ID") > 0 | rs.getInt("AD_TASK_ID") > 0 | rs.getInt("AD_PROCESS_ID") > 0 | rs.getInt("AD_FORM_ID") > 0 | rs.getInt("AD_WORKBENCH_ID") > 0) + { + //Call CreateWindow. + if (rs.getInt("AD_WINDOW_ID") > 0) + { + CreateWindow (rs.getInt("AD_WINDOW_ID"), atts, hd_menu ); + } + //Call CreateProcess. + else if (rs.getInt("AD_PROCESS_ID") > 0) + { + CreateProcess (rs.getInt("AD_PROCESS_ID"), atts, hd_menu); + } + //Call CreateTask. + else if (rs.getInt("AD_TASK_ID") > 0) + { + CreateTask (rs.getInt("AD_TASK_ID"), atts, hd_menu); + } + //Call CreateForm. + else if (rs.getInt("AD_FORM_ID") > 0) + { + CreateForm (rs.getInt("AD_FORM_ID"), atts, hd_menu); + } + //Call CreateWorkbench + else if (rs.getInt("AD_WORKBENCH_ID") > 0) + { + CreateWorkbench (rs.getInt("AD_WORKBENCH_ID"), atts, hd_menu); + } + //Call CreateModule because entry is a summary menu + } + else + { + CreateModule (atts, hd_menu, rs.getInt("Node_ID")); + } + hd_menu.endElement("","","menu"); + } + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getWindows", e); + } + finally + { + try + { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e) + {} + pstmt = null; + } + } + + public void CopyCode (String sourceName, String copyName) + { + CopyFile (sourceName, copyName ); + } + + public void CreateWorkflow (int AD_Workflow_ID, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + //TODO Create workflow + } + + public void CreateWorkbench (int AD_Workbench_ID, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + m_Workbench = new X_AD_Workbench (getCtx(), AD_Workbench_ID, null); + atts = createworkbenchBinding(atts,m_Workbench); + hd_menu.startElement("","","workbench",atts); + //Workbenchwindow tags + String sqlP = "SELECT * FROM AD_WorkbenchWindow WHERE AD_WORKBENCH_ID = " + AD_Workbench_ID; + PreparedStatement pstmtP = null; + pstmtP = DB.prepareStatement (sqlP, get_TrxName()); + try { + ResultSet rsP = pstmtP.executeQuery(); + while (rsP.next()) + { + m_Workbenchwindow = new X_AD_WorkbenchWindow (getCtx(), rsP.getInt("AD_Workbench_Window_ID"), null); + atts = createworkbenchwindowBinding(atts,m_Workbenchwindow); + hd_menu.startElement("","","workbenchwindow",atts); + hd_menu.endElement("","","workbenchwindow"); + } + rsP.close(); + pstmtP.close(); + pstmtP = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getWorkbench_Window", e); + } + finally + { + try { + if (pstmtP != null) + pstmtP.close (); + } + catch (Exception e) + {} + pstmtP = null; + } + hd_menu.endElement("","","workbench"); + } + + public void DistributeFile (String FileName, String Source_Directory, String ReleaseNo,String Target_Directory, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + atts.addAttribute("","","name","CDATA",FileName); + atts.addAttribute("","","sourceDirectory","CDATA",Source_Directory); + atts.addAttribute("","","targetDirectory","CDATA",Target_Directory); + atts.addAttribute("","","ReleaseNo","CDATA",ReleaseNo); + hd_menu.startElement("","","distfile",atts); + hd_menu.endElement("","","distfile"); + } + + public void CreateForm (int AD_Form_ID, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + m_Form = new X_AD_Form (getCtx(), AD_Form_ID, null); + atts = createformBinding(atts,m_Form); + hd_menu.startElement("","","form",atts); + hd_menu.endElement("","","form"); + } + + public void CreateTask (int AD_Task_ID, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + m_Task = new X_AD_Task (getCtx(), AD_Task_ID, null); + atts = createtaskBinding(atts,m_Task); + hd_menu.startElement("","","task",atts); + hd_menu.endElement("","","task"); + } + + public void CreateProcess (int AD_Process_ID, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + String sqlW = "SELECT * FROM AD_PROCESS WHERE AD_PROCESS_ID = " + AD_Process_ID; + + PreparedStatement pstmt1 = null; + pstmt1 = DB.prepareStatement (sqlW, get_TrxName()); + try { + ResultSet rs1 = pstmt1.executeQuery(); + while (rs1.next()) + { + X_AD_Process m_Process = new X_AD_Process (getCtx(), rs1.getInt("AD_Process_ID"), null); + + if (rs1.getInt("AD_ReportView_ID")>0){ + + CreateReportview(rs1.getInt("AD_ReportView_ID"),atts, hd_menu); + } + atts = createprocessBinding(atts,m_Process); + hd_menu.startElement("","","process",atts); + // processpara tags + String sqlP = "SELECT * FROM AD_PROCESS_PARA WHERE AD_PROCESS_ID = " + AD_Process_ID; + PreparedStatement pstmtP = null; + pstmtP = DB.prepareStatement (sqlP, get_TrxName()); + try { + ResultSet rsP = pstmtP.executeQuery(); + while (rsP.next()) + { + if (rsP.getInt("AD_Reference_ID")>0) + CreateReference (rsP.getInt("AD_Reference_ID"), atts, hd_menu); + if (rsP.getInt("AD_Reference_Value_ID")>0) + CreateReference (rsP.getInt("AD_Reference_Value_ID"),atts, hd_menu); + m_Processpara = new X_AD_Process_Para (getCtx(), rsP.getInt("AD_Process_Para_ID"), null); + atts = createprocessparaBinding(atts,m_Processpara); + hd_menu.startElement("","","processpara",atts); + hd_menu.endElement("","","processpara"); + } + rsP.close(); + pstmtP.close(); + pstmtP = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getProcess_Para", e); + } + finally + { + try { + if (pstmtP != null) + pstmtP.close (); + } + catch (Exception e) + {} + pstmtP = null; + } + hd_menu.endElement("","","process"); + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + catch (Exception e) { + log.log(Level.SEVERE,"getProcess", e); + } + finally{ + try { + if (pstmt1 != null) + pstmt1.close (); + } + catch (Exception e) + {} + pstmt1 = null; + } + } + + public void CreateWindow (int AD_Window_ID, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { +// Window Tag + m_Window = new X_AD_Window (getCtx(), AD_Window_ID, null); + atts = createwindowBinding(atts,m_Window); + hd_menu.startElement("","","window",atts); + //Tab Tag + String sql2 = "SELECT * FROM AD_TAB WHERE AD_WINDOW_ID = " + AD_Window_ID; + PreparedStatement pstmt1 = null; + pstmt1 = DB.prepareStatement (sql2, get_TrxName()); + try { + ResultSet rs1 = pstmt1.executeQuery(); + while (rs1.next()) + { + String sql3 = "SELECT Name FROM AD_Table WHERE AD_Table_ID=?"; + int table_id = rs1.getInt("AD_TABLE_ID"); + String name = rs1.getString("NAME"); + String tablename = DB.getSQLValueString(null, sql3, table_id); + CreateTable (rs1.getInt("AD_Table_ID"), atts, hd_menu); + m_Tab = new X_AD_Tab (getCtx(), rs1.getInt("AD_Tab_ID"), null); + atts = createtabBinding(atts,m_Tab); + hd_menu.startElement("","","tab",atts); + //Fields tags. + String sql4 = "SELECT * FROM AD_FIELD WHERE AD_TAB_ID = " + rs1.getInt("AD_TAB_ID") + + "ORDER BY SEQNO asc"; + PreparedStatement pstmt2 = null; + pstmt2 = DB.prepareStatement (sql4, get_TrxName()); + try { + ResultSet rs2 = pstmt2.executeQuery(); + while (rs2.next()) + { + m_Field = new X_AD_Field (getCtx(), rs2.getInt("AD_Field_ID"), null); + atts = createfieldBinding(atts,m_Field); + hd_menu.startElement("","","field",atts); + hd_menu.endElement("","","field"); + } + rs2.close(); + pstmt2.close(); + pstmt2 = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getFields", e); + } + finally + { + try + { + if (pstmt2 != null) + pstmt2.close (); + } + catch (Exception e) + {} + pstmt2 = null; + } + hd_menu.endElement("","","tab"); + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getTabs", e); + } + finally + { + try + { + if (pstmt1 != null) + pstmt1.close (); + } + catch (Exception e) + {} + pstmt1 = null; + } + +// Loop tags. + hd_menu.endElement("","","window"); + + //Preference Tag + sql2 = "SELECT * FROM AD_PREFERENCE WHERE AD_WINDOW_ID = " + AD_Window_ID; + pstmt1 = null; + pstmt1 = DB.prepareStatement (sql2, get_TrxName()); + try { + ResultSet rs1 = pstmt1.executeQuery(); + while (rs1.next()) + { + m_Preference = new X_AD_Preference (getCtx(), rs1.getInt("AD_Preference_ID"), null); + atts = createpreferenceBinding(atts,m_Preference); + hd_menu.startElement("","","preference",atts); + hd_menu.endElement("","","preference"); + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + catch (Exception e) + { + log.log(Level.SEVERE,"getTabs", e); + } + finally + { + try + { + if (pstmt1 != null) + pstmt1.close (); + } + catch (Exception e) + {} + pstmt1 = null; + } + + } + + public void CreateData (int table_id, String sql, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + Statement stmt = DB.createStatement(); + atts.clear(); + hd_menu.startElement("","","data",atts); + try { + ResultSet rs = stmt.executeQuery(sql); + ResultSetMetaData meta = rs.getMetaData(); + int columns = meta.getColumnCount(); + int i = 1; + String col_Name = null; + String sql1 = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + String table_Name = DB.getSQLValueString(null,sql1,table_id); + atts.clear(); + atts.addAttribute("","","name","CDATA",table_Name); + hd_menu.startElement("","","dtable",atts); + while (rs.next()){ + atts.clear(); + int key1 = 0; + String nameatts = ""; + for (i=1 ;i <= columns;i++){ + col_Name = meta.getColumnName(i); + if (col_Name.equals("NAME") && rs.getObject("name") != null) + nameatts = ""+rs.getObject("name"); + String sql2 = "SELECT ColumnName FROM AD_Column " + + "WHERE isKey = 'Y' AND " + + "AD_Table_ID = ? AND " + + "Upper(ColumnName)= '"+col_Name+"'"; + String cName = DB.getSQLValueString(null,sql2,table_id); + if (cName != null){ + if (cName.toUpperCase().equals(col_Name) & key1 == 0 ){ + atts.addAttribute("","","key1name","CDATA",cName); + atts.addAttribute("","","lookupkey1name","CDATA",""+rs.getObject(col_Name)); + key1 = 1; + } + else if (cName.toUpperCase().equals(col_Name) & key1 == 1 ){ + atts.addAttribute("","","key2name","CDATA",cName); + atts.addAttribute("","","lookupkey2name","CDATA",""+rs.getObject(col_Name)); + key1 = 2; + } + } + } + atts.addAttribute("","","name","CDATA",nameatts); + if ( key1 == 0 ){ + atts.addAttribute("","","key1name","CDATA",""); + atts.addAttribute("","","lookupkey1name","CDATA",""); + key1 = 1; + } + if ( key1 == 1 ){ + atts.addAttribute("","","key2name","CDATA",""); + atts.addAttribute("","","lookupkey2name","CDATA",""); + } + hd_menu.startElement("","","drow",atts); + for (i=1 ;i <= columns;i++){ + atts.clear(); + col_Name = meta.getColumnName(i); + String sql2 = "Select A.ColumnName, B.Name " + + "From AD_Column A, AD_Reference B " + + "Where Upper(A.columnname) = ? and " + + "A.AD_TABLE_ID = ? and " + + "A.AD_Reference_ID = B.AD_Reference_ID"; + PreparedStatement pstmt = null; + try + { + pstmt = DB.prepareStatement(sql2, get_TrxName()); + pstmt.setString(1, col_Name); + pstmt.setInt(2, table_id); + ResultSet rs1 = pstmt.executeQuery(); + while (rs1.next()){ + //added 9/3/05 + atts.clear(); + atts.addAttribute("","","name","CDATA", rs1.getString("ColumnName")); + atts.addAttribute("","","class","CDATA", rs1.getString("Name")); + if (rs1.getString("Name").equals("Date")||rs1.getString("Name").equals("Date+Time")||rs1.getString("Name").equals("Time")) + atts.addAttribute("","","value","CDATA", "" + rs.getTimestamp(i)); + else + atts.addAttribute("","","value","CDATA", "" + rs.getObject(i)); + + if (!rs1.getString("ColumnName").equals("Created")&&!rs1.getString("ColumnName").equals("CreatedBy")&& + !rs1.getString("ColumnName").equals("Updated")&&!rs1.getString("ColumnName").equals("UpdatedBy")){ + hd_menu.startElement("","","dcolumn",atts); + hd_menu.endElement("","","dcolumn"); + } + } + rs1.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.log(Level.SEVERE,"getData", e); + } + } + hd_menu.endElement("","","drow"); + } + rs.close(); + stmt.close(); + stmt = null; + hd_menu.endElement("","","dtable"); + } + + catch (Exception e) { + log.log(Level.SEVERE,"getData", e); + } + + hd_menu.endElement("","","data"); + } + + public void CreateReportview (int Reportview_id, AttributesImpl atts, TransformerHandler hd_menu) + { + String sql = "SELECT * FROM AD_ReportView WHERE AD_ReportView_ID= " + Reportview_id; + PreparedStatement pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + atts.clear(); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + m_Reportview = new X_AD_ReportView (getCtx(), rs.getInt("AD_Reportview_ID"), null); + atts = createreportviewBinding(atts,m_Reportview); + hd_menu.startElement("","","reportview",atts); + hd_menu.endElement("","","reportview"); + + String sql1 = "SELECT * FROM AD_Printformat WHERE AD_Reportview_ID= " + Reportview_id; + PreparedStatement pstmt1 = null; + pstmt1 = DB.prepareStatement (sql1, get_TrxName()); + try { + ResultSet rs1 = pstmt1.executeQuery(); + while (rs1.next()) + { + //Export Table if neccessary + CreateTable (rs1.getInt("AD_Table_ID"), atts, hd_menu); + + m_Printformat = new X_AD_PrintFormat (getCtx(), rs1.getInt("AD_Printformat_ID"), null); + atts = createPrintformatBinding(atts,m_Printformat); + hd_menu.startElement("","","printformat",atts); + + String sql2 = "SELECT * FROM AD_PrintFormatItem WHERE AD_PrintFormat_ID= " + rs1.getInt("AD_Printformat_ID"); + PreparedStatement pstmt2 = null; + pstmt2 = DB.prepareStatement (sql2, get_TrxName()); + try { + ResultSet rs2 = pstmt2.executeQuery(); + while (rs2.next()) + { + m_PrintFormatItem = new X_AD_PrintFormatItem (getCtx(), rs2.getInt("AD_PrintFormatItem_ID"), null); + atts = createPrintformatItemBinding(atts,m_PrintFormatItem); + hd_menu.startElement("","","printformatitem",atts); + hd_menu.endElement("","","printformatitem"); + } + rs2.close(); + pstmt2.close(); + pstmt2 = null; + } + + catch (Exception e) + { + log.log(Level.SEVERE,"printformatitem", e); + } + finally + { + try + { + if (pstmt2 != null) + pstmt2.close (); + } + catch (Exception e) + {} + pstmt2 = null; + } + + + hd_menu.endElement("","","printformat"); + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + + catch (Exception e) + { + log.log(Level.SEVERE,"printformat", e); + } + finally + { + try + { + if (pstmt1 != null) + pstmt1.close (); + } + catch (Exception e) + {} + pstmt1 = null; + } + atts.clear(); + sql1 = "SELECT * FROM AD_ReportView_Col WHERE AD_Reportview_ID= " + Reportview_id; + pstmt1 = null; + pstmt1 = DB.prepareStatement (sql1, get_TrxName()); + try { + ResultSet rs1 = pstmt1.executeQuery(); + while (rs1.next()) + { + m_Reportview_Col = new X_AD_ReportView_Col (getCtx(), rs1.getInt("AD_ReportView_Col_ID"), null); + atts = createreportviewcolBinding(atts,m_Reportview_Col); + hd_menu.startElement("","","reportviewcol",atts); + hd_menu.endElement("","","reportviewcol"); + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + + catch (Exception e) + { + log.log(Level.SEVERE,"reportviewcol", e); + } + finally + { + try + { + if (pstmt1 != null) + pstmt1.close (); + } + catch (Exception e) + {} + pstmt1 = null; + } + //atts = createreportviewBinding(atts,m_Reportview); + //hd_menu.startElement("","","reportview",atts); + //hd_menu.endElement("","","reportview"); + } + + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) + { + log.log(Level.SEVERE,"reportview", e); + } + + + finally + { + try + { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e) + {} + pstmt = null; + } + } + + public void CreateSQL (String SQLStatement, String DBType,AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + atts = createSQLStatmentBinding(atts, SQLStatement, DBType); + hd_menu.startElement("","","SQLStatement",atts); + hd_menu.endElement("","","SQLStatement"); + } + + public void CreateSnipit (String FileDir, String FileName, String OldCode, String NewCode, String ReleaseNo, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + atts = createSnipitBinding(atts, FileDir, FileName, OldCode, NewCode, ReleaseNo); + hd_menu.startElement("","","codesnipit",atts); + hd_menu.endElement("","","codesnipit"); + } + + public void CreateRoles (int Role_id, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + + + //Process role + m_Role = new X_AD_Role (getCtx(), Role_id, null); + atts = createroleBinding(atts,m_Role); + hd_menu.startElement("","","role",atts); + + //Process org access + String sql = "SELECT * FROM AD_Role_OrgAccess WHERE AD_Role_ID= " + Role_id; + PreparedStatement pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + atts = createorgaccessBinding(atts,rs.getInt("AD_Org_ID"),rs.getInt("AD_Role_ID")); + hd_menu.startElement("","","OrgAccess",atts); + hd_menu.endElement("","","OrgAccess"); + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) { + log.log(Level.SEVERE,"CreateRoles-Window Access", e); + } + //Process user assignment access + sql = "SELECT * FROM AD_User_Roles WHERE AD_Role_ID= " + Role_id; + pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + atts = createusrassignBinding(atts,rs.getInt("AD_User_ID"),rs.getInt("AD_Role_ID"),rs.getInt("AD_Org_ID")); + hd_menu.startElement("","","userrole",atts); + hd_menu.endElement("","","userrole"); + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) { + log.log(Level.SEVERE,"CreateRoles-Window Access", e); + } + //Process AD_Window_Access Values + sql = "SELECT * FROM AD_Window_Access WHERE AD_Role_ID= " + Role_id; + pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + atts = createwindowaccessBinding(atts,rs.getInt("AD_Window_ID"),rs.getInt("AD_Role_ID")); + hd_menu.startElement("","","windowaccess",atts); + hd_menu.endElement("","","windowaccess"); + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) { + log.log(Level.SEVERE,"CreateRoles-Window Access", e); + } + +// Process AD_Process_Access Values + sql = "SELECT * FROM AD_Process_Access WHERE AD_Role_ID= " + Role_id; + pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + //m_Process_Access = new X_AD_Process_Access (getCtx(), rs.getInt("AD_Process_ID"), null); + atts = createprocessaccessBinding(atts,rs.getInt("AD_Process_ID"),rs.getInt("AD_Role_ID")); + hd_menu.startElement("","","processaccess",atts); + hd_menu.endElement("","","processaccess"); + + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) { + log.log(Level.SEVERE,"CreateRoles-AD_Process", e); + } + +// Process AD_Form_Access Values + sql = "SELECT * FROM AD_Form_Access WHERE AD_Role_ID= " + Role_id; + pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + //m_Form_Access = new X_AD_Form_Access (getCtx(), rs.getInt("AD_Form_ID"), null); + atts = createformaccessBinding(atts,rs.getInt("AD_Form_ID"),rs.getInt("AD_Role_ID")); + hd_menu.startElement("","","formaccess",atts); + hd_menu.endElement("","","formaccess"); + + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) { + log.log(Level.SEVERE,"CreateRoles-Form Access", e); + } + +// Process AD_Workflow_Access Values + sql = "SELECT * FROM AD_Workflow_Access WHERE AD_Role_ID= " + Role_id; + pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + //m_Workflow_Access = new X_AD_Workflow_Access (getCtx(), rs.getInt("AD_Workflow_ID"), null); + atts = createworkflowaccessBinding(atts,rs.getInt("AD_Workflow_ID"),rs.getInt("AD_Role_ID")); + hd_menu.startElement("","","workflowaccess",atts); + hd_menu.endElement("","","workflowaccess"); + + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) { + log.log(Level.SEVERE,"CreateRoles-Workflow", e); + } + +// Process AD_Task_Access Values + sql = "SELECT * FROM AD_Task_Access WHERE AD_Role_ID= " + Role_id; + pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + //m_Task_Access = new X_AD_Task_Access (getCtx(), rs.getInt("AD_Task_ID"), null); + atts = createtaskaccessBinding(atts,rs.getInt("AD_Task_ID"),rs.getInt("AD_Role_ID")); + hd_menu.startElement("","","taskaccess",atts); + hd_menu.endElement("","","taskaccess"); + + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) { + log.log(Level.SEVERE,"CreateRoles-Task", e); + } + finally + { + try + { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e) + {} + pstmt = null; + } + hd_menu.endElement("","","role"); + } + + public void CreateReference (int Reference_id, AttributesImpl atts, TransformerHandler hd_menu) + { + String sql = "SELECT * FROM AD_Reference WHERE AD_Reference_ID= " + Reference_id; + + PreparedStatement pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + + try { + + ResultSet rs = pstmt.executeQuery(); + + while (rs.next()) + { + + m_Reference = new X_AD_Reference (getCtx(), rs.getInt("AD_Reference_ID"), null); + atts = createreferenceBinding(atts,m_Reference); + hd_menu.startElement("","","reference",atts); + + + if (m_Reference.getValidationType().compareTo("L")== 0) + { + String sql1 = "SELECT * FROM AD_Ref_List WHERE AD_Reference_ID= " + Reference_id; + + PreparedStatement pstmt1 = null; + pstmt1 = DB.prepareStatement (sql1, get_TrxName()); + + try { + + ResultSet rs1 = pstmt1.executeQuery(); + + while (rs1.next()) + { + + m_Ref_List = new X_AD_Ref_List (getCtx(), rs1.getInt("AD_REF_LIST_ID"), null); + atts = createreflistBinding(atts,m_Ref_List); + hd_menu.startElement("","","referencelist",atts); + hd_menu.endElement("","","referencelist"); + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + + catch (Exception e) + { + log.log(Level.SEVERE,"getRef_List", e); + } + + + finally + { + try + { + if (pstmt1 != null) + pstmt1.close (); + } + catch (Exception e) + {} + pstmt1 = null; + } + + } + else if (m_Reference.getValidationType().compareTo("T")== 0) + { + String sql1 = "SELECT * FROM AD_Reference WHERE AD_Reference_ID= " + Reference_id; + PreparedStatement pstmt1 = null; + pstmt1 = DB.prepareStatement (sql1, get_TrxName()); + + try { + + ResultSet rs1 = pstmt1.executeQuery(); + + while (rs1.next()) + { + atts = createreferencetableBinding(atts,Reference_id); + hd_menu.startElement("","","referencetable",atts); + hd_menu.endElement("","","referencetable"); + } + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + + catch (Exception e) + { + log.log(Level.SEVERE,"getRef_Table", e); + } + + + finally + { + try + { + if (pstmt1 != null) + pstmt1.close (); + } + catch (Exception e) + {} + pstmt1 = null; + } + } + hd_menu.endElement("","","reference"); + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e) + { + log.log(Level.SEVERE,"getRefence", e); + } + + + finally + { + try + { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e) + {} + pstmt = null; + } + } + + public void CreateImp (int import_id, AttributesImpl atts, TransformerHandler hd_menu) throws SAXException + { + atts.clear(); + m_ImpFormat = new X_AD_ImpFormat (getCtx(), import_id, null); + atts = createimpBinding(atts,m_ImpFormat); + + hd_menu.startElement("","","impformat",atts); + String sql = "SELECT * FROM AD_ImpFormat_Row WHERE AD_ImpFormat_ID= " + import_id; + + PreparedStatement pstmt = null; + pstmt = DB.prepareStatement (sql, get_TrxName()); + + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + m_ImpFormat_Row = new X_AD_ImpFormat_Row (getCtx(), rs.getInt("AD_ImpFormat_Row_ID"), null); + atts = createimprowBinding(atts,m_ImpFormat_Row); + hd_menu.startElement("","","impformatrow",atts); + hd_menu.endElement("","","impformatrow"); + + } + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) { + log.log(Level.SEVERE,"getProcess", e); + } + finally { + try { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e){} + pstmt = null; + } + hd_menu.endElement("","","impformat"); + + } + + public void CreateTable (int table_id, AttributesImpl atts, TransformerHandler hd_menu) + { + int New_Table = 2; + + // check to see if table has been exported already + if (Table_Count == 0){ + Table_ID[Table_Count] = table_id; + Table_Count = Table_Count+1; + New_Table = 1; + } + else{ + int i; + for(i=0;i0) + CreateReference (rs1.getInt("AD_Reference_ID"), atts, hd_menu); + + if (rs1.getInt("AD_Reference_Value_ID")>0) + CreateReference (rs1.getInt("AD_Reference_Value_ID"), atts, hd_menu); + + if (rs1.getInt("AD_Process_ID")>0) + CreateProcess (rs1.getInt("AD_Process_ID"), atts, hd_menu); + + m_Column = new X_AD_Column (getCtx(), rs1.getInt("AD_Column_ID"), null); + atts = createcolumnBinding(atts,m_Column); + hd_menu.startElement("","","column",atts); + hd_menu.endElement("","","column"); + } + + rs1.close(); + pstmt1.close(); + pstmt1 = null; + } + catch (Exception e) { + log.log(Level.SEVERE,"getProcess", e); + } + finally { + try { + if (pstmt1 != null) + pstmt1.close (); + } + catch (Exception e){} + pstmt1 = null; + } + hd_menu.endElement("","","table"); + } + rs.close(); + pstmt.close(); + pstmt = null; + } + + catch (Exception e){ + log.log(Level.SEVERE,"getProcess", e); + } + finally{ + try { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e){} + pstmt = null; + } + } + } + + public static AttributesImpl createfieldBinding( AttributesImpl atts, X_AD_Field m_Field) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Field.getAD_Column_ID()> 0 ){ + sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_Field.getAD_Column_ID()); + atts.addAttribute("","","ADColumnNameID","CDATA",name); + } + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + + if (m_Field.getAD_Column_ID()> 0 ){ + sql = "SELECT AD_Table_ID FROM AD_Column WHERE AD_Column_ID=?"; + int idTable = DB.getSQLValue(null, sql,m_Field.getAD_Column_ID()); + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null,sql,idTable); + atts.addAttribute("","","ADTableNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + if (m_Field.getAD_FieldGroup_ID()> 0 ){ + sql = "SELECT Name FROM AD_FieldGroup WHERE AD_FieldGroup_ID=?"; + name = DB.getSQLValueString(null,sql,m_Field.getAD_FieldGroup_ID()); + atts.addAttribute("","","ADFieldGroupNameID","CDATA",name); + } + else + atts.addAttribute("","","ADFieldGroupNameID","CDATA",""); + + if (m_Field.getAD_Field_ID()> 0 ){ + sql = "SELECT Name FROM AD_Field WHERE AD_Field_ID=?"; + name = DB.getSQLValueString(null,sql,m_Field.getAD_Field_ID()); + atts.addAttribute("","","ADFieldNameID","CDATA",name); + } + else + atts.addAttribute("","","ADFieldNameID","CDATA",""); + + if (m_Field.getAD_Tab_ID()> 0 ){ + sql = "SELECT Name FROM AD_Tab WHERE AD_Tab_ID=?"; + name = DB.getSQLValueString(null,sql,m_Field.getAD_Tab_ID()); + atts.addAttribute("","","ADTabNameID","CDATA",name); + sql = "SELECT AD_Window_ID FROM AD_Tab WHERE AD_Tab_ID=?"; + int windowid = DB.getSQLValue(null,sql,m_Field.getAD_Tab_ID()); + sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + name = DB.getSQLValueString(null,sql,windowid); + atts.addAttribute("","","ADWindowNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTabNameID","CDATA",""); + + atts.addAttribute("","","EntityType","CDATA",(m_Field.getEntityType () != null ? m_Field.getEntityType ():"")); + atts.addAttribute("","","Name","CDATA",(m_Field.getName () != null ? m_Field.getName ():"")); + atts.addAttribute("","","SameLine","CDATA", (m_Field.isSameLine() == true ? "true":"false")); + atts.addAttribute("","","isCentrallyMaintained","CDATA",(m_Field.isCentrallyMaintained()== true ? "true":"false")); + atts.addAttribute("","","Displayed","CDATA",(m_Field.isDisplayed()== true ? "true":"false")); + atts.addAttribute("","","isActive","CDATA",(m_Field.isActive()== true ? "true":"false")); + atts.addAttribute("","","isEncrypted","CDATA",(m_Field.isEncrypted()== true ? "true":"false")); + atts.addAttribute("","","isFieldOnly","CDATA",(m_Field.isFieldOnly()== true ? "true":"false")); + atts.addAttribute("","","isHeading","CDATA",(m_Field.isHeading()== true ? "true":"false")); + atts.addAttribute("","","isReadOnly","CDATA",(m_Field.isReadOnly()== true ? "true":"false")); + atts.addAttribute("","","SeqNo","CDATA", "" + (m_Field.getSeqNo())); + atts.addAttribute("","","DisplayLength","CDATA",(m_Field.getDisplayLength () > 0 ? "" + m_Field.getDisplayLength():"0")); + atts.addAttribute("","","Description","CDATA",(m_Field.getDescription () != null ? m_Field.getDescription():"")); + atts.addAttribute("","","Help","CDATA",(m_Field.getHelp () != null ? m_Field.getHelp():"")); + atts.addAttribute("","","SortNo","CDATA",(m_Field.getSortNo () != null ? m_Field.getSortNo().toString():"")); + atts.addAttribute("","","DisplayLogic","CDATA",(m_Field.getDisplayLogic () != null ? m_Field.getDisplayLogic():"")); + atts.addAttribute("","","ObscureType","CDATA",(m_Field.getObscureType () != null ? m_Field.getObscureType():"")); + return atts; + } + + public static AttributesImpl createpreferenceBinding( AttributesImpl atts, X_AD_Preference m_Preference) + { + String sql = null; + String name = null; + atts.clear(); + sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + name = DB.getSQLValueString(null,sql,m_Preference.getAD_Window_ID()); + atts.addAttribute("","","ADWindowNameID","CDATA",name); + sql = "SELECT Name FROM AD_User WHERE AD_User_ID=?"; + name = DB.getSQLValueString(null,sql,m_Preference.getAD_User_ID()); + atts.addAttribute("","","ADUserNameID","CDATA",name); + atts.addAttribute("","","Attribute","CDATA",m_Preference.getAttribute()); + atts.addAttribute("","","Value","CDATA",m_Preference.getValue()); + return atts; + } + + public static AttributesImpl createtabBinding( AttributesImpl atts, X_AD_Tab m_Tab) + { + String sql = null; + String name = null; + atts.clear(); + atts.addAttribute("","","Name","CDATA",(m_Tab.getName () != null ? m_Tab.getName ():"")); + if (m_Tab.getAD_ColumnSortOrder_ID()>0){ + sql = "SELECT Name FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getAD_ColumnSortOrder_ID()); + atts.addAttribute("","","ADColumnSortOrderNameID","CDATA",name); + } + else + atts.addAttribute("","","ADColumnSortOrderNameID","CDATA",""); + if (m_Tab.getAD_ColumnSortYesNo_ID()>0 ){ + sql = "SELECT Name FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getAD_ColumnSortYesNo_ID()); + atts.addAttribute("","","ADColumnSortYesNoNameID","CDATA",name); + } + else + atts.addAttribute("","","ADColumnSortYesNoNameID","CDATA",""); + if (m_Tab.getAD_Column_ID()>0 ){ + sql = "SELECT Name FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getAD_Column_ID()); + atts.addAttribute("","","ADColumnNameID","CDATA",name); + } + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + if (m_Tab.getAD_Image_ID() >0 ){ + sql = "SELECT Name FROM AD_Image WHERE AD_Image_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getAD_Image_ID()); + atts.addAttribute("","","ADImageNameID","CDATA",name); + } + else + atts.addAttribute("","","ADImageNameID","CDATA",""); + if (m_Tab.getAD_Process_ID() >0 ){ + sql = "SELECT Name FROM AD_Process WHERE AD_Process_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getAD_Process_ID()); + atts.addAttribute("","","ADProcessNameID","CDATA",name); + } + else + atts.addAttribute("","","ADProcessNameID","CDATA",""); + if (m_Tab.getAD_Tab_ID() >0 ){ + sql = "SELECT Name FROM AD_Tab WHERE AD_Tab_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getAD_Tab_ID()); + atts.addAttribute("","","ADTabNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTabNameID","CDATA",""); + + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getAD_Table_ID()); + atts.addAttribute("","","ADTableNameID","CDATA",name); + sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getAD_Window_ID()); + atts.addAttribute("","","ADWindowNameID","CDATA",name); + if (m_Tab.getIncluded_Tab_ID() > 0 ){ + sql = "SELECT Name FROM AD_Tab WHERE AD_Tab_ID=?"; + name = DB.getSQLValueString(null,sql,m_Tab.getIncluded_Tab_ID()); + atts.addAttribute("","","IncludedTabNameID","CDATA",name); + } + else + atts.addAttribute("","","IncludedTabNameID","CDATA",""); + atts.addAttribute("","","CommitWarning","CDATA",(m_Tab.getCommitWarning () != null ? m_Tab.getCommitWarning ():"")); + atts.addAttribute("","","Description","CDATA",(m_Tab.getDescription () != null ? m_Tab.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Tab.getEntityType () != null ? m_Tab.getEntityType ():"")); + atts.addAttribute("","","isHasTree","CDATA",(m_Tab.isHasTree()== true ? "true":"false")); + atts.addAttribute("","","Help","CDATA",(m_Tab.getHelp () != null ? m_Tab.getHelp ():"")); + atts.addAttribute("","","isInfoTab","CDATA",(m_Tab.isInfoTab()== true ? "true":"false")); + atts.addAttribute("","","isReadOnly","CDATA",(m_Tab.isReadOnly()== true ? "true":"false")); + atts.addAttribute("","","isSingleRow","CDATA",(m_Tab.isSingleRow()== true ? "true":"false")); + atts.addAttribute("","","isSortTab","CDATA",(m_Tab.isSortTab()== true ? "true":"false")); + atts.addAttribute("","","isActive","CDATA",(m_Tab.isActive()== true ? "true":"false")); + atts.addAttribute("","","IsTranslationTab","CDATA",(m_Tab.isTranslationTab()== true ? "true":"false")); + atts.addAttribute("","","OrderByClause","CDATA",(m_Tab.getOrderByClause () != null ? m_Tab.getOrderByClause ():"")); + atts.addAttribute("","","isProcessing","CDATA",(m_Tab.isProcessing()== true ? "true":"false")); + atts.addAttribute("","","SeqNo","CDATA",(m_Tab.getSeqNo () >= 0 ? "" + m_Tab.getSeqNo ():"0")); + atts.addAttribute("","","TabLevel","CDATA",(m_Tab.getTabLevel () >= 0 ? "" + m_Tab.getTabLevel ():"")); + atts.addAttribute("","","WhereClause","CDATA",(m_Tab.getWhereClause () != null ? m_Tab.getWhereClause ():"")); + atts.addAttribute("","","Syncfields","CDATA","false"); + return atts; + } + + public static AttributesImpl createwindowBinding( AttributesImpl atts, X_AD_Window m_Window) + { + atts.clear(); + String sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + String name = DB.getSQLValueString(null,sql,m_Window.getAD_Window_ID()); + atts.addAttribute("","","ADWindowNameID","CDATA",name); + if (m_Window.getAD_Image_ID()> 0 ){ + sql = "SELECT Name FROM AD_Image WHERE AD_Image_ID=?"; + name = DB.getSQLValueString(null,sql,m_Window.getAD_Image_ID()); + } + if (name != null ) + atts.addAttribute("","","ADImageNameID","CDATA",name); + else + atts.addAttribute("","","ADImageNameID","CDATA",""); + if (m_Window.getAD_Color_ID()> 0 ){ + sql = "SELECT Name FROM AD_Color WHERE AD_Color_ID=?"; + name = DB.getSQLValueString(null,sql,m_Window.getAD_Color_ID()); + } + if (name != null ) + atts.addAttribute("","","ADColorNameID","CDATA",name); + else + atts.addAttribute("","","ADColorNameID","CDATA",""); + atts.addAttribute("","","Description","CDATA",(m_Window.getDescription () != null ? m_Window.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Window.getEntityType () != null ? m_Window.getEntityType ():"")); + atts.addAttribute("","","Help","CDATA",(m_Window.getHelp () != null ? m_Window.getHelp ():"")); + atts.addAttribute("","","isBetaFunctionality","CDATA",(m_Window.isBetaFunctionality()== true ? "true":"false")); + atts.addAttribute("","","isDefault","CDATA",(m_Window.isDefault()== true ? "true":"false")); + atts.addAttribute("","","isSOTrx","CDATA",(m_Window.isSOTrx()== true ? "true":"false")); + atts.addAttribute("","","isActive","CDATA",(m_Window.isActive()== true ? "true":"false")); + atts.addAttribute("","","Name","CDATA",(m_Window.getName () != null ? m_Window.getName ():"")); + atts.addAttribute("","","isProcessing","CDATA",(m_Window.isProcessing()== true ? "true":"false")); + atts.addAttribute("","","WinHeight","CDATA",(m_Window.getWinHeight () > 0 ? "" + m_Window.getWinHeight ():"")); + atts.addAttribute("","","WinWidth","CDATA",(m_Window.getWinWidth () > 0 ? "" + m_Window.getWinWidth ():"")); + atts.addAttribute("","","WindowType","CDATA",(m_Window.getWindowType () != null ? m_Window.getWindowType ():"")); + return atts; + } + + public static AttributesImpl createmenuBinding( AttributesImpl atts, X_AD_Menu m_Menu) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Menu.getAD_Menu_ID()> 0 ){ + + sql = "SELECT Name FROM AD_Menu WHERE AD_Menu_ID=?"; + name = DB.getSQLValueString(null,sql,m_Menu.getAD_Menu_ID()); + atts.addAttribute("","","ADMenuNameID","CDATA",name); + } + else + atts.addAttribute("","","ADMenuNameID","CDATA",""); + if (m_Menu.getAD_Window_ID()> 0 ){ + sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + name = DB.getSQLValueString(null,sql,m_Menu.getAD_Window_ID()); + atts.addAttribute("","","ADWindowNameID","CDATA",name); + } + else + atts.addAttribute("","","ADWindowNameID","CDATA",""); + if (m_Menu.getAD_Process_ID()> 0 ){ + sql = "SELECT Name FROM AD_Process WHERE AD_Process_ID=?"; + name = DB.getSQLValueString(null,sql,m_Menu.getAD_Process_ID()); + atts.addAttribute("","","ADProcessNameID","CDATA",name); + } + else + atts.addAttribute("","","ADProcessNameID","CDATA",""); + if (m_Menu.getAD_Form_ID()> 0 ){ + sql = "SELECT Name FROM AD_Form WHERE AD_Form_ID=?"; + name = DB.getSQLValueString(null,sql,m_Menu.getAD_Form_ID()); + atts.addAttribute("","","ADFormNameID","CDATA",name); + } + else + atts.addAttribute("","","ADFormNameID","CDATA",""); + if (m_Menu.getAD_Task_ID()> 0 ){ + sql = "SELECT Name FROM AD_Task WHERE AD_Task_ID=?"; + name = DB.getSQLValueString(null,sql,m_Menu.getAD_Task_ID()); + atts.addAttribute("","","ADTaskNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTaskNameID","CDATA",""); + if (m_Menu.getAD_Workbench_ID()> 0 ){ + sql = "SELECT Name FROM AD_Workbench WHERE AD_Workbench_ID=?"; + name = DB.getSQLValueString(null,sql,m_Menu.getAD_Workbench_ID()); + atts.addAttribute("","","ADWorkbenchNameID","CDATA",name); + } + else + atts.addAttribute("","","ADWorkbenchNameID","CDATA",""); + if (m_Menu.getAD_Workflow_ID()> 0 ){ + sql = "SELECT Name FROM AD_Workflow WHERE AD_Workflow_ID=?"; + name = DB.getSQLValueString(null,sql,m_Menu.getAD_Workflow_ID()); + atts.addAttribute("","","ADWorkflowNameID","CDATA",name); + } + else + atts.addAttribute("","","ADWorkflowNameID","CDATA",""); + sql = "SELECT Parent_ID FROM AD_TreeNoDemm WHERE AD_Tree_ID = 10 and Node_ID=?"; + int id = DB.getSQLValue(null, sql,m_Menu.getAD_Menu_ID()); + if (id > 0){ + sql = "SELECT Name FROM AD_Menu WHERE AD_Menu_ID=?"; + name = DB.getSQLValueString(null,sql,id); + atts.addAttribute("","","ADParentMenuNameID","CDATA",name); + } + sql = "SELECT SeqNo FROM AD_TreeNoDemm WHERE AD_Tree_ID = 10 and Node_ID=?"; + id = DB.getSQLValue(null, sql,m_Menu.getAD_Menu_ID()); + atts.addAttribute("","","ADParentSeqno","CDATA",""+id); + atts.addAttribute("","","Action","CDATA",(m_Menu.getAction () != null ? m_Menu.getAction ():"")); + atts.addAttribute("","","Description","CDATA",(m_Menu.getDescription () != null ? m_Menu.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Menu.getEntityType () != null ? m_Menu.getEntityType ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Menu.isActive()== true ? "true":"false")); + atts.addAttribute("","","isReadOnly","CDATA",(m_Menu.isReadOnly()== true ? "true":"false")); + atts.addAttribute("","","isSOTrx","CDATA",(m_Menu.isSOTrx()== true ? "true":"false")); + atts.addAttribute("","","isSummary","CDATA",(m_Menu.isSummary()== true ? "true":"false")); + return atts; + } + + public static AttributesImpl createprocessBinding( AttributesImpl atts, X_AD_Process m_Process) + { + String sql = null; + String name = null; + atts.clear(); + + atts.addAttribute("","","Name","CDATA",(m_Process.getName () != null ? m_Process.getName ():"")); + + if (m_Process.getAD_Workflow_ID()> 0 ){ + sql = "SELECT Name FROM AD_Workflow WHERE AD_Workflow_ID=?"; + name = DB.getSQLValueString(null,sql,m_Process.getAD_Workflow_ID()); + atts.addAttribute("","","ADWorkflowNameID","CDATA",name); + } + else + atts.addAttribute("","","ADWorkflowNameID","CDATA",""); + if (m_Process.getAD_Process_ID()> 0 ){ + sql = "SELECT Name FROM AD_Process WHERE AD_Process_ID=?"; + name = DB.getSQLValueString(null,sql,m_Process.getAD_Process_ID()); + atts.addAttribute("","","ADProcessNameID","CDATA",name); + } + else + atts.addAttribute("","","ADProcessNameID","CDATA",""); + if (m_Process.getAD_PrintFormat_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintFormat WHERE AD_PrintFormat_ID=?"; + name = DB.getSQLValueString(null,sql,m_Process.getAD_PrintFormat_ID()); + atts.addAttribute("","","ADPrintFormatNameID","CDATA",name); + } + else + atts.addAttribute("","","ADPrintFormatNameID","CDATA",""); + if (m_Process.getAD_ReportView_ID()> 0 ){ + sql = "SELECT Name FROM AD_ReportView WHERE AD_ReportView_ID=?"; + name = DB.getSQLValueString(null,sql,m_Process.getAD_ReportView_ID()); + atts.addAttribute("","","ADReportViewNameID","CDATA",name); + } + else + atts.addAttribute("","","ADReportViewNameID","CDATA",""); + atts.addAttribute("","","AccessLevel","CDATA",(m_Process.getAccessLevel () != null ? m_Process.getAccessLevel ():"")); + atts.addAttribute("","","Classname","CDATA",(m_Process.getClassname () != null ? m_Process.getClassname ():"")); + atts.addAttribute("","","Description","CDATA",(m_Process.getDescription () != null ? m_Process.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Process.getEntityType () != null ? m_Process.getEntityType ():"")); + atts.addAttribute("","","Help","CDATA",(m_Process.getHelp () != null ? m_Process.getHelp ():"")); + atts.addAttribute("","","isBetaFunctionality","CDATA",(m_Process.isBetaFunctionality()== true ? "true":"false")); + atts.addAttribute("","","isDirectPrint","CDATA",(m_Process.isDirectPrint()== true ? "true":"false")); + atts.addAttribute("","","isReport","CDATA",(m_Process.isReport()== true ? "true":"false")); + atts.addAttribute("","","isActive","CDATA",(m_Process.isActive()== true ? "true":"false")); + atts.addAttribute("","","ProcedureName","CDATA",(m_Process.getProcedureName () != null ? m_Process.getProcedureName ():"")); + atts.addAttribute("","","StatisticCount","CDATA","0"); + atts.addAttribute("","","StatisticSeconds","CDATA","0"); + atts.addAttribute("","","Value","CDATA",(m_Process.getValue () != null ? m_Process.getValue ():"")); + atts.addAttribute("","","WorkflowValue","CDATA",(m_Process.getWorkflowValue () != null ? m_Process.getWorkflowValue ():"")); + return atts; + } + + public static AttributesImpl createprocessparaBinding( AttributesImpl atts, X_AD_Process_Para m_Processpara) + { + String sql = null; + String name = null; + atts.clear(); + atts.addAttribute("","","Name","CDATA",(m_Processpara.getName () != null ? m_Processpara.getName ():"")); + if (m_Processpara.getAD_Process_ID()> 0 ){ + sql = "SELECT Name FROM AD_Process WHERE AD_Process_ID=?"; + name = DB.getSQLValueString(null,sql,m_Processpara.getAD_Process_ID()); + atts.addAttribute("","","ADProcessNameID","CDATA",name); + } + else + atts.addAttribute("","","ADProcessNameID","CDATA",""); + if (m_Processpara.getAD_Process_Para_ID()> 0 ){ + sql = "SELECT Name FROM AD_Process_Para WHERE AD_Process_Para_ID=?"; + name = DB.getSQLValueString(null,sql,m_Processpara.getAD_Process_Para_ID()); + atts.addAttribute("","","ADProcessParaNameID","CDATA",name); + } + else + atts.addAttribute("","","ADProcessParaNameID","CDATA",""); + if (m_Processpara.getAD_Element_ID()> 0 ){ + sql = "SELECT Name FROM AD_Element WHERE AD_Element_ID=?"; + name = DB.getSQLValueString(null,sql,m_Processpara.getAD_Element_ID()); + atts.addAttribute("","","ADElementNameID","CDATA",name); + } + else + atts.addAttribute("","","ADElementNameID","CDATA",""); + if (m_Processpara.getAD_Reference_ID()> 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_Reference_ID=?"; + name = DB.getSQLValueString(null,sql,m_Processpara.getAD_Reference_ID()); + atts.addAttribute("","","ADReferenceNameID","CDATA",name); + } + else + atts.addAttribute("","","ADReferenceNameID","CDATA",""); + if (m_Processpara.getAD_Reference_Value_ID()> 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_Reference_ID=?"; + name = DB.getSQLValueString(null,sql,m_Processpara.getAD_Reference_Value_ID()); + atts.addAttribute("","","ADReferenceValueNameID","CDATA",name); + } + else + atts.addAttribute("","","ADReferenceValueNameID","CDATA",""); + if (m_Processpara.getAD_Val_Rule_ID()> 0 ){ + sql = "SELECT Name FROM AD_Val_Rule WHERE AD_Val_Rule_ID=?"; + name = DB.getSQLValueString(null,sql,m_Processpara.getAD_Val_Rule_ID()); + atts.addAttribute("","","ADValRuleNameID","CDATA",name); + } + else + atts.addAttribute("","","ADValRuleNameID","CDATA",""); + atts.addAttribute("","","ColumnName","CDATA",(m_Processpara.getColumnName () != null ? m_Processpara.getColumnName ():"")); + atts.addAttribute("","","DefaultValue","CDATA",(m_Processpara.getDefaultValue () != null ? m_Processpara.getDefaultValue ():"")); + atts.addAttribute("","","DefaultValue2","CDATA",(m_Processpara.getDefaultValue2 () != null ? m_Processpara.getDefaultValue2 ():"")); + atts.addAttribute("","","Description","CDATA",(m_Processpara.getDescription () != null ? m_Processpara.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Processpara.getEntityType () != null ? m_Processpara.getEntityType ():"")); + atts.addAttribute("","","Help","CDATA",(m_Processpara.getHelp () != null ? m_Processpara.getHelp ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Processpara.isActive()== true ? "true":"false")); + atts.addAttribute("","","VFormat","CDATA",(m_Processpara.getVFormat () != null ? m_Processpara.getVFormat ():"")); + atts.addAttribute("","","ValueMax","CDATA",(m_Processpara.getValueMax () != null ? m_Processpara.getValueMax ():"")); + atts.addAttribute("","","ValueMin","CDATA",(m_Processpara.getValueMin () != null ? m_Processpara.getValueMin ():"")); + atts.addAttribute("","","SeqNo","CDATA",(m_Processpara.getSeqNo() > 0 ? "" + m_Processpara.getSeqNo ():"0")); + atts.addAttribute("","","FieldLength","CDATA",(m_Processpara.getFieldLength () > 0 ? "" + m_Processpara.getFieldLength ():"0")); + atts.addAttribute("","","isCentrallyMaintained","CDATA",(m_Processpara.isCentrallyMaintained()== true ? "true":"false")); + atts.addAttribute("","","isMandatory","CDATA",(m_Processpara.isMandatory()== true ? "true":"false")); + atts.addAttribute("","","isRange","CDATA",(m_Processpara.isRange()== true ? "true":"false")); + return atts; + } + + public static AttributesImpl createtableBinding( AttributesImpl atts, X_AD_Table m_Table) + { + String sql = null; + String name = null; + atts.clear(); + atts.addAttribute("","","Name","CDATA",(m_Table.getName () != null ? m_Table.getName ():"")); + if (m_Table.getAD_Table_ID()> 0 ){ + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null,sql,m_Table.getAD_Table_ID()); + atts.addAttribute("","","ADTableNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + if (m_Table.getAD_Window_ID()> 0 ){ + sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + name = DB.getSQLValueString(null,sql,m_Table.getAD_Window_ID()); + atts.addAttribute("","","ADWindowNameID","CDATA",name); + } + else + atts.addAttribute("","","ADWindowNameID","CDATA",""); + if (m_Table.getPO_Window_ID()> 0 ){ + sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + name = DB.getSQLValueString(null,sql,m_Table.getPO_Window_ID()); + atts.addAttribute("","","POWindowNameID","CDATA",name); + } + else + atts.addAttribute("","","POWindowNameID","CDATA",""); + if (m_Table.getAD_Val_Rule_ID()> 0 ){ + sql = "SELECT Name FROM AD_Val_Rule WHERE AD_Val_Rule_ID=?"; + name = DB.getSQLValueString(null,sql,m_Table.getAD_Val_Rule_ID()); + atts.addAttribute("","","ADValRuleNameID","CDATA",name); + } + else + atts.addAttribute("","","ADValRuleNameID","CDATA",""); + atts.addAttribute("","","AccessLevel","CDATA",(m_Table.getAccessLevel () != null ? m_Table.getAccessLevel ():"")); + atts.addAttribute("","","Description","CDATA",(m_Table.getDescription () != null ? m_Table.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Table.getEntityType () != null ? m_Table.getEntityType ():"")); + atts.addAttribute("","","Help","CDATA",(m_Table.getHelp() != null ? m_Table.getHelp ():"")); + atts.addAttribute("","","ImportTable","CDATA",(m_Table.getImportTable () != null ? m_Table.getImportTable ():"")); + atts.addAttribute("","","isChangeLog","CDATA",(m_Table.isChangeLog()== true ? "true":"false")); + atts.addAttribute("","","isActive","CDATA",(m_Table.isActive()== true ? "true":"false")); + atts.addAttribute("","","isDeleteable","CDATA",(m_Table.isDeleteable()== true ? "true":"false")); + atts.addAttribute("","","isHighVolume","CDATA",(m_Table.isHighVolume()== true ? "true":"false")); + atts.addAttribute("","","isSecurityEnabled","CDATA",(m_Table.isSecurityEnabled()== true ? "true":"false")); + atts.addAttribute("","","isView","CDATA",(m_Table.isView()== true ? "true":"false")); + atts.addAttribute("","","LoadSeq","CDATA",(m_Table.getLoadSeq ()> 0 ? "" + m_Table.getLoadSeq ():"")); + atts.addAttribute("","","ReplicationType","CDATA",(m_Table.getReplicationType () != null ? m_Table.getReplicationType ():"")); + atts.addAttribute("","","TableName","CDATA",(m_Table.getTableName () != null ? m_Table.getTableName ():"")); + return atts; + } + + public static AttributesImpl createcolumnBinding( AttributesImpl atts, X_AD_Column m_Column) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Column.getAD_Column_ID()> 0 ){ + sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_Column.getAD_Column_ID()); + atts.addAttribute("","","ADColumnNameID","CDATA",name); + } + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + if (m_Column.getAD_Process_ID()> 0 ){ + sql = "SELECT Name FROM AD_Process WHERE AD_Process_ID=?"; + name = DB.getSQLValueString(null,sql,m_Column.getAD_Process_ID()); + atts.addAttribute("","","ADProcessNameID","CDATA",name); + } + else + atts.addAttribute("","","ADProcessNameID","CDATA",""); + if (m_Column.getAD_Element_ID()> 0 ){ + sql = "SELECT Name FROM AD_Element WHERE AD_Element_ID=?"; + name = DB.getSQLValueString(null,sql,m_Column.getAD_Element_ID()); + atts.addAttribute("","","ADElementNameID","CDATA",name); + } + else + atts.addAttribute("","","ADElementNameID","CDATA",""); + if (m_Column.getAD_Reference_ID()> 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_Reference_ID=?"; + name = DB.getSQLValueString(null,sql,m_Column.getAD_Reference_ID()); + atts.addAttribute("","","ADReferenceNameID","CDATA",name); + } + else + atts.addAttribute("","","ADReferenceNameID","CDATA",""); + if (m_Column.getAD_Reference_Value_ID()> 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_Reference_ID=?"; + name = DB.getSQLValueString(null,sql,m_Column.getAD_Reference_Value_ID()); + atts.addAttribute("","","ADReferenceNameValueID","CDATA",name); + } + else + atts.addAttribute("","","ADReferenceNameValueID","CDATA",""); + if (m_Column.getAD_Table_ID()> 0 ){ + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null,sql,m_Column.getAD_Table_ID()); + atts.addAttribute("","","ADTableNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + if (m_Column.getAD_Val_Rule_ID()> 0 ){ + sql = "SELECT Name FROM AD_Val_Rule WHERE AD_Val_Rule_ID=?"; + name = DB.getSQLValueString(null,sql,m_Column.getAD_Val_Rule_ID()); + atts.addAttribute("","","ADValRuleNameID","CDATA",name); + } + else + atts.addAttribute("","","ADValRuleNameID","CDATA",""); + atts.addAttribute("","","Callout","CDATA",(m_Column.getCallout () != null ? m_Column.getCallout ():"")); + atts.addAttribute("","","ColumnSQL","CDATA",(m_Column.getColumnSQL () != null ? m_Column.getColumnSQL ():"")); + atts.addAttribute("","","ColumnName","CDATA",(m_Column.getColumnName () != null ? m_Column.getColumnName ():"")); + atts.addAttribute("","","DefaultValue","CDATA",(m_Column.getDefaultValue () != null ? m_Column.getDefaultValue ():"")); + atts.addAttribute("","","Description","CDATA",(m_Column.getDescription () != null ? m_Column.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Column.getEntityType () != null ? m_Column.getEntityType ():"")); + atts.addAttribute("","","FieldLength","CDATA",(m_Column.getFieldLength () > 0 ? "" + m_Column.getFieldLength ():"0")); + atts.addAttribute("","","Help","CDATA",(m_Column.getHelp () != null ? m_Column.getHelp ():"")); + atts.addAttribute("","","isAlwaysUpdateable","CDATA",(m_Column.isAlwaysUpdateable()== true ? "true":"false")); + //atts.addAttribute("","","isEncrypted","CDATA",(m_Column.getIsEncrypted()== true ? "true":"false")); + atts.addAttribute("","","isIdentifier","CDATA",(m_Column.isIdentifier()== true ? "true":"false")); + atts.addAttribute("","","isKey","CDATA",(m_Column.isKey()== true ? "true":"false")); + atts.addAttribute("","","isMandatory","CDATA",(m_Column.isMandatory()== true ? "true":"false")); + atts.addAttribute("","","isParent","CDATA",(m_Column.isParent()== true ? "true":"false")); + atts.addAttribute("","","isSelectionColumn","CDATA",(m_Column.isSelectionColumn()== true ? "true":"false")); + atts.addAttribute("","","isActive","CDATA",(m_Column.isActive()== true ? "true":"false")); + atts.addAttribute("","","isTranslated","CDATA",(m_Column.isTranslated()== true ? "true":"false")); + atts.addAttribute("","","isUpdateable","CDATA",(m_Column.isUpdateable()== true ? "true":"false")); + atts.addAttribute("","","Name","CDATA",(m_Column.getName () != null ? m_Column.getName ():"")); + atts.addAttribute("","","getIsSyncDatabase","CDATA",(m_Column.getIsSyncDatabase () != null ? m_Column.getIsSyncDatabase ():"")); + atts.addAttribute("","","ReadOnlyLogic","CDATA",(m_Column.getReadOnlyLogic () != null ? m_Column.getReadOnlyLogic ():"")); + atts.addAttribute("","","SeqNo","CDATA",(m_Column.getSeqNo ()> 0 ? "" + m_Column.getSeqNo ():"0")); + atts.addAttribute("","","VFormat","CDATA",(m_Column.getVFormat () != null ? m_Column.getVFormat ():"")); + atts.addAttribute("","","ValueMax","CDATA",(m_Column.getValueMax () != null ? m_Column.getValueMax ():"")); + atts.addAttribute("","","ValueMin","CDATA",(m_Column.getValueMin () != null ? m_Column.getValueMin ():"")); + atts.addAttribute("","","Value","CDATA",(m_Column.getVersion()!= null ? "" + m_Column.getVersion ():"0.0")); + return atts; + } + + public static AttributesImpl createtaskBinding( AttributesImpl atts, X_AD_Task m_Task) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Task.getAD_Task_ID()> 0 ){ + sql = "SELECT Name FROM AD_Task WHERE AD_Task_ID=?"; + name = DB.getSQLValueString(null,sql,m_Task.getAD_Task_ID()); + } + if (name != null ) + atts.addAttribute("","","ADTaskNameID","CDATA",name); + else + atts.addAttribute("","","ADTaskNameID","CDATA",""); + atts.addAttribute("","","AccessLevel","CDATA",(m_Task.getAccessLevel () != null ? m_Task.getAccessLevel ():"")); + atts.addAttribute("","","Description","CDATA",(m_Task.getDescription () != null ? m_Task.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Task.getEntityType () != null ? m_Task.getEntityType ():"")); + atts.addAttribute("","","Help","CDATA",(m_Task.getHelp () != null ? m_Task.getHelp ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Task.isActive()== true ? "true":"false")); + atts.addAttribute("","","Name","CDATA",(m_Task.getName () != null ? m_Task.getName ():"")); + atts.addAttribute("","","OS_Command","CDATA",(m_Task.getOS_Command () != null ? m_Task.getOS_Command ():"")); + return atts; + } + + public static AttributesImpl createformBinding( AttributesImpl atts, X_AD_Form m_Form) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Form.getAD_Form_ID()> 0 ){ + sql = "SELECT Name FROM AD_Form WHERE AD_Form_ID=?"; + name = DB.getSQLValueString(null,sql,m_Form.getAD_Form_ID()); + } + if (name != null ) + atts.addAttribute("","","ADFormNameID","CDATA",name); + else + atts.addAttribute("","","ADFormNameID","CDATA",""); + atts.addAttribute("","","Classname","CDATA",(m_Form.getClassname () != null ? m_Form.getClassname ():"")); + atts.addAttribute("","","isBetaFunctionality","CDATA",(m_Form.isBetaFunctionality()== true ? "true":"false")); + atts.addAttribute("","","AccessLevel","CDATA",(m_Form.getAccessLevel () != null ? m_Form.getAccessLevel ():"")); + atts.addAttribute("","","Description","CDATA",(m_Form.getDescription () != null ? m_Form.getDescription ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Form.isActive()== true ? "true":"false")); + atts.addAttribute("","","EntityType","CDATA",(m_Form.getEntityType () != null ? m_Form.getEntityType ():"")); + atts.addAttribute("","","Help","CDATA",(m_Form.getHelp() != null ? m_Form.getHelp():"")); + atts.addAttribute("","","Name","CDATA",(m_Form.getName() != null ? m_Form.getName():"")); + return atts; + } + + public static AttributesImpl createworkbenchBinding( AttributesImpl atts, X_AD_Workbench m_Workbench) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Workbench.getAD_Workbench_ID()> 0 ){ + sql = "SELECT Name FROM AD_Workbench WHERE AD_Workbench_ID=?"; + name = DB.getSQLValueString(null,sql,m_Workbench.getAD_Workbench_ID()); + } + if (name != null ) + atts.addAttribute("","","ADWorkbenchNameID","CDATA",name); + else + atts.addAttribute("","","ADWorkbenchNameID","CDATA",""); + if (m_Workbench.getAD_Column_ID()> 0 ){ + sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_Workbench.getAD_Column_ID()); + } + if (name != null ) + atts.addAttribute("","","ADColumnNameID","CDATA",name); + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + atts.addAttribute("","","Description","CDATA",(m_Workbench.getDescription () != null ? m_Workbench.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Workbench.getEntityType () != null ? m_Workbench.getEntityType ():"")); + atts.addAttribute("","","Help","CDATA",(m_Workbench.getHelp () != null ? m_Workbench.getHelp ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Workbench.isActive()== true ? "true":"false")); + atts.addAttribute("","","Name","CDATA",(m_Workbench.getName () != null ? m_Workbench.getName ():"")); + //atts.addAttribute("","","PA_Goal_ID","CDATA",(m_Workbench.getPA_Goal_ID() > 0 ? "" + m_Workbench.getPA_Goal_ID ():"")); + return atts; + } + + public static AttributesImpl createworkbenchwindowBinding( AttributesImpl atts, X_AD_WorkbenchWindow m_Workbenchwindow) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Workbenchwindow.getAD_Process_ID()> 0 ){ + sql = "SELECT Name FROM AD_Process WHERE AD_Process_ID=?"; + name = DB.getSQLValueString(null,sql,m_Workbenchwindow.getAD_Process_ID()); + atts.addAttribute("","","name","CDATA",name); + } + else + atts.addAttribute("","","name","CDATA",""); + if (m_Workbenchwindow.getAD_Workbench_ID()> 0 ){ + sql = "SELECT Name FROM AD_Workbench WHERE AD_Workbench_ID=?"; + name = DB.getSQLValueString(null,sql,m_Workbenchwindow.getAD_Workbench_ID()); + } + if (name != null ) + atts.addAttribute("","","ADWorkbenchNameID","CDATA",name); + else + atts.addAttribute("","","ADWorkbenchNameID","CDATA",""); + if (m_Workbenchwindow.getAD_Form_ID()> 0 ){ + sql = "SELECT Name FROM AD_Form WHERE AD_Form_ID=?"; + name = DB.getSQLValueString(null,sql,m_Workbenchwindow.getAD_Form_ID()); + } + if (name != null ) + atts.addAttribute("","","ADFormNameID","CDATA",name); + else + atts.addAttribute("","","ADFormNameID","CDATA",""); + if (m_Workbenchwindow.getAD_Window_ID()> 0 ){ + sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + name = DB.getSQLValueString(null,sql,m_Workbenchwindow.getAD_Window_ID()); + } + if (name != null ) + atts.addAttribute("","","ADWindowNameID","CDATA",name); + else + atts.addAttribute("","","ADWindowNameID","CDATA",""); + if (m_Workbenchwindow.getAD_Task_ID()> 0 ){ + sql = "SELECT Name FROM AD_Task WHERE AD_Task_ID=?"; + name = DB.getSQLValueString(null,sql,m_Workbenchwindow.getAD_Task_ID()); + } + if (name != null ) + atts.addAttribute("","","ADTaskNameID","CDATA",name); + else + atts.addAttribute("","","ADTaskNameID","CDATA",""); + atts.addAttribute("","","EntityType","CDATA",(m_Workbenchwindow.getEntityType () != null ? m_Workbenchwindow.getEntityType ():"")); + atts.addAttribute("","","SeqNo","CDATA",(m_Workbenchwindow.getSeqNo () > 0 ? "" + m_Workbenchwindow.getSeqNo ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Workbenchwindow.isActive()== true ? "true":"false")); + atts.addAttribute("","","isPrimary","CDATA",(m_Workbenchwindow.isPrimary()== true ? "true":"false")); + return atts; + } + + public static AttributesImpl createreferenceBinding( AttributesImpl atts, X_AD_Reference m_Reference) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Reference.getAD_Reference_ID()> 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_Reference_ID=?"; + name = DB.getSQLValueString(null,sql,m_Reference.getAD_Reference_ID()); + atts.addAttribute("","","name","CDATA",name); + } + else + atts.addAttribute("","","name","CDATA",""); + atts.addAttribute("","","Description","CDATA",(m_Reference.getDescription () != null ? m_Reference.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Reference.getEntityType () != null ? m_Reference.getEntityType ():"")); + atts.addAttribute("","","Help","CDATA",(m_Reference.getHelp () != null ? m_Reference.getHelp ():"")); + atts.addAttribute("","","Name","CDATA",(m_Reference.getName () != null ? m_Reference.getName ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Reference.isActive()== true ? "true":"false")); + atts.addAttribute("","","VFormat","CDATA",(m_Reference.getVFormat () != null ? m_Reference.getVFormat ():"")); + atts.addAttribute("","","ValidationType","CDATA",(m_Reference.getValidationType () != null ? m_Reference.getValidationType ():"")); + return atts; + } + + public static AttributesImpl createimpBinding( AttributesImpl atts, X_AD_ImpFormat m_ImpFormat) + { + atts.clear(); + if (m_ImpFormat.getAD_Table_ID()> 0 ){ + String sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + String name = DB.getSQLValueString(null,sql,m_ImpFormat.getAD_Table_ID()); + atts.addAttribute("","","ADTableNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + + atts.addAttribute("","","Name","CDATA",(m_ImpFormat.getName () != null ? m_ImpFormat.getName ():"")); + atts.addAttribute("","","isActive","CDATA",(m_ImpFormat.isActive()== true ? "true":"false")); + atts.addAttribute("","","isProcessing","CDATA",(m_ImpFormat.isProcessing()== true ? "true":"false")); + atts.addAttribute("","","Description","CDATA",(m_ImpFormat.getDescription () != null ? m_ImpFormat.getDescription():"")); + atts.addAttribute("","","FormatType","CDATA",(m_ImpFormat.getFormatType () != null ? m_ImpFormat.getFormatType():"")); + return atts; + } + + public static AttributesImpl createimprowBinding( AttributesImpl atts, X_AD_ImpFormat_Row m_ImpFormat_Row) + { + String sql = null; + String name = null; + atts.clear(); + if (m_ImpFormat_Row.getAD_ImpFormat_ID()> 0 ){ + sql = "SELECT Name FROM AD_ImpFormat WHERE AD_ImpFormat_ID=?"; + name = DB.getSQLValueString(null,sql,m_ImpFormat_Row.getAD_ImpFormat_ID()); + atts.addAttribute("","","ADImpFormatNameID","CDATA",name); + } + else + atts.addAttribute("","","ADImpFormatNameID","CDATA",""); + + if (m_ImpFormat_Row.getAD_Column_ID()> 0 ){ + sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_ImpFormat_Row.getAD_Column_ID()); + atts.addAttribute("","","ADColumnNameID","CDATA",name); + } + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + + if (m_ImpFormat_Row.getAD_Column_ID()> 0 ){ + sql = "SELECT AD_Table_ID FROM AD_Column WHERE AD_Column_ID=?"; + int idTable = DB.getSQLValue(null, sql,m_ImpFormat_Row.getAD_Column_ID()); + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null,sql,idTable); + atts.addAttribute("","","ADTableNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + + atts.addAttribute("","","Name","CDATA",(m_ImpFormat_Row.getName () != null ? m_ImpFormat_Row.getName ():"")); + atts.addAttribute("","","SeqNo","CDATA",""+m_ImpFormat_Row.getSeqNo()); + atts.addAttribute("","","StartNo","CDATA",""+m_ImpFormat_Row.getStartNo()); + atts.addAttribute("","","EndNo","CDATA",""+m_ImpFormat_Row.getEndNo()); + atts.addAttribute("","","DataType","CDATA",(m_ImpFormat_Row.getDataType () != null ? m_ImpFormat_Row.getDataType():"")); + atts.addAttribute("","","DataFormat","CDATA",(m_ImpFormat_Row.getDataFormat () != null ? m_ImpFormat_Row.getDataFormat():"")); + atts.addAttribute("","","DecimalPoint","CDATA",(m_ImpFormat_Row.getDecimalPoint () != null ? m_ImpFormat_Row.getDecimalPoint():"")); + atts.addAttribute("","","isDivideBy100","CDATA",(m_ImpFormat_Row.isDivideBy100 ()== true ? "true":"false")); + atts.addAttribute("","","ConstantValue","CDATA",(m_ImpFormat_Row.getConstantValue() != null ? m_ImpFormat_Row.getConstantValue():"")); + atts.addAttribute("","","Callout","CDATA",(m_ImpFormat_Row.getCallout() != null ? m_ImpFormat_Row.getCallout():"")); + atts.addAttribute("","","Script","CDATA",(m_ImpFormat_Row.getScript() != null ? m_ImpFormat_Row.getScript():"")); + atts.addAttribute("","","isActive","CDATA",(m_ImpFormat_Row.isActive()== true ? "true":"false")); + + return atts; + } + + public static AttributesImpl createroleBinding( AttributesImpl atts, X_AD_Role m_Role) + { + String sql = null; + String name = null; + atts.clear(); + + if (m_Role.getAD_Tree_Menu_ID()> 0 ){ + sql = "SELECT Name FROM AD_Tree WHERE AD_Tree_ID=? AND AD_Tree.TreeType='MM'"; + name = DB.getSQLValueString(null,sql,m_Role.getAD_Tree_Menu_ID()); + atts.addAttribute("","","treemenuname","CDATA",name); + } + else + atts.addAttribute("","","treemenuname","CDATA",""); + + if (m_Role.getAD_Tree_Org_ID()> 0 ){ + sql = "SELECT Name FROM AD_Tree WHERE AD_Tree_ID=? AND AD_Tree.TreeType='OO'"; + name = DB.getSQLValueString(null,sql,m_Role.getAD_Tree_Org_ID()); + atts.addAttribute("","","treeorgname","CDATA",name); + } + else + atts.addAttribute("","","treeorgname","CDATA",""); + + if (m_Role.getC_Currency_ID()> 0 ){ + sql = "SELECT ISO_Code FROM C_Currency WHERE C_Currency_ID=?"; + name = DB.getSQLValueString(null,sql,m_Role.getC_Currency_ID()); + atts.addAttribute("","","currencycode","CDATA",name); + } + else + atts.addAttribute("","","currencycode","CDATA",""); + + if (m_Role.getSupervisor_ID()> 0 ){ + sql = "SELECT Name FROM AD_User WHERE AD_User_ID=?"; + name = DB.getSQLValueString(null,sql,m_Role.getC_Currency_ID()); + atts.addAttribute("","","supervisorid","CDATA",name); + } + else + atts.addAttribute("","","supervisorid","CDATA",""); + + atts.addAttribute("","","Description","CDATA",(m_Role.getDescription () != null ? m_Role.getDescription ():"")); + atts.addAttribute("","","Name","CDATA",(m_Role.getName () != null ? m_Role.getName ():"")); + atts.addAttribute("","","AmtApproval","CDATA",(""+m_Role.getAmtApproval())); + atts.addAttribute("","","isAccessAllOrgs","CDATA",(m_Role.isAccessAllOrgs()== true ? "true":"false")); + atts.addAttribute("","","isActive","CDATA",(m_Role.isActive()== true ? "true":"false")); + atts.addAttribute("","","isCanApproveOwnDoc","CDATA",(m_Role.isCanApproveOwnDoc()== true ? "true":"false")); + atts.addAttribute("","","isCanExport","CDATA",(m_Role.isCanExport()== true ? "true":"false")); + atts.addAttribute("","","isCanReport","CDATA",(m_Role.isCanReport()== true ? "true":"false")); + atts.addAttribute("","","isChangeLog","CDATA",(m_Role.isChangeLog()== true ? "true":"false")); + atts.addAttribute("","","isManual","CDATA",(m_Role.isManual()== true ? "true":"false")); + atts.addAttribute("","","isPersonalAccess","CDATA",(m_Role.isPersonalAccess()== true ? "true":"false")); + atts.addAttribute("","","isPersonalLock","CDATA",(m_Role.isPersonalLock()== true ? "true":"false")); + atts.addAttribute("","","isShowAcct","CDATA",(m_Role.isShowAcct()== true ? "true":"false")); + atts.addAttribute("","","isUseUserOrgAccess","CDATA",(m_Role.isUseUserOrgAccess()== true ? "true":"false")); + atts.addAttribute("","","isOverwritePriceLimit","CDATA",(m_Role.isOverwritePriceLimit()== true ? "true":"false")); + atts.addAttribute("","","PreferenceType","CDATA",(m_Role.getPreferenceType() != null ? m_Role.getPreferenceType ():"")); + atts.addAttribute("","","UserLevel","CDATA",(m_Role.getUserLevel() != null ? m_Role.getUserLevel ():"")); + + return atts; + } + public static AttributesImpl createSQLStatmentBinding( AttributesImpl atts, String SqlStatement, String DBType) + { + atts.clear(); + atts.addAttribute("","","DBType","CDATA",DBType); + atts.addAttribute("","","statement","CDATA",SqlStatement); + return atts; + + } + + public static AttributesImpl createSnipitBinding( AttributesImpl atts, String FileDir, String FileName, String OldCode, String NewCode, String ReleaseNo) + { + atts.clear(); + atts.addAttribute("","","filedir","CDATA",FileDir); + atts.addAttribute("","","filename","CDATA",FileName); + String preOldCode = OldCode.toString(); + String preNewCode = NewCode.toString(); + String modOldCode = preOldCode.replaceAll("\\$","\\\\\\$").replaceAll("\\.","\\\\.") + .replaceAll("\\^","\\\\^").replaceAll("\\(","\\\\(").replaceAll("\\)","\\\\)") + .replaceAll("\\[","\\\\[").replaceAll("\\/","\\\\/").replaceAll("\\+","\\\\+") + .replaceAll("\\*","\\\\*").replaceAll("\\|","\\\\|"); + String modNewCode = preNewCode.replaceAll("\\$","\\\\\\$").replaceAll("\\.","\\\\.") + .replaceAll("\\^","\\\\^").replaceAll("\\(","\\\\(").replaceAll("\\)","\\\\)") + .replaceAll("\\[","\\\\[").replaceAll("\\/","\\\\/").replaceAll("\\+","\\\\+") + .replaceAll("\\*","\\\\*").replaceAll("\\|","\\\\|"); + atts.addAttribute("","","oldcode","CDATA",modOldCode); + atts.addAttribute("","","newcode","CDATA",modNewCode); + atts.addAttribute("","","ReleaseNo","CDATA",ReleaseNo); + return atts; + + } + + public static AttributesImpl createorgaccessBinding( AttributesImpl atts, int org_id, int role_id) + { + String sql = null; + String name = null; + atts.clear(); + + sql = "SELECT Name FROM AD_Org WHERE AD_Org_ID=?"; + name = DB.getSQLValueString(null,sql,org_id); + atts.addAttribute("","","orgname","CDATA",name); + + sql = "SELECT Name FROM AD_Role WHERE AD_Role_ID=?"; + name = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","rolename","CDATA",name); + + sql = "SELECT isActive FROM AD_Role_OrgAccess WHERE AD_Org_ID="+ org_id +" and AD_Role_ID=?"; + String TrueFalse = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isActive","CDATA",TrueFalse); + + sql = "SELECT isReadOnly FROM AD_Role_OrgAccess WHERE AD_Org_ID="+ org_id +" and AD_Role_ID=?"; + String isReadWrite = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isReadOnly","CDATA",TrueFalse); + + return atts; + } + + //TODO + public static AttributesImpl createusrassignBinding( AttributesImpl atts, int user_id, int role_id, int org_id) + { + String sql = null; + String name = null; + atts.clear(); + + sql = "SELECT Name FROM AD_User WHERE AD_User_ID=?"; + name = DB.getSQLValueString(null,sql,user_id); + atts.addAttribute("","","username","CDATA",name); + + sql = "SELECT Name FROM AD_Role WHERE AD_Role_ID=?"; + name = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","rolename","CDATA",name); + + sql = "SELECT isActive FROM AD_User_Roles WHERE AD_User_ID="+ user_id +" and AD_Role_ID=?"; + String TrueFalse = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isActive","CDATA",TrueFalse); + + sql = "SELECT Name FROM AD_Org WHERE AD_Org_ID=?"; + name = DB.getSQLValueString(null,sql,org_id); + atts.addAttribute("","","orgname","CDATA",name); + + return atts; + } + + public static AttributesImpl createwindowaccessBinding( AttributesImpl atts, int window_id, int role_id) + { + String sql = null; + String name = null; + atts.clear(); + + + sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?"; + name = DB.getSQLValueString(null,sql,window_id); + atts.addAttribute("","","windowname","CDATA",name); + + sql = "SELECT Name FROM AD_Role WHERE AD_Role_ID=?"; + name = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","rolename","CDATA",name); + + sql = "SELECT isActive FROM AD_Window_Access WHERE AD_Window_ID="+ window_id +" and AD_Role_ID=?"; + String TrueFalse = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isActive","CDATA",TrueFalse); + + sql = "SELECT isReadWrite FROM AD_Window_Access WHERE AD_Window_ID="+ window_id +" and AD_Role_ID=?"; + String isReadWrite = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isReadWrite","CDATA",TrueFalse); + + return atts; + } + + public static AttributesImpl createprocessaccessBinding( AttributesImpl atts, int process_id, int role_id) + { + String sql = null; + String name = null; + atts.clear(); + + sql = "SELECT Name FROM AD_Process WHERE AD_Process_ID=?"; + name = DB.getSQLValueString(null,sql,process_id); + atts.addAttribute("","","processname","CDATA",name); + + sql = "SELECT Name FROM AD_Role WHERE AD_Role_ID=?"; + name = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","rolename","CDATA",name); + + sql = "SELECT isActive FROM AD_Process_Access WHERE AD_Process_ID="+ process_id +" and AD_Role_ID=?"; + String TrueFalse = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isActive","CDATA",TrueFalse); + + sql = "SELECT isReadWrite FROM AD_Process_Access WHERE AD_Process_ID="+ process_id +" and AD_Role_ID=?"; + String isReadWrite = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isReadWrite","CDATA",TrueFalse); + + return atts; + } + + public static AttributesImpl createformaccessBinding( AttributesImpl atts, int form_id, int role_id) + { + String sql = null; + String name = null; + atts.clear(); + + sql = "SELECT Name FROM AD_Form WHERE AD_Form_ID=?"; + name = DB.getSQLValueString(null,sql,form_id); + atts.addAttribute("","","formname","CDATA",name); + + sql = "SELECT Name FROM AD_Role WHERE AD_Role_ID=?"; + name = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","rolename","CDATA",name); + + sql = "SELECT isActive FROM AD_Form_Access WHERE AD_Form_ID="+ form_id +" and AD_Role_ID=?"; + String TrueFalse = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isActive","CDATA",TrueFalse); + + sql = "SELECT isReadWrite FROM AD_Form_Access WHERE AD_Form_ID="+ form_id +" and AD_Role_ID=?"; + String isReadWrite = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isReadWrite","CDATA",TrueFalse); + + return atts; + + } + + public static AttributesImpl createworkflowaccessBinding( AttributesImpl atts, int workflow_id, int role_id) + { + String sql = null; + String name = null; + atts.clear(); + + sql = "SELECT Name FROM AD_Workflow WHERE AD_Workflow_ID=?"; + name = DB.getSQLValueString(null,sql,workflow_id); + atts.addAttribute("","","workflowname","CDATA",name); + + sql = "SELECT Name FROM AD_Role WHERE AD_Role_ID=?"; + name = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","rolename","CDATA",name); + + sql = "SELECT isActive FROM AD_Workflow_Access WHERE AD_Workflow_ID="+ workflow_id +" and AD_Role_ID=?"; + String TrueFalse = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isActive","CDATA",TrueFalse); + + sql = "SELECT isReadWrite FROM AD_Workflow_Access WHERE AD_Workflow_ID="+ workflow_id +" and AD_Role_ID=?"; + String isReadWrite = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isReadWrite","CDATA",TrueFalse); + + return atts; + } + + public static AttributesImpl createtaskaccessBinding( AttributesImpl atts, int task_id, int role_id) + { + String sql = null; + String name = null; + atts.clear(); + + sql = "SELECT Name FROM AD_Task WHERE AD_Task_ID=?"; + name = DB.getSQLValueString(null,sql,task_id); + atts.addAttribute("","","taskname","CDATA",name); + + sql = "SELECT Name FROM AD_Role WHERE AD_Role_ID=?"; + name = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","rolename","CDATA",name); + + sql = "SELECT isActive FROM AD_Task_Access WHERE AD_Task_ID="+ task_id +" and AD_Role_ID=?"; + String TrueFalse = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isActive","CDATA",TrueFalse); + + sql = "SELECT isReadWrite FROM AD_Task_Access WHERE AD_Task_ID="+ task_id +" and AD_Role_ID=?"; + String isReadWrite = DB.getSQLValueString(null,sql,role_id); + atts.addAttribute("","","isReadWrite","CDATA",TrueFalse); + return atts; + } + + public static AttributesImpl createreflistBinding( AttributesImpl atts, X_AD_Ref_List m_Ref_List) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Ref_List.getAD_Ref_List_ID ()> 0 ){ + sql = "SELECT Name FROM AD_Ref_List WHERE AD_Ref_List_ID=?"; + name = DB.getSQLValueString(null,sql,m_Ref_List.getAD_Ref_List_ID ()); + } + if (name != null ) + atts.addAttribute("","","ADReflistNameID","CDATA",name); + else + atts.addAttribute("","","ADReflistNameID","CDATA",""); + if (m_Ref_List.getAD_Reference_ID()> 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_Reference_ID=?"; + name = DB.getSQLValueString(null,sql,m_Ref_List.getAD_Reference_ID()); + } + if (name != null ) + atts.addAttribute("","","ADRefenceNameID","CDATA",name); + else + atts.addAttribute("","","ADRefenceNameID","CDATA",""); + atts.addAttribute("","","Description","CDATA",(m_Ref_List.getDescription () != null ? m_Ref_List.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Ref_List.getEntityType () != null ? m_Ref_List.getEntityType ():"")); + atts.addAttribute("","","Name","CDATA",(m_Ref_List.getName () != null ? m_Ref_List.getName ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Ref_List.isActive()== true ? "true":"false")); + //atts.addAttribute("","","ValidFrom","CDATA",(m_Ref_List.getValidFrom ().toGMTString() != null ? m_Ref_List.getValidFrom().toGMTString():"")); + //atts.addAttribute("","","ValidTo","CDATA",(m_Ref_List.getValidTo ().toGMTString() != null ? m_Ref_List.getValidTo().toGMTString():"")); + atts.addAttribute("","","Value","CDATA",(m_Ref_List.getValue () != null ? m_Ref_List.getValue ():"")); + return atts; + } + + public AttributesImpl createreferencetableBinding( AttributesImpl atts, int reference_ID) + { + atts.clear(); + String name = null; + String sql = null; + String sql1 = "SELECT * FROM AD_Ref_Table WHERE AD_Reference_ID= " + reference_ID; + + PreparedStatement pstmt = null; + pstmt = DB.prepareStatement (sql1, get_TrxName()); + try { + ResultSet rs = pstmt.executeQuery(); + while (rs.next()){ + + if (reference_ID > 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_Reference_ID=?"; + name = DB.getSQLValueString(null,sql,reference_ID); + atts.addAttribute("","","ADRefenceNameID","CDATA",name); + } + else + atts.addAttribute("","","ADRefenceNameID","CDATA",""); + + if (rs.getInt("AD_Table_ID")> 0 ){ + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null,sql,rs.getInt("AD_Table_ID")); + atts.addAttribute("","","ADTableNameID","CDATA",name); + } + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + + if (rs.getInt("AD_Display") > 0 ){ + sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,rs.getInt("AD_Display")); + atts.addAttribute("","","ADDisplay","CDATA",name);} + else + atts.addAttribute("","","ADDisplay","CDATA",""); + + if (rs.getInt("AD_Key")> 0 ){ + sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,rs.getInt("AD_Key")); + atts.addAttribute("","","Key","CDATA",name); + } + else + atts.addAttribute("","","Key","CDATA",""); + atts.addAttribute("","","EntityType","CDATA",(rs.getString("EntityType") != null ? rs.getString("EntityType"):"")); + atts.addAttribute("","","IsValueDisplayed","CDATA",(rs.getString("IsValueDisplayed").compareTo("Y")==0 ? "Y":"N")); + atts.addAttribute("","","OrderByClause","CDATA",(rs.getString("OrderByClause") != null ? rs.getString("OrderByClause"):"")); + atts.addAttribute("","","isActive","CDATA",(rs.getString("isActive").compareTo("Y")==0 ? "Y":"N")); + atts.addAttribute("","","WhereClause","CDATA",(rs.getString("WhereClause") != null ? rs.getString("WhereClause"):"")); + + } + rs.close(); + pstmt.close(); + pstmt = null; + } + catch (Exception e) + { + + } + finally + { + try + { + if (pstmt != null) + pstmt.close (); + } + catch (Exception e) + {} + pstmt = null; + } + return atts; + } + + + public static AttributesImpl createPrintformatBinding( AttributesImpl atts, X_AD_PrintFormat m_Printformat) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Printformat.getAD_ReportView_ID()> 0 ){ + sql = "SELECT Name FROM AD_ReportView WHERE AD_ReportView_ID=?"; + name = DB.getSQLValueString(null,sql,m_Printformat.getAD_ReportView_ID()); + atts.addAttribute("","","ADReportviewnameID","CDATA",name);} + else + atts.addAttribute("","","ADReportviewnameID","CDATA",""); + + if (m_Printformat.getAD_Table_ID()> 0 ){ + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null,sql,m_Printformat.getAD_Table_ID()); + atts.addAttribute("","","ADTableNameID","CDATA",name);} + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + + if (m_Printformat.getAD_PrintTableFormat_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintTableFormat WHERE AD_PrintTableFormat_ID=?"; + name = DB.getSQLValueString(null,sql,m_Printformat.getAD_PrintTableFormat_ID()); + atts.addAttribute("","","ADPrintTableFormatID","CDATA",name);} + else + atts.addAttribute("","","ADPrintTableFormatID","CDATA",""); + + if (m_Printformat.getAD_PrintColor_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintColor WHERE AD_PrintColor_ID=?"; + name = DB.getSQLValueString(null,sql,m_Printformat.getAD_PrintColor_ID()); + atts.addAttribute("","","ADPrintColorID","CDATA",name);} + else + atts.addAttribute("","","ADPrintColorID","CDATA",""); + + if (m_Printformat.getAD_PrintFont_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintFont WHERE AD_PrintFont_ID=?"; + name = DB.getSQLValueString(null,sql,m_Printformat.getAD_PrintFont_ID()); + atts.addAttribute("","","ADPrintFontID","CDATA",name);} + else + atts.addAttribute("","","ADPrintFontID","CDATA",""); + + if (m_Printformat.getAD_PrintPaper_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintPaper WHERE AD_PrintPaper_ID=?"; + name = DB.getSQLValueString(null,sql,m_Printformat.getAD_PrintPaper_ID()); + atts.addAttribute("","","ADPrintPaperID","CDATA",name);} + else + atts.addAttribute("","","ADPrintPaperID","CDATA",""); + + atts.addAttribute("","","Description","CDATA",(m_Printformat.getDescription () != null ? m_Printformat.getDescription ():"")); + atts.addAttribute("","","Name","CDATA",(m_Printformat.getName () != null ? m_Printformat.getName ():"")); + atts.addAttribute("","","PrinterName","CDATA",(m_Printformat.getPrinterName() != null ? m_Printformat.getPrinterName ():"")); + atts.addAttribute("","","FooterMargin","CDATA",""+m_Printformat.getFooterMargin()); + atts.addAttribute("","","HeaderMargin","CDATA",""+m_Printformat.getHeaderMargin()); + atts.addAttribute("","","CreateCopy","CDATA",(m_Printformat.getCreateCopy() != null ? m_Printformat.getCreateCopy ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Printformat.isActive()== true ? "true":"false")); + atts.addAttribute("","","isTableBased","CDATA",(m_Printformat.isTableBased()== true ? "true":"false")); + atts.addAttribute("","","isForm","CDATA",(m_Printformat.isForm()== true ? "true":"false")); + atts.addAttribute("","","isStandardHeader","CDATA",(m_Printformat.isStandardHeaderFooter()== true ? "true":"false")); + atts.addAttribute("","","isDefault","CDATA",(m_Printformat.isDefault()== true ? "true":"false")); + return atts; + } + + public static AttributesImpl createPrintformatItemBinding( AttributesImpl atts, X_AD_PrintFormatItem m_PrintformatItem) + { + String sql = null; + String name = null; + atts.clear(); + if (m_PrintformatItem.getAD_PrintFormat_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintFormat WHERE AD_PrintFormat_ID=?"; + name = DB.getSQLValueString(null,sql,m_PrintformatItem.getAD_PrintFormat_ID()); + atts.addAttribute("","","ADPrintFormatNameID","CDATA",name);} + else + atts.addAttribute("","","ADPrintFormatNameID","CDATA",""); + + if (m_PrintformatItem.getAD_PrintFormatChild_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintFormat WHERE AD_PrintFormat_ID=?"; + name = DB.getSQLValueString(null,sql,m_PrintformatItem.getAD_PrintFormatChild_ID()); + atts.addAttribute("","","ADPrintFormatChildNameID","CDATA",name);} + else + atts.addAttribute("","","ADPrintFormatChildNameID","CDATA",""); + + if (m_PrintformatItem.getAD_Column_ID()> 0 ){ + sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_PrintformatItem.getAD_Column_ID()); + atts.addAttribute("","","ADColumnNameID","CDATA",name);} + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + + if (m_PrintformatItem.getAD_Column_ID()> 0 ){ + sql = "SELECT AD_Table_ID FROM AD_Column WHERE AD_Column_ID=?"; + int tableID = DB.getSQLValue(null, sql,m_PrintformatItem.getAD_Column_ID()); + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null, sql,tableID); + atts.addAttribute("","","ADTableNameID","CDATA",name);} + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + + + + if (m_PrintformatItem.getAD_PrintGraph_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintGraph WHERE AD_PrintGraph_ID=?"; + name = DB.getSQLValueString(null,sql,m_PrintformatItem.getAD_PrintGraph_ID()); + atts.addAttribute("","","ADPrintGraphID","CDATA",name);} + else + atts.addAttribute("","","ADPrintGraphID","CDATA",""); + + if (m_PrintformatItem.getAD_PrintColor_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintColor WHERE AD_PrintColor_ID=?"; + name = DB.getSQLValueString(null,sql,m_PrintformatItem.getAD_PrintColor_ID()); + atts.addAttribute("","","ADPrintColorID","CDATA",name);} + else + atts.addAttribute("","","ADPrintColorID","CDATA",""); + + if (m_PrintformatItem.getAD_PrintFont_ID()> 0 ){ + sql = "SELECT Name FROM AD_PrintFont WHERE AD_PrintFont_ID=?"; + name = DB.getSQLValueString(null,sql,m_PrintformatItem.getAD_PrintFont_ID()); + atts.addAttribute("","","ADPrintFontID","CDATA",name);} + else + atts.addAttribute("","","ADPrintFontID","CDATA",""); + + atts.addAttribute("","","PrintName","CDATA",(m_PrintformatItem.getPrintName () != null ? m_PrintformatItem.getPrintName ():"")); + atts.addAttribute("","","Name","CDATA",(m_PrintformatItem.getName () != null ? m_PrintformatItem.getName ():"")); + atts.addAttribute("","","PrintAreaType","CDATA",(m_PrintformatItem.getPrintAreaType() != null ? m_PrintformatItem.getPrintAreaType ():"")); + atts.addAttribute("","","SeqNo","CDATA",""+m_PrintformatItem.getSeqNo()); + atts.addAttribute("","","PrintFormatType","CDATA",m_PrintformatItem.getPrintFormatType()); + atts.addAttribute("","","XSpace","CDATA",(""+m_PrintformatItem.getXSpace())); + atts.addAttribute("","","YSpace","CDATA",(""+m_PrintformatItem.getYSpace())); + atts.addAttribute("","","Xposition","CDATA",(""+m_PrintformatItem.getXPosition())); + atts.addAttribute("","","Yposition","CDATA",(""+m_PrintformatItem.getYPosition())); + atts.addAttribute("","","MaxWidth","CDATA",(""+m_PrintformatItem.getMaxWidth())); + atts.addAttribute("","","MaxHieght","CDATA",(""+m_PrintformatItem.getMaxHeight())); + atts.addAttribute("","","SortNo","CDATA",(""+m_PrintformatItem.getSortNo())); + atts.addAttribute("","","FieldAlignmentType","CDATA",(m_PrintformatItem.getFieldAlignmentType() != null ? m_PrintformatItem.getFieldAlignmentType ():"")); + atts.addAttribute("","","LineAlignmentType","CDATA",(m_PrintformatItem.getLineAlignmentType() != null ? m_PrintformatItem.getLineAlignmentType ():"")); + atts.addAttribute("","","ImageURL","CDATA",(m_PrintformatItem.getImageURL() != null ? m_PrintformatItem.getImageURL ():"")); + atts.addAttribute("","","BelowColumn","CDATA",(""+m_PrintformatItem.getBelowColumn())); + atts.addAttribute("","","RunningTotalLines","CDATA",(""+m_PrintformatItem.getRunningTotalLines())); + atts.addAttribute("","","PrintNameSuffix","CDATA",(m_PrintformatItem.getPrintNameSuffix() != null ? m_PrintformatItem.getPrintNameSuffix ():"")); + atts.addAttribute("","","ArcDiameter","CDATA",""+m_PrintformatItem.getArcDiameter()); + atts.addAttribute("","","LineWidth","CDATA",""+m_PrintformatItem.getLineWidth()); + atts.addAttribute("","","ShapeType","CDATA",m_PrintformatItem.getShapeType() != null ? m_PrintformatItem.getShapeType():""); + atts.addAttribute("","","isActive","CDATA",(m_PrintformatItem.isActive()== true ? "true":"false")); + atts.addAttribute("","","isPrinted","CDATA",(m_PrintformatItem.isPrinted()== true ? "true":"false")); + atts.addAttribute("","","isRelativePosition","CDATA",(m_PrintformatItem.isRelativePosition()== true ? "true":"false")); + atts.addAttribute("","","isNextLine","CDATA",(m_PrintformatItem.isNextLine()== true ? "true":"false")); + atts.addAttribute("","","isHeightOneLine","CDATA",(m_PrintformatItem.isHeightOneLine()== true ? "true":"false")); + atts.addAttribute("","","isOrderBy","CDATA",(m_PrintformatItem.isOrderBy()== true ? "true":"false")); + atts.addAttribute("","","isGroupBy","CDATA",(m_PrintformatItem.isGroupBy()== true ? "true":"false")); + atts.addAttribute("","","isPageBreak","CDATA",(m_PrintformatItem.isPageBreak()== true ? "true":"false")); + atts.addAttribute("","","isSummarized","CDATA",(m_PrintformatItem.isSummarized()== true ? "true":"false")); + atts.addAttribute("","","isImageIsAttached","CDATA",(m_PrintformatItem.isImageIsAttached()== true ? "true":"false")); + atts.addAttribute("","","isAveraged","CDATA",(m_PrintformatItem.isAveraged()== true ? "true":"false")); + atts.addAttribute("","","isCounted","CDATA",(m_PrintformatItem.isCounted()== true ? "true":"false")); + atts.addAttribute("","","isSetNLPosition","CDATA",(m_PrintformatItem.isSetNLPosition()== true ? "true":"false")); + atts.addAttribute("","","isSuppressNull","CDATA",(m_PrintformatItem.isSuppressNull()== true ? "true":"false")); + atts.addAttribute("","","isFixedWidth","CDATA",(m_PrintformatItem.isFixedWidth()== true ? "true":"false")); + atts.addAttribute("","","isNextPage","CDATA",(m_PrintformatItem.isNextPage()== true ? "true":"false")); + atts.addAttribute("","","isMaxCalc","CDATA",(m_PrintformatItem.isMaxCalc()== true ? "true":"false")); + atts.addAttribute("","","isMinCalc","CDATA",(m_PrintformatItem.isMinCalc()== true ? "true":"false")); + atts.addAttribute("","","isRunningTotal","CDATA",(m_PrintformatItem.isRunningTotal()== true ? "true":"false")); + atts.addAttribute("","","isVarianceCalc","CDATA",(m_PrintformatItem.isVarianceCalc()== true ? "true":"false")); + atts.addAttribute("","","isDeviationCalc","CDATA",(m_PrintformatItem.isDeviationCalc()== true ? "true":"false")); + + return atts; + } + + public static AttributesImpl createreportviewBinding( AttributesImpl atts, X_AD_ReportView m_Reportview) + { + String sql = null; + String name = null; + atts.clear(); + + if (m_Reportview.getAD_ReportView_ID()> 0 ){ + sql = "SELECT Name FROM AD_ReportView WHERE AD_ReportView_ID=?"; + name = DB.getSQLValueString(null,sql,m_Reportview.getAD_ReportView_ID()); + atts.addAttribute("","","ADReportviewnameID","CDATA",name);} + else + atts.addAttribute("","","ADReportviewnameID","CDATA",""); + + if (m_Reportview.getAD_Table_ID()> 0 ){ + sql = "SELECT TableName FROM AD_Table WHERE AD_Table_ID=?"; + name = DB.getSQLValueString(null,sql,m_Reportview.getAD_Table_ID()); + atts.addAttribute("","","ADTableNameID","CDATA",name);} + else + atts.addAttribute("","","ADTableNameID","CDATA",""); + + atts.addAttribute("","","Description","CDATA",(m_Reportview.getDescription () != null ? m_Reportview.getDescription ():"")); + atts.addAttribute("","","EntityType","CDATA",(m_Reportview.getEntityType () != null ? m_Reportview.getEntityType ():"")); + atts.addAttribute("","","Name","CDATA",(m_Reportview.getName () != null ? m_Reportview.getName ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Reportview.isActive()== true ? "true":"false")); + atts.addAttribute("","","OrderByClause","CDATA",(m_Reportview.getOrderByClause () != null ? m_Reportview.getOrderByClause ():"")); + atts.addAttribute("","","WhereClause","CDATA",(m_Reportview.getWhereClause () != null ? m_Reportview.getWhereClause ():"")); + return atts; + } + + public static AttributesImpl createreportviewcolBinding( AttributesImpl atts, X_AD_ReportView_Col m_Reportview_Col) + { + String sql = null; + String name = null; + atts.clear(); + if (m_Reportview_Col.getAD_Column_ID()> 0 ){ + sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; + name = DB.getSQLValueString(null,sql,m_Reportview_Col.getAD_Column_ID()); + atts.addAttribute("","","ADColumnNameID","CDATA",name);} + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + + if (m_Reportview_Col.getAD_ReportView_ID()> 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_Reportview_ID=?"; + name = DB.getSQLValueString(null,sql,m_Reportview_Col.getAD_ReportView_ID()); + atts.addAttribute("","","ADReportviewnameID","CDATA",name);} + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + + if (m_Reportview_Col.getAD_ReportView_Col_ID()> 0 ){ + sql = "SELECT Name FROM AD_Reference WHERE AD_ReportView_Col_ID=?"; + name = DB.getSQLValueString(null,sql,m_Reportview_Col.getAD_ReportView_Col_ID()); + atts.addAttribute("","","ADReportViewColID","CDATA",name);} + else + atts.addAttribute("","","ADColumnNameID","CDATA",""); + + atts.addAttribute("","","FunctionColumn","CDATA",(m_Reportview_Col.getFunctionColumn () != null ? m_Reportview_Col.getFunctionColumn ():"")); + atts.addAttribute("","","isActive","CDATA",(m_Reportview_Col.isActive()== true ? "true":"false")); + atts.addAttribute("","","isGroupFunction","CDATA",(m_Reportview_Col.isGroupFunction()== true ? "true":"false")); + return atts; + } + + public void CopyFile (String sourceName, String copyName ) { + InputStream source; // Stream for reading from the source file. + OutputStream copy; // Stream for writing the copy. + boolean force; // This is set to true if the "-f" option + // is specified on the command line. + int byteCount; // Number of bytes copied from the source file. + + force = true; + try { + source = new FileInputStream(sourceName); + } + catch (FileNotFoundException e) { + System.out.println("Can't find file \"" + sourceName + "\"."); + return; + } + File file = new File(copyName); + if (file.exists() && force == false) { + System.out.println( + "Output file exists. Use the -f option to replace it."); + return; + } + try { + copy = new FileOutputStream(copyName, false); + } + catch (IOException e) { + System.out.println("Can't open output file \"" + + copyName + "\"."); + return; + } + byteCount = 0; + try { + while (true) { + int data = source.read(); + if (data < 0) + break; + copy.write(data); + byteCount++; + } + source.close(); + copy.close(); + System.out.println("Successfully copied " + byteCount + " bytes."); + } + catch (Exception e) { + System.out.println("Error occurred while copying. "+ byteCount + " bytes copied."); + System.out.println(e.toString()); + } + } + +} // PackOut diff --git a/base/src/org/adempiere/pipo/PackRoll.java b/base/src/org/adempiere/pipo/PackRoll.java new file mode 100644 index 0000000000..4641f01e3d --- /dev/null +++ b/base/src/org/adempiere/pipo/PackRoll.java @@ -0,0 +1,536 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 Adempiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * + * Copyright (C) 2005 Robert Klein. robeklein@hotmail.com + * Contributor(s): Carlos Ruiz - globalqss + *****************************************************************************/ +package org.adempiere.pipo; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.*; + +import org.compiere.util.DB; +import org.compiere.util.Env; +import org.compiere.process.*; + +/** + * Reverse Package Install. + * + * @author Robert Klein + * + */ +public class PackRoll extends SvrProcess { + /** Package from Record */ + private int m_AD_Package_Imp_ID = 0; + private String m_Processing = null; + StringBuffer sql = null; + StringBuffer sqlB = null; + String columnIDName = null; + StringBuffer sqlC = null; + StringBuffer sqlD = null; + + /** + * Prepare - e.g., get Parameters. + */ + protected void prepare() { + ProcessInfoParameter[] para = getParameter(); + for (int i = 0; i < para.length; i++) { + String name = para[i].getParameterName(); + if (para[i].getParameter() == null) + ; + else if (name.equals("Processing")) + m_Processing = (String) para[i].getParameter(); + else + log.log(Level.SEVERE, "prepare - Unknown Parameter: " + name); + } + m_AD_Package_Imp_ID = getRecord_ID(); + } // prepare + + /** + * Perform process. + * + * @return Message (translated text) + * @throws Exception + * if not successful + */ + protected String doIt() throws Exception { + + sqlB = new StringBuffer("UPDATE AD_Package_Imp " + + "SET PK_Status = 'Uninstalling' " + + "WHERE AD_Package_Imp_ID = " + m_AD_Package_Imp_ID); + int no = DB.executeUpdate(sqlB.toString(), get_TrxName()); + + log.info("Starting Package Reversal"); + // select all records that are new or have been updated by package + // install + sql = new StringBuffer("SELECT * " + "FROM AD_Package_Imp_Detail " + + "WHERE AD_Package_Imp_ID=" + m_AD_Package_Imp_ID + + " ORDER BY AD_Package_Imp_Detail_ID DESC"); + log.info(sql.toString()); + int x = 0; + PreparedStatement pstmt = null; + try { + pstmt = DB.prepareStatement(sql.toString(), null); + + ResultSet rs = pstmt.executeQuery(); + + while (rs.next()) { + + if (rs.getString("Type").compareTo("file") == 0) { + + sqlB = new StringBuffer("SELECT * " + + "FROM AD_Package_Imp_Backup " + + "WHERE AD_Package_Imp_Detail_ID=" + + rs.getInt("AD_Package_Imp_Detail_ID") + + " AND AD_Package_Imp_ID=" + + rs.getInt("AD_Package_Imp_ID")); + PreparedStatement pstmt2 = null; + try { + pstmt2 = DB.prepareStatement(sqlB.toString(), + get_TrxName()); + + ResultSet rs2 = pstmt2.executeQuery(); + + while (rs2.next()) { + if (rs2.getString("AD_Package_Imp_Bck_Dir") != null + && rs2.getString("AD_Package_Imp_Org_Dir") != null) { + copyFile(rs2 + .getString("AD_Package_Imp_Bck_Dir"), + rs2.getString("AD_Package_Imp_Org_Dir")); + } + + // Update uninstall field for column + sqlD = new StringBuffer( + "UPDATE AD_Package_Imp_Backup" + + " SET Uninstall = 'Y'" + + " WHERE AD_Package_Imp_Backup_ID = " + + rs2 + .getInt("AD_Package_Imp_Backup_ID")); + no = DB.executeUpdate(sqlD.toString(), null); + + // Update uninstall field for record + sqlD = new StringBuffer( + "UPDATE AD_Package_Imp_Detail" + + " SET Uninstall = 'Y'" + + " WHERE AD_Package_Imp_Detail_ID = " + + rs + .getInt("AD_Package_Imp_Detail_ID")); + no = DB.executeUpdate(sqlD.toString(), null); + } + + rs2.close(); + pstmt2.close(); + pstmt2 = null; + } catch (Exception e) { + log.log(Level.SEVERE, "doIt", e); + } finally { + try { + if (pstmt2 != null) + pstmt2.close(); + } catch (Exception e) { + } + pstmt2 = null; + } + } else { + + String tableName = rs.getString("TableName"); + + int recordID = rs.getInt("AD_Original_ID"); + + // determine if record is an update to the original + // if record is an update then update record with backup + // settings + // else inactivate record + if (rs.getString("ACTION").compareTo("Update") == 0) { + // select all backed up columns for the record + sqlB = new StringBuffer("SELECT * " + + "FROM AD_Package_Imp_Backup " + + "WHERE AD_Package_Imp_Detail_ID=" + + rs.getInt("AD_Package_Imp_Detail_ID") + + " AND AD_Package_Imp_ID=" + + rs.getInt("AD_Package_Imp_ID")); + PreparedStatement pstmt2 = null; + try { + pstmt2 = DB.prepareStatement(sqlB.toString(), + get_TrxName()); + + ResultSet rs2 = pstmt2.executeQuery(); + + while (rs2.next()) { + + sql = new StringBuffer( + "SELECT IsKey FROM AD_Column WHERE AD_Column_ID = ?"); + String IsKey = DB.getSQLValueString( + get_TrxName(), sql.toString(), rs2 + .getInt("AD_Column_ID")); + + // Get Table value + sql = new StringBuffer( + "SELECT TableName FROM AD_Table WHERE AD_Table_ID = ?"); + tableName = DB.getSQLValueString(get_TrxName(), + sql.toString(), rs2 + .getInt("AD_Table_ID")); + + // Get Column Name + sql = new StringBuffer( + "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID = ?"); + String columnName = DB.getSQLValueString( + get_TrxName(), sql.toString(), rs2 + .getInt("AD_Column_ID")); + // log.info(columnName); + + // Update columns for record + // TODO make process more efficient! + if (IsKey.equals("Y") + || columnName.startsWith("Created")) + ; // ignore is a Key Column or if it + // references a Created(By) Column + // Update "Updated" field with current date + else if (columnName.equals("Updated")) { + // Format Date + // TODO Correct to include proper time of + // update + Date today = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat( + "dd-MMM-yyyy"); + String colDate = formatter.format(today); + sqlC = new StringBuffer("UPDATE " + + tableName + " SET " + columnName + + " = '" + colDate + "' WHERE " + + columnIDName + " = " + recordID); + + no = DB + .executeUpdate(sqlC.toString(), + null); + // Update uninstall field + sqlD = new StringBuffer( + "UPDATE AD_Package_Imp_Backup" + + " SET Uninstall = 'Y'" + + " WHERE AD_Package_Imp_Backup_ID = " + + rs2 + .getInt("AD_Package_Imp_Backup_ID")); + no = DB + .executeUpdate(sqlD.toString(), + null); + } + // Update "UpdatedBy" field with current user + else if (columnName.equals("UpdatedBy")) { + sqlC = new StringBuffer("UPDATE " + + tableName + " SET " + columnName + + " = '" + + Env.getAD_User_ID(Env.getCtx()) + + "' WHERE " + columnIDName + " = " + + recordID); + no = DB + .executeUpdate(sqlC.toString(), + null); + + sqlD = new StringBuffer( + "UPDATE AD_Package_Imp_Backup" + + " SET Uninstall = 'Y'" + + " WHERE AD_Package_Imp_Backup_ID = " + + rs2 + .getInt("AD_Package_Imp_Backup_ID")); + no = DB + .executeUpdate(sqlD.toString(), + null); + } + // Update all other fields with backup + // information + else { + + int v_AD_Reference_ID = rs2 + .getInt("AD_Reference_ID"); + // Adjust for Column reference table + if (tableName.equals("AD_Ref_Table")) { + columnIDName = "AD_Reference_ID"; + } else if (tableName + .equals("AD_TreeNodeMM")) { + columnIDName = "Node_ID"; + } else { + columnIDName = tableName + "_ID"; + } + // Update columns that are Strings adjusting + // for single quotes + if (v_AD_Reference_ID == 10 + || v_AD_Reference_ID == 14 + || v_AD_Reference_ID == 34 + || v_AD_Reference_ID == 17 + // Carlos Ruiz globalqss, special + // treatment for EntityType + // it's a Table reference but must + // be treated as String + || (v_AD_Reference_ID == 18 && columnName + .equalsIgnoreCase("EntityType"))) + if (rs2.getObject("ColValue") + .toString().equals("null")) { + ;// Ignore null values + } else { + sqlC = new StringBuffer("UPDATE " + + tableName + + " SET " + + columnName + + " = " + + "'" + + rs2.getObject("ColValue") + .toString() + .replaceAll("'", + "''") + "'" + + " WHERE " + columnIDName + + " = " + recordID); + } + // Update true/false columns + else if (v_AD_Reference_ID == 20 + || v_AD_Reference_ID == 28) { + sqlC = new StringBuffer("UPDATE " + + tableName + + " SET " + + columnName + + " = " + + (rs2.getObject("ColValue") + .toString().equals( + "true") ? "'Y'" + : "'N'") + " WHERE " + + columnIDName + " = " + + recordID); + } + // Update columns that are Strings adjusting + // for single quotes + else if (v_AD_Reference_ID == 13 + || v_AD_Reference_ID == 18 + || v_AD_Reference_ID == 19 + || v_AD_Reference_ID == 21 + || v_AD_Reference_ID == 25 + || v_AD_Reference_ID == 27 + || v_AD_Reference_ID == 30 + || v_AD_Reference_ID == 31 + || v_AD_Reference_ID == 35) + sqlC = new StringBuffer("UPDATE " + + tableName + + " SET " + + columnName + + " = " + + rs2.getObject("ColValue") + .toString().replaceAll( + "'", "''") + + " WHERE " + columnIDName + + " = " + recordID); + // Update columns that are numbers + else if (v_AD_Reference_ID == 11 + || v_AD_Reference_ID == 12 + || v_AD_Reference_ID == 22 + || v_AD_Reference_ID == 29) + sqlC = new StringBuffer("UPDATE " + + tableName + + " SET " + + columnName + + " = " + + rs2.getObject("ColValue") + .toString().replaceAll( + "'", "''") + + " WHERE " + columnIDName + + " = " + recordID); + // Update columns that are dates + else if (v_AD_Reference_ID == 15 + || v_AD_Reference_ID == 16) + // TODO Develop portable code to update + // date columns + ;// ignore + else + // 23-Binary, 24-Radio, 26-RowID, + // 32-Image not supported + ;// ignore + // execute update + no = DB + .executeUpdate(sqlC.toString(), + null); + + // Update uninstall field for column + sqlD = new StringBuffer( + "UPDATE AD_Package_Imp_Backup" + + " SET Uninstall = 'Y'" + + " WHERE AD_Package_Imp_Backup_ID = " + + rs2 + .getInt("AD_Package_Imp_Backup_ID")); + no = DB + .executeUpdate(sqlD.toString(), + null); + + // Update uninstall field for record + sqlD = new StringBuffer( + "UPDATE AD_Package_Imp_Detail" + + " SET Uninstall = 'Y'" + + " WHERE AD_Package_Imp_Detail_ID = " + + rs + .getInt("AD_Package_Imp_Detail_ID")); + no = DB + .executeUpdate(sqlD.toString(), + null); + + } + } + rs2.close(); + pstmt2.close(); + pstmt2 = null; + } catch (Exception e) { + log.log(Level.SEVERE, "doIt", e); + } finally { + try { + if (pstmt2 != null) + pstmt2.close(); + } catch (Exception e) { + } + pstmt2 = null; + } + } // ********* Update Loop + // Inactivate new records + else if (rs.getString("ACTION").compareTo("New") == 0) { + if (tableName.equals("AD_Ref_Table")) + columnIDName = "AD_Reference_ID"; + else if (tableName.equals("AD_TreeNodeMM")) + columnIDName = "Node_ID"; + else + columnIDName = tableName + "_ID"; + sqlC = new StringBuffer("UPDATE " + tableName + + " SET IsActive = 'N'" + " WHERE " + + columnIDName + " = " + recordID); + + // execute update + no = DB.executeUpdate(sqlC.toString(), null); + + // Update uninstall field for record + sqlD = new StringBuffer("UPDATE AD_Package_Imp_Detail" + + " SET Uninstall = 'Y'" + + " WHERE AD_Package_Imp_Detail_ID = " + + rs.getInt("AD_Package_Imp_Detail_ID")); + no = DB.executeUpdate(sqlD.toString(), null); + } + } + + } + rs.close(); + pstmt.close(); + pstmt = null; + } catch (Exception e) { + log.log(Level.SEVERE, "doIt", e); + } finally { + try { + if (pstmt != null) + pstmt.close(); + } catch (Exception e) { + } + pstmt = null; + } + // Update uninstall field for package + sqlD = new StringBuffer("UPDATE AD_Package_Imp" + + " SET Uninstall = 'Y'" + " WHERE AD_Package_Imp_ID = " + + m_AD_Package_Imp_ID); + no = DB.executeUpdate(sqlD.toString(), null); + + sqlB = new StringBuffer("UPDATE AD_Package_Imp " + + " SET PK_Status = 'Uninstalled'" + + " WHERE AD_Package_Imp_ID = " + m_AD_Package_Imp_ID); + no = DB.executeUpdate(sqlB.toString(), get_TrxName()); + + log.info("Package Reversal Completed"); + + return ""; + } // doIt + + /** + * Open input file for processing + * + * @param String + * file with path + * + */ + public FileInputStream OpenInputfile(String filePath) { + + FileInputStream fileTarget = null; + + try { + fileTarget = new FileInputStream(filePath); + } catch (FileNotFoundException e) { + System.out.println("Can't find file "); + + return null; + } + return fileTarget; + } + + /** + * Open output file for processing + * + * @param String + * file with path + * + */ + public OutputStream OpenOutputfile(String filePath) { + + OutputStream fileTarget = null; + + try { + fileTarget = new FileOutputStream(filePath); + } catch (FileNotFoundException e) { + System.out.println("Can't find file "); + + return null; + } + return fileTarget; + } + + /** + * Copyfile + * + * @param String + * file with path + * + */ + public int copyFile(String sourceFile, String targetFile) { + + OutputStream target = OpenOutputfile(targetFile); + InputStream source = OpenInputfile(sourceFile); + + int byteCount = 0; + int success = 0; + try { + while (true) { + int data = source.read(); + if (data < 0) + break; + target.write(data); + byteCount++; + } + source.close(); + target.close(); + + System.out.println("Successfully copied " + byteCount + " bytes."); + } catch (Exception e) { + System.out.println("Error occurred while copying. " + byteCount + + " bytes copied."); + System.out.println(e.toString()); + + success = -1; + } + return success; + } + +} // PackRoll