[ 1754519 ] Refactoring of PackInHandler

- Major refactoring of 2pack for easier maintenance and enhancement.
- Improve exception handling.
- Added support for defer resolution of element dependency.
- Still more testing needed :)
This commit is contained in:
Heng Sin Low 2007-07-23 08:02:22 +00:00
parent 69c9abfdc9
commit 50a08979a5
48 changed files with 10594 additions and 6813 deletions

View File

@ -0,0 +1,376 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com *
*****************************************************************************/
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.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.compiere.model.MSequence;
import org.compiere.model.PO;
import org.compiere.model.POInfo;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public abstract class AbstractElementHandler implements ElementHandler {
protected CLogger log = CLogger.getCLogger("PackIn");
/**
* Get ID from Name for a table.
* TODO: substitute with PO.getAllIDs
*
* @param tableName
* @param name
*
*/
public int get_ID (Properties ctx, String tableName, String name) {
return IDFinder.get_ID(tableName, name, getClientId(ctx), getTrxName(ctx));
}
/**
* Get ID from column value for a table.
*
* @param tableName
* @param columName
* @param name
*/
public int get_IDWithColumn (Properties ctx, String tableName, String columnName, Object value) {
return IDFinder.get_IDWithColumn(tableName, columnName, value, getClientId(ctx), getTrxName(ctx));
}
/**
* 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 (Properties ctx, 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;
TransformerHandler hd_document = getDocument(ctx);
AttributesImpl attsOut = getDocumentAttributes(ctx);
if (success == 1){
//hd_documemt.startElement("","","Successfull",attsOut);
recordLayout = "Type:"+objectType + " - Name:"+objectName + " - ID:"+objectID +" - Action:"+objectStatus+" - Success";
hd_document.startElement("","","Success",attsOut);
hd_document.characters(recordLayout.toCharArray(),0,recordLayout.length());
hd_document.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(ctx), "AD_Package_Imp_Detail", getTrxName(ctx));
StringBuffer 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(ctx)
+ ", "+ Env.getAD_Org_ID(ctx)
+ ", "+ Env.getAD_User_ID(ctx)
+ ", "+ Env.getAD_User_ID(ctx)
+ ", " + id
+ ", " + getPackageImpId(ctx)
+ ", '" + objectType
+ "', '" + objectName
+ "', '" + objectStatus
+ "', 'Success'"
+ ", "+objectID
+ ", "+objectIDBackup
+ ", '"+tableName
+ "', "+AD_Table_ID
+")");
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1)
log.info("Insert to import detail failed");
}
else{
String PK_Status = "Completed with errors";
hd_document.startElement("","","Failure",attsOut);
recordLayout = "Type:"+objectType + " - Name:"+tableName + " - ID:"+objectID +" - Action:"+objectStatus+" - Failure";
//hd_documemt.startElement("","","Success",attsOut);
hd_document.characters(recordLayout.toCharArray(),0,recordLayout.length());
//hd_documemt.endElement("","","Success");
hd_document.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(ctx), "AD_Package_Imp_Detail", getTrxName(ctx));
StringBuffer 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(ctx)
+ ", "+ Env.getAD_Org_ID(ctx)
+ ", "+ Env.getAD_User_ID(ctx)
+ ", "+ Env.getAD_User_ID(ctx)
+ ", " + id
+ ", " + getPackageImpId(ctx)
+ ", '" + objectType
+ "', '" + objectName
+ "', '" + objectStatus
+ "', 'Failure'"
+ ", "+objectID
+ ", "+objectIDBackup
+ ", '"+tableName
+ "', "+AD_Table_ID
+")");
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1)
log.info("Insert to import detail failed");
}
String Object_Status = "Status not set";
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 (Properties ctx, String tableName, String name, String tableNameMaster, String nameMaster) {
return IDFinder.get_IDWithMaster(tableName, name, tableNameMaster, nameMaster, getTrxName(ctx));
}
/**
* Get ID from Name for a table with a Master reference.
*
* @param tableName
* @param name
* @param tableNameMaster
* @param nameMaster
*/
public int get_IDWithMasterAndColumn (Properties ctx, String tableName, String columnName, String name, String tableNameMaster, int masterID) {
return IDFinder.get_IDWithMasterAndColumn(tableName, columnName, name, tableNameMaster, masterID,
getTrxName(ctx));
}
/**
* Get ID from Name for a table with a Master reference ID.
*
* @param tableName
* @param name
* @param tableNameMaster
* @param masterID
*/
public int get_IDWithMaster (Properties ctx, String tableName, String name, String tableNameMaster, int masterID) {
return IDFinder.get_IDWithMaster(tableName, name, tableNameMaster, masterID, getTrxName(ctx));
}
/**
* Get ID from Name for a table.
* TODO: substitute with PO.getAllIDs
*
* @param tableName
* @param name
*/
public int getIDbyName (Properties ctx, String tableName, String name) {
return IDFinder.getIDbyName(tableName, name, getClientId(ctx), getTrxName(ctx));
}
/**
* Make backup copy of record.
*
* @param tablename
*
*
*
*/
public int copyRecord(Properties ctx, String tableName,PO from){
// Create new record
int idBackup = 0;
String colValue=null;
int tableID = get_IDWithColumn(ctx, "AD_Table", "TableName", tableName);
POInfo poInfo = POInfo.getPOInfo(ctx, tableID);
for (int i = 0; i < poInfo.getColumnCount(); i++){
String colName = poInfo.getColumnName(i);
colValue=null;
int columnID =get_IDWithMasterAndColumn (ctx, "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(getTrxName(ctx),sqlD.toString());
idBackup = MSequence.getNextID (getClientId(ctx), "AD_Package_Imp_Backup", getTrxName(ctx));
sqlD = new StringBuffer("SELECT MAX(AD_PACKAGE_IMP_DETAIL_ID) FROM AD_PACKAGE_IMP_DETAIL");
int idDetail = DB.getSQLValue(getTrxName(ctx),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
StringBuffer 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(ctx)
+ ", "+ Env.getAD_Org_ID(ctx)
+ ", "+ Env.getAD_User_ID(ctx)
+ ", "+ Env.getAD_User_ID(ctx)
+ ", " + idBackup
+ ", " + idDetail
+ ", " + getPackageImpId(ctx)
+ ", " + tableID
+ ", " + columnID
+ ", " + referenceID
+ ", '" + (colValue != null ? colValue : from.get_Value(i))
+"')");
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1)
log.info("Insert to import backup failed");
//}
}
return idBackup;
}
/**
* 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;
}
protected int getClientId(Properties ctx) {
return Env.getContextAsInt(ctx, "AD_Client_ID");
}
protected int getPackageImpId(Properties ctx) {
return Env.getContextAsInt(ctx, "AD_Package_Imp_ID");
}
protected String getUpdateMode(Properties ctx) {
return Env.getContext(ctx, "UpdateMode");
}
protected String getTrxName(Properties ctx) {
return Env.getContext(ctx, "TrxName");
}
protected TransformerHandler getDocument(Properties ctx) {
return (TransformerHandler)ctx.get("Document");
}
protected AttributesImpl getDocumentAttributes(Properties ctx) {
return (AttributesImpl)ctx.get("DocumentAttributes");
}
protected String getPackageDirectory(Properties ctx) {
return Env.getContext(ctx, "PackageDirectory");
}
}

View File

@ -0,0 +1,60 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo;
import org.xml.sax.Attributes;
/**
* XML element structure
* @author Low Heng Sin
*
*/
public class Element {
public String uri;
public String localName;
public String qName;
//element attributes
public Attributes attributes;
//defer for later reprocessing
public boolean defer = false;
/**
* @param uri
* @param localName
* @param qName
* @param attributes
*/
public Element(String uri, String localName, String qName, Attributes attributes) {
this.uri = uri;
this.localName = localName;
this.qName = qName;
this.attributes = attributes;
}
/**
* @return elementValue
*/
public String getElementValue() {
String elementValue = null;
if ("".equals (uri))
elementValue = qName;
else
elementValue = uri + localName;
return elementValue;
}
}

View File

@ -0,0 +1,56 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.xml.sax.SAXException;
/**
* Interface for handling import and export of table data to xml
* @author Low Heng Sin
*
*/
public interface ElementHandler {
/**
* Handle start of xml element ( import ).
* @param ctx
* @param element
* @throws org.xml.sax.SAXException
*/
public void startElement (Properties ctx, Element element)
throws org.xml.sax.SAXException;
/**
* Handle closing of xml element ( import ).
* @param ctx
* @param element
* @throws SAXException
*/
public void endElement (Properties ctx, Element element) throws SAXException;
/**
* Create xml element ( export ).
* @param ctx
* @param document
* @throws SAXException
*/
public void create(Properties ctx, TransformerHandler document) throws SAXException;
}

View File

@ -0,0 +1,240 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Level;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
/**
* Utility class for the looking up of record id.
* @author Low Heng Sin
*
*/
public class IDFinder {
private static CLogger log = CLogger.getCLogger(IDFinder.class);
/**
* Get ID from Name for a table.
* TODO: substitute with PO.getAllIDs
*
* @param tableName
* @param name
* @param AD_Client_ID
* @param trxName
*
*/
public static int get_ID (String tableName, String name, int AD_Client_ID, String trxName) {
int id = 0;
StringBuffer 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(), trxName);
pstmt.setString(1, name);
if (!tableName.startsWith("AD_"))
pstmt.setInt(2, 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 value
* @param AD_Client_ID
* @param trxName
*/
public static int get_IDWithColumn (String tableName, String columnName, Object value, int AD_Client_ID, String trxName) {
int id = 0;
StringBuffer sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where UPPER("+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(), trxName);
if (value instanceof String)
pstmt.setString(1, ((String)value).toUpperCase());
else if (value instanceof Integer)
pstmt.setInt(1, ((Integer)value).intValue());
if (!tableName.startsWith("AD_"))
pstmt.setInt(2, 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
* @param trxName
*/
public static int get_IDWithMaster (String tableName, String name, String tableNameMaster, String nameMaster, String trxName) {
int id = 0;
StringBuffer sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where UPPER(name)=? and "
+ tableNameMaster+"_ID = (select "+tableNameMaster+"_ID from "+tableNameMaster+" where UPPER(name)=?)");
try {
PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(), trxName);
pstmt.setString(1, name.toUpperCase());
pstmt.setString(2, nameMaster.toUpperCase());
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 masterID
* @param trxName
*/
public static int get_IDWithMasterAndColumn (String tableName, String columnName, String name, String tableNameMaster, int masterID, String trxName) {
int id = 0;
StringBuffer sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where UPPER("+columnName+")=? and "
+ tableNameMaster+"_ID =?");
//StringBuffer sqlC = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where "+columnName+"="+name+" and "
// + tableNameMaster+"_ID ="+masterID);
log.info(sqlB.toString());
try {
PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(), trxName);
pstmt.setString(1, name.toUpperCase());
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
* @param trxName
*/
public static int get_IDWithMaster (String tableName, String name, String tableNameMaster, int masterID, String trxName) {
int id = 0;
StringBuffer sqlB = new StringBuffer ("select "+tableName+"_ID from "+tableName+" where name=? and "
+ tableNameMaster+"_ID=?");
try {
PreparedStatement pstmt = DB.prepareStatement(sqlB.toString(), 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
* @param AD_Client_ID
* @param trxName
*/
public static int getIDbyName (String tableName, String name, int AD_Client_ID, String trxName) {
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, trxName);
pstmt.setString(1, name);
if (!tableName.startsWith("AD_"))
pstmt.setInt(2, 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;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -23,8 +23,6 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.*; import java.util.logging.*;
import org.compiere.util.DB; import org.compiere.util.DB;

View File

@ -0,0 +1,21 @@
package org.adempiere.pipo.exception;
public class DatabaseAccessException extends RuntimeException {
public DatabaseAccessException() {
super();
}
public DatabaseAccessException(String message, Throwable cause) {
super(message, cause);
}
public DatabaseAccessException(String message) {
super(message);
}
public DatabaseAccessException(Throwable cause) {
super(cause);
}
}

View File

@ -0,0 +1,20 @@
package org.adempiere.pipo.exception;
public class POSaveFailedException extends RuntimeException {
public POSaveFailedException() {
super();
}
public POSaveFailedException(String message, Throwable cause) {
super(message, cause);
}
public POSaveFailedException(String message) {
super(message);
}
public POSaveFailedException(Throwable cause) {
super(cause);
}
}

View File

@ -0,0 +1,244 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.Adempiere;
import org.compiere.model.MSequence;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class CodeSnipitElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
log.info(elementValue);
Object_Status = "Update";
Attributes atts = element.attributes;
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+File.separator+"backup"+File.separator);
if (!backupDir.exists()){
boolean success = (new File(packagePath+File.separator+"backup"+File.separator)).mkdirs();
if (!success) {
log.info("Backup directory creation failed");
}
}
//Correct target directory for proper file seperator
String fullDirectory = sourcePath+targetDirectory;
String targetDirectoryModified=null;
String fileDate = null;
char slash1 = '\\';
char slash2 = '/';
if (File.separator.equals("/"))
targetDirectoryModified = fullDirectory.replace(slash1,slash2);
else
targetDirectoryModified = fullDirectory.replace(slash2,slash1);
File file = new File(targetDirectoryModified+sourceName);
log.info(targetDirectoryModified+sourceName);
//TODO: derived force from user parameter
boolean force = true;
// 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+File.separator+"backup"+File.separator+fileDate+"_"+sourceName);
log.info("Source Backup:"+packagePath+File.separator+"backup"+File.separator+fileDate+"_"+sourceName);
copyFile (source,copy);
log.info("Backup Complete");
}
int success = readReplace(targetDirectoryModified+sourceName, oldCode, newCode);
// Record in log
int idBackup = MSequence.getNextID (getClientId(ctx), "AD_Package_Imp_Backup", getTrxName(ctx));
if (success != -1){
try {
idDetail = record_log (ctx, 1, sourceName,"codesnipit", 0,0, Object_Status,sourceName,0);
} catch (SAXException e) {
log.info ("setfile:"+e);
}
}
else{
try {
idDetail = record_log (ctx, 0, sourceName,"codesnipit", 0,0, Object_Status,sourceName,0);
} catch (SAXException e) {
log.info ("setfile:"+e);
}
}
//Record in transaction file
StringBuffer sqlB = new StringBuffer ("Insert INTO AD_Package_Imp_Backup")
.append( "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " )
.append( "AD_PACKAGE_IMP_BACKUP_ID, AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID," )
.append( " AD_PACKAGE_IMP_ORG_DIR, AD_PACKAGE_IMP_BCK_DIR)" )
.append( "VALUES(" )
.append( " "+ Env.getAD_Client_ID(ctx) )
.append( ", "+ Env.getAD_Org_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", " + idBackup )
.append( ", " + idDetail )
.append( ", " + getPackageImpId(ctx) )
.append( ", '" + targetDirectoryModified+sourceName )
.append( "', '" + packagePath+File.separator+"backup"+File.separator+fileDate+"_"+sourceName )
.append( "')");
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1)
log.info("Insert to import backup failed");
}
}
/**
* 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;
}
public void endElement(Properties ctx, Element element)
throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
String FileDir = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_File_Directory);
String FileName = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
String OldCode = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Package_Code_Old);
String NewCode = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Package_Code_New);
String ReleaseNo = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
AttributesImpl atts = new AttributesImpl();
createSnipitBinding(atts, FileDir, FileName, OldCode, NewCode, ReleaseNo);
document.startElement("","","codesnipit",atts);
document.endElement("","","codesnipit");
}
private 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;
}
}

View File

@ -0,0 +1,466 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.math.BigDecimal;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.MColumn;
import org.compiere.model.MTable;
import org.compiere.model.X_AD_Column;
import org.compiere.model.X_AD_Element;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ColumnElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("ColumnName"));
int success = 0;
String entitytype = atts.getValue("EntityType");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0
&& getUpdateMode(ctx).compareTo("true") == 0) {
String columnName = atts.getValue("ColumnName");
int tableid = get_IDWithColumn(ctx, "AD_Table", "TableName", atts
.getValue("ADTableNameID"));
int id = get_IDWithMasterAndColumn(ctx, "AD_Column", "ColumnName",
columnName, "AD_Table", tableid);
MColumn m_Column = new MColumn(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "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(ctx, "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);
// log.info("Column Name2 ->"+Name);
id = get_IDWithColumn(ctx, "AD_Reference", "Name", Name);
m_Column.setAD_Reference_ID(id);
// log.info("Column ID ->"+id);
Name = atts.getValue("ADTableNameID");
id = get_IDWithColumn(ctx, "AD_Table", "TableName", Name);
m_Column.setAD_Table_ID(id);
Name = atts.getValue("ADValRuleNameID");
id = get_IDWithColumn(ctx, "AD_Val_Rule", "Name", Name);
m_Column.setAD_Val_Rule_ID(id);
Name = atts.getValue("ADReferenceNameValueID");
id = get_IDWithColumn(ctx, "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"));
if (atts.getValue("Version") != null)
m_Column.setVersion(new BigDecimal(atts.getValue("Version")));
// Setup Element.
id = get_IDWithColumn(ctx, "AD_Element", "ColumnName", m_Column
.getColumnName());
X_AD_Element adElement = new X_AD_Element(ctx, id, getTrxName(ctx));
String Object_Status_col = Object_Status;
if (adElement.getAD_Element_ID() == 0) {
// Object_Status = "New";
adElement.setColumnName(m_Column.getColumnName());
adElement.setEntityType(m_Column.getEntityType());
adElement.setPrintName(m_Column.getColumnName());
adElement.setName(m_Column.getColumnName());
if (adElement.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Column.getName(), "Element", adElement
.getAD_Element_ID(), AD_Backup_ID, "New",
"AD_Element", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Element"));
} else {
record_log(ctx, 0, m_Column.getName(), "Element", adElement
.getAD_Element_ID(), AD_Backup_ID, "New",
"AD_Element", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Element"));
}
}
Object_Status = Object_Status_col;
m_Column.setAD_Element_ID(adElement.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;
}
}
// Don't create database column for virtual columns
// Don't create columns by default, just if getIsSyncDatabase='Y'
if (recreateColumn) {
String sync = atts.getValue("getIsSyncDatabase");
if (m_Column.isVirtualColumn() || sync == null
|| (!sync.equals("Y")))
recreateColumn = false;
}
if (m_Column.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Column.getName(), "Column", m_Column
.get_ID(), AD_Backup_ID, Object_Status, "AD_Column",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Column"));
} else {
record_log(ctx, 0, m_Column.getName(), "Column", m_Column
.get_ID(), AD_Backup_ID, Object_Status, "AD_Column",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Column"));
throw new POSaveFailedException("Column");
}
if (recreateColumn) {
success = createcolumn(ctx, m_Column);
if (success == 1) {
record_log(ctx, 1, m_Column.getColumnName(), "dbColumn",
m_Column.get_ID(), 0, Object_Status, atts.getValue(
"ADTableNameID").toUpperCase(),
get_IDWithColumn(ctx, "AD_Table", "TableName", atts
.getValue("ADTableNameID").toUpperCase()));
} else {
record_log(ctx, 0, m_Column.getColumnName(), "dbColumn",
m_Column.get_ID(), 0, Object_Status, atts.getValue(
"ADTableNameID").toUpperCase(),
get_IDWithColumn(ctx, "AD_Table", "TableName", atts
.getValue("ADTableNameID").toUpperCase()));
throw new DatabaseAccessException("CreateColumn");
}
}
}
}
/**
* 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
*
*/
private int createcolumn(Properties ctx, MColumn column) {
MTable table = new MTable(ctx, column.getAD_Table_ID(), getTrxName(ctx));
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, getTrxName(ctx));
} else {
String statements[] = sql.split(DB.SQLSTATEMENT_SEPARATOR);
for (int i = 0; i < statements.length; i++) {
int count = DB.executeUpdate(statements[i], false,
getTrxName(ctx));
no += count;
}
}
} catch (SQLException e) {
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
if (rsc != null) {
try {
rsc.close();
} catch (SQLException e1) {
}
rsc = null;
}
if (rst != null) {
try {
rst.close();
} catch (SQLException e1) {
}
rst = null;
}
return 0;
}
// postgres requires commit on DDL (ALTER,CREATE)
if (DB.isPostgreSQL()) {
try {
DB.commit(true, getTrxName(ctx));
} catch (SQLException e) {
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
return 0;
}
}
return 1;
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Column_ID = Env.getContextAsInt(ctx,
X_AD_Column.COLUMNNAME_AD_Column_ID);
AttributesImpl atts = new AttributesImpl();
X_AD_Column m_Column = new X_AD_Column(ctx, AD_Column_ID,
getTrxName(ctx));
createColumnBinding(atts, m_Column);
document.startElement("", "", "column", atts);
document.endElement("", "", "column");
}
private 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("", "", "Version", "CDATA",
(m_Column.getVersion() != null ? "" + m_Column.getVersion()
: "0.0"));
return atts;
}
}

View File

@ -0,0 +1,389 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.GenericPO;
import org.adempiere.pipo.IDFinder;
import org.compiere.model.POInfo;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class DataElementHandler extends AbstractElementHandler {
private GenericPO genericPO = null;
int AD_Backup_ID = -1;
String Object_Status = null;
String d_tablename = null;
private DataRowElementHandler rowHandler = new DataRowElementHandler();
private DataColumnElementHandler columnHandler = new DataColumnElementHandler();
public DataElementHandler() {
}
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
if (elementValue.equals("adempieredata") || elementValue.equals("data")) {
log.info(elementValue);
if (atts.getValue("clientname") != null) {
int AD_Client_ID = IDFinder.get_ID("AD_Client", atts.getValue("clientname"), getClientId(ctx), getTrxName(ctx));
Env.setContext(ctx, "AD_Client_ID", AD_Client_ID);
log.info("adempieredata: client set to "+AD_Client_ID+" "+atts.getValue("clientname"));
}
}
else if (elementValue.equals("dtable")) {
log.info(elementValue+" "+atts.getValue("name"));
d_tablename = atts.getValue("name");
}
// row element, adempieredata
else if (elementValue.equals("drow")) {
rowHandler.startElement(ctx, element);
}
// column element, adempieredata
else if (elementValue.equals("dcolumn")) {
columnHandler.startElement(ctx, element);
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
if (elementValue.equals("drow")) {
rowHandler.endElement(ctx, element);
}
}
class DataRowElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("name"));
String d_rowname = atts.getValue("name");
ctx.setProperty("adempieredataTable_ID", String.valueOf(get_IDWithColumn(ctx, "AD_Table", "TableName", d_tablename)));
// name can be null if there are keyXname attributes.
if (!d_rowname.equals("")){
int id = get_ID(ctx, d_tablename, d_rowname);
genericPO = new GenericPO(ctx, id, getTrxName(ctx));
if (id > 0){
AD_Backup_ID = copyRecord(ctx,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, getTrxName(ctx));
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
Object_Status = "Update";
genericPO = new GenericPO(ctx, rs, getTrxName(ctx));
rs.close();
pstmt.close();
pstmt = null;
}
else {
genericPO = new GenericPO(ctx, 0, getTrxName(ctx));
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(ctx, get_ID(ctx, "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 (getClientId(ctx) > 0 && genericPO.getAD_Client_ID() != getClientId(ctx))
genericPO.setValue("AD_Client_ID", getClientId(ctx));
// 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.
//TODO: get defaults from configuration
HashMap defaults = new HashMap();
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));
}
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
if (genericPO != null) {
if (genericPO.save(getTrxName(ctx))== true)
record_log (ctx, 1, genericPO.get_TableName(),"Data", genericPO.get_ID(),AD_Backup_ID, Object_Status,d_tablename,get_IDWithColumn(ctx, "AD_Table", "TableName", d_tablename));
else
record_log (ctx, 0, genericPO.get_TableName(),"Data", genericPO.get_ID(),AD_Backup_ID, Object_Status,d_tablename,get_IDWithColumn(ctx, "AD_Table", "TableName", d_tablename));
genericPO = null;
}
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
}
}
class DataColumnElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("name"));
String columnName = atts.getValue("name");
int tableid = get_IDWithColumn(ctx, "AD_Table", "TableName", d_tablename);
int id =get_IDWithMasterAndColumn (ctx,"AD_Column", "ColumnName", columnName, "AD_Table", tableid);
StringBuffer sql = new StringBuffer ("SELECT IsUpdateable FROM AD_column WHERE AD_Column_ID = ?");
String isUpdateable = DB.getSQLValueString(getTrxName(ctx), sql.toString(),id);
sql = new StringBuffer ("SELECT IsKey FROM AD_column WHERE AD_Column_ID = ?");
String isKey = DB.getSQLValueString(getTrxName(ctx), 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("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(ctx, m_tablename, atts.getValue("lookupname"))));
}
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
}
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
String sql = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_SQLStatement);
int table_id = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID);
Statement stmt = DB.createStatement();
AttributesImpl atts = new AttributesImpl();
document.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);
document.startElement("","","dtable",atts);
while (rs.next()){
atts.clear();
int key1 = 0;
String nameatts = "";
for (i=1 ;i <= columns;i++){
col_Name = meta.getColumnName(i).toUpperCase();
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","");
}
document.startElement("","","drow",atts);
for (i=1 ;i <= columns;i++){
atts.clear();
col_Name = meta.getColumnName(i).toUpperCase();
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, getTrxName(ctx));
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")){
document.startElement("","","dcolumn",atts);
document.endElement("","","dcolumn");
}
}
rs1.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE,"getData", e);
}
}
document.endElement("","","drow");
}
rs.close();
stmt.close();
stmt = null;
document.endElement("","","dtable");
}
catch (Exception e) {
log.log(Level.SEVERE,"getData", e);
}
document.endElement("","","data");
}
}

View File

@ -0,0 +1,201 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.Adempiere;
import org.compiere.model.MSequence;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class DistFileElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
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 = getPackageDirectory(ctx);
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+File.separator+"backup"+File.separator);
if (!backupDir.exists()){
boolean success = (new File(packagePath+File.separator+"backup"+File.separator)).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 (File.separator.equals("/"))
targetDirectoryModified = fullDirectory.replace(slash1,slash2);
else
targetDirectoryModified = fullDirectory.replace(slash2,slash1);
File file = new File(targetDirectoryModified+sourceName);
//TODO: derive force from user parameter
boolean force = true;
String fileDate = null;
//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+File.separator+"backup"+File.separator+fileDate+"_"+sourceName);
log.info("Source Backup:"+packagePath+File.separator+"backup"+File.separator+fileDate+"_"+sourceName);
copyFile (source,copy);
log.info("Backup Complete");
}
// Correct dist directory for proper file seperator
String distDirectoryModified=null;
if (File.separator.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 (getClientId(ctx), "AD_Package_Imp_Backup", getTrxName(ctx));
if (success != -1){
try {
idDetail = record_log (ctx, 1, sourceName,"file", 0,0, Object_Status,sourceName,0);
} catch (SAXException e) {
log.info ("setfile:"+e);
}
}
else{
try {
idDetail = record_log (ctx, 0, sourceName,"file", 0,0, Object_Status,sourceName,0);
} catch (SAXException e) {
log.info ("setfile:"+e);
}
}
//Record in transaction file
StringBuffer sqlB = new StringBuffer ("Insert INTO AD_Package_Imp_Backup" )
.append( "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " )
.append( "AD_PACKAGE_IMP_BACKUP_ID, AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID," )
.append( " AD_PACKAGE_IMP_ORG_DIR, AD_PACKAGE_IMP_BCK_DIR)" )
.append( "VALUES(" )
.append( " "+ Env.getAD_Client_ID(ctx) )
.append( ", "+ Env.getAD_Org_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", " + idBackup )
.append( ", " + idDetail )
.append( ", " + getPackageImpId(ctx) )
.append( ", '" + targetDirectoryModified+sourceName )
.append( "', '" + packagePath+File.separator+"backup"+File.separator+fileDate+"_"+sourceName )
.append( "')");
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1)
log.info("Insert to import backup failed");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
String FileName = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
String Source_Directory = Env.getContext(ctx, "Source_Directory");
String Target_Directory = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory);
String ReleaseNo = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
AttributesImpl atts = new AttributesImpl();
atts.addAttribute("","","name","CDATA",FileName);
atts.addAttribute("","","sourceDirectory","CDATA",Source_Directory);
atts.addAttribute("","","targetDirectory","CDATA",Target_Directory);
atts.addAttribute("","","ReleaseNo","CDATA",ReleaseNo);
document.startElement("","","distfile",atts);
document.endElement("","","distfile");
}
}

View File

@ -0,0 +1,128 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.model.X_AD_Val_Rule;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class DynValRuleElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("Name"));
String entitytype = atts.getValue("EntityType");
if (entitytype.equals("U") || entitytype.equals("D") && getUpdateMode(ctx).equals("true")) {
String name = atts.getValue("Name");
int id = get_IDWithColumn(ctx, "AD_Val_Rule", "name", name);
X_AD_Val_Rule m_ValRule = new X_AD_Val_Rule(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "AD_Val_Rule",m_ValRule);
Object_Status = "Update";
}
else{
Object_Status = "New";
AD_Backup_ID =0;
}
m_ValRule.setDescription(atts.getValue("Description").replaceAll("'","''").replaceAll(",",""));
m_ValRule.setEntityType(atts.getValue("EntityType"));
m_ValRule.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true);
m_ValRule.setName(name);
m_ValRule.setType(atts.getValue("Type"));
m_ValRule.setCode(atts.getValue("Code"));
if (m_ValRule.save(getTrxName(ctx)) == true){
record_log (ctx, 1, m_ValRule.getName(),"Task", m_ValRule.get_ID(),AD_Backup_ID, Object_Status,"AD_Val_Rule",get_IDWithColumn(ctx, "AD_Val_Rule", "Name", "AD_Val_Rule"));
}
else{
record_log (ctx, 0, m_ValRule.getName(),"Task", m_ValRule.get_ID(),AD_Backup_ID, Object_Status,"AD_Val_Rule",get_IDWithColumn(ctx, "AD_Val_Rule", "Name", "AD_Val_Rule"));
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Val_Rule_ID = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID);
String sql = "SELECT Name FROM AD_Val_Rule WHERE AD_Val_Rule_ID= " + AD_Val_Rule_ID;
AttributesImpl atts = new AttributesImpl();
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement (sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
X_AD_Val_Rule m_ValRule = new X_AD_Val_Rule (ctx, AD_Val_Rule_ID, null);
createDynamicValidationRuleBinding(atts,m_ValRule);
document.startElement("","","dynvalrule",atts);
document.endElement("","","dynvalrule");
}
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;
}
}
private AttributesImpl createDynamicValidationRuleBinding( AttributesImpl atts, X_AD_Val_Rule m_ValRule)
{
atts.clear();
atts.addAttribute("","","Name","CDATA",(m_ValRule.getName () != null ? m_ValRule.getName ():""));
//FIXME: may not need this I guess
//atts.addAttribute("","","AccessLevel","CDATA",(m_ValRule.getAccessLevel () != null ? m_ValRule.getAccessLevel ():""));
atts.addAttribute("","","Code","CDATA",(m_ValRule.getCode() != null ? m_ValRule.getCode ():""));
atts.addAttribute("","","Description","CDATA",(m_ValRule.getDescription () != null ? m_ValRule.getDescription ():""));
atts.addAttribute("","","EntityType","CDATA",(m_ValRule.getEntityType () != null ? m_ValRule.getEntityType ():""));
atts.addAttribute("","","Type","CDATA",(m_ValRule.getType () != null ? m_ValRule.getType ():""));
atts.addAttribute("","","isActive","CDATA",(m_ValRule.isActive()== true ? "true":"false"));
return atts;
}
}

View File

@ -0,0 +1,191 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.math.BigDecimal;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.MField;
import org.compiere.model.X_AD_Field;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class FieldElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("Name"));
String entitytype = atts.getValue("EntityType");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0 && getUpdateMode(ctx).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);
int tableid = get_IDWithColumn(ctx, "AD_Table", "TableName", atts.getValue("ADTableNameID"));
int windowid = get_ID(ctx, "AD_Window", atts.getValue("ADWindowNameID"));
//log.info("Column Name ->"+colname);
int columnid = get_IDWithMasterAndColumn (ctx, "AD_Column","ColumnName", colname, "AD_Table", tableid);
//log.info("ColumnID->"+columnid);
StringBuffer sqlB = new StringBuffer ("select AD_Tab_ID from AD_Tab where AD_Window_ID = " + windowid)
.append( " and Name = '"+tabname +"'" )
.append( " and AD_Table_ID = ?");
int tabid = DB.getSQLValue(getTrxName(ctx), 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(getTrxName(ctx), sqlB.toString (), tabid);
MField m_Field = new MField(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "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(ctx, "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(getTrxName(ctx)) == true){
record_log (ctx, 1, m_Field.getName(),"Field", m_Field.get_ID(),AD_Backup_ID, Object_Status,"AD_Field",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Field"));
}
else{
record_log (ctx, 0, m_Field.getName(),"Field", m_Field.get_ID(),AD_Backup_ID, Object_Status,"AD_Field",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Field"));
}
}
else
log.severe("Tab do not exist to field Name: "+ name);
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Field_ID = Env.getContextAsInt(ctx, X_AD_Field.COLUMNNAME_AD_Field_ID);
X_AD_Field m_Field = new X_AD_Field (ctx, AD_Field_ID, null);
AttributesImpl atts = new AttributesImpl();
createFieldBinding(atts,m_Field);
document.startElement("","","field",atts);
document.endElement("","","field");
}
private 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;
}
}

View File

@ -0,0 +1,137 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.compiere.model.X_AD_Form;
import org.compiere.model.X_AD_Role;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class FormAccessElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
log.info(elementValue);
int roleid =0;
int formid =0;
StringBuffer sqlB = null;
Attributes atts = element.attributes;
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(getTrxName(ctx),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(getTrxName(ctx),sqlB.toString(),name);
}
sqlB = new StringBuffer ("SELECT count(*) FROM AD_Form_Access WHERE AD_Role_ID=? and AD_Form_ID=?");
int count = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),roleid,formid);
String Object_Status = null;
int AD_Backup_ID = -1;
if (count>0){
Object_Status = "Update";
sqlB = new StringBuffer ("UPDATE AD_Form_Access ")
.append( "SET isActive = '" + atts.getValue("isActive") )
.append( "', isReadWrite = '" + atts.getValue("isReadWrite") )
.append( "' WHERE AD_Role_ID = " + roleid )
.append( " and AD_Form_ID = " + formid );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1) {
log.info("Update to form access failed");
throw new DatabaseAccessException("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(ctx)
+ ", "+ Env.getAD_Org_ID(ctx)
+ ", "+ Env.getAD_User_ID(ctx)
+ ", "+ Env.getAD_User_ID(ctx)
+ ", " + roleid
+ ", " + formid
+ ", '" + atts.getValue("isActive")
+ "', '" + atts.getValue("isReadWrite")+"')");
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1) {
log.info("Insert to form access failed");
throw new DatabaseAccessException("Insert to form access failed");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Form_ID = Env.getContextAsInt(ctx, X_AD_Form.COLUMNNAME_AD_Form_ID);
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
AttributesImpl atts = new AttributesImpl();
createFormAccessBinding(atts, AD_Form_ID, AD_Role_ID);
document.startElement("", "", "formaccess", atts);
document.endElement("", "", "formaccess");
}
private 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", isReadWrite);
return atts;
}
}

View File

@ -0,0 +1,110 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.MForm;
import org.compiere.model.X_AD_Form;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class FormElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("ADFormNameID"));
String entitytype = atts.getValue("EntityType");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0 && getUpdateMode(ctx).compareTo("true") == 0 ) {
String name = atts.getValue("ADFormNameID");
int id = get_ID(ctx, "AD_Form", name);
MForm m_Form = new MForm(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "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(getTrxName(ctx)) == true){
record_log (ctx, 1, m_Form.getName(),"Form", m_Form.get_ID(),AD_Backup_ID, Object_Status,"AD_Form",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Form"));
}
else{
record_log (ctx, 0, m_Form.getName(),"Form", m_Form.get_ID(),AD_Backup_ID, Object_Status,"AD_Form",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Form"));
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Form_ID = Env.getContextAsInt(ctx, "AD_Form_ID");
X_AD_Form m_Form = new X_AD_Form (ctx, AD_Form_ID, null);
AttributesImpl atts = new AttributesImpl();
createFormBinding(atts,m_Form);
document.startElement("","","form",atts);
document.endElement("","","form");
}
private 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;
}
}

View File

@ -0,0 +1,169 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_ImpFormat;
import org.compiere.model.X_AD_ImpFormat_Row;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ImpFormatElementHandler extends AbstractElementHandler {
private ImpFormatRowElementHandler rowHandler = new ImpFormatRowElementHandler();
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("Name"));
int id = get_ID(ctx, "AD_ImpFormat", atts.getValue("Name"));
X_AD_ImpFormat m_ImpFormat = new X_AD_ImpFormat(ctx, id,
getTrxName(ctx));
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "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");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Table", "TableName", name);
if (id <= 0) {
element.defer = true;
return;
}
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"));
if (m_ImpFormat.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_ImpFormat.getName(), "ImpFormat", m_ImpFormat
.get_ID(), AD_Backup_ID, Object_Status, "AD_ImpFormat",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_ImpFormat"));
} else {
record_log(ctx, 0, m_ImpFormat.getName(), "ImpFormat", m_ImpFormat
.get_ID(), AD_Backup_ID, Object_Status, "AD_ImpFormat",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_ImpFormat"));
throw new POSaveFailedException("ImpFormat");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int import_id = Env.getContextAsInt(ctx,
X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID);
AttributesImpl atts = new AttributesImpl();
X_AD_ImpFormat m_ImpFormat = new X_AD_ImpFormat(ctx, import_id, null);
atts = createImpFormatBinding(atts, m_ImpFormat);
document.startElement("", "", "impformat", atts);
String sql = "SELECT * FROM AD_ImpFormat_Row WHERE AD_ImpFormat_ID= "
+ import_id;
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createImpFormatRow(ctx, document, rs
.getInt("AD_ImpFormat_Row_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
} catch (Exception e) {
log.log(Level.SEVERE, "ImpFormat", e);
throw new DatabaseAccessException("ImpFormat", e);
} finally {
try {
if (pstmt != null)
pstmt.close();
} catch (Exception e) {
}
pstmt = null;
}
document.endElement("", "", "impformat");
}
private void createImpFormatRow(Properties ctx,
TransformerHandler document, int AD_ImpFormat_Row_ID)
throws SAXException {
Env.setContext(ctx, X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID,
AD_ImpFormat_Row_ID);
rowHandler.create(ctx, document);
ctx.remove(X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID);
}
private AttributesImpl createImpFormatBinding(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;
}
}

View File

@ -0,0 +1,163 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_ImpFormat_Row;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ImpFormatRowElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("Name"));
int impformid = get_ID(ctx, "AD_ImpFormat", atts.getValue("ADImpFormatNameID"));
if (impformid <= 0) {
element.defer = true;
return;
}
String name = atts.getValue("ADTableNameID");
int tableid = 0;
if (name != null && name.trim().length() > 0) {
tableid = get_IDWithColumn(ctx, "AD_Table", "TableName", name);
if (tableid <= 0) {
element.defer = true;
return;
}
}
name = atts.getValue("ADColumnNameID");
int columnid = 0;
if (name != null && name.trim().length() > 0) {
columnid = get_IDWithMasterAndColumn (ctx, "AD_Column","ColumnName", name, "AD_Table", tableid);
if (columnid <= 0) {
element.defer = true;
return;
}
}
StringBuffer sqlB = new StringBuffer ("SELECT AD_ImpFormat_Row_ID FROM AD_ImpFormat_Row WHERE AD_Column_ID=? and AD_ImpFormat_ID=?");
int id = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),columnid,impformid);
X_AD_ImpFormat_Row m_ImpFormat_row = new X_AD_ImpFormat_Row(ctx, id, getTrxName(ctx));
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "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);
if (columnid > 0)
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")));
if (m_ImpFormat_row.save(getTrxName(ctx)) == true){
record_log (ctx, 1, m_ImpFormat_row.getName(),"ImpFormat", m_ImpFormat_row.get_ID(),AD_Backup_ID, Object_Status,"AD_ImpFormat",get_IDWithColumn(ctx, "AD_Table", "TableName", "m_ImpFormat_row"));
}
else{
record_log (ctx, 0, m_ImpFormat_row.getName(),"ImpFormat", m_ImpFormat_row.get_ID(),AD_Backup_ID, Object_Status,"AD_ImpFormat",get_IDWithColumn(ctx, "AD_Table", "TableName", "m_ImpFormat_row"));
throw new POSaveFailedException("ImpFormatRow");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_ImpFormat_Row_ID = Env.getContextAsInt(ctx, X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID);
X_AD_ImpFormat_Row m_ImpFormat_Row = new X_AD_ImpFormat_Row (ctx, AD_ImpFormat_Row_ID, getTrxName(ctx));
AttributesImpl atts = new AttributesImpl();
createImpFormatRowBinding(atts,m_ImpFormat_Row);
document.startElement("","","impformatrow",atts);
document.endElement("","","impformatrow");
}
private AttributesImpl createImpFormatRowBinding( 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;
}
}

View File

@ -0,0 +1,508 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.PackOut;
import org.compiere.model.MSequence;
import org.compiere.model.X_AD_Menu;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class MenuElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("ADMenuNameID"));
// String entitytype = atts.getValue("EntityType");
// if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0
// && m_UpdateMode == true ) {
String name = null;
int idDetail = 0;
StringBuffer sqlB = null;
name = atts.getValue("ADMenuNameID");
int menuid = get_IDWithColumn(ctx, "AD_Menu", "Name", name);
X_AD_Menu m_Menu = new X_AD_Menu(ctx, menuid, getTrxName(ctx));
if (menuid > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_Menu", m_Menu);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
m_Menu.setName(name);
name = atts.getValue("ADWindowNameID");
if (name != null && name.trim().length() > 0) {
int id = get_IDWithColumn(ctx, "AD_Window", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Menu.setAD_Window_ID(id);
}
name = atts.getValue("ADProcessNameID");
if (name != null && name.trim().length() > 0) {
int id = get_IDWithColumn(ctx, "AD_Process", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Menu.setAD_Process_ID(id);
}
name = atts.getValue("ADFormNameID");
if (name != null && name.trim().length() > 0) {
int id = get_IDWithColumn(ctx, "AD_Form", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Menu.setAD_Form_ID(id);
}
name = atts.getValue("ADTaskNameID");
if (name != null && name.trim().length() > 0) {
int id = get_IDWithColumn(ctx, "AD_Task", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Menu.setAD_Task_ID(id);
}
name = atts.getValue("ADWorkbenchNameID");
if (name != null && name.trim().length() > 0) {
int id = get_IDWithColumn(ctx, "AD_Workbench", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Menu.setAD_Workbench_ID(id);
}
name = atts.getValue("ADWorkflowNameID");
if (name != null && name.trim().length() > 0) {
int id = get_IDWithColumn(ctx, "AD_Workflow", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Menu.setAD_Workflow_ID(id);
}
String action = (atts.getValue("Action") != null ? atts
.getValue("Action") : " ");
if (action.compareTo(" ") > -1)
m_Menu.setAction(action);
m_Menu.setDescription(atts.getValue("Description")
.replaceAll("'", "''").replaceAll(",", ""));
m_Menu.setEntityType(atts.getValue("EntityType"));
m_Menu.setIsReadOnly(Boolean.valueOf(atts.getValue("isReadOnly"))
.booleanValue());
m_Menu.setIsSOTrx(Boolean.valueOf(atts.getValue("isSOTrx"))
.booleanValue());
m_Menu.setIsSummary(Boolean.valueOf(atts.getValue("isSummary"))
.booleanValue());
m_Menu.setIsActive(Boolean.valueOf(atts.getValue("isActive"))
.booleanValue());
if (m_Menu.save(getTrxName(ctx)) == true) {
try {
idDetail = record_log(ctx, 1, m_Menu.getName(), "Menu", m_Menu
.get_ID(), AD_Backup_ID, Object_Status, "AD_Menu",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Menu"));
} catch (SAXException e) {
log.info("setmenu:" + e);
}
} else {
try {
idDetail = record_log(ctx, 0, m_Menu.getName(), "Menu", m_Menu
.get_ID(), AD_Backup_ID, Object_Status, "AD_Menu",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Menu"));
} catch (SAXException e) {
log.info("setmenu:" + e);
}
}
name = atts.getValue("ADParentMenuNameID");
int id = get_ID(ctx, "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(getTrxName(ctx), 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(),
getTrxName(ctx));
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(ctx, "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(getTrxName(ctx), sql
.toString(), tableID);
sql = new StringBuffer(
"SELECT AD_Reference_ID FROM AD_COLUMN WHERE AD_Column_ID = '"
+ columnID + "'");
int referenceID = DB.getSQLValue(getTrxName(ctx), sql
.toString());
int idBackup = MSequence.getNextID(Env
.getAD_Client_ID(ctx), "AD_Package_Imp_Backup",
getTrxName(ctx));
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(ctx)
+ ", "
+ Env.getAD_Org_ID(ctx)
+ ", "
+ Env.getAD_User_ID(ctx)
+ ", "
+ Env.getAD_User_ID(ctx)
+ ", "
+ idBackup
+ ", "
+ idDetail
+ ", "
+ getPackageImpId(ctx)
+ ", "
+ tableID
+ ", "
+ columnID
+ ", "
+ referenceID
+ ", '" + colValue + "')");
int no = DB.executeUpdate(sqlD.toString(),
getTrxName(ctx));
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 ").append(
"SET Parent_ID = " + id).append(
" , SeqNo = " + atts.getValue("ADParentSeqno")).append(
" WHERE AD_Tree_ID = 10").append(
" AND Node_ID = " + m_Menu.getAD_Menu_ID());
} else {
sqlB = new StringBuffer("Insert INTO AD_TREENODEMM").append(
"(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, ").append(
"Parent_ID, SeqNo, AD_Tree_ID, Node_ID)").append(
"VALUES(0, 0, 0, 0, ").append(
id + "," + atts.getValue("ADParentSeqno") + ", 10, "
+ m_Menu.getAD_Menu_ID() + ")");
}
DB.executeUpdate(sqlB.toString(), getTrxName(ctx));
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Menu_ID = Env.getContextAsInt(ctx, "AD_Menu_ID");
X_AD_Menu m_Menu = new X_AD_Menu(ctx, AD_Menu_ID, null);
if (m_Menu.isSummary() == false) {
createApplication(ctx, document, AD_Menu_ID);
} else {
AttributesImpl atts = new AttributesImpl();
createMenuBinding(atts, m_Menu);
document.startElement("", "", "menu", atts);
createModule(ctx, document, AD_Menu_ID);
document.endElement("", "", "menu");
}
}
private 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;
}
private void createApplication(Properties ctx, TransformerHandler document,
int AD_Menu_ID) throws SAXException {
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
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 = "
+ AD_Menu_ID + " AND A.Node_ID = B.AD_Menu_ID";
AttributesImpl atts = new AttributesImpl();
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
X_AD_Menu m_Menu = new X_AD_Menu(ctx, rs.getInt("AD_Menu_ID"),
null);
atts = createMenuBinding(atts, m_Menu);
document.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) {
packOut.createWindow(rs.getInt("AD_WINDOW_ID"), atts, document);
}
// Call CreateProcess.
else if (rs.getInt("AD_PROCESS_ID") > 0) {
packOut.createProcess(rs.getInt("AD_PROCESS_ID"), atts, document);
}
// Call CreateTask.
else if (rs.getInt("AD_TASK_ID") > 0) {
packOut.createTask(rs.getInt("AD_TASK_ID"), atts, document);
}
// Call CreateForm.
else if (rs.getInt("AD_FORM_ID") > 0) {
packOut.createForm(rs.getInt("AD_FORM_ID"), atts, document);
}
// Call CreateWorkbench
else if (rs.getInt("AD_WORKBENCH_ID") > 0) {
packOut.createWorkbench(rs.getInt("AD_WORKBENCH_ID"), atts,
document);
}
// Call CreateWorkflow
else if (rs.getInt("AD_Workflow_ID") > 0) {
packOut.createWorkflow(rs.getInt("AD_Workflow_ID"), atts,
document);
}
// Call CreateModule because entry is a summary menu
} else {
createModule(ctx, document, rs.getInt("Node_ID"));
}
document.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(Properties ctx, TransformerHandler document,
int menu_id) throws SAXException {
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
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";
AttributesImpl atts = new AttributesImpl();
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
// Menu tag Start.
X_AD_Menu m_Menu = new X_AD_Menu(ctx, rs.getInt("AD_Menu_ID"),
null);
atts = createMenuBinding(atts, m_Menu);
document.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) {
packOut.createWindow(rs.getInt("AD_WINDOW_ID"), atts, document);
}
// Call CreateProcess.
else if (rs.getInt("AD_PROCESS_ID") > 0) {
packOut.createProcess(rs.getInt("AD_PROCESS_ID"), atts,
document);
}
// Call CreateTask.
else if (rs.getInt("AD_TASK_ID") > 0) {
packOut.createTask(rs.getInt("AD_TASK_ID"), atts, document);
}
// Call CreateForm.
else if (rs.getInt("AD_FORM_ID") > 0) {
packOut.createForm(rs.getInt("AD_FORM_ID"), atts, document);
}
// Call CreateWorkbench
else if (rs.getInt("AD_WORKBENCH_ID") > 0) {
packOut.createWorkbench(rs.getInt("AD_WORKBENCH_ID"), atts,
document);
}
// Call CreateWorkflow
else if (rs.getInt("AD_Workflow_ID") > 0) {
packOut.createWorkflow(rs.getInt("AD_Workflow_ID"), atts,
document);
}
// Call CreateModule because entry is a summary menu
} else {
createModule(ctx, document, rs.getInt("Node_ID"));
}
document.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;
}
}
}

View File

@ -0,0 +1,128 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.MMessage;
import org.compiere.model.X_AD_Message;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class MessageElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("Value"));
String entitytype = atts.getValue("EntityType");
if (entitytype.equals("U") || entitytype.equals("D") && getUpdateMode(ctx).equals("true")) {
String value = atts.getValue("Value");
int id = get_IDWithColumn(ctx, "AD_Message", "value", value);
MMessage m_Message = new MMessage(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "AD_Message",m_Message);
Object_Status = "Update";
}
else{
Object_Status = "New";
AD_Backup_ID =0;
}
m_Message.setMsgText(atts.getValue("MsgText").replaceAll("'","''").replaceAll(",",""));
m_Message.setMsgTip(atts.getValue("MsgTip").replaceAll("'","''").replaceAll(",",""));
m_Message.setEntityType(atts.getValue("EntityType"));
m_Message.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true);
m_Message.setValue(value);
m_Message.setMsgType(atts.getValue("MsgType"));
if (m_Message.save(getTrxName(ctx)) == true){
record_log (ctx, 1, m_Message.getValue(),"Message", m_Message.get_ID(),AD_Backup_ID, Object_Status,"AD_Message",get_IDWithColumn(ctx, "AD_Message", "value", "AD_Message"));
}
else{
record_log (ctx, 0, m_Message.getValue(),"Message", m_Message.get_ID(),AD_Backup_ID, Object_Status,"AD_Message",get_IDWithColumn(ctx, "AD_Message", "value", "AD_Message"));
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Message_ID = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID);
String sql = "SELECT value FROM AD_Message WHERE AD_Message_ID= " + AD_Message_ID;
AttributesImpl atts = new AttributesImpl();
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement (sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
X_AD_Message m_Message = new X_AD_Message (ctx, AD_Message_ID, null);
createMessageBinding(atts,m_Message);
document.startElement("","","message",atts);
document.endElement("","","message");
}
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;
}
}
private AttributesImpl createMessageBinding( AttributesImpl atts, X_AD_Message m_Message)
{
atts.clear();
//FIXME: may not need this I guess
//atts.addAttribute("","","AccessLevel","CDATA",(m_Message.getAccessLevel () != null ? m_Message.getAccessLevel ():""));
atts.addAttribute("","","MsgText","CDATA",(m_Message.getMsgText() != null ? m_Message.getMsgText():""));
atts.addAttribute("","","MsgType","CDATA",(m_Message.getMsgType() != null ? m_Message.getMsgType ():""));
atts.addAttribute("","","MsgTip","CDATA",(m_Message.getMsgTip() != null ? m_Message.getMsgTip ():""));
atts.addAttribute("","","Value","CDATA",(m_Message.getValue() != null ? m_Message.getValue ():""));
atts.addAttribute("","","EntityType","CDATA",(m_Message.getEntityType () != null ? m_Message.getEntityType ():""));
atts.addAttribute("","","isActive","CDATA",(m_Message.isActive()== true ? "true":"false"));
return atts;
}
}

View File

@ -0,0 +1,130 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.X_AD_Role;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class OrgRoleElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
log.info(elementValue);
int roleid =0;
int orgid =0;
StringBuffer sqlB = null;
Attributes atts = element.attributes;
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(getTrxName(ctx),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(getTrxName(ctx),sqlB.toString(),name);
}
sqlB = new StringBuffer ("SELECT count(*) FROM AD_Role_OrgAccess WHERE AD_Role_ID=? and AD_Org_ID=?");
int count = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),roleid,orgid);
int AD_Backup_ID = -1;
String Object_Status = null;
if (count>0){
Object_Status = "Update";
sqlB = new StringBuffer ("UPDATE AD_Role_OrgAccess ")
.append( "SET isActive = '" + atts.getValue("isActive") )
.append( "', isReadOnly = '" + atts.getValue("isReadOnly") )
.append( "' WHERE AD_Role_ID = " + roleid )
.append( " and AD_Org_ID = " + orgid );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
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")
.append( "(AD_Client_ID, CreatedBy, UpdatedBy, " )
.append( "AD_Role_ID, AD_Org_ID, isActive, isReadOnly) " )
.append( "VALUES(" )
.append( " "+ Env.getAD_Client_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", " + roleid )
.append( ", " + orgid )
.append( ", '" + atts.getValue("isActive") )
.append( "', '" + atts.getValue("isReadOnly")+"')");
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1)
log.info("Insert to org access failed");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Org_ID = Env.getContextAsInt(ctx, "AD_Org_ID");
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
AttributesImpl atts = new AttributesImpl();
createOrgAccessBinding(atts, AD_Org_ID, AD_Role_ID);
document.startElement("", "", "OrgAccess", atts);
document.endElement("", "", "OrgAccess");
}
private 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 isReadOnly = DB.getSQLValueString(null, sql, role_id);
atts.addAttribute("", "", "isReadOnly", "CDATA", isReadOnly);
return atts;
}
}

View File

@ -0,0 +1,113 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.MPreference;
import org.compiere.model.X_AD_Preference;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class PreferenceElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
log.info(elementValue);
// TODO Add User_ID
Attributes atts = element.attributes;
int windowid = get_ID(ctx, "AD_Window", atts.getValue("ADWindowNameID"));
if (windowid <= 0) {
element.defer = true;
return;
}
StringBuffer sqlB = new StringBuffer(
"select AD_Preference_ID from AD_Preference where ").append(
" Attribute = '" + atts.getValue("Attribute") + "'").append(
" and AD_Window_ID = ?");
int id = DB.getSQLValue(getTrxName(ctx), sqlB.toString(), windowid);
MPreference m_Preference = new MPreference(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "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(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Preference.getAttribute(), "Preference",
m_Preference.get_ID(), AD_Backup_ID, Object_Status,
"AD_Preference", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Preference"));
} else {
record_log(ctx, 0, m_Preference.getAttribute(), "Preference",
m_Preference.get_ID(), AD_Backup_ID, Object_Status,
"AD_Preference", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Preference"));
throw new POSaveFailedException("Preference");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Preference_ID = Env.getContextAsInt(ctx,
X_AD_Preference.COLUMNNAME_AD_Preference_ID);
X_AD_Preference m_Preference = new X_AD_Preference(ctx,
AD_Preference_ID, getTrxName(ctx));
AttributesImpl atts = new AttributesImpl();
createPreferenceBinding(atts, m_Preference);
document.startElement("", "", "preference", atts);
document.endElement("", "", "preference");
}
private 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;
}
}

View File

@ -0,0 +1,337 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.MTable;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.model.X_AD_PrintFormat;
import org.compiere.model.X_AD_PrintFormatItem;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class PrintFormatElementHandler extends AbstractElementHandler {
private PrintFormatItemElementHandler itemHandler = new PrintFormatItemElementHandler();
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("Name"));
String name = atts.getValue("Name");
int id = get_IDWithColumn(ctx, "AD_PrintFormat", "Name", name);
X_AD_PrintFormat m_PrintFormat = new X_AD_PrintFormat(ctx, id,
getTrxName(ctx));
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_PrintFormat", m_PrintFormat);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
name = atts.getValue("ADReportviewnameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_ReportView", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_ReportView_ID(id);
}
name = atts.getValue("ADTableNameID");
id = get_IDWithColumn(ctx, "AD_Table", "TableName", name);
if (id == 0) {
MTable m_Table = new MTable(ctx, 0, getTrxName(ctx));
m_Table.setAccessLevel("3");
m_Table.setName(name);
m_Table.setTableName(name);
if (m_Table.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Table.getName(), "Table",
m_Table.get_ID(), 0, "New", "AD_Table",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Table"));
} else {
record_log(ctx, 0, m_Table.getName(), "Table",
m_Table.get_ID(), 0, "New", "AD_Table",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Table"));
}
id = get_IDWithColumn(ctx, "AD_Table", "TableName", name);
}
m_PrintFormat.setAD_Table_ID(id);
name = atts.getValue("ADPrintTableFormatID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintTableFormat", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_PrintTableFormat_ID(id);
}
name = atts.getValue("ADPrintColorID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintColor", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_PrintColor_ID(id);
}
name = atts.getValue("ADPrintFontID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintFont", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_PrintFont_ID(id);
}
name = atts.getValue("ADPrintPaperID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintPaper", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
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(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_PrintFormat.getName(), "PrintFormat",
m_PrintFormat.get_ID(), AD_Backup_ID, Object_Status,
"AD_PrintFormat", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_PrintFormat"));
} else {
record_log(ctx, 0, m_PrintFormat.getName(), "PrintFormat",
m_PrintFormat.get_ID(), AD_Backup_ID, Object_Status,
"AD_PrintFormat", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_PrintFormat"));
throw new POSaveFailedException("PrintFormat");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_PrintFormat_ID = Env.getContextAsInt(ctx,
X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID);
AttributesImpl atts = new AttributesImpl();
String sql = null;
sql = "SELECT AD_PrintFormat_ID "
+ "FROM AD_PrintFormat "
+ "WHERE AD_PrintFormat_ID in "
+ "(( select AD_PrintFormatChild_ID from AD_PrintFormatItem WHERE AD_PrintFormat_ID = "
+ AD_PrintFormat_ID + " AND PrintFormatType = 'P'), "
+ AD_PrintFormat_ID + ")";
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
X_AD_PrintFormat m_Printformat = new X_AD_PrintFormat(ctx, rs
.getInt("AD_PrintFormat_ID"), null);
createPrintFormatBinding(atts, m_Printformat);
document.startElement("", "", "printformat", atts);
String sql2 = "SELECT * FROM AD_PrintFormatItem WHERE AD_PrintFormat_ID= "
+ AD_PrintFormat_ID;
PreparedStatement pstmt2 = null;
pstmt2 = DB.prepareStatement(sql2, getTrxName(ctx));
try {
ResultSet rs2 = pstmt2.executeQuery();
while (rs2.next()) {
createItem(ctx, document, rs2
.getInt("AD_PrintFormatItem_ID"));
}
rs2.close();
pstmt2.close();
pstmt2 = null;
} finally {
try {
if (pstmt2 != null)
pstmt2.close();
} catch (Exception e) {
}
pstmt2 = null;
}
document.endElement("", "", "printformat");
}
rs.close();
pstmt.close();
pstmt = null;
} catch (Exception e) {
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
if (e instanceof SAXException)
throw (SAXException) e;
else if (e instanceof SQLException)
throw new DatabaseAccessException("Window", e);
else if (e instanceof RuntimeException)
throw (RuntimeException) e;
else
throw new RuntimeException("Window", e);
} finally {
try {
if (pstmt != null)
pstmt.close();
} catch (Exception e) {
}
pstmt = null;
}
}
private void createItem(Properties ctx, TransformerHandler document,
int AD_PrintFormatItem_ID) throws SAXException {
Env.setContext(ctx,
X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID,
AD_PrintFormatItem_ID);
itemHandler.create(ctx, document);
ctx.remove(X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID);
}
private 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;
}
}

View File

@ -0,0 +1,408 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_PrintFormatItem;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class PrintFormatItemElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("Name"));
String name = atts.getValue("Name");
int id = get_IDWithMaster(ctx, "AD_PrintFormatItem", name,
"AD_PrintFormat", atts.getValue("ADPrintFormatNameID"));
X_AD_PrintFormatItem m_PrintFormatItem = new X_AD_PrintFormatItem(ctx,
id, getTrxName(ctx));
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "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(ctx, "AD_PrintFormat", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
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(ctx, "AD_Table", "TableName", name);
name = atts.getValue("ADColumnNameID");
id = get_IDWithMasterAndColumn(ctx, "AD_Column", "ColumnName", name,
"AD_Table", tableid);
if (id > 0)
m_PrintFormatItem.setAD_Column_ID(id);
name = atts.getValue("ADPrintGraphID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintGraph", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormatItem.setAD_PrintGraph_ID(id);
}
name = atts.getValue("ADPrintColorID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintColor", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormatItem.setAD_PrintColor_ID(id);
}
name = atts.getValue("ADPrintFontID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintFont", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
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(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_PrintFormatItem.getName(), "PrintFormatItem",
m_PrintFormatItem.get_ID(), AD_Backup_ID, Object_Status,
"AD_PrintFormatItem", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_PrintFormatItem"));
} else {
record_log(ctx, 0, m_PrintFormatItem.getName(), "PrintFormatItem",
m_PrintFormatItem.get_ID(), AD_Backup_ID, Object_Status,
"AD_PrintFormatItem", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_PrintFormatItem"));
throw new POSaveFailedException("PrintFormatItem");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_PrintFormatItem_ID = Env.getContextAsInt(ctx,
X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID);
X_AD_PrintFormatItem m_PrintFormatItem = new X_AD_PrintFormatItem(ctx,
AD_PrintFormatItem_ID, null);
AttributesImpl atts = new AttributesImpl();
createPrintFormatItemBinding(atts, m_PrintFormatItem);
document.startElement("", "", "printformatitem", atts);
document.endElement("", "", "printformatitem");
}
private 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;
}
}

View File

@ -0,0 +1,138 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.compiere.model.X_AD_Process;
import org.compiere.model.X_AD_Role;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ProcessAccessElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
log.info(elementValue);
int roleid =0;
int processid =0;
StringBuffer sqlB = null;
Attributes atts = element.attributes;
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(getTrxName(ctx),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(getTrxName(ctx),sqlB.toString(),name);
}
sqlB = new StringBuffer ("SELECT count(*) FROM AD_Process_Access WHERE AD_Role_ID=? and AD_Process_ID=?");
int count = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),roleid,processid);
int AD_Backup_ID = -1;
String Object_Status = null;
if (count>0){
Object_Status = "Update";
sqlB = new StringBuffer ("UPDATE AD_Process_Access ")
.append( "SET isActive = '" + atts.getValue("isActive") )
.append( "', isReadWrite = '" + atts.getValue("isReadWrite") )
.append( "' WHERE AD_Role_ID = " + roleid )
.append( " and AD_Process_ID = " + processid );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1) {
log.info("Update to process access failed");
throw new DatabaseAccessException("Update to process access failed");
}
}
else{
Object_Status = "New";
AD_Backup_ID =0;
sqlB = new StringBuffer ("Insert INTO AD_Process_Access")
.append( "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " )
.append( "AD_Role_ID, AD_Process_ID, isActive, isReadWrite) " )
.append( "VALUES(" )
.append( " "+ Env.getAD_Client_ID(ctx) )
.append( ", "+ Env.getAD_Org_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", " + roleid )
.append( ", " + processid )
.append( ", '" + atts.getValue("isActive") )
.append( "', '" + atts.getValue("isReadWrite")+"')" );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1) {
log.info("Insert to process access failed");
throw new DatabaseAccessException("Insert to process access failed");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Process_ID = Env.getContextAsInt(ctx, X_AD_Process.COLUMNNAME_AD_Process_ID);
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
AttributesImpl atts = new AttributesImpl();
createProcessAccessBinding(atts, AD_Process_ID, AD_Role_ID);
document.startElement("", "", "processaccess", atts);
document.endElement("", "", "processaccess");
}
private 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", isReadWrite);
return atts;
}
}

View File

@ -0,0 +1,317 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.PackOut;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.MProcess;
import org.compiere.model.MSequence;
import org.compiere.model.X_AD_Process;
import org.compiere.model.X_AD_Process_Para;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ProcessElementHandler extends AbstractElementHandler {
private ProcessParaElementHandler paraHandler = new ProcessParaElementHandler();
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("Name"));
int id = 0;
String entitytype = atts.getValue("EntityType");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0
&& getUpdateMode(ctx).compareTo("true") == 0) {
String name = atts.getValue("Name");
// Get New process.
id = get_ID(ctx, "AD_Process", name);
MProcess m_Process = null;
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
m_Process = new MProcess(ctx, id, getTrxName(ctx));
AD_Backup_ID = copyRecord(ctx, "AD_Process", m_Process);
Object_Status = "Update";
} else {
m_Process = new MProcess(ctx, id, getTrxName(ctx));
id = MSequence.getNextID(Env.getAD_Client_ID(ctx),
"AD_Process", getTrxName(ctx));
m_Process.setAD_Process_ID(id);
Object_Status = "New";
AD_Backup_ID = 0;
}
m_Process.setName(name);
name = atts.getValue("ADWorkflowNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Workflow", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Process.setAD_Workflow_ID(id);
}
name = atts.getValue("ADPrintFormatNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintFormat", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Process.setAD_PrintFormat_ID(id);
}
name = atts.getValue("ADReportViewNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_ReportView", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
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(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Process.getName(), "Process", m_Process
.get_ID(), AD_Backup_ID, Object_Status, "AD_Process",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Process"));
} else {
record_log(ctx, 0, m_Process.getName(), "Process", m_Process
.get_ID(), AD_Backup_ID, Object_Status, "AD_Process",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Process"));
throw new POSaveFailedException("Process");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Process_ID = Env.getContextAsInt(ctx, "AD_Process_ID");
PackOut packOut = (PackOut) ctx.get("PackOutProcess");
String sqlW = "SELECT * FROM AD_PROCESS WHERE AD_PROCESS_ID = "
+ AD_Process_ID;
AttributesImpl atts = new AttributesImpl();
PreparedStatement pstmt1 = null;
pstmt1 = DB.prepareStatement(sqlW, getTrxName(ctx));
try {
ResultSet rs1 = pstmt1.executeQuery();
while (rs1.next()) {
X_AD_Process m_Process = new X_AD_Process(ctx, rs1
.getInt("AD_Process_ID"), null);
log.log(Level.INFO, "AD_ReportView_ID: "
+ rs1.getInt("AD_ReportView_ID"));
if (rs1.getString("IsReport").equals('Y')
&& rs1.getInt("AD_ReportView_ID") > 0) {
packOut.createReportview(rs1.getInt("AD_ReportView_ID"),
atts, document);
}
if (rs1.getString("IsReport").equals('Y')
&& rs1.getInt("AD_PrintFormat_ID") > 0) {
packOut.createPrintFormat(rs1.getInt("AD_PrintFormat_ID"),
atts, document);
}
if (rs1.getInt("AD_Workflow_ID") > 0) {
packOut.createWorkflow(rs1.getInt("AD_Workflow_ID"), atts,
document);
}
atts = createProcessBinding(atts, m_Process);
document.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, getTrxName(ctx));
try {
ResultSet rsP = pstmtP.executeQuery();
while (rsP.next()) {
if (rsP.getInt("AD_Reference_ID") > 0)
packOut.createReference(rsP
.getInt("AD_Reference_ID"), atts, document);
if (rsP.getInt("AD_Reference_Value_ID") > 0)
packOut.createReference(rsP
.getInt("AD_Reference_Value_ID"), atts,
document);
createProcessPara(ctx, document, rsP
.getInt("AD_Process_Para_ID"));
}
rsP.close();
pstmtP.close();
pstmtP = null;
} catch (Exception e) {
log.log(Level.SEVERE, "getProcess_Para", e);
if (e instanceof SAXException)
throw (SAXException) e;
else if (e instanceof SQLException)
throw new DatabaseAccessException("Window", e);
else if (e instanceof RuntimeException)
throw (RuntimeException) e;
else
throw new RuntimeException("Window", e);
} finally {
try {
if (pstmtP != null)
pstmtP.close();
} catch (Exception e) {
}
pstmtP = null;
}
document.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;
}
}
private void createProcessPara(Properties ctx, TransformerHandler document,
int AD_Process_Para_ID) throws SAXException {
Env.setContext(ctx, X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID,
AD_Process_Para_ID);
paraHandler.create(ctx, document);
ctx.remove(X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID);
}
private 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;
}
}

View File

@ -0,0 +1,255 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_Process_Para;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ProcessParaElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("Name"));
String entitytype = atts.getValue("EntityType");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0
&& getUpdateMode(ctx).compareTo("true") == 0) {
String name = atts.getValue("Name");
int id = get_IDWithMaster(ctx, "AD_Process_Para", name,
"AD_Process", atts.getValue("ADProcessNameID"));
X_AD_Process_Para m_Process_para = new X_AD_Process_Para(ctx, id,
getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "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(ctx, "AD_Process", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Process_para.setAD_Process_ID(id);
name = atts.getValue("ADElementNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Element", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Process_para.setAD_Element_ID(id);
}
name = atts.getValue("ADReferenceNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Reference", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Process_para.setAD_Reference_ID(id);
}
name = atts.getValue("ADReferenceValueNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Reference", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Process_para.setAD_Reference_Value_ID(id);
}
name = atts.getValue("ADValRuleNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Val_Rule", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
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(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Process_para.getName(), "Process_para",
m_Process_para.get_ID(), AD_Backup_ID, Object_Status,
"AD_Process_para", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Process_para"));
} else {
record_log(ctx, 0, m_Process_para.getName(), "Process_para",
m_Process_para.get_ID(), AD_Backup_ID, Object_Status,
"AD_Process_para", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Process_para"));
throw new POSaveFailedException("ProcessPara");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Process_Para_ID = Env.getContextAsInt(ctx,
X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID);
X_AD_Process_Para m_Processpara = new X_AD_Process_Para(ctx,
AD_Process_Para_ID, getTrxName(ctx));
AttributesImpl atts = new AttributesImpl();
createProcessParaBinding(atts, m_Processpara);
document.startElement("", "", "processpara", atts);
document.endElement("", "", "processpara");
}
private 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;
}
}

View File

@ -0,0 +1,260 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_Ref_List;
import org.compiere.model.X_AD_Ref_Table;
import org.compiere.model.X_AD_Reference;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ReferenceElementHandler extends AbstractElementHandler {
private ReferenceListElementHandler listHandler = new ReferenceListElementHandler();
private ReferenceTableElementHandler tableHandler = new ReferenceTableElementHandler();
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
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
&& getUpdateMode(ctx).compareTo("true") == 0) {
int id = get_ID(ctx, "AD_Reference", name);
X_AD_Reference m_Reference = new X_AD_Reference(ctx, id,
getTrxName(ctx));
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "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(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Reference.getName(), "Reference",
m_Reference.get_ID(), AD_Backup_ID, Object_Status,
"AD_Reference", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Reference"));
} else {
record_log(ctx, 0, m_Reference.getName(), "Reference",
m_Reference.get_ID(), AD_Backup_ID, Object_Status,
"AD_Reference", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Reference"));
throw new POSaveFailedException("Reference");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int Reference_id = Env.getContextAsInt(ctx,
X_AD_Reference.COLUMNNAME_AD_Reference_ID);
AttributesImpl atts = new AttributesImpl();
String sql = "SELECT * FROM AD_Reference WHERE AD_Reference_ID= "
+ Reference_id;
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
X_AD_Reference m_Reference = new X_AD_Reference(ctx, rs
.getInt("AD_Reference_ID"), null);
createReferenceBinding(atts, m_Reference);
document.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, getTrxName(ctx));
try {
ResultSet rs1 = pstmt1.executeQuery();
while (rs1.next()) {
createReferenceList(ctx, document, rs1
.getInt("AD_REF_LIST_ID"));
}
rs1.close();
pstmt1.close();
pstmt1 = null;
}
catch (Exception e) {
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
if (e instanceof SAXException)
throw (SAXException) e;
else if (e instanceof SQLException)
throw new DatabaseAccessException("Window", e);
else if (e instanceof RuntimeException)
throw (RuntimeException) e;
else
throw new RuntimeException("Window", e);
} finally {
try {
if (pstmt1 != null)
pstmt1.close();
} catch (Exception e) {
}
pstmt1 = null;
}
} else if (m_Reference.getValidationType().compareTo("T") == 0) {
String sql1 = "SELECT AD_Reference_ID FROM AD_Ref_Table WHERE AD_Reference_ID = "
+ Reference_id;
PreparedStatement pstmt1 = null;
pstmt1 = DB.prepareStatement(sql1, getTrxName(ctx));
try {
ResultSet rs1 = pstmt1.executeQuery();
while (rs1.next()) {
createReferenceTable(ctx, document, Reference_id);
}
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;
}
}
document.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;
}
}
private void createReferenceTable(Properties ctx, TransformerHandler document,
int reference_id) throws SAXException {
Env.setContext(ctx, X_AD_Ref_Table.COLUMNNAME_AD_Reference_ID, reference_id);
tableHandler.create(ctx, document);
ctx.remove(X_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
}
private void createReferenceList(Properties ctx,
TransformerHandler document, int AD_Ref_List_ID)
throws SAXException {
Env.setContext(ctx, X_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID,
AD_Ref_List_ID);
listHandler.create(ctx, document);
ctx.remove(X_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID);
}
private 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;
}
}

View File

@ -0,0 +1,141 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_Ref_List;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ReferenceListElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
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
&& getUpdateMode(ctx).compareTo("true") == 0) {
String name = atts.getValue("Name");
int Referenceid = get_IDWithColumn(ctx, "AD_Reference", "Name",
atts.getValue("ADRefenceNameID"));
int id = get_IDWithMaster(ctx, "AD_Ref_List", name, "AD_Reference",
Referenceid);
X_AD_Ref_List m_Ref_List = new X_AD_Ref_List(ctx, id,
getTrxName(ctx));
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_Ref_List", m_Ref_List);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
name = atts.getValue("ADRefenceNameID");
id = get_IDWithColumn(ctx, "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"));
if (m_Ref_List.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Ref_List.getName(), "Reference List",
m_Ref_List.get_ID(), AD_Backup_ID, Object_Status,
"AD_Ref_List", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Ref_List"));
} else {
record_log(ctx, 0, m_Ref_List.getName(), "Reference List",
m_Ref_List.get_ID(), AD_Backup_ID, Object_Status,
"AD_Ref_List", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Ref_List"));
throw new POSaveFailedException("ReferenceList");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Ref_List_ID = Env.getContextAsInt(ctx,
X_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID);
X_AD_Ref_List m_Ref_List = new X_AD_Ref_List(ctx, AD_Ref_List_ID,
getTrxName(ctx));
AttributesImpl atts = new AttributesImpl();
createRefListBinding(atts, m_Ref_List);
document.startElement("", "", "referencelist", atts);
document.endElement("", "", "referencelist");
}
private 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;
}
}

View File

@ -0,0 +1,275 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.MColumn;
import org.compiere.model.MTable;
import org.compiere.model.X_AD_Ref_Table;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ReferenceTableElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
log.info(elementValue);
Attributes atts = element.attributes;
String entitytype = atts.getValue("EntityType");
String name = atts.getValue("ADRefenceNameID");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0
&& getUpdateMode(ctx).compareTo("true") == 0) {
StringBuffer sqlB = new StringBuffer(
"SELECT AD_Reference_ID FROM AD_Reference WHERE Name= ?");
int id = DB.getSQLValue(getTrxName(ctx), sqlB.toString(), name);
sqlB = new StringBuffer(
"SELECT Count(*) FROM AD_Ref_Table WHERE AD_Reference_ID= ?");
int count = DB.getSQLValue(getTrxName(ctx), sqlB.toString(), id);
int tableId = get_IDWithColumn(ctx, "AD_Table", "TableName", atts
.getValue("ADTableNameID"));
if (tableId == 0) {
MTable m_Table = new MTable(ctx, 0, getTrxName(ctx));
m_Table.setAccessLevel("3");
m_Table.setName(atts.getValue("ADTableNameID"));
m_Table.setTableName(atts.getValue("ADTableNameID"));
if (m_Table.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Table.getName(), "Table", m_Table
.get_ID(), 0, "New", "AD_Table", get_IDWithColumn(
ctx, "AD_Table", "TableName", "AD_Table"));
} else {
record_log(ctx, 0, m_Table.getName(), "Table", m_Table
.get_ID(), 0, "New", "AD_Table", get_IDWithColumn(
ctx, "AD_Table", "TableName", "AD_Table"));
}
tableId = get_IDWithColumn(ctx, "AD_Table", "TableName", atts
.getValue("ADTableNameID"));
}
name = atts.getValue("ADDisplay");
int DisplayId = get_IDWithMasterAndColumn(ctx, "AD_Column",
"ColumnName", name, "AD_Table", tableId);
if (DisplayId == 0) {
MColumn m_Column = new MColumn(ctx, 0, getTrxName(ctx));
m_Column.setAD_Table_ID(tableId);
// m_Column.setVersion(new BigDecimal("1")); // use constructor
// value
m_Column.setColumnName(name);
m_Column.setName(name);
m_Column.setAD_Reference_ID(30);
if (m_Column.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Column.getName(), "Column", m_Column
.get_ID(), 0, "New", "AD_Column", get_IDWithColumn(
ctx, "AD_Table", "TableName", "AD_Column"));
} else {
record_log(ctx, 0, m_Column.getName(), "Column", m_Column
.get_ID(), 0, "New", "AD_Column", get_IDWithColumn(
ctx, "AD_Table", "TableName", "AD_Column"));
}
}
name = atts.getValue("Key");
int keyId = get_IDWithMasterAndColumn(ctx, "AD_Column",
"ColumnName", name, "AD_Table", tableId);
if (keyId == 0) {
MColumn m_Column = new MColumn(ctx, 0, getTrxName(ctx));
m_Column.setAD_Table_ID(tableId);
// m_Column.setVersion(new BigDecimal("1")); // use constructor
// value
m_Column.setColumnName(name);
m_Column.setName(name);
m_Column.setAD_Reference_ID(30);
if (m_Column.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Column.getName(), "Column", m_Column
.get_ID(), 0, "New", "AD_Column", get_IDWithColumn(
ctx, "AD_Table", "TableName", "AD_Column"));
} else {
record_log(ctx, 0, m_Column.getName(), "Column", m_Column
.get_ID(), 0, "New", "AD_Column", get_IDWithColumn(
ctx, "AD_Table", "TableName", "AD_Column"));
}
}
name = atts.getValue("ADDisplay");
DisplayId = get_IDWithMasterAndColumn(ctx, "AD_Column",
"ColumnName", name, "AD_Table", tableId);
name = atts.getValue("Key");
keyId = get_IDWithMasterAndColumn(ctx, "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 ").append(
"SET AD_Table_ID = " + tableId).append(
", AD_Display = " + DisplayId).append(
", AD_Key = " + keyId).append(
", isValueDisplayed = '" + isValueDisplayed).append(
"', OrderByClause = '" + OrderByClause).append(
"', EntityType ='" + entityType).append(
"', WhereClause = '" + WhereClause).append(
"' WHERE AD_Reference_ID = " + id);
int no = DB.executeUpdate(sqlB.toString(), getTrxName(ctx));
if (no > 0) {
record_log(ctx, 1, atts.getValue("ADRefenceNameID"),
"Reference Table", id, 0, "Update", "AD_Ref_Table",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Ref_Table"));
} else {
record_log(ctx, 0, atts.getValue("ADRefenceNameID"),
"Reference Table", id, 0, "Update", "AD_Ref_Table",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Ref_Table"));
throw new POSaveFailedException("ReferenceTable");
}
} else {
sqlB = new StringBuffer("Insert INTO AD_Ref_Table")
.append(
"(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, ")
.append(
"AD_Reference_ID, AD_Table_ID, AD_Display, AD_Key ")
.append(
",entityType, isValueDisplayed, OrderByClause, ")
.append(" WhereClause )").append(
"VALUES(0, 0, 0, 0, " + id).append(
", " + tableId).append(", " + DisplayId)
.append(", " + keyId).append(", '" + entityType)
.append("', '" + isValueDisplayed).append(
"', '" + OrderByClause).append(
"', '" + WhereClause + "')");
int no = DB.executeUpdate(sqlB.toString(), getTrxName(ctx));
if (no > 0) {
record_log(ctx, 1, atts.getValue("ADRefenceNameID"),
"Reference Table", id, 0, "New", "AD_Ref_Table",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Ref_Table"));
} else {
record_log(ctx, 0, atts.getValue("ADRefenceNameID"),
"Reference Table", id, 0, "New", "AD_Ref_Table",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Ref_Table"));
throw new POSaveFailedException("ReferenceTable");
}
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int Reference_id = Env.getContextAsInt(ctx,
X_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
AttributesImpl atts = new AttributesImpl();
createReferenceTableBinding(ctx, atts, Reference_id);
document.startElement("", "", "referencetable", atts);
document.endElement("", "", "referencetable");
}
private AttributesImpl createReferenceTableBinding(Properties ctx,
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, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
sql = "SELECT Name FROM AD_Reference WHERE AD_Reference_ID=?";
name = DB.getSQLValueString(null, sql, reference_ID);
atts.addAttribute("", "", "ADRefenceNameID", "CDATA", name);
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) {
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new DatabaseAccessException("ReferenceTable", e);
} finally {
try {
if (pstmt != null)
pstmt.close();
} catch (Exception e) {
}
pstmt = null;
}
return atts;
}
}

View File

@ -0,0 +1,155 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_ReportView_Col;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ReportViewColElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
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
&& getUpdateMode(ctx).compareTo("true") == 0) {
int id = get_ID(ctx, "AD_Reportview_Col", name);
X_AD_ReportView_Col m_Reportview_Col = new X_AD_ReportView_Col(ctx,
id, getTrxName(ctx));
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_Reportview_Col",
m_Reportview_Col);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
name = atts.getValue("ADReportviewnameID");
id = get_IDWithColumn(ctx, "AD_ReportView", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Reportview_Col.setAD_ReportView_ID(id);
name = atts.getValue("ADColumnNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Column", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
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(getTrxName(ctx)) == true) {
record_log(ctx, 1, "" + m_Reportview_Col.getAD_ReportView_ID(),
"Reportview_Col", m_Reportview_Col.get_ID(),
AD_Backup_ID, Object_Status, "AD_Reportview_Col",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Reportview_Col"));
} else {
record_log(ctx, 0, "" + m_Reportview_Col.getAD_ReportView_ID(),
"Reportview_Col", m_Reportview_Col.get_ID(),
AD_Backup_ID, Object_Status, "AD_Reportview_Col",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Reportview_Col"));
throw new POSaveFailedException("ReportViewCol");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_ReportView_Col_ID = Env.getContextAsInt(ctx,
X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID);
X_AD_ReportView_Col m_Reportview_Col = new X_AD_ReportView_Col(ctx,
AD_ReportView_Col_ID, getTrxName(ctx));
AttributesImpl atts = new AttributesImpl();
createReportViewColBinding(atts, m_Reportview_Col);
document.startElement("", "", "reportviewcol", atts);
document.endElement("", "", "reportviewcol");
}
private 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;
}
}

View File

@ -0,0 +1,255 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.PackOut;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.MTable;
import org.compiere.model.X_AD_ReportView;
import org.compiere.model.X_AD_ReportView_Col;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class ReportViewElementHandler extends AbstractElementHandler {
private ReportViewColElementHandler columnHandler = new ReportViewColElementHandler();
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("ADReportviewnameID"));
String entitytype = atts.getValue("EntityType");
String name = atts.getValue("ADReportviewnameID");
int id = get_ID(ctx, "AD_ReportView", name);
X_AD_ReportView m_Reportview = new X_AD_ReportView(ctx, id,
getTrxName(ctx));
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_Reportview", m_Reportview);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
String Name = atts.getValue("ADTableNameID");
id = get_IDWithColumn(ctx, "AD_Table", "TableName", Name);
MTable m_Table = null;
if (id == 0) {
m_Table = new MTable(ctx, 0, getTrxName(ctx));
m_Table.setAccessLevel("3");
m_Table.setName(Name);
m_Table.setTableName(Name);
if (m_Table.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Table.getName(), "Table",
m_Table.get_ID(), 0, "New", "AD_Table",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Table"));
} else {
record_log(ctx, 0, m_Table.getName(), "Table",
m_Table.get_ID(), 0, "New", "AD_Table",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Table"));
}
id = get_IDWithColumn(ctx, "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(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Reportview.getName(), "Reportview",
m_Reportview.get_ID(), AD_Backup_ID, Object_Status,
"AD_Reportview", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Reportview"));
} else {
record_log(ctx, 0, m_Reportview.getName(), "Reportview",
m_Reportview.get_ID(), AD_Backup_ID, Object_Status,
"AD_Reportview", get_IDWithColumn(ctx, "AD_Table",
"TableName", "AD_Reportview"));
throw new POSaveFailedException("ReportView");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
PackOut packOut = (PackOut) ctx.get("PackOutProcess");
int AD_ReportView_ID = Env.getContextAsInt(ctx, "AD_ReportView_ID");
String sql = "SELECT * FROM AD_ReportView WHERE AD_ReportView_ID= "
+ AD_ReportView_ID;
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
AttributesImpl atts = new AttributesImpl();
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
X_AD_ReportView m_Reportview = new X_AD_ReportView(ctx, rs
.getInt("AD_Reportview_ID"), null);
atts = createReportViewBinding(atts, m_Reportview);
document.startElement("", "", "reportview", atts);
document.endElement("", "", "reportview");
String sql1 = "SELECT * FROM AD_Printformat WHERE AD_Reportview_ID= "
+ AD_ReportView_ID;
PreparedStatement pstmt1 = null;
pstmt1 = DB.prepareStatement(sql1, getTrxName(ctx));
try {
ResultSet rs1 = pstmt1.executeQuery();
while (rs1.next()) {
// Export Table if neccessary
packOut.createTable(rs1.getInt("AD_Table_ID"), atts,
document);
packOut.createPrintFormat(rs1
.getInt("AD_Printformat_ID"), atts, document);
}
rs1.close();
pstmt1.close();
pstmt1 = null;
} finally {
try {
if (pstmt1 != null)
pstmt1.close();
} catch (Exception e) {
}
pstmt1 = null;
}
atts.clear();
sql1 = "SELECT * FROM AD_ReportView_Col WHERE AD_Reportview_ID= "
+ AD_ReportView_ID;
pstmt1 = null;
pstmt1 = DB.prepareStatement(sql1, getTrxName(ctx));
try {
ResultSet rs1 = pstmt1.executeQuery();
while (rs1.next()) {
createReportViewCol(ctx, document, rs1
.getInt("AD_ReportView_Col_ID"));
}
rs1.close();
pstmt1.close();
pstmt1 = null;
} finally {
try {
if (pstmt1 != null)
pstmt1.close();
} catch (Exception e) {
}
pstmt1 = null;
}
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "reportview", e);
if (e instanceof SAXException)
throw (SAXException) e;
else if (e instanceof SQLException)
throw new DatabaseAccessException("Window", e);
else if (e instanceof RuntimeException)
throw (RuntimeException) e;
else
throw new RuntimeException("Window", e);
} finally {
try {
if (pstmt != null)
pstmt.close();
} catch (Exception e) {
}
pstmt = null;
}
}
private void createReportViewCol(Properties ctx,
TransformerHandler document, int AD_ReportView_Col_ID)
throws SAXException {
Env.setContext(ctx,
X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID,
AD_ReportView_Col_ID);
columnHandler.create(ctx, document);
ctx.remove(X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID);
}
private 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;
}
}

View File

@ -0,0 +1,479 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.MRole;
import org.compiere.model.X_AD_Form;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.model.X_AD_Process;
import org.compiere.model.X_AD_Role;
import org.compiere.model.X_AD_Task;
import org.compiere.model.X_AD_User;
import org.compiere.model.X_AD_Window;
import org.compiere.model.X_AD_Workflow;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class RoleElementHandler extends AbstractElementHandler {
private OrgRoleElementHandler orgHandler = new OrgRoleElementHandler();
private ProcessAccessElementHandler processHandler = new ProcessAccessElementHandler();
private UserRoleElementHandler userHandler = new UserRoleElementHandler();
private WindowAccessElementHandler windowHandler = new WindowAccessElementHandler();
private FormAccessElementHandler formHandler = new FormAccessElementHandler();
private TaskAccessElementHandler taskHandler = new TaskAccessElementHandler();
private WorkflowAccessElementHandler workflowHandler = new WorkflowAccessElementHandler();
public void startElement(Properties ctx, Element element)
throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("Name"));
String name = atts.getValue("Name");
int id = get_ID(ctx, "AD_Role", name);
MRole m_Role = new MRole(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "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 && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Tree", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Role.setAD_Tree_Menu_ID(id);
}
name = atts.getValue("treeorgname");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Tree", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Role.setAD_Tree_Org_ID(id);
}
name = atts.getValue("currencycode");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "C_Currency", "ISO_Code", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Role.setC_Currency_ID(id);
}
name = atts.getValue("supervisorid");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_User", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
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(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Role.getName(), "Role", m_Role.get_ID(),
AD_Backup_ID, Object_Status, "AD_Role", get_IDWithColumn(
ctx, "AD_Table", "TableName", "AD_Role"));
} else {
record_log(ctx, 0, m_Role.getName(), "Role", m_Role.get_ID(),
AD_Backup_ID, Object_Status, "AD_Role", get_IDWithColumn(
ctx, "AD_Table", "TableName", "AD_Role"));
throw new POSaveFailedException("Role");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int Role_id = Env.getContextAsInt(ctx,
X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID);
X_AD_Role m_Role = new X_AD_Role(ctx, Role_id, null);
AttributesImpl atts = new AttributesImpl();
createRoleBinding(atts, m_Role);
document.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, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createOrgAccess(ctx, document, rs.getInt("AD_Org_ID"), rs
.getInt("AD_Role_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "AD_Role_OrgAccess", e);
throw new DatabaseAccessException("AD_Role_OrgAccess");
}
// Process user assignment access
sql = "SELECT * FROM AD_User_Roles WHERE AD_Role_ID= " + Role_id;
pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createUserRole(ctx, document, rs.getInt("AD_User_ID"),
rs.getInt("AD_Role_ID"), rs.getInt("AD_Org_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "AD_User_Roles", e);
throw new DatabaseAccessException("AD_User_Roles");
}
// Process AD_Window_Access Values
sql = "SELECT * FROM AD_Window_Access WHERE AD_Role_ID= " + Role_id;
pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createWindowAccess(ctx, document, rs
.getInt("AD_Window_ID"), rs.getInt("AD_Role_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "AD_Window_Access", e);
throw new DatabaseAccessException("AD_Window_Access");
}
// Process AD_Process_Access Values
sql = "SELECT * FROM AD_Process_Access WHERE AD_Role_ID= " + Role_id;
pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createProcessAccess(ctx, document, rs
.getInt("AD_Process_ID"), rs.getInt("AD_Role_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "AD_Process_Access", e);
throw new DatabaseAccessException("AD_Process_Access");
}
// Process AD_Form_Access Values
sql = "SELECT * FROM AD_Form_Access WHERE AD_Role_ID= " + Role_id;
pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createFormAccess(ctx, document, rs.getInt("AD_Form_ID"),
rs.getInt("AD_Role_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "AD_Form_Access", e);
throw new DatabaseAccessException("AD_Form_Access");
}
// Process AD_Workflow_Access Values
sql = "SELECT * FROM AD_Workflow_Access WHERE AD_Role_ID= " + Role_id;
pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createWorkflowAccess(ctx, document, rs
.getInt("AD_Workflow_ID"), rs.getInt("AD_Role_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "AD_Workflow_Access", e);
throw new DatabaseAccessException("AD_Workflow_Access");
}
// Process AD_Task_Access Values
sql = "SELECT * FROM AD_Task_Access WHERE AD_Role_ID= " + Role_id;
pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createTaskAccess(ctx, document, rs.getInt("AD_Task_ID"), rs
.getInt("AD_Role_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "AD_Task_Access", e);
throw new DatabaseAccessException("AD_Task_Access");
} finally {
try {
if (pstmt != null)
pstmt.close();
} catch (Exception e) {
}
pstmt = null;
}
document.endElement("", "", "role");
}
private void createTaskAccess(Properties ctx, TransformerHandler document,
int AD_Task_ID, int AD_Role_ID) throws SAXException {
Env.setContext(ctx, X_AD_Task.COLUMNNAME_AD_Task_ID, AD_Task_ID);
Env.setContext(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
taskHandler.create(ctx, document);
ctx.remove(X_AD_Task.COLUMNNAME_AD_Task_ID);
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
}
private void createWorkflowAccess(Properties ctx,
TransformerHandler document, int AD_Workflow_ID, int AD_Role_ID) throws SAXException {
Env.setContext(ctx, X_AD_Workflow.COLUMNNAME_AD_Workflow_ID, AD_Workflow_ID);
Env.setContext(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
workflowHandler.create(ctx, document);
ctx.remove(X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
}
private void createFormAccess(Properties ctx, TransformerHandler document,
int AD_Form_ID, int AD_Role_ID) throws SAXException {
Env.setContext(ctx, X_AD_Form.COLUMNNAME_AD_Form_ID, AD_Form_ID);
Env.setContext(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
formHandler.create(ctx, document);
ctx.remove(X_AD_Form.COLUMNNAME_AD_Form_ID);
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
}
private void createProcessAccess(Properties ctx,
TransformerHandler document, int AD_Process_ID, int AD_Role_ID) throws SAXException {
Env.setContext(ctx, X_AD_Process.COLUMNNAME_AD_Process_ID, AD_Process_ID);
Env.setContext(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
processHandler.create(ctx, document);
ctx.remove(X_AD_Process.COLUMNNAME_AD_Process_ID);
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
}
private void createWindowAccess(Properties ctx,
TransformerHandler document, int AD_Window_ID, int AD_Role_ID) throws SAXException {
Env.setContext(ctx, X_AD_Window.COLUMNNAME_AD_Window_ID, AD_Window_ID);
Env.setContext(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
windowHandler.create(ctx, document);
ctx.remove(X_AD_Window.COLUMNNAME_AD_Window_ID);
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
}
private void createUserRole(Properties ctx, TransformerHandler document,
int AD_User_ID, int AD_Role_ID, int AD_Org_ID) throws SAXException {
Env.setContext(ctx, X_AD_User.COLUMNNAME_AD_User_ID, AD_User_ID);
Env.setContext(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
Env.setContext(ctx, "AD_Org_ID", AD_Org_ID);
userHandler.create(ctx, document);
ctx.remove(X_AD_User.COLUMNNAME_AD_User_ID);
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
ctx.remove("AD_Org_ID");
}
private void createOrgAccess(Properties ctx, TransformerHandler document,
int AD_Org_ID, int AD_Role_ID) throws SAXException {
Env.setContext(ctx, "AD_Org_ID", AD_Org_ID);
Env.setContext(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
orgHandler.create(ctx, document);
ctx.remove("AD_Org_ID");
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
}
private 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;
}
}

View File

@ -0,0 +1,101 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class SQLStatementElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
log.info(elementValue);
Attributes atts = element.attributes;
String DBType = atts.getValue("DBType");
PreparedStatement pstmt = DB.prepareStatement(atts.getValue("statement"), getTrxName(ctx));
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.isPostgreSQL() == true && DBType.equals("PostgreSQL")){
// Avoid convert layer - command specific for postgresql
//
// pstmt = DB.prepareStatement(sql, null);
// pstmt.executeUpdate();
//
Connection m_con = DB.getConnectionRW(true);
Statement stmt = m_con.createStatement();
int n = stmt.executeUpdate (atts.getValue("statement"));
log.info("Executed SQL Statement for PostgreSQL: "+ atts.getValue("statement"));
// Postgres needs to commit DDL statements
if (m_con != null && !m_con.getAutoCommit())
m_con.commit();
}
/* 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);
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
String SQLStatement = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_SQLStatement);
String DBType = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_DBType);
AttributesImpl atts = new AttributesImpl();
createSQLStatmentBinding(atts, SQLStatement, DBType);
document.startElement("","","SQLStatement",atts);
document.endElement("","","SQLStatement");
}
private AttributesImpl createSQLStatmentBinding( AttributesImpl atts, String SqlStatement, String DBType)
{
atts.clear();
atts.addAttribute("","","DBType","CDATA",DBType);
atts.addAttribute("","","statement","CDATA",SqlStatement);
return atts;
}
}

View File

@ -0,0 +1,296 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.PackOut;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.compiere.model.MTab;
import org.compiere.model.X_AD_Field;
import org.compiere.model.X_AD_Tab;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class TabElementHandler extends AbstractElementHandler {
private FieldElementHandler fieldHandler = new FieldElementHandler();
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("ADTabNameID"));
String entitytype = atts.getValue("EntityType");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0 && getUpdateMode(ctx).compareTo("true") == 0) {
String name = atts.getValue("ADTabNameID");
int tableid = get_IDWithColumn(ctx, "AD_Table", "TableName", atts.getValue("ADTableNameID"));
int windowid = get_ID(ctx, "AD_Window", atts.getValue("ADWindowNameID"));
StringBuffer 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(getTrxName(ctx), sqlB.toString (), tableid);
MTab m_Tab = new MTab(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "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(ctx, "AD_Column", "Name", name);
m_Tab.setAD_ColumnSortYesNo_ID(id);
}
if (atts.getValue("ADColumnSortOrderNameID")!= null){
name = atts.getValue("ADColumnSortOrderNameID");
id = get_IDWithColumn(ctx, "AD_Column", "Name", name);
m_Tab.setAD_ColumnSortOrder_ID(id);
}
if (atts.getValue("ADImageNameID")!= null){
name = atts.getValue("ADImageNameID");
id = get_IDWithColumn(ctx, "AD_Image", "Name", name);
m_Tab.setAD_Image_ID(id);
}
if (atts.getValue("ADProcessNameID")!= null){
name = atts.getValue("ADProcessNameID");
id = get_IDWithColumn(ctx, "AD_Process", "Name", name);
m_Tab.setAD_Process_ID(id);
}
if (atts.getValue("ADTableNameID")!= null){
name = atts.getValue("ADTableNameID");
id = get_IDWithColumn(ctx, "AD_Table", "TableName", name);
m_Tab.setAD_Table_ID(id);
}
if (atts.getValue("ADColumnNameID")!= null){
name = atts.getValue("ADColumnNameID");
id = get_IDWithMasterAndColumn (ctx, "AD_Column","Name", atts.getValue("ADColumnNameID"), "AD_Table", get_IDWithColumn(ctx,"AD_Table", "TableName", atts.getValue("ADTableNameID")));
m_Tab.setAD_Column_ID(id);
}
if (atts.getValue("ADWindowNameID")!= null){
name = atts.getValue("ADWindowNameID");
id = get_IDWithColumn(ctx, "AD_Window", "Name", name);
m_Tab.setAD_Window_ID(id);
}
if (atts.getValue("IncludedTabNameID")!= null){
name = atts.getValue("IncludedTabNameID");
id = get_IDWithColumn(ctx, "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 (atts.getValue("ReadOnlyLogic") != null) {
m_Tab.setReadOnlyLogic(atts.getValue("ReadOnlyLogic"));
}
if (atts.getValue("DisplayLogic") != null) {
m_Tab.setDisplayLogic(atts.getValue("DisplayLogic"));
}
if (atts.getValue("isInsertRecord") != null) {
m_Tab.setIsInsertRecord(Boolean.valueOf(atts.getValue("isInsertRecord")).booleanValue());
}
if (atts.getValue("isAdvancedTab") != null) {
m_Tab.setIsAdvancedTab(Boolean.valueOf(atts.getValue("isAdvancedTab")).booleanValue());
}
if (m_Tab.save(getTrxName(ctx)) == true){
record_log (ctx, 1, m_Tab.getName(),"Tab", m_Tab.get_ID(),AD_Backup_ID, Object_Status,"AD_Tab",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Tab"));
} else {
record_log (ctx, 0, m_Tab.getName(),"Tab", m_Tab.get_ID(),AD_Backup_ID, Object_Status,"AD_Tab",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Tab"));
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
int AD_Tab_ID = Env.getContextAsInt(ctx, X_AD_Tab.COLUMNNAME_AD_Tab_ID);
X_AD_Tab m_Tab = new X_AD_Tab (ctx, AD_Tab_ID, getTrxName(ctx));
AttributesImpl atts = new AttributesImpl();
createTabBinding(atts,m_Tab);
document.startElement("","","tab",atts);
//Fields tags.
String sql = "SELECT * FROM AD_FIELD WHERE AD_TAB_ID = " + AD_Tab_ID
+ "ORDER BY SEQNO asc";
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement (sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
createField(ctx, document, rs.getInt("AD_Field_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE,e.getLocalizedMessage(), e);
throw new DatabaseAccessException("Tab", e);
}
finally
{
try
{
if (pstmt != null)
pstmt.close ();
}
catch (Exception e)
{}
pstmt = null;
}
document.endElement("","","tab");
if(m_Tab.getAD_Process_ID() > 0 )
{
packOut.createProcess(m_Tab.getAD_Process_ID(), atts, document);
}
}
private void createField(Properties ctx, TransformerHandler document,
int AD_Field_ID) throws SAXException {
Env.setContext(ctx, X_AD_Field.COLUMNNAME_AD_Field_ID, AD_Field_ID);
fieldHandler.create(ctx, document);
ctx.remove(X_AD_Field.COLUMNNAME_AD_Field_ID);
}
private 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("","","ReadOnlyLogic","CDATA",(m_Tab.getReadOnlyLogic() != null ? m_Tab.getReadOnlyLogic ():""));
atts.addAttribute("","","DisplayLogic","CDATA",(m_Tab.getDisplayLogic() != null ? m_Tab.getDisplayLogic ():""));
atts.addAttribute("","","isInsertRecord","CDATA",(m_Tab.isInsertRecord()== true ? "true":"false"));
atts.addAttribute("","","isAdvancedTab","CDATA",(m_Tab.isAdvancedTab()== true ? "true":"false"));
atts.addAttribute("","","Syncfields","CDATA","false");
return atts;
}
}

View File

@ -0,0 +1,271 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.PackOut;
import org.compiere.model.MTable;
import org.compiere.model.X_AD_Column;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.model.X_AD_Table;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class TableElementHandler extends AbstractElementHandler {
private ColumnElementHandler columnHandler = new ColumnElementHandler();
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("ADTableNameID"));
String entitytype = atts.getValue("EntityType");
if (entitytype.equals("U") || entitytype.equals("D") && getUpdateMode(ctx).equals("true")) {
String tableName = atts.getValue("ADTableNameID");
int id = get_IDWithColumn(ctx, "AD_Table", "TableName", tableName);
MTable m_Table = new MTable(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "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(ctx, "AD_Window", "Name", Name);
m_Table.setAD_Window_ID(id);
Name = atts.getValue("POWindowNameID");
if (Name != null){
id = get_IDWithColumn(ctx, "AD_Window", "Name", Name);
m_Table.setPO_Window_ID(id);
}
else
Name = atts.getValue("ADValRuleNameID");
id = get_IDWithColumn(ctx, "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");
getDocumentAttributes(ctx).clear();
if (m_Table.save(getTrxName(ctx)) == true){
record_log (ctx, 1, m_Table.getName(),"Table", m_Table.get_ID(),AD_Backup_ID, Object_Status,"AD_Table",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Table"));
}
else{
record_log (ctx, 0, m_Table.getName(),"Table", m_Table.get_ID(),AD_Backup_ID, Object_Status,"AD_Table",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Table"));
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Table_ID = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID);
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
boolean exported = isTableExported(ctx, AD_Table_ID);
AttributesImpl atts = new AttributesImpl();
//Export table if not already done so
if (!exported){
String sql = "SELECT Name FROM AD_Table WHERE AD_Table_ID= " + AD_Table_ID;
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement (sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
X_AD_Table m_Table = new X_AD_Table (ctx, AD_Table_ID, null);
createTableBinding(atts,m_Table);
document.startElement("","","table",atts);
String sql1 = "SELECT * FROM AD_Column WHERE AD_Table_ID = " + AD_Table_ID
+ " ORDER BY SEQNO asc";
PreparedStatement pstmt1 = null;
pstmt1 = DB.prepareStatement (sql1, getTrxName(ctx));
try {
ResultSet rs1 = pstmt1.executeQuery();
while (rs1.next()){
if (rs1.getInt("AD_Reference_ID")>0)
packOut.createReference (rs1.getInt("AD_Reference_ID"), atts, document);
if (rs1.getInt("AD_Reference_Value_ID")>0)
packOut.createReference (rs1.getInt("AD_Reference_Value_ID"), atts, document);
if (rs1.getInt("AD_Process_ID")>0)
packOut.createProcess (rs1.getInt("AD_Process_ID"), atts, document);
if (rs1.getInt("AD_Val_Rule_ID")>0)
packOut.createDynamicRuleValidation (rs1.getInt("AD_Val_Rule_ID"), atts, document);
createColumn(ctx, document, rs1.getInt("AD_Column_ID"));
}
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;
}
document.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;
}
}
}
private void createColumn(Properties ctx, TransformerHandler document, int AD_Column_ID) throws SAXException {
Env.setContext(ctx, X_AD_Column.COLUMNNAME_AD_Column_ID, AD_Column_ID);
columnHandler.create(ctx, document);
ctx.remove(X_AD_Column.COLUMNNAME_AD_Column_ID);
}
private boolean isTableExported(Properties ctx, int AD_Table_ID) {
List<Integer>tables = (List<Integer>)ctx.get("ExportedTables");
if (tables == null) {
tables = new ArrayList<Integer>();
tables.add(AD_Table_ID);
return false;
} else {
if (tables.contains(AD_Table_ID))
return true;
else {
tables.add(AD_Table_ID);
return false;
}
}
}
private 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;
}
}

View File

@ -0,0 +1,135 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.compiere.model.X_AD_Role;
import org.compiere.model.X_AD_Task;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class TaskAccessElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
log.info(elementValue);
int roleid =0;
int taskid =0;
StringBuffer sqlB = null;
Attributes atts = element.attributes;
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(getTrxName(ctx),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(getTrxName(ctx),sqlB.toString(),name);
}
sqlB = new StringBuffer ("SELECT count(*) FROM AD_Task_Access WHERE AD_Role_ID=? and AD_Task_ID=?");
int count = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),roleid,taskid);
int AD_Backup_ID = -1;
String Object_Status = null;
if (count>0){
Object_Status = "Update";
sqlB = new StringBuffer ("UPDATE AD_Task_Access ")
.append( "SET isActive = '" + atts.getValue("isActive") )
.append( "', isReadWrite = '" + atts.getValue("isReadWrite") )
.append( "' WHERE AD_Role_ID = " + roleid )
.append( " and AD_Task_ID = " + taskid );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1) {
log.info("Update to task access failed");
throw new DatabaseAccessException("Update to task access failed");
}
}
else{
Object_Status = "New";
AD_Backup_ID =0;
sqlB = new StringBuffer ("Insert INTO AD_Task_Access")
.append( "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " )
.append( "AD_Role_ID, AD_Task_ID, isActive, isReadWrite) " )
.append( "VALUES(" )
.append( " "+ Env.getAD_Client_ID(ctx) )
.append( ", "+ Env.getAD_Org_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", " + roleid )
.append( ", " + taskid )
.append( ", '" + atts.getValue("isActive") )
.append( "', '" + atts.getValue("isReadWrite")+"')" );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1) {
log.info("Insert to task access failed");
throw new DatabaseAccessException("Insert to task access failed");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Task_ID = Env.getContextAsInt(ctx, X_AD_Task.COLUMNNAME_AD_Task_ID);
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
AttributesImpl atts = new AttributesImpl();
createTaskAccessBinding(atts, AD_Task_ID, AD_Role_ID);
document.startElement("", "", "taskaccess", atts);
document.endElement("", "", "taskaccess");
}
private 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", isReadWrite);
return atts;
}
}

View File

@ -0,0 +1,107 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.MTask;
import org.compiere.model.X_AD_Task;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class TaskElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue+" "+atts.getValue("ADTaskNameID"));
String entitytype = atts.getValue("EntityType");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0 && getUpdateMode(ctx).compareTo("true") == 0 ) {
String name = atts.getValue("ADTaskNameID");
int id = get_ID(ctx, "AD_Task", name);
MTask m_Task = new MTask(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "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(getTrxName(ctx)) == true){
record_log (ctx, 1, m_Task.getName(),"Task", m_Task.get_ID(),AD_Backup_ID, Object_Status,"AD_Task",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Task"));
}
else{
record_log (ctx, 0, m_Task.getName(),"Task", m_Task.get_ID(),AD_Backup_ID, Object_Status,"AD_Task",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Task"));
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Task_ID = Env.getContextAsInt(ctx, "AD_Task_ID");
X_AD_Task m_Task = new X_AD_Task (ctx, AD_Task_ID, null);
AttributesImpl atts = new AttributesImpl();
createTaskBinding(atts,m_Task);
document.startElement("","","task",atts);
document.endElement("","","task");
}
private 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;
}
}

View File

@ -0,0 +1,139 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.X_AD_Role;
import org.compiere.model.X_AD_User;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class UserRoleElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
log.info(elementValue);
int roleid =0;
int userid =0;
int orgid =0;
StringBuffer sqlB = null;
Attributes atts = element.attributes;
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(getTrxName(ctx),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(getTrxName(ctx),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(getTrxName(ctx),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(getTrxName(ctx),sqlB.toString(),userid,roleid);
int AD_Backup_ID = -1;
String Object_Status = null;
if (count>0){
//AD_Backup_ID = copyRecord("AD_Role",m_Role);
Object_Status = "Update";
sqlB = new StringBuffer ("UPDATE AD_User_Roles ")
.append( "SET isActive = '" + atts.getValue("isActive")+"'" )
.append( " WHERE AD_User_ID = " + userid )
.append( " and AD_Role_ID = " + roleid )
.append( " and AD_Org_ID = " + orgid );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
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")
.append( "(AD_Client_ID, CreatedBy, UpdatedBy, " )
.append( "AD_User_ID, AD_Role_ID, AD_Org_ID, isActive) " )
.append( "VALUES(" )
.append( " "+ Env.getAD_Client_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", " +userid )
.append( ", " + roleid )
.append( ", " + orgid )
.append( ", '" + atts.getValue("isActive")+"')" );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1)
log.info("Insert to user roles failed");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_User_ID = Env.getContextAsInt(ctx, X_AD_User.COLUMNNAME_AD_User_ID);
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
int AD_Org_ID = Env.getContextAsInt(ctx, "AD_Org_ID");
AttributesImpl atts = new AttributesImpl();
createUserAssignBinding(atts, AD_User_ID,AD_Role_ID, AD_Org_ID);
document.startElement("", "", "userrole", atts);
document.endElement("", "", "userrole");
}
private AttributesImpl createUserAssignBinding(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;
}
}

View File

@ -0,0 +1,132 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.X_AD_Role;
import org.compiere.model.X_AD_Window;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class WindowAccessElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
log.info(elementValue);
int roleid =0;
int windowid =0;
StringBuffer sqlB = null;
Attributes atts = element.attributes;
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(getTrxName(ctx),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(getTrxName(ctx),sqlB.toString(),name);
}
sqlB = new StringBuffer ("SELECT count(*) FROM AD_Window_Access WHERE AD_Role_ID=? and AD_Window_ID=?");
int count = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),roleid,windowid);
int AD_Backup_ID = -1;
String Object_Status = null;
if (count>0){
Object_Status = "Update";
sqlB = new StringBuffer ("UPDATE AD_Window_Access ")
.append( "SET isActive = '" + atts.getValue("isActive") )
.append( "', isReadWrite = '" + atts.getValue("isReadWrite") )
.append( "' WHERE AD_Role_ID = " + roleid )
.append( " and AD_Window_ID = " + windowid );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
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")
.append( "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " )
.append( "AD_Role_ID, AD_Window_ID, isActive, isReadWrite) " )
.append( "VALUES(" )
.append( " "+ Env.getAD_Client_ID(ctx) )
.append( ", "+ Env.getAD_Org_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", " + roleid )
.append( ", " + windowid )
.append( ", '" + atts.getValue("isActive") )
.append( "', '" + atts.getValue("isReadWrite")+"')" );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1)
log.info("Insert to window access failed");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Window_ID = Env.getContextAsInt(ctx, X_AD_Window.COLUMNNAME_AD_Window_ID);
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
AttributesImpl atts = new AttributesImpl();
createWindowAccessBinding(atts, AD_Window_ID, AD_Role_ID);
document.startElement("", "", "windowaccess", atts);
document.endElement("", "", "windowaccess");
}
private 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", isReadWrite);
return atts;
}
}

View File

@ -0,0 +1,275 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.PackOut;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.MWindow;
import org.compiere.model.X_AD_Preference;
import org.compiere.model.X_AD_Tab;
import org.compiere.model.X_AD_Window;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class WindowElementHandler extends AbstractElementHandler {
private TabElementHandler tabHandler = new TabElementHandler();
private PreferenceElementHandler preferenceHandler = new PreferenceElementHandler();
public void startElement(Properties ctx, Element element)
throws SAXException {
// Check namespace.
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("Name"));
String entitytype = atts.getValue("EntityType");
if (entitytype.compareTo("U") == 0 || entitytype.compareTo("D") == 0
&& getUpdateMode(ctx).compareTo("true") == 0) {
String name = atts.getValue("Name");
int id = get_ID(ctx, "AD_Window", name);
MWindow m_Window = new MWindow(ctx, id, getTrxName(ctx));
String Object_Status = null;
int AD_Backup_ID = -1;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_Window", m_Window);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
m_Window.setName(name);
name = atts.getValue("ADImageNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Image", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Window.setAD_Image_ID(id);
}
name = atts.getValue("ADColorNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Color", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
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"));
if (m_Window.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Window.getName(), "Window", m_Window
.get_ID(), AD_Backup_ID, Object_Status, "AD_Window",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Window"));
} else {
record_log(ctx, 0, m_Window.getName(), "Window", m_Window
.get_ID(), AD_Backup_ID, Object_Status, "AD_Window",
get_IDWithColumn(ctx, "AD_Table", "TableName",
"AD_Window"));
throw new POSaveFailedException("Window");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Window_ID = Env.getContextAsInt(ctx, "AD_Window_ID");
PackOut packOut = (PackOut) ctx.get("PackOutProcess");
X_AD_Window m_Window = new X_AD_Window(ctx, AD_Window_ID, null);
AttributesImpl atts = new AttributesImpl();
createWindowBinding(atts, m_Window);
document.startElement("", "", "window", atts);
// Tab Tag
String sql = "SELECT * FROM AD_TAB WHERE AD_WINDOW_ID = "
+ AD_Window_ID;
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String tableSql = "SELECT Name FROM AD_Table WHERE AD_Table_ID=?";
int table_id = rs.getInt("AD_TABLE_ID");
String name = rs.getString("NAME");
String tablename = DB.getSQLValueString(null, tableSql,
table_id);
packOut.createTable(rs.getInt("AD_Table_ID"), atts, document);
createTab(ctx, document, rs.getInt("AD_Tab_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
} catch (Exception e) {
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
if (e instanceof SAXException)
throw (SAXException) e;
else if (e instanceof SQLException)
throw new DatabaseAccessException("Window", e);
else if (e instanceof RuntimeException)
throw (RuntimeException) e;
else
throw new RuntimeException("Window", e);
} finally {
try {
if (pstmt != null)
pstmt.close();
} catch (Exception e) {
}
pstmt = null;
}
// Loop tags.
document.endElement("", "", "window");
// Preference Tag
sql = "SELECT * FROM AD_PREFERENCE WHERE AD_WINDOW_ID = "
+ AD_Window_ID;
pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
createPreference(ctx, document, rs.getInt("AD_Preference_ID"));
}
rs.close();
pstmt.close();
pstmt = null;
} catch (Exception e) {
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
if (e instanceof SAXException)
throw (SAXException) e;
else if (e instanceof SQLException)
throw new DatabaseAccessException("Window", e);
else if (e instanceof RuntimeException)
throw (RuntimeException) e;
else
throw new RuntimeException("Window", e);
} finally {
try {
if (pstmt != null)
pstmt.close();
} catch (Exception e) {
}
pstmt = null;
}
}
private void createPreference(Properties ctx, TransformerHandler document,
int AD_Preference_ID) throws SAXException {
Env.setContext(ctx, X_AD_Preference.COLUMNNAME_AD_Preference_ID,
AD_Preference_ID);
preferenceHandler.create(ctx, document);
ctx.remove(X_AD_Preference.COLUMNNAME_AD_Preference_ID);
}
private void createTab(Properties ctx, TransformerHandler document,
int AD_Tab_ID) throws SAXException {
Env.setContext(ctx, X_AD_Tab.COLUMNNAME_AD_Tab_ID, AD_Tab_ID);
tabHandler.create(ctx, document);
ctx.remove(X_AD_Tab.COLUMNNAME_AD_Tab_ID);
}
private 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;
}
}

View File

@ -0,0 +1,202 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.model.X_AD_Workbench;
import org.compiere.model.X_AD_WorkbenchWindow;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class WorkbenchElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
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 && getUpdateMode(ctx).compareTo("true") == 0 ) {
int id = get_ID(ctx, "AD_Workbench", name);
X_AD_Workbench m_Workbench = new X_AD_Workbench(ctx, id, getTrxName(ctx));
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "AD_Workbench",m_Workbench);
Object_Status = "Update";
}
else{
Object_Status = "New";
AD_Backup_ID =0;
}
int tableid = get_IDWithColumn(ctx, "AD_Table", "TableName", atts.getValue("ADTableNameID"));
int columnid = get_IDWithMasterAndColumn (ctx, "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(getTrxName(ctx)) == true){
record_log (ctx, 1, m_Workbench.getName(),"Workbench", m_Workbench.get_ID(),AD_Backup_ID, Object_Status,"AD_Workbench",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Workbench"));
}
else{
record_log (ctx, 0, m_Workbench.getName(),"Workbench", m_Workbench.get_ID(),AD_Backup_ID, Object_Status,"AD_Workbench",get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Workbench"));
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Workbench_ID = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workbench_ID);
X_AD_Workbench m_Workbench = new X_AD_Workbench (ctx, AD_Workbench_ID, null);
AttributesImpl atts = new AttributesImpl();
createWorkbenchBinding(atts,m_Workbench);
document.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, getTrxName(ctx));
try {
ResultSet rsP = pstmtP.executeQuery();
while (rsP.next())
{
X_AD_WorkbenchWindow m_Workbenchwindow = new X_AD_WorkbenchWindow (ctx, rsP.getInt("AD_Workbench_Window_ID"), null);
atts = createWorkbenchWindowBinding(atts,m_Workbenchwindow);
document.startElement("","","workbenchwindow",atts);
document.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;
}
document.endElement("","","workbench");
}
private 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;
}
private 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;
}
}

View File

@ -0,0 +1,136 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.compiere.model.X_AD_Role;
import org.compiere.model.X_AD_Workflow;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class WorkflowAccessElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
log.info(elementValue);
int roleid =0;
int workflowid =0;
StringBuffer sqlB = null;
Attributes atts = element.attributes;
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(getTrxName(ctx),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(getTrxName(ctx),sqlB.toString(),name);
}
sqlB = new StringBuffer ("SELECT count(*) FROM AD_Workflow_Access WHERE AD_Role_ID=? and AD_Workflow_ID=?");
int count = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),roleid,workflowid);
int AD_Backup_ID = -1;
String Object_Status = null;
if (count>0){
Object_Status = "Update";
sqlB = new StringBuffer ("UPDATE AD_Workflow_Access ")
.append( "SET isActive = '" + atts.getValue("isActive") )
.append( "', isReadWrite = '" + atts.getValue("isReadWrite") )
.append( "' WHERE AD_Role_ID = " + roleid )
.append( " and AD_Workflow_ID = " + workflowid );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1) {
log.info("Update to workflow access failed");
throw new DatabaseAccessException("Update to workflow access failed");
}
}
else{
Object_Status = "New";
AD_Backup_ID =0;
sqlB = new StringBuffer ("Insert INTO AD_Workflow_Access")
.append( "(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, " )
.append( "AD_Role_ID, AD_Workflow_ID, isActive, isReadWrite) " )
.append( "VALUES(" )
.append( " "+ Env.getAD_Client_ID(ctx) )
.append( ", "+ Env.getAD_Org_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", "+ Env.getAD_User_ID(ctx) )
.append( ", " + roleid )
.append( ", " + workflowid )
.append( ", '" + atts.getValue("isActive") )
.append( "', '" + atts.getValue("isReadWrite")+"')" );
int no = DB.executeUpdate (sqlB.toString(), getTrxName(ctx));
if (no == -1) {
log.info("Insert to workflow access failed");
throw new DatabaseAccessException("Insert to workflow access failed");
}
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Workflow_ID = Env.getContextAsInt(ctx, X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
AttributesImpl atts = new AttributesImpl();
createWorkflowAccessBinding(atts, AD_Workflow_ID, AD_Role_ID);
document.startElement("", "", "workflowaccess", atts);
document.endElement("", "", "workflowaccess");
}
private 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", isReadWrite);
return atts;
}
}

View File

@ -0,0 +1,370 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.DatabaseAccessException;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.model.X_AD_WF_NextCondition;
import org.compiere.model.X_AD_WF_Node;
import org.compiere.model.X_AD_WF_NodeNext;
import org.compiere.model.X_AD_Workflow;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.wf.MWorkflow;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class WorkflowElementHandler extends AbstractElementHandler {
private WorkflowNodeElementHandler nodeHandler = new WorkflowNodeElementHandler();
private WorkflowNodeNextElementHandler nodeNextHandler = new WorkflowNodeNextElementHandler();
private WorkflowNodeNextConditionElementHandler nextConditionHandler = new WorkflowNodeNextConditionElementHandler();
public void startElement(Properties ctx, Element element)
throws SAXException {
Attributes atts = element.attributes;
String elementValue = element.getElementValue();
log.info(elementValue + " " + atts.getValue("Name"));
String entitytype = atts.getValue("EntityType");
log.info("entitytype " + atts.getValue("EntityType"));
if (entitytype.equals("U") || entitytype.equals("D")
&& getUpdateMode(ctx).equals("true")) {
log.info("entitytype is a U or D");
String workflowName = atts.getValue("Name");
int id = get_IDWithColumn(ctx, "AD_Workflow", "name", workflowName);
MWorkflow m_Workflow = new MWorkflow(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_Workflow", m_Workflow);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
String name = atts.getValue("ADWorkflowResponsibleNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_WF_Responsible", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Workflow.setAD_WF_Responsible_ID(id);
}
name = atts.getValue("ADTableNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Table", "TableName", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Workflow.setAD_Table_ID(id);
}
name = atts.getValue("ADWorkflowProcessorNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_WorkflowProcessor", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_Workflow.setAD_WorkflowProcessor_ID(id);
}
m_Workflow.setName(workflowName);
m_Workflow.setAccessLevel(atts.getValue("AccessLevel"));
m_Workflow.setDescription(atts.getValue("Description").replaceAll(
"'", "''").replaceAll(",", ""));
m_Workflow.setHelp(atts.getValue("Help").replaceAll("'", "''")
.replaceAll(",", ""));
m_Workflow.setDurationUnit(atts.getValue("DurationUnit"));
m_Workflow.setAuthor(atts.getValue("Author"));
m_Workflow.setVersion(Integer.valueOf(atts.getValue("Version")));
m_Workflow.setPriority(Integer.valueOf(atts.getValue("Priority")));
m_Workflow.setLimit(Integer.valueOf(atts.getValue("Limit")));
m_Workflow.setDuration(Integer.valueOf(atts.getValue("Duration")));
m_Workflow.setCost(Integer.valueOf(atts.getValue("Cost")));
m_Workflow.setWorkingTime(Integer.valueOf(atts
.getValue("WorkingTime")));
m_Workflow.setWaitingTime(Integer.valueOf(atts
.getValue("WaitingTime")));
m_Workflow.setPublishStatus(atts.getValue("PublishStatus"));
m_Workflow.setWorkflowType(atts.getValue("WorkflowType"));
m_Workflow.setDocValueLogic(atts.getValue("DocValueLogic"));
m_Workflow.setIsValid(atts.getValue("isValid") != null ? Boolean
.valueOf(atts.getValue("isValid")).booleanValue() : true);
m_Workflow.setEntityType(atts.getValue("EntityType"));
m_Workflow.setAD_WF_Node_ID(-1);
// log.info("in3");
getDocumentAttributes(ctx).clear();
log.info("about to execute m_Workflow.save");
if (m_Workflow.save(getTrxName(ctx)) == true) {
log.info("m_Workflow save success");
record_log(ctx, 1, m_Workflow.getName(), "Workflow", m_Workflow
.get_ID(), AD_Backup_ID, Object_Status, "AD_Workflow",
get_IDWithColumn(ctx, "AD_Workflow", "Name",
"AD_Workflow"));
} else {
log.info("m_Workflow save failure");
record_log(ctx, 0, m_Workflow.getName(), "Workflow", m_Workflow
.get_ID(), AD_Backup_ID, Object_Status, "AD_Workflow",
get_IDWithColumn(ctx, "AD_Workflow", "Name",
"AD_Workflow"));
throw new POSaveFailedException("MWorkflow");
}
} else {
log.info("entitytype is not a U or D");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_Workflow_ID = Env.getContextAsInt(ctx,
X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID);
String sql = "SELECT Name FROM AD_Workflow WHERE AD_Workflow_ID= "
+ AD_Workflow_ID;
int ad_wf_nodenext_id = 0;
int ad_wf_nodenextcondition_id = 0;
AttributesImpl atts = new AttributesImpl();
PreparedStatement pstmt = null;
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
try {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
X_AD_Workflow m_Workflow = new X_AD_Workflow(ctx,
AD_Workflow_ID, null);
X_AD_WF_Node m_WF_Node = null;
createWorkflowBinding(atts, m_Workflow);
document.startElement("", "", "workflow", atts);
String sql1 = "SELECT * FROM AD_WF_Node WHERE AD_Workflow_ID = "
+ AD_Workflow_ID;
PreparedStatement pstmt1 = null;
pstmt1 = DB.prepareStatement(sql1, getTrxName(ctx));
try {
// Generated workflowNodeNext(s) and
// workflowNodeNextCondition(s)
ResultSet rs1 = pstmt1.executeQuery();
while (rs1.next()) {
int nodeId = rs1.getInt("AD_WF_Node_ID");
createNode(ctx, document, nodeId);
ad_wf_nodenext_id = 0;
sql = "SELECT ad_wf_nodenext_id from ad_wf_nodenext WHERE ad_wf_node_id = ?";
ad_wf_nodenext_id = DB.getSQLValue(null, sql, m_WF_Node
.getAD_WF_Node_ID());
if (ad_wf_nodenext_id > 0) {
createNodeNext(ctx, document, ad_wf_nodenext_id);
ad_wf_nodenextcondition_id = 0;
sql = "SELECT ad_wf_nextcondition_id from ad_wf_nextcondition WHERE ad_wf_nodenext_id = ?";
ad_wf_nodenextcondition_id = DB.getSQLValue(null,
sql, m_WF_Node.getAD_WF_Node_ID());
log
.info("ad_wf_nodenextcondition_id: "
+ String
.valueOf(ad_wf_nodenextcondition_id));
if (ad_wf_nodenextcondition_id > 0) {
createNodeNextCondition(ctx, document,
ad_wf_nodenextcondition_id);
}
}
}
rs1.close();
pstmt1.close();
pstmt1 = null;
} finally {
try {
if (pstmt1 != null)
pstmt1.close();
} catch (Exception e) {
}
pstmt1 = null;
}
document.endElement("", "", "workflow");
}
rs.close();
pstmt.close();
pstmt = null;
} catch (Exception e) {
log.log(Level.SEVERE, "Workflow", e);
if (e instanceof SAXException)
throw (SAXException) e;
else if (e instanceof SQLException)
throw new DatabaseAccessException("Workflow", e);
else
throw new RuntimeException("Workflow", e);
} finally {
try {
if (pstmt != null)
pstmt.close();
} catch (Exception e) {
}
pstmt = null;
}
}
private void createNodeNextCondition(Properties ctx,
TransformerHandler document, int ad_wf_nodenextcondition_id)
throws SAXException {
Env.setContext(ctx,
X_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID,
ad_wf_nodenextcondition_id);
nextConditionHandler.create(ctx, document);
ctx.remove(X_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID);
}
private void createNodeNext(Properties ctx, TransformerHandler document,
int ad_wf_nodenext_id) throws SAXException {
Env.setContext(ctx, X_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID,
ad_wf_nodenext_id);
nodeNextHandler.create(ctx, document);
ctx.remove(X_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID);
}
private void createNode(Properties ctx, TransformerHandler document,
int AD_WF_Node_ID) throws SAXException {
Env.setContext(ctx, X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID,
AD_WF_Node_ID);
nodeHandler.create(ctx, document);
ctx.remove(X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID);
}
private AttributesImpl createWorkflowBinding(AttributesImpl atts,
X_AD_Workflow m_Workflow) {
String sql = null;
String name = null;
atts.clear();
atts.addAttribute("", "", "Name", "CDATA",
(m_Workflow.getName() != null ? m_Workflow.getName() : ""));
if (m_Workflow.getAD_Table_ID() > 0) {
sql = "SELECT Name FROM AD_Table WHERE AD_Table_ID=?";
name = DB.getSQLValueString(null, sql, m_Workflow.getAD_Table_ID());
atts.addAttribute("", "", "ADTableNameID", "CDATA", name);
} else
atts.addAttribute("", "", "ADTableNameID", "CDATA", "");
if (m_Workflow.getAD_WF_Node_ID() > 0) {
sql = "SELECT Name FROM AD_WF_Node WHERE AD_WF_Node_ID=?";
name = DB.getSQLValueString(null, sql, m_Workflow
.getAD_WF_Node_ID());
atts.addAttribute("", "", "ADWorkflowNodeNameID", "CDATA", name);
} else
atts.addAttribute("", "", "ADWorkflowNodeNameID", "CDATA", "");
if (m_Workflow.getAD_WF_Responsible_ID() > 0) {
sql = "SELECT Name FROM AD_WF_Responsible WHERE AD_WF_Responsible_ID=?";
name = DB.getSQLValueString(null, sql, m_Workflow
.getAD_WF_Responsible_ID());
atts.addAttribute("", "", "ADWorkflowResponsibleNameID", "CDATA",
name);
} else
atts.addAttribute("", "", "ADWorkflowResponsibleNameID", "CDATA",
"");
if (m_Workflow.getAD_WorkflowProcessor_ID() > 0) {
sql = "SELECT Name FROM AD_WorkflowProcessor_ID WHERE AD_WorkflowProcessor_ID=?";
name = DB.getSQLValueString(null, sql, m_Workflow
.getAD_WorkflowProcessor_ID());
atts.addAttribute("", "", "ADWorkflowProcessorNameID", "CDATA",
name);
} else
atts.addAttribute("", "", "ADWorkflowProcessorNameID", "CDATA", "");
atts.addAttribute("", "", "AccessLevel", "CDATA", (m_Workflow
.getAccessLevel() != null ? m_Workflow.getAccessLevel() : ""));
atts
.addAttribute("", "", "DurationUnit", "CDATA", (m_Workflow
.getDurationUnit() != null ? m_Workflow
.getDurationUnit() : ""));
atts.addAttribute("", "", "Help", "CDATA",
(m_Workflow.getHelp() != null ? m_Workflow.getHelp() : ""));
atts.addAttribute("", "", "Description", "CDATA", (m_Workflow
.getDescription() != null ? m_Workflow.getDescription() : ""));
atts.addAttribute("", "", "EntityType", "CDATA", (m_Workflow
.getEntityType() != null ? m_Workflow.getEntityType() : ""));
atts.addAttribute("", "", "Author", "CDATA",
(m_Workflow.getAuthor() != null ? m_Workflow.getAuthor() : ""));
atts.addAttribute("", "", "Version", "CDATA", (""
+ m_Workflow.getVersion() != null ? ""
+ m_Workflow.getVersion() : ""));
// FIXME: Handle dates
// atts.addAttribute("","","ValidFrom","CDATA",(m_Workflow.getValidFrom
// ().toGMTString() != null ?
// m_Workflow.getValidFrom().toGMTString():""));
// atts.addAttribute("","","ValidTo","CDATA",(m_Workflow.getValidTo
// ().toGMTString() != null ?
// m_Workflow.getValidTo().toGMTString():""));
atts.addAttribute("", "", "Priority", "CDATA", ("" + m_Workflow
.getPriority()));
atts.addAttribute("", "", "Limit", "CDATA",
("" + m_Workflow.getLimit()));
atts.addAttribute("", "", "Duration", "CDATA", ("" + m_Workflow
.getDuration()));
atts.addAttribute("", "", "Cost", "CDATA", ("" + m_Workflow.getCost()));
atts.addAttribute("", "", "WorkingTime", "CDATA", ("" + m_Workflow
.getWorkingTime()));
atts.addAttribute("", "", "WaitingTime", "CDATA", ("" + m_Workflow
.getWaitingTime()));
atts.addAttribute("", "", "PublishStatus", "CDATA", (m_Workflow
.getPublishStatus() != null ? m_Workflow.getPublishStatus()
: ""));
atts
.addAttribute("", "", "WorkflowType", "CDATA", (m_Workflow
.getWorkflowType() != null ? m_Workflow
.getWorkflowType() : ""));
atts.addAttribute("", "", "DocValueLogic", "CDATA", (m_Workflow
.getDocValueLogic() != null ? m_Workflow.getDocValueLogic()
: ""));
atts.addAttribute("", "", "isValid", "CDATA",
(m_Workflow.isValid() == true ? "true" : "false"));
// Doesn't appear to be necessary
// atts.addAttribute("","","SetupTime","CDATA",(""+m_Workflow.getSetupTime()
// != null ? ""+m_Workflow.getSetupTime():""));
return atts;
}
}

View File

@ -0,0 +1,345 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.math.BigDecimal;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_WF_Node;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.wf.MWFNode;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class WorkflowNodeElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
Attributes atts = element.attributes;
String elementValue = element.getElementValue();
log.info(elementValue + " " + atts.getValue("Name"));
String entitytype = atts.getValue("EntityType");
log.info("entitytype " + atts.getValue("EntityType"));
if (entitytype.equals("U") || entitytype.equals("D")
&& getUpdateMode(ctx).equals("true")) {
log.info("entitytype is a U or D");
String workflowName = atts.getValue("ADWorkflowNameID");
int workflowId = get_IDWithColumn(ctx, "AD_Workflow", "name",
workflowName);
if (workflowId <= 0) {
element.defer = true;
return;
}
String workflowNodeName = atts.getValue("Name");
StringBuffer sqlB = new StringBuffer(
"SELECT ad_wf_node_id FROM AD_WF_Node WHERE AD_Workflow_ID=? and Name =?");
int id = DB.getSQLValue(getTrxName(ctx), sqlB.toString(),
workflowId, workflowNodeName);
MWFNode m_WFNode = new MWFNode(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_WF_Node", m_WFNode);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
m_WFNode.setName(workflowNodeName);
m_WFNode.setAD_Workflow_ID(workflowId);
String name = atts.getValue("ADProcessNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Process", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_WFNode.setAD_Process_ID(id);
}
name = atts.getValue("ADFormNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Form", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_WFNode.setAD_Form_ID(id);
}
name = atts.getValue("ADWorkflowResponsibleNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_WF_Responsible", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_WFNode.setAD_WF_Responsible_ID(id);
}
name = atts.getValue("ADWindowNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Window", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_WFNode.setAD_Window_ID(id);
}
name = atts.getValue("ADImageNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_Image", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_WFNode.setAD_Image_ID(id);
}
name = atts.getValue("ADWorkflowBlockNameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_WF_Block", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_WFNode.setAD_WF_Block_ID(id);
}
/*
* FIXME: Do we need TaskName ? if
* (atts.getValue("ADTaskNameID")!=null){ String name =
* atts.getValue("ADTaskNameID"); sqlB = new StringBuffer ("SELECT
* AD_Task_ID FROM AD_Task WHERE Name= ?"); taskid =
* DB.getSQLValue(m_trxName,sqlB.toString(),name); }
*/
m_WFNode.setEntityType(atts.getValue("EntityType"));
m_WFNode.setAction(atts.getValue("Action"));
m_WFNode.setDocAction(atts.getValue("DocAction"));
m_WFNode.setDescription(atts.getValue("Description").replaceAll(
"'", "''").replaceAll(",", ""));
m_WFNode.setJoinElement(atts.getValue("JoinElement"));
m_WFNode.setSplitElement(atts.getValue("SplitElement"));
m_WFNode.setXPosition(Integer.valueOf(atts.getValue("XPosition")));
m_WFNode.setYPosition(Integer.valueOf(atts.getValue("YPosition")));
m_WFNode.setWaitingTime(Integer.valueOf(atts
.getValue("WaitingTime")));
m_WFNode.setWaitTime(Integer.valueOf(atts.getValue("WaitTime")));
m_WFNode.setWorkingTime(Integer.valueOf(atts
.getValue("WorkingTime")));
m_WFNode.setCost(new BigDecimal(atts.getValue("Cost")));
m_WFNode.setDuration(Integer.valueOf(atts.getValue("Duration")));
m_WFNode.setPriority(Integer.valueOf(atts.getValue("Priority")));
// FIXME: Failing for some reason on a ""
// m_WFNode.setStartMode(atts.getValue("StartMode"));
// FIXME: Failing for some reason on a ""
// m_WFNode.setSubflowExecution(atts.getValue("SubflowExecution"));
m_WFNode.setIsCentrallyMaintained(Boolean.valueOf(
atts.getValue("IsCentrallyMaintained")).booleanValue());
m_WFNode.setDynPriorityChange(new BigDecimal(atts
.getValue("DynPriorityChange")));
// m_WFNode.setAccessLevel (atts.getValue("AccessLevel"));
// FIXME: Failing for some reason on a ""
// m_WFNode.setDynPriorityUnit (atts.getValue("DynPriorityUnit"));
m_WFNode.setIsActive(atts.getValue("isActive") != null ? Boolean
.valueOf(atts.getValue("isActive")).booleanValue() : true);
// log.info("in3");
getDocumentAttributes(ctx).clear();
log.info("about to execute m_WFNode.save");
if (m_WFNode.save(getTrxName(ctx)) == true) {
log.info("m_WFNode save success");
record_log(ctx, 1, m_WFNode.getName(), "WFNode", m_WFNode
.get_ID(), AD_Backup_ID, Object_Status, "AD_WF_Node",
get_IDWithColumn(ctx, "AD_WF_Node", "Name",
"AD_WF_Node"));
} else {
log.info("m_WFNode save failure");
record_log(ctx, 0, m_WFNode.getName(), "WFNode", m_WFNode
.get_ID(), AD_Backup_ID, Object_Status, "AD_WF_Node",
get_IDWithColumn(ctx, "AD_WF_Node", "Name",
"AD_WF_Node"));
throw new POSaveFailedException("WorkflowNode");
}
} else {
log.info("entitytype is not a U or D");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int AD_WF_Node_ID = Env.getContextAsInt(ctx,
X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID);
AttributesImpl atts = new AttributesImpl();
X_AD_WF_Node m_WF_Node = new X_AD_WF_Node(ctx, AD_WF_Node_ID,
getTrxName(ctx));
createWorkflowNodeBinding(atts, m_WF_Node);
document.startElement("", "", "workflowNode", atts);
document.endElement("", "", "workflowNode");
}
private AttributesImpl createWorkflowNodeBinding(AttributesImpl atts,
X_AD_WF_Node m_WF_Node) {
String sql = null;
String name = null;
atts.clear();
atts.addAttribute("", "", "Name", "CDATA",
(m_WF_Node.getName() != null ? m_WF_Node.getName() : ""));
if (m_WF_Node.getAD_Workflow_ID() > 0) {
sql = "SELECT Name FROM AD_Workflow WHERE AD_Workflow_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_Node
.getAD_Workflow_ID());
atts.addAttribute("", "", "ADWorkflowNameID", "CDATA", name);
} else
atts.addAttribute("", "", "ADWorkflowNameID", "CDATA", "");
if (m_WF_Node.getAD_Window_ID() > 0) {
sql = "SELECT Name FROM AD_Window WHERE AD_Window_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_Node.getAD_Window_ID());
}
if (name != null)
atts.addAttribute("", "", "ADWindowNameID", "CDATA", name);
else
atts.addAttribute("", "", "ADWindowNameID", "CDATA", "");
if (m_WF_Node.getAD_Task_ID() > 0) {
sql = "SELECT Name FROM AD_Task WHERE AD_Task_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_Node.getAD_Task_ID());
}
if (name != null)
atts.addAttribute("", "", "ADTaskNameID", "CDATA", name);
else
atts.addAttribute("", "", "ADTaskNameID", "CDATA", "");
if (m_WF_Node.getAD_Process_ID() > 0) {
sql = "SELECT Name FROM AD_Process WHERE AD_Process_ID=?";
name = DB
.getSQLValueString(null, sql, m_WF_Node.getAD_Process_ID());
atts.addAttribute("", "", "ADProcessNameID", "CDATA", name);
} else
atts.addAttribute("", "", "ADProcessNameID", "CDATA", "");
if (m_WF_Node.getAD_Form_ID() > 0) {
sql = "SELECT Name FROM AD_Form WHERE AD_Form_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_Node.getAD_Form_ID());
atts.addAttribute("", "", "ADFormNameID", "CDATA", name);
} else
atts.addAttribute("", "", "ADFormNameID", "CDATA", "");
if (m_WF_Node.getAD_WF_Block_ID() > 0) {
sql = "SELECT Name FROM AD_WF_Block WHERE AD_WF_Block_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_Node
.getAD_WF_Block_ID());
atts.addAttribute("", "", "ADWorkflowBlockNameID", "CDATA", name);
} else
atts.addAttribute("", "", "ADWorkflowBlockNameID", "CDATA", "");
if (m_WF_Node.getAD_WF_Responsible_ID() > 0) {
sql = "SELECT Name FROM AD_WF_Responsible WHERE AD_WF_Responsible_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_Node
.getAD_WF_Responsible_ID());
atts.addAttribute("", "", "ADWorkflowResponsibleNameID", "CDATA",
name);
} else
atts.addAttribute("", "", "ADWorkflowResponsibleNameID", "CDATA",
"");
if (m_WF_Node.getAD_Image_ID() > 0) {
sql = "SELECT Name FROM AD_Image WHERE AD_Image_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_Node.getAD_Image_ID());
}
if (name != null)
atts.addAttribute("", "", "ADImageNameID", "CDATA", name);
else
atts.addAttribute("", "", "ADImageNameID", "CDATA", "");
if (m_WF_Node.getAD_Column_ID() > 0) {
sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_Node.getAD_Column_ID());
atts.addAttribute("", "", "ADColumnNameID", "CDATA", name);
} else
atts.addAttribute("", "", "ADColumnNameID", "CDATA", "");
atts.addAttribute("", "", "isActive", "CDATA",
(m_WF_Node.isActive() == true ? "true" : "false"));
atts.addAttribute("", "", "Description", "CDATA", (m_WF_Node
.getDescription() != null ? m_WF_Node.getDescription() : ""));
atts.addAttribute("", "", "Help", "CDATA",
(m_WF_Node.getHelp() != null ? m_WF_Node.getHelp() : ""));
atts.addAttribute("", "", "isCentrallyMaintained", "CDATA", (m_WF_Node
.isCentrallyMaintained() == true ? "true" : "false"));
atts.addAttribute("", "", "Action", "CDATA",
(m_WF_Node.getAction() != null ? m_WF_Node.getAction() : ""));
atts.addAttribute("", "", "EntityType", "CDATA", (m_WF_Node
.getEntityType() != null ? m_WF_Node.getEntityType() : ""));
atts.addAttribute("", "", "XPosition", "CDATA", ("" + m_WF_Node
.getXPosition()));
atts.addAttribute("", "", "YPosition", "CDATA", ("" + m_WF_Node
.getYPosition()));
atts.addAttribute("", "", "SubflowExecution", "CDATA", (m_WF_Node
.getSubflowExecution() != null ? m_WF_Node
.getSubflowExecution() : ""));
atts.addAttribute("", "", "StartMode", "CDATA", (m_WF_Node
.getStartMode() != null ? m_WF_Node.getStartMode() : ""));
atts.addAttribute("", "", "Priority", "CDATA", ("" + m_WF_Node
.getPriority()));
atts.addAttribute("", "", "Duration", "CDATA", ("" + m_WF_Node
.getDuration()));
atts.addAttribute("", "", "Cost", "CDATA", ("" + m_WF_Node.getCost()));
atts.addAttribute("", "", "WorkingTime", "CDATA", ("" + m_WF_Node
.getWorkingTime()));
atts.addAttribute("", "", "WaitingTime", "CDATA", ("" + m_WF_Node
.getWaitingTime()));
atts.addAttribute("", "", "JoinElement", "CDATA", (m_WF_Node
.getJoinElement() != null ? m_WF_Node.getJoinElement() : ""));
atts.addAttribute("", "", "SplitElement", "CDATA", (m_WF_Node
.getSplitElement() != null ? m_WF_Node.getSplitElement() : ""));
atts.addAttribute("", "", "WaitTime", "CDATA", ("" + m_WF_Node
.getWaitTime()));
atts.addAttribute("", "", "AttributeName", "CDATA",
(m_WF_Node.getAttributeName() != null ? m_WF_Node
.getAttributeName() : ""));
atts.addAttribute("", "", "AttributeValue", "CDATA", (m_WF_Node
.getAttributeValue() != null ? m_WF_Node.getAttributeValue()
: ""));
atts.addAttribute("", "", "DocAction", "CDATA", (m_WF_Node
.getDocAction() != null ? m_WF_Node.getDocAction() : ""));
atts.addAttribute("", "", "DynPriorityUnit", "CDATA", (m_WF_Node
.getDynPriorityUnit() != null ? m_WF_Node.getDynPriorityUnit()
: ""));
atts.addAttribute("", "", "DynPriorityChange", "CDATA", ("" + m_WF_Node
.getDynPriorityChange()));
return atts;
}
}

View File

@ -0,0 +1,260 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_WF_NextCondition;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.wf.MWFNextCondition;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class WorkflowNodeNextConditionElementHandler extends
AbstractElementHandler {
public void startElement(Properties ctx, Element element)
throws SAXException {
Attributes atts = element.attributes;
String entitytype = atts.getValue("EntityType");
log.info("entitytype " + atts.getValue("EntityType"));
if (entitytype.equals("U") || entitytype.equals("D")
&& getUpdateMode(ctx).equals("true")) {
log.info("entitytype is a U or D");
String workflowName = atts.getValue("ADWorkflowNameID");
int workflowId = get_IDWithColumn(ctx, "AD_Workflow", "name",
workflowName);
if (workflowId <= 0) {
element.defer = true;
return;
}
String workflowNodeName = atts.getValue("ADWorkflowNodeNameID");
String workflowNodeNextName = atts
.getValue("ADWorkflowNodeNextNameID");
StringBuffer sqlB = new StringBuffer(
"SELECT ad_wf_node_id FROM AD_WF_Node WHERE AD_Workflow_ID=? and Name =?");
int wfNodeId = DB.getSQLValue(getTrxName(ctx), sqlB.toString(),
workflowId, workflowNodeName);
if (wfNodeId <= 0) {
element.defer = true;
return;
}
int wfNodeNextId = DB.getSQLValue(getTrxName(ctx), sqlB.toString(),
workflowId, workflowNodeNextName);
if (wfNodeNextId <= 0) {
element.defer = true;
return;
}
sqlB = new StringBuffer(
"SELECT ad_wf_nodenext_id FROM AD_WF_NodeNext WHERE ad_wf_node_id =? and ad_wf_next_id =?");
int wfNodeNextTablePKId = DB.getSQLValue(getTrxName(ctx), sqlB
.toString(), wfNodeId, wfNodeNextId);
sqlB = new StringBuffer(
"SELECT ad_wf_nextcondition_id FROM AD_WF_NextCondition WHERE ad_wf_nodenext_id =?");
int id = DB.getSQLValue(getTrxName(ctx), sqlB.toString(),
wfNodeNextTablePKId);
MWFNextCondition m_WFNodeNextCondition = new MWFNextCondition(ctx,
id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_WF_NextCondition",
m_WFNodeNextCondition);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
sqlB = new StringBuffer(
"SELECT AD_Column.ad_column_id FROM AD_Column, AD_Table WHERE AD_Column.ad_table_id = AD_Table.ad_table_id and AD_Table.name = '"
+ atts.getValue("ADTableNameID")
+ "' and AD_Column.name = ?");
// int columnId =
// DB.getSQLValue(m_trxName,sqlB.toString(),atts.getValue("ADTableNameID"),
// atts.getValue("ADColumnNameID"));
int columnId = DB.getSQLValue(getTrxName(ctx), sqlB.toString(),
atts.getValue("ADColumnNameID"));
m_WFNodeNextCondition.setAD_Column_ID(columnId);
m_WFNodeNextCondition.setAD_WF_NodeNext_ID(wfNodeNextTablePKId);
m_WFNodeNextCondition
.setIsActive(atts.getValue("isActive") != null ? Boolean
.valueOf(atts.getValue("isActive")).booleanValue()
: true);
m_WFNodeNextCondition.setAD_WF_NodeNext_ID(wfNodeNextTablePKId);
m_WFNodeNextCondition.setSeqNo(Integer.valueOf(atts
.getValue("SeqNo")));
m_WFNodeNextCondition.setEntityType(atts.getValue("EntityType"));
m_WFNodeNextCondition.setAndOr(atts.getValue("AndOr"));
m_WFNodeNextCondition.setOperation(atts.getValue("Operation"));
m_WFNodeNextCondition.setValue(atts.getValue("Value"));
m_WFNodeNextCondition.setValue2(atts.getValue("Value2"));
getDocumentAttributes(ctx).clear();
log.info("about to execute m_WFNodeNextCondition.save");
if (m_WFNodeNextCondition.save(getTrxName(ctx)) == true) {
log.info("m_WFNodeNextCondition save success");
record_log(
ctx,
1,
String.valueOf(m_WFNodeNextCondition.get_ID()),
"WFNextCondition",
m_WFNodeNextCondition.get_ID(),
AD_Backup_ID,
Object_Status,
"AD_WF_NextCondition",
get_IDWithColumn(ctx, "AD_WF_NextCondition",
"ad_wf_nextcondition_id", "AD_WF_NextCondition"));
} else {
log.info("m_WFNodeNextCondition save failure");
record_log(
ctx,
0,
String.valueOf(m_WFNodeNextCondition.get_ID()),
"WFNextCondition",
m_WFNodeNextCondition.get_ID(),
AD_Backup_ID,
Object_Status,
"AD_WF_NextCondition",
get_IDWithColumn(ctx, "AD_WF_NextCondition",
"ad_wf_nextcondition_id", "AD_WF_NextCondition"));
throw new POSaveFailedException("WorkflowNodeNextCondition");
}
} else {
log.info("entitytype is not a U or D");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int ad_wf_nodenextcondition_id = Env.getContextAsInt(ctx,
X_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID);
X_AD_WF_NextCondition m_WF_NodeNextCondition = new X_AD_WF_NextCondition(
ctx, ad_wf_nodenextcondition_id, null);
AttributesImpl atts = new AttributesImpl();
createWorkflowNodeNextConditionBinding(atts, m_WF_NodeNextCondition);
document.startElement("", "", "workflowNodeNextCondition", atts);
document.endElement("", "", "workflowNodeNextCondition");
}
private AttributesImpl createWorkflowNodeNextConditionBinding(
AttributesImpl atts, X_AD_WF_NextCondition m_WF_NodeNextCondition) {
String sql = null;
String name = null;
atts.clear();
if (m_WF_NodeNextCondition.getAD_WF_NodeNext_ID() > 0) {
// FIXME: it appears nodes point back to themselves
// so a group by is necessary
sql = "SELECT AD_Workflow.Name FROM AD_Workflow, AD_WF_Node, AD_WF_NodeNext WHERE AD_Workflow.AD_Workflow_ID = AD_WF_Node.AD_Workflow_ID and AD_WF_Node.AD_WF_Node_ID = AD_WF_NodeNext.AD_WF_Node_ID and AD_WF_NodeNext.AD_WF_NodeNext_ID = ? group by AD_Workflow.Name";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_WF_NodeNext_ID());
atts.addAttribute("", "", "ADWorkflowNameID", "CDATA", name);
// FIXME: it appears nodes point back to themselves
// so a group by is necessary
sql = "SELECT AD_WF_Node.Name FROM AD_WF_Node, AD_WF_NodeNext WHERE AD_WF_Node.AD_WF_Node_ID = AD_WF_NodeNext.AD_WF_Node_ID and AD_WF_NodeNext.AD_WF_NodeNext_ID = ? group by AD_WF_Node.Name";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_WF_NodeNext_ID());
atts.addAttribute("", "", "ADWorkflowNodeNameID", "CDATA", name);
// FIXME: it appears nodes point back to themselves
// so a group by is necessary
sql = "SELECT AD_WF_Node.Name FROM AD_WF_Node, AD_WF_NodeNext, AD_WF_NextCondition WHERE AD_WF_Node.AD_WF_Node_ID = AD_WF_NodeNext.AD_WF_Next_ID and AD_WF_NodeNext.AD_WF_NodeNext_ID = ? group by AD_WF_Node.Name";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_WF_NodeNext_ID());
// log.log(Level.INFO,"node next name: ", name);
atts
.addAttribute("", "", "ADWorkflowNodeNextNameID", "CDATA",
name);
}
if (m_WF_NodeNextCondition.getAD_Column_ID() > 0) {
sql = "SELECT AD_Table.TableName FROM AD_Table, AD_Column, AD_WF_NextCondition WHERE AD_Column.AD_Table_ID=AD_Table.AD_Table_ID and AD_Column.AD_Column_ID = ?";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_Column_ID());
atts.addAttribute("", "", "ADTableNameID", "CDATA", name);
sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_Column_ID());
atts.addAttribute("", "", "ADColumnNameID", "CDATA", name);
} else {
atts.addAttribute("", "", "ADTableNameID", "CDATA", name);
atts.addAttribute("", "", "ADColumnNameID", "CDATA", "");
}
// FIXME: don't know if I need org_id or not
// sql = "SELECT Name FROM AD_Org WHERE AD_Org_ID=?";
// name = DB.getSQLValueString(null,sql,org_id);
// atts.addAttribute("","","orgname","CDATA",name);
atts.addAttribute("", "", "isActive", "CDATA", (m_WF_NodeNextCondition
.isActive() == true ? "true" : "false"));
atts
.addAttribute(
"",
"",
"EntityType",
"CDATA",
(m_WF_NodeNextCondition.getEntityType() != null ? m_WF_NodeNextCondition
.getEntityType()
: ""));
atts.addAttribute("", "", "AndOr", "CDATA", (m_WF_NodeNextCondition
.getAndOr() != null ? m_WF_NodeNextCondition.getAndOr() : ""));
atts.addAttribute("", "", "Operation", "CDATA", (m_WF_NodeNextCondition
.getOperation() != null ? m_WF_NodeNextCondition.getOperation()
: ""));
atts.addAttribute("", "", "Value", "CDATA", (m_WF_NodeNextCondition
.getValue() != null ? m_WF_NodeNextCondition.getValue() : ""));
atts
.addAttribute(
"",
"",
"Value2",
"CDATA",
(m_WF_NodeNextCondition.getValue2() != null ? m_WF_NodeNextCondition
.getValue2()
: ""));
atts.addAttribute("", "", "SeqNo", "CDATA", (String
.valueOf(m_WF_NodeNextCondition.getSeqNo()) != null ? String
.valueOf(m_WF_NodeNextCondition.getSeqNo()) : ""));
return atts;
}
}

View File

@ -0,0 +1,261 @@
/******************************************************************************
* 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): Low Heng Sin hengsin@avantz.com
*****************************************************************************/
package org.adempiere.pipo.handler;
import java.util.Properties;
import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.pipo.AbstractElementHandler;
import org.adempiere.pipo.Element;
import org.adempiere.pipo.exception.POSaveFailedException;
import org.compiere.model.X_AD_WF_NextCondition;
import org.compiere.model.X_AD_WF_NodeNext;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.wf.MWFNodeNext;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
public void startElement(Properties ctx, Element element) throws SAXException {
Attributes atts = element.attributes;
String entitytype = atts.getValue("EntityType");
log.info("entitytype "+atts.getValue("EntityType"));
if (entitytype.equals("U") || entitytype.equals("D") && getUpdateMode(ctx).equals("true")) {
log.info("entitytype is a U or D");
String workflowName = atts.getValue("ADWorkflowNameID");
int workflowId = get_IDWithColumn(ctx, "AD_Workflow", "name", workflowName);
if (workflowId <= 0) {
element.defer = true;
return;
}
String workflowNodeName = atts.getValue("ADWorkflowNodeNameID");
String workflowNodeNextName = atts.getValue("ADWorkflowNodeNextNameID");
StringBuffer sqlB = new StringBuffer ("SELECT ad_wf_node_id FROM AD_WF_Node WHERE AD_Workflow_ID=? and Name =?");
int wfNodeId = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),workflowId,workflowNodeName);
if (wfNodeId <= 0) {
element.defer = true;
return;
}
int wfNodeNextId = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),workflowId,workflowNodeNextName);
sqlB = new StringBuffer ("SELECT ad_wf_nodenext_id FROM AD_WF_NodeNext WHERE ad_wf_node_id =? and ad_wf_next_id =?");
int id = DB.getSQLValue(getTrxName(ctx),sqlB.toString(),wfNodeId,wfNodeNextId);
MWFNodeNext m_WFNodeNext = new MWFNodeNext(ctx, id, getTrxName(ctx));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0){
AD_Backup_ID = copyRecord(ctx, "AD_WF_NodeNext",m_WFNodeNext);
Object_Status = "Update";
}
else{
Object_Status = "New";
AD_Backup_ID =0;
}
m_WFNodeNext.setAD_WF_Node_ID(wfNodeId);
m_WFNodeNext.setAD_WF_Next_ID(wfNodeNextId);
m_WFNodeNext.setEntityType(atts.getValue("EntityType"));
m_WFNodeNext.setSeqNo(Integer.valueOf(atts.getValue("SeqNo")));
m_WFNodeNext.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue():true);
m_WFNodeNext.setIsStdUserWorkflow(atts.getValue("IsStdUserWorkflow") != null ? Boolean.valueOf(atts.getValue("IsStdUserWorkflow")).booleanValue():true);
// log.info("m_WFNodeNext.get_ID: " + String.valueOf(m_WFNodeNext.get_ID));
getDocumentAttributes(ctx).clear();
log.info("about to execute m_WFNodeNext.save");
if (m_WFNodeNext.save(getTrxName(ctx)) == true){
log.info("m_WFNodeNext save success");
record_log (ctx, 1, String.valueOf(m_WFNodeNext.get_ID()),"WFNodeNext", m_WFNodeNext.get_ID(),AD_Backup_ID, Object_Status,"AD_WF_NodeNext",get_IDWithColumn(ctx, "AD_WF_NodeNext", "ad_wf_nodenext_id", "AD_WF_NodeNext"));
}
else{
log.info("m_WFNodeNext save failure");
record_log (ctx, 0, String.valueOf(m_WFNodeNext.get_ID()),"WFNode", m_WFNodeNext.get_ID(),AD_Backup_ID, Object_Status,"AD_WF_NodeNext",get_IDWithColumn(ctx, "AD_WF_NodeNext", "ad_wf_nodenext_id", "AD_WF_NodeNext"));
throw new POSaveFailedException("WorkflowNodeNext");
}
} else {
log.info("entitytype is not a U or D");
}
}
public void endElement(Properties ctx, Element element) throws SAXException {
}
public void create(Properties ctx, TransformerHandler document)
throws SAXException {
int ad_wf_nodenext_id = Env.getContextAsInt(ctx, X_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID);
X_AD_WF_NodeNext m_WF_NodeNext = new X_AD_WF_NodeNext(
ctx, ad_wf_nodenext_id, null);
AttributesImpl atts = new AttributesImpl();
createWorkflowNodeNextBinding(atts, m_WF_NodeNext);
document.startElement("", "", "workflowNodeNext",
atts);
document.endElement("", "", "workflowNodeNext");
}
private AttributesImpl createWorkflowNodeNextBinding(AttributesImpl atts,
X_AD_WF_NodeNext m_WF_NodeNext)
// public AttributesImpl createwf_nodenextBinding( AttributesImpl atts,
// X_AD_WF_NodeNext m_WF_NodeNext, X_AD_WF_Node m_WF_Node)
{
String sql = null;
String name = null;
atts.clear();
// log.log(Level.INFO,"m_WF_NodeNext.getAD_WF_Node_ID: ",
// m_WF_NodeNext.getAD_WF_Node_ID());
// log.log(Level.INFO,"m_WF_NodeNext.getAD_WF_Next_ID: ",
// m_WF_NodeNext.getAD_WF_Next_ID());
if (m_WF_NodeNext.getAD_WF_Node_ID() > 0) {
sql = "SELECT AD_Workflow.Name FROM AD_Workflow, AD_WF_Node WHERE AD_Workflow.AD_Workflow_ID = AD_WF_Node.AD_Workflow_ID and AD_WF_Node.AD_WF_Node_ID =?";
name = DB.getSQLValueString(null, sql, m_WF_NodeNext
.getAD_WF_Node_ID());
atts.addAttribute("", "", "ADWorkflowNameID", "CDATA", name);
sql = "SELECT Name FROM AD_WF_Node WHERE AD_WF_Node_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_NodeNext
.getAD_WF_Node_ID());
atts.addAttribute("", "", "ADWorkflowNodeNameID", "CDATA", name);
}
if (m_WF_NodeNext.getAD_WF_Next_ID() > 0) {
sql = "SELECT Name FROM AD_WF_Node WHERE AD_WF_Node_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_NodeNext
.getAD_WF_Next_ID());
// log.log(Level.INFO,"node next name: ", name);
atts
.addAttribute("", "", "ADWorkflowNodeNextNameID", "CDATA",
name);
}
// FIXME: don't know if I need org_id or not
// sql = "SELECT Name FROM AD_Org WHERE AD_Org_ID=?";
// name = DB.getSQLValueString(null,sql,org_id);
// atts.addAttribute("","","orgname","CDATA",name);
atts.addAttribute("", "", "isActive", "CDATA", (m_WF_NodeNext
.isActive() == true ? "true" : "false"));
atts.addAttribute("", "", "EntityType", "CDATA", (m_WF_NodeNext
.getEntityType() != null ? m_WF_NodeNext.getEntityType() : ""));
atts.addAttribute("", "", "Description", "CDATA",
(m_WF_NodeNext.getDescription() != null ? m_WF_NodeNext
.getDescription() : ""));
atts.addAttribute("", "", "SeqNo", "CDATA", (String
.valueOf(m_WF_NodeNext.getSeqNo()) != null ? String
.valueOf(m_WF_NodeNext.getSeqNo()) : ""));
atts.addAttribute("", "", "IsStdUserWorkflow", "CDATA", (String
.valueOf(m_WF_NodeNext.isStdUserWorkflow()) != null ? String
.valueOf(m_WF_NodeNext.isStdUserWorkflow()) : ""));
return atts;
}
private AttributesImpl createWorkflowNodeNextConditionBinding(
AttributesImpl atts, X_AD_WF_NextCondition m_WF_NodeNextCondition) {
String sql = null;
String name = null;
atts.clear();
if (m_WF_NodeNextCondition.getAD_WF_NodeNext_ID() > 0) {
// FIXME: it appears nodes point back to themselves
// so a group by is necessary
sql = "SELECT AD_Workflow.Name FROM AD_Workflow, AD_WF_Node, AD_WF_NodeNext WHERE AD_Workflow.AD_Workflow_ID = AD_WF_Node.AD_Workflow_ID and AD_WF_Node.AD_WF_Node_ID = AD_WF_NodeNext.AD_WF_Node_ID and AD_WF_NodeNext.AD_WF_NodeNext_ID = ? group by AD_Workflow.Name";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_WF_NodeNext_ID());
atts.addAttribute("", "", "ADWorkflowNameID", "CDATA", name);
// FIXME: it appears nodes point back to themselves
// so a group by is necessary
sql = "SELECT AD_WF_Node.Name FROM AD_WF_Node, AD_WF_NodeNext WHERE AD_WF_Node.AD_WF_Node_ID = AD_WF_NodeNext.AD_WF_Node_ID and AD_WF_NodeNext.AD_WF_NodeNext_ID = ? group by AD_WF_Node.Name";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_WF_NodeNext_ID());
atts.addAttribute("", "", "ADWorkflowNodeNameID", "CDATA", name);
// FIXME: it appears nodes point back to themselves
// so a group by is necessary
sql = "SELECT AD_WF_Node.Name FROM AD_WF_Node, AD_WF_NodeNext, AD_WF_NextCondition WHERE AD_WF_Node.AD_WF_Node_ID = AD_WF_NodeNext.AD_WF_Next_ID and AD_WF_NodeNext.AD_WF_NodeNext_ID = ? group by AD_WF_Node.Name";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_WF_NodeNext_ID());
// log.log(Level.INFO,"node next name: ", name);
atts
.addAttribute("", "", "ADWorkflowNodeNextNameID", "CDATA",
name);
}
if (m_WF_NodeNextCondition.getAD_Column_ID() > 0) {
sql = "SELECT AD_Table.TableName FROM AD_Table, AD_Column, AD_WF_NextCondition WHERE AD_Column.AD_Table_ID=AD_Table.AD_Table_ID and AD_Column.AD_Column_ID = ?";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_Column_ID());
atts.addAttribute("", "", "ADTableNameID", "CDATA", name);
sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?";
name = DB.getSQLValueString(null, sql, m_WF_NodeNextCondition
.getAD_Column_ID());
atts.addAttribute("", "", "ADColumnNameID", "CDATA", name);
} else {
atts.addAttribute("", "", "ADTableNameID", "CDATA", name);
atts.addAttribute("", "", "ADColumnNameID", "CDATA", "");
}
// FIXME: don't know if I need org_id or not
// sql = "SELECT Name FROM AD_Org WHERE AD_Org_ID=?";
// name = DB.getSQLValueString(null,sql,org_id);
// atts.addAttribute("","","orgname","CDATA",name);
atts.addAttribute("", "", "isActive", "CDATA", (m_WF_NodeNextCondition
.isActive() == true ? "true" : "false"));
atts
.addAttribute(
"",
"",
"EntityType",
"CDATA",
(m_WF_NodeNextCondition.getEntityType() != null ? m_WF_NodeNextCondition
.getEntityType()
: ""));
atts.addAttribute("", "", "AndOr", "CDATA", (m_WF_NodeNextCondition
.getAndOr() != null ? m_WF_NodeNextCondition.getAndOr() : ""));
atts.addAttribute("", "", "Operation", "CDATA", (m_WF_NodeNextCondition
.getOperation() != null ? m_WF_NodeNextCondition.getOperation()
: ""));
atts.addAttribute("", "", "Value", "CDATA", (m_WF_NodeNextCondition
.getValue() != null ? m_WF_NodeNextCondition.getValue() : ""));
atts
.addAttribute(
"",
"",
"Value2",
"CDATA",
(m_WF_NodeNextCondition.getValue2() != null ? m_WF_NodeNextCondition
.getValue2()
: ""));
atts.addAttribute("", "", "SeqNo", "CDATA", (String
.valueOf(m_WF_NodeNextCondition.getSeqNo()) != null ? String
.valueOf(m_WF_NodeNextCondition.getSeqNo()) : ""));
return atts;
}
}