IDEMPIERE-254 2Pack Stabilization and Enhancement
This commit is contained in:
parent
008acb6848
commit
ae747cd47c
|
@ -863,7 +863,7 @@ public abstract class PO
|
|||
* @param value value
|
||||
* @return true if value set
|
||||
*/
|
||||
protected final boolean set_ValueNoCheck (String ColumnName, Object value)
|
||||
public final boolean set_ValueNoCheck (String ColumnName, Object value)
|
||||
{
|
||||
int index = get_ColumnIndex(ColumnName);
|
||||
if (index < 0)
|
||||
|
|
|
@ -164,6 +164,10 @@
|
|||
class="org.adempiere.pipo2.handler.ReferenceTableElementHandler"
|
||||
id="AD_Ref_Table">
|
||||
</handler>
|
||||
<handler
|
||||
class="org.adempiere.pipo2.handler.AttachmentElementHandler"
|
||||
id="AD_Attachment">
|
||||
</handler>
|
||||
<handler
|
||||
class="org.adempiere.pipo2.handler.CommonTranslationHandler"
|
||||
id="table.translationHandler">
|
||||
|
|
|
@ -19,11 +19,11 @@ package org.adempiere.pipo2.handler;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -44,19 +44,19 @@ public class AdElementHandler extends AbstractElementHandler {
|
|||
private final String AD_ELEMENT = "AD_Element";
|
||||
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
String action = null;
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
String ColumnName = getStringValue(element, "ColumnName");
|
||||
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
|
||||
M_Element mElement = findPO(ctx, element);
|
||||
if (mElement == null) {
|
||||
int id = findIdByColumn(ctx, X_AD_Element.Table_Name, X_AD_Element.COLUMNNAME_ColumnName, ColumnName);
|
||||
mElement = new M_Element(ctx, id, getTrxName(ctx));
|
||||
int id = findIdByColumn(ctx, X_AD_Element.Table_Name, X_AD_Element.COLUMNNAME_ColumnName, ColumnName, /*ignorecase=*/true);
|
||||
mElement = new M_Element(ctx.ctx, id, getTrxName(ctx));
|
||||
}
|
||||
List<String> excludes = defaultExcludeList(X_AD_Element.Table_Name);
|
||||
if (mElement.getAD_Element_ID() == 0 && isOfficialId(element, "AD_Element_ID"))
|
||||
|
@ -71,6 +71,7 @@ public class AdElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = pf.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -94,7 +95,7 @@ public class AdElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mElement.getName(),
|
||||
mElement.get_ID(), action);
|
||||
throw new POSaveFailedException("Reference");
|
||||
throw new POSaveFailedException("Failed to save Element " + mElement.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -102,14 +103,14 @@ public class AdElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
protected void create(Properties ctx, TransformerHandler document)
|
||||
protected void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
|
||||
|
||||
int adElement_id = Env.getContextAsInt(ctx,
|
||||
int adElement_id = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_Element.COLUMNNAME_AD_Element_ID);
|
||||
|
||||
if (processedElements.contains(adElement_id))
|
||||
|
@ -117,18 +118,22 @@ public class AdElementHandler extends AbstractElementHandler {
|
|||
|
||||
processedElements.add(adElement_id);
|
||||
|
||||
X_AD_Element m_AdElement = new X_AD_Element(ctx, adElement_id, null);
|
||||
X_AD_Element mAdElement = new X_AD_Element(ctx.ctx, adElement_id, null);
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (mAdElement.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", "AD_Element", atts);
|
||||
createAdElementBinding(ctx, document, m_AdElement);
|
||||
|
||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
||||
|
||||
createAdElementBinding(ctx, document, mAdElement);
|
||||
|
||||
PackOut packOut = ctx.packOut;
|
||||
try{
|
||||
new CommonTranslationHandler().packOut(packOut,document,null,m_AdElement.get_ID());
|
||||
new CommonTranslationHandler().packOut(packOut,document,null,mAdElement.get_ID());
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
|
@ -139,7 +144,7 @@ public class AdElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
|
||||
|
||||
private void createAdElementBinding(Properties ctx, TransformerHandler document,
|
||||
private void createAdElementBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Element m_AdElement) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_AdElement);
|
||||
|
@ -152,8 +157,8 @@ public class AdElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Element.COLUMNNAME_AD_Element_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Element.COLUMNNAME_AD_Element_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Element.COLUMNNAME_AD_Element_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Element.COLUMNNAME_AD_Element_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,178 @@
|
|||
/******************************************************************************
|
||||
* 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.pipo2.handler;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.PoFiller;
|
||||
import org.adempiere.pipo2.ReferenceUtils;
|
||||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
||||
import org.compiere.model.MAttachment;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.model.X_AD_Attachment;
|
||||
import org.compiere.model.X_AD_AttachmentNote;
|
||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
public class AttachmentElementHandler extends AbstractElementHandler {
|
||||
|
||||
private List<Integer> attachments = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
String action = null;
|
||||
|
||||
MAttachment mAttachment = findPO(ctx, element);
|
||||
if (mAttachment == null) {
|
||||
int AD_Table_ID = ReferenceUtils.resolveReference(ctx.ctx, element.properties.get("AD_Table_ID"), getTrxName(ctx));
|
||||
if (AD_Table_ID <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Table_ID";
|
||||
return;
|
||||
}
|
||||
Element recordElement = element.properties.get("Record_ID");
|
||||
int Record_ID = ReferenceUtils.resolveReference(ctx.ctx, recordElement, getTrxName(ctx));
|
||||
if (Record_ID <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "Record_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
int id = DB.getSQLValue(getTrxName(ctx), "SELECT AD_Attachment_ID FROM AD_Attachment WHERE Record_ID="+Record_ID+" AND AD_Table_ID="+AD_Table_ID);
|
||||
mAttachment = new MAttachment(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
if (mAttachment.is_new()) {
|
||||
mAttachment.setAD_Table_ID(AD_Table_ID);
|
||||
mAttachment.setRecord_ID(Record_ID);
|
||||
}
|
||||
}
|
||||
List<String> excludes = defaultExcludeList(X_AD_Attachment.Table_Name);
|
||||
excludes.add("AD_Table_ID");
|
||||
excludes.add("Record_ID");
|
||||
if (mAttachment.getAD_Attachment_ID() == 0 && isOfficialId(element, "AD_Attachment_ID"))
|
||||
mAttachment.setAD_Attachment_ID(getIntValue(element, "AD_Attachment_ID"));
|
||||
|
||||
if (attachments.contains(mAttachment.getAD_Attachment_ID())) {
|
||||
element.skip = true;
|
||||
return;
|
||||
}
|
||||
|
||||
PoFiller pf = new PoFiller(ctx, mAttachment, element, this);
|
||||
List<String> notfounds = pf.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
mAttachment.getEntries();
|
||||
if (mAttachment.is_new() || mAttachment.is_Changed()) {
|
||||
X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Attachment.Table_Name, X_AD_Attachment.Table_ID);
|
||||
if (!mAttachment.is_new()) {
|
||||
backupRecord(ctx, impDetail.getAD_Package_Imp_Detail_ID(), X_AD_Attachment.Table_Name, mAttachment);
|
||||
action = "Update";
|
||||
} else {
|
||||
action = "New";
|
||||
}
|
||||
|
||||
if (mAttachment.save(getTrxName(ctx)) == true) {
|
||||
logImportDetail(ctx, impDetail, 1, mAttachment.toString(),
|
||||
mAttachment.get_ID(), action);
|
||||
|
||||
element.recordId = mAttachment.getAD_Attachment_ID();
|
||||
|
||||
attachments.add(mAttachment.getAD_Attachment_ID());
|
||||
|
||||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mAttachment.toString(),
|
||||
mAttachment.get_ID(), action);
|
||||
throw new POSaveFailedException("Failed to save Attachment " + mAttachment.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
protected void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
|
||||
|
||||
int AD_Attachment_ID = Env.getContextAsInt(ctx.ctx, "AD_Attachment_ID");
|
||||
|
||||
if (attachments.contains(AD_Attachment_ID))
|
||||
return;
|
||||
|
||||
attachments.add(AD_Attachment_ID);
|
||||
|
||||
MAttachment mAttachment = new MAttachment(ctx.ctx, AD_Attachment_ID, getTrxName(ctx));
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (mAttachment.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", "AD_Attachment", atts);
|
||||
createAttachmentBinding(ctx, document, mAttachment);
|
||||
|
||||
int[] ids = PO.getAllIDs(X_AD_AttachmentNote.Table_Name, "AD_Attachment_ID="+AD_Attachment_ID, getTrxName(ctx));
|
||||
if (ids != null && ids.length > 0) {
|
||||
ElementHandler handler = ctx.packOut.getHandler(X_AD_AttachmentNote.Table_Name);
|
||||
for (int AD_AttachmentNote_ID : ids ) {
|
||||
try {
|
||||
handler.packOut(ctx.packOut, document, null, AD_AttachmentNote_ID);
|
||||
} catch (Exception e) {
|
||||
throw new SAXException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
document.endElement("", "", "AD_Attachment");
|
||||
}
|
||||
|
||||
|
||||
private void createAttachmentBinding(PIPOContext ctx, TransformerHandler document,
|
||||
MAttachment mAttachment) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, mAttachment);
|
||||
if (mAttachment.getAD_Attachment_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||
filler.add("AD_Attachment_ID", new AttributesImpl());
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_Attachment.Table_Name);
|
||||
filler.export(excludes);
|
||||
}
|
||||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
packout.getCtx().ctx.put("AD_Attachment_ID", recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().ctx.remove("AD_Attachment_ID");
|
||||
}
|
||||
}
|
|
@ -28,7 +28,6 @@ import java.io.OutputStream;
|
|||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
|
@ -44,12 +43,13 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.CodeSnippetElementParameters;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PackoutItem;
|
||||
|
||||
public class CodeSnippetElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
String action = null;
|
||||
action = "Update";
|
||||
String releaseNumber = getStringValue(element, "ReleaseNo");
|
||||
|
@ -68,7 +68,7 @@ public class CodeSnippetElementHandler extends AbstractElementHandler {
|
|||
|
||||
//get adempiere-all directory
|
||||
try {
|
||||
packagePath = getPackageDirectory(ctx);
|
||||
packagePath = getPackageDirectory(ctx.ctx);
|
||||
File parentDirectory = new File(packagePath);
|
||||
while (!parentDirectory.getName().equals("packages")){
|
||||
parentDirectory = parentDirectory.getParentFile();
|
||||
|
@ -144,9 +144,9 @@ public class CodeSnippetElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
|
||||
//Record in transaction file
|
||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx, 0, getTrxName(ctx));
|
||||
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx));
|
||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx));
|
||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx.ctx, 0, getTrxName(ctx));
|
||||
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx));
|
||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||
backup.setAD_Package_Imp_Org_Dir(targetDirectoryModified+sourceName );
|
||||
backup.setAD_Package_Imp_Bck_Dir(packagePath+File.separator+"backup"+File.separator+fileDate+"_"+sourceName);
|
||||
backup.saveEx();
|
||||
|
@ -189,18 +189,18 @@ public class CodeSnippetElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
|
||||
|
||||
public void endElement(Properties ctx, Element element)
|
||||
public void endElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
}
|
||||
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext pipoContext, TransformerHandler document)
|
||||
throws SAXException {
|
||||
String FileDir = Env.getContext(ctx, CodeSnippetElementParameters.DESTINATION_DIRECTORY);
|
||||
String FileName = Env.getContext(ctx, CodeSnippetElementParameters.DESTINATION_FILE_NAME);
|
||||
String OldCode = Env.getContext(ctx, CodeSnippetElementParameters.AD_Package_Code_Old);
|
||||
String NewCode = Env.getContext(ctx, CodeSnippetElementParameters.AD_Package_Code_New);
|
||||
String ReleaseNo = Env.getContext(ctx, CodeSnippetElementParameters.RELEASE_NO);
|
||||
String FileDir = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.DESTINATION_DIRECTORY);
|
||||
String FileName = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.DESTINATION_FILE_NAME);
|
||||
String OldCode = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.AD_Package_Code_Old);
|
||||
String NewCode = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.AD_Package_Code_New);
|
||||
String ReleaseNo = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.RELEASE_NO);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "custom");
|
||||
createSnipitBinding(atts, FileDir, FileName, OldCode, NewCode, ReleaseNo);
|
||||
|
@ -232,16 +232,16 @@ public class CodeSnippetElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
PackoutItem detail = packout.getCurrentPackoutItem();
|
||||
Env.setContext(packout.getCtx(), CodeSnippetElementParameters.DESTINATION_DIRECTORY, (String)detail.getProperty(CodeSnippetElementParameters.DESTINATION_DIRECTORY));
|
||||
Env.setContext(packout.getCtx(), CodeSnippetElementParameters.DESTINATION_FILE_NAME, (String)detail.getProperty(CodeSnippetElementParameters.DESTINATION_FILE_NAME));
|
||||
Env.setContext(packout.getCtx(), CodeSnippetElementParameters.AD_Package_Code_Old, (String)detail.getProperty(CodeSnippetElementParameters.AD_Package_Code_Old));
|
||||
Env.setContext(packout.getCtx(), CodeSnippetElementParameters.AD_Package_Code_New, (String)detail.getProperty(CodeSnippetElementParameters.AD_Package_Code_New));
|
||||
Env.setContext(packout.getCtx(), CodeSnippetElementParameters.RELEASE_NO, (String)detail.getProperty(CodeSnippetElementParameters.RELEASE_NO));
|
||||
Env.setContext(packout.getCtx().ctx, CodeSnippetElementParameters.DESTINATION_DIRECTORY, (String)detail.getProperty(CodeSnippetElementParameters.DESTINATION_DIRECTORY));
|
||||
Env.setContext(packout.getCtx().ctx, CodeSnippetElementParameters.DESTINATION_FILE_NAME, (String)detail.getProperty(CodeSnippetElementParameters.DESTINATION_FILE_NAME));
|
||||
Env.setContext(packout.getCtx().ctx, CodeSnippetElementParameters.AD_Package_Code_Old, (String)detail.getProperty(CodeSnippetElementParameters.AD_Package_Code_Old));
|
||||
Env.setContext(packout.getCtx().ctx, CodeSnippetElementParameters.AD_Package_Code_New, (String)detail.getProperty(CodeSnippetElementParameters.AD_Package_Code_New));
|
||||
Env.setContext(packout.getCtx().ctx, CodeSnippetElementParameters.RELEASE_NO, (String)detail.getProperty(CodeSnippetElementParameters.RELEASE_NO));
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(CodeSnippetElementParameters.DESTINATION_DIRECTORY);
|
||||
packout.getCtx().remove(CodeSnippetElementParameters.DESTINATION_FILE_NAME);
|
||||
packout.getCtx().remove(CodeSnippetElementParameters.AD_Package_Code_Old);
|
||||
packout.getCtx().remove(CodeSnippetElementParameters.AD_Package_Code_New);
|
||||
packout.getCtx().remove(CodeSnippetElementParameters.RELEASE_NO);
|
||||
packout.getCtx().ctx.remove(CodeSnippetElementParameters.DESTINATION_DIRECTORY);
|
||||
packout.getCtx().ctx.remove(CodeSnippetElementParameters.DESTINATION_FILE_NAME);
|
||||
packout.getCtx().ctx.remove(CodeSnippetElementParameters.AD_Package_Code_Old);
|
||||
packout.getCtx().ctx.remove(CodeSnippetElementParameters.AD_Package_Code_New);
|
||||
packout.getCtx().ctx.remove(CodeSnippetElementParameters.RELEASE_NO);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,12 +21,12 @@ import java.sql.DatabaseMetaData;
|
|||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -49,11 +49,11 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class ColumnElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
int success = 0;
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
if (isParentDefer(element, I_AD_Table.Table_Name)) {
|
||||
element.defer = true;
|
||||
return;
|
||||
|
@ -68,13 +68,13 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
|||
if (getParentId(element, I_AD_Table.Table_Name) > 0) {
|
||||
tableid = getParentId(element, I_AD_Table.Table_Name);
|
||||
} else {
|
||||
mColumn = new MColumn(ctx, 0, getTrxName(ctx));
|
||||
mColumn = new MColumn(ctx.ctx, 0, getTrxName(ctx));
|
||||
PoFiller filler = new PoFiller(ctx, mColumn, element, this);
|
||||
filler.setTableReference("AD_Table_ID");
|
||||
tableid = mColumn.getAD_Table_ID();
|
||||
}
|
||||
int AD_Column_ID = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnName, "AD_Table", tableid);
|
||||
mColumn = new MColumn(ctx, AD_Column_ID > 0 ? AD_Column_ID : 0, getTrxName(ctx));
|
||||
int AD_Column_ID = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnName, "AD_Table", tableid, /*ignorecase=*/true);
|
||||
mColumn = new MColumn(ctx.ctx, AD_Column_ID > 0 ? AD_Column_ID : 0, getTrxName(ctx));
|
||||
if (mColumn.getAD_Column_ID() == 0 && isOfficialId(element, "AD_Column_ID")) {
|
||||
mColumn.setAD_Column_ID(getIntValue(element, "AD_Column_ID"));
|
||||
}
|
||||
|
@ -87,6 +87,7 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -104,7 +105,7 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
|||
|
||||
// Setup Element.
|
||||
if (mColumn.getAD_Element_ID() == 0) {
|
||||
X_AD_Element adElement = new X_AD_Element(ctx, 0, getTrxName(ctx));
|
||||
X_AD_Element adElement = new X_AD_Element(ctx.ctx, 0, getTrxName(ctx));
|
||||
adElement.setColumnName(mColumn.getColumnName());
|
||||
adElement.setEntityType(mColumn.getEntityType());
|
||||
adElement.setPrintName(mColumn.getColumnName());
|
||||
|
@ -164,11 +165,11 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mColumn.getName(), mColumn
|
||||
.get_ID(), action);
|
||||
throw new POSaveFailedException("Failed to import column.");
|
||||
throw new POSaveFailedException("Failed to save column " + mColumn.getName());
|
||||
}
|
||||
|
||||
if (recreateColumn || syncDatabase) {
|
||||
MTable table = new MTable(ctx, mColumn.getAD_Table_ID(), getTrxName(ctx));
|
||||
MTable table = new MTable(ctx.ctx, mColumn.getAD_Table_ID(), getTrxName(ctx));
|
||||
if (!table.isView() && !mColumn.isVirtualColumn()) {
|
||||
success = createColumn(ctx, table, mColumn, recreateColumn);
|
||||
|
||||
|
@ -199,7 +200,7 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
|||
* @param v_IsMandatory
|
||||
*
|
||||
*/
|
||||
private int createColumn(Properties ctx, MTable table, MColumn column, boolean doAlter) {
|
||||
private int createColumn(PIPOContext ctx, MTable table, MColumn column, boolean doAlter) {
|
||||
|
||||
int no = 0;
|
||||
|
||||
|
@ -297,23 +298,30 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
|||
return 1;
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Column_ID = Env.getContextAsInt(ctx,
|
||||
int AD_Column_ID = Env.getContextAsInt(ctx.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,
|
||||
X_AD_Column m_Column = new X_AD_Column(ctx.ctx, AD_Column_ID,
|
||||
getTrxName(ctx));
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Column.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Column.Table_Name, atts);
|
||||
createColumnBinding(ctx, document, m_Column);
|
||||
document.endElement("", "", I_AD_Column.Table_Name);
|
||||
}
|
||||
|
||||
private void createColumnBinding(Properties ctx, TransformerHandler document,
|
||||
private void createColumnBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Column m_Column) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Column);
|
||||
|
@ -337,8 +345,8 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_Column.COLUMNNAME_AD_Column_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_Column.COLUMNNAME_AD_Column_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_Column.COLUMNNAME_AD_Column_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_Column.COLUMNNAME_AD_Column_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,12 +5,12 @@ import java.sql.ResultSet;
|
|||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.exceptions.DBException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
|
@ -30,9 +30,9 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
|||
private HashMap<String, ArrayList<String>> cacheColumns = new HashMap<String, ArrayList<String>>();//Key: table name. Value: set of PIPO columns
|
||||
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
|
||||
if(! isHandleTranslations(ctx)){
|
||||
if(! isHandleTranslations(ctx.ctx)){
|
||||
return;//translation import option is disabled
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
|||
|
||||
|
||||
private boolean isRecordExists(String tableName, int parentID,
|
||||
String language, Properties ctx) {
|
||||
String language, PIPOContext ctx) {
|
||||
|
||||
String sql =
|
||||
"SELECT AD_Client_ID FROM " + tableName +" WHERE " +
|
||||
|
@ -79,7 +79,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
|||
|
||||
|
||||
private void insertTranslation(String tableName, int parentID,
|
||||
Properties ctx, Element element) throws SAXException{
|
||||
PIPOContext ctx, Element element) throws SAXException{
|
||||
|
||||
String parentTable = tableName.substring(0, tableName.length()-4);
|
||||
ArrayList<String> columns = getTranslatedColumns(parentTable);
|
||||
|
@ -133,7 +133,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
|||
|
||||
|
||||
private void updateTranslation(String tableName, int parentID,
|
||||
Properties ctx, Element element) throws SAXException{
|
||||
PIPOContext ctx, Element element) throws SAXException{
|
||||
String parentTable = tableName.substring(0, tableName.length()-4);
|
||||
ArrayList<String> columns = getTranslatedColumns(parentTable);
|
||||
StringBuffer buffer = new StringBuffer("UPDATE "+tableName+" SET ");
|
||||
|
@ -173,22 +173,22 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
|||
}
|
||||
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document) throws SAXException {
|
||||
public void create(PIPOContext ctx, TransformerHandler document) throws SAXException {
|
||||
|
||||
String parenTableName = Env.getContext(ctx, CONTEXT_KEY_PARENT_TABLE);
|
||||
String parenTableName = Env.getContext(ctx.ctx, CONTEXT_KEY_PARENT_TABLE);
|
||||
|
||||
int parentRecordID = Env.getContextAsInt(ctx, CONTEXT_KEY_PARENT_RECORD_ID);
|
||||
int parentRecordID = Env.getContextAsInt(ctx.ctx, CONTEXT_KEY_PARENT_RECORD_ID);
|
||||
|
||||
createTranslationTags(ctx, parenTableName, parentRecordID, document);
|
||||
}
|
||||
|
||||
|
||||
private void createTranslationTags(Properties ctx, String parentTable,
|
||||
private void createTranslationTags(PIPOContext ctx, String parentTable,
|
||||
int parentRecordID, TransformerHandler document) throws SAXException {
|
||||
|
||||
ArrayList<String> translatedColumns = getTranslatedColumns(parentTable);
|
||||
|
@ -221,7 +221,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
|||
}
|
||||
}
|
||||
|
||||
private void exportRow(Properties ctx, TransformerHandler document, ArrayList<String> columns,
|
||||
private void exportRow(PIPOContext ctx, TransformerHandler document, ArrayList<String> columns,
|
||||
ResultSet rs) throws Exception {
|
||||
|
||||
PoExporter af = new PoExporter(ctx, document, null);
|
||||
|
@ -289,12 +289,12 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
if("true".equals(packout.getCtx().getProperty("isHandleTranslations"))){
|
||||
Env.setContext(packout.getCtx(), CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE,X_AD_Element.Table_Name);
|
||||
Env.setContext(packout.getCtx(), CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID,recordId);
|
||||
if("true".equals(packout.getCtx().ctx.getProperty("isHandleTranslations"))){
|
||||
Env.setContext(packout.getCtx().ctx, CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE,X_AD_Element.Table_Name);
|
||||
Env.setContext(packout.getCtx().ctx, CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID,recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE);
|
||||
packout.getCtx().remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID);
|
||||
packout.getCtx().ctx.remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE);
|
||||
packout.getCtx().ctx.remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,12 +22,12 @@ 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.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PackoutItem;
|
||||
import org.compiere.Adempiere;
|
||||
|
@ -53,7 +53,7 @@ public class DistFileElementHandler extends AbstractElementHandler {
|
|||
this.fileDest=fileDest;
|
||||
}
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
String action = null;
|
||||
|
||||
String releaseNumber = getStringValue(element,"ReleaseNo");
|
||||
|
@ -72,7 +72,7 @@ public class DistFileElementHandler extends AbstractElementHandler {
|
|||
|
||||
//get adempiere-all directory
|
||||
try {
|
||||
packagePath = getPackageDirectory(ctx);
|
||||
packagePath = getPackageDirectory(ctx.ctx);
|
||||
File parentDirectory = new File(packagePath);
|
||||
while (!parentDirectory.getName().equals("packages")){
|
||||
parentDirectory = parentDirectory.getParentFile();
|
||||
|
@ -165,25 +165,25 @@ public class DistFileElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
//Record in transaction file
|
||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx, 0, getTrxName(ctx));
|
||||
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx));
|
||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx.ctx, 0, getTrxName(ctx));
|
||||
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx));
|
||||
backup.setAD_Package_Imp_Org_Dir(fullTargetPath+fileName);
|
||||
backup.setAD_Package_Imp_Bck_Dir(packagePath+File.separator+"backup"+File.separator+fileDate+"_"+fileName);
|
||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx));
|
||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||
backup.saveEx();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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);
|
||||
String FileName = Env.getContext(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
|
||||
String Source_Directory = Env.getContext(ctx.ctx, "Source_Directory");
|
||||
String Target_Directory = Env.getContext(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory);
|
||||
String ReleaseNo = Env.getContext(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "custom");
|
||||
document.startElement("","","Dist_File",atts);
|
||||
|
@ -197,22 +197,20 @@ public class DistFileElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void doPackout(PackOut packout, MPackageExp header, PackoutItem detail,TransformerHandler packOutDocument,TransformerHandler packageDocument,AttributesImpl atts,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_FileName, (String)detail.getProperty("FileName"));
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo, (String)detail.getProperty("ReleaseNo"));
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory, (String)detail.getProperty("TargetDirectory"));
|
||||
Env.setContext(packout.getCtx(), "Source_Directory", fileDest);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_FileName, (String)detail.getProperty("FileName"));
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo, (String)detail.getProperty("ReleaseNo"));
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory, (String)detail.getProperty("TargetDirectory"));
|
||||
Env.setContext(packout.getCtx().ctx, "Source_Directory", fileDest);
|
||||
this.create(packout.getCtx(), packOutDocument);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory);
|
||||
packout.getCtx().remove("Source_Directory");
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory);
|
||||
packout.getCtx().ctx.remove("Source_Directory");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,11 +18,11 @@ package org.adempiere.pipo2.handler;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -40,16 +40,16 @@ public class DynValRuleElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> rules = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
String name = getStringValue(element, "Name");
|
||||
|
||||
X_AD_Val_Rule mValRule = findPO(ctx, element);
|
||||
if (mValRule == null)
|
||||
{
|
||||
int id = findIdByColumn(ctx, "AD_Val_Rule", "Name", name);
|
||||
mValRule = new X_AD_Val_Rule(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mValRule = new X_AD_Val_Rule(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
if (mValRule.getAD_Val_Rule_ID() == 0 && isOfficialId(element, "AD_Val_Rule_ID"))
|
||||
mValRule.setAD_Val_Rule_ID(getIntValue(element, "AD_Val_Rule_ID"));
|
||||
|
@ -60,6 +60,7 @@ public class DynValRuleElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -80,7 +81,7 @@ public class DynValRuleElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
else{
|
||||
logImportDetail (ctx, impDetail, 0, mValRule.getName(), mValRule.get_ID(),action);
|
||||
throw new POSaveFailedException("Failed to save dynamic validation rule.");
|
||||
throw new POSaveFailedException("Failed to save dynamic validation rule " + mValRule.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -89,16 +90,23 @@ public class DynValRuleElementHandler extends AbstractElementHandler {
|
|||
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
protected void create(Properties ctx, TransformerHandler document)
|
||||
protected void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Val_Rule_ID = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID);
|
||||
int AD_Val_Rule_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID);
|
||||
if (rules.contains(AD_Val_Rule_ID))
|
||||
return;
|
||||
rules.add(AD_Val_Rule_ID);
|
||||
X_AD_Val_Rule m_ValRule = new X_AD_Val_Rule (ctx, AD_Val_Rule_ID, null);
|
||||
X_AD_Val_Rule m_ValRule = new X_AD_Val_Rule (ctx.ctx, AD_Val_Rule_ID, null);
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_ValRule.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","",I_AD_Val_Rule.Table_Name, atts);
|
||||
|
@ -107,7 +115,7 @@ public class DynValRuleElementHandler extends AbstractElementHandler {
|
|||
|
||||
}
|
||||
|
||||
private void createDynamicValidationRuleBinding(Properties ctx, TransformerHandler document, X_AD_Val_Rule m_ValRule)
|
||||
private void createDynamicValidationRuleBinding(PIPOContext ctx, TransformerHandler document, X_AD_Val_Rule m_ValRule)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx, document, m_ValRule);
|
||||
List<String>excludes = defaultExcludeList(X_AD_Val_Rule.Table_Name);
|
||||
|
@ -122,9 +130,9 @@ public class DynValRuleElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID, recordId);
|
||||
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,12 +17,12 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -33,7 +33,6 @@ import org.compiere.model.I_AD_Field;
|
|||
import org.compiere.model.I_AD_FieldGroup;
|
||||
import org.compiere.model.I_AD_Reference;
|
||||
import org.compiere.model.I_AD_Tab;
|
||||
import org.compiere.model.I_AD_Val_Rule;
|
||||
import org.compiere.model.MField;
|
||||
import org.compiere.model.X_AD_Field;
|
||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||
|
@ -44,32 +43,47 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class FieldElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
if (isParentDefer(element, I_AD_Tab.Table_Name)) {
|
||||
element.defer = true;
|
||||
return;
|
||||
}
|
||||
|
||||
List<String>excludes = defaultExcludeList(X_AD_Field.Table_Name);
|
||||
excludes.add("AD_Window_ID");
|
||||
excludes.add("AD_Tab_ID");
|
||||
|
||||
int tabid = getParentId(element, I_AD_Tab.Table_Name) ;
|
||||
if (tabid <= 0) {
|
||||
Element tabElement = element.properties.get("AD_Tab_ID");
|
||||
if (ReferenceUtils.isIDLookup(tabElement) || ReferenceUtils.isUUIDLookup(tabElement)) {
|
||||
tabid = ReferenceUtils.resolveReference(ctx.ctx, tabElement, getTrxName(ctx));
|
||||
} else {
|
||||
String tabName = getStringValue(element, "AD_Tab_ID");
|
||||
int AD_Window_ID = ReferenceUtils.resolveReference(ctx.ctx, element.properties.get("AD_Window_ID"), getTrxName(ctx));
|
||||
if (AD_Window_ID > 0) {
|
||||
tabid = findIdByNameAndParentId(ctx, "AD_Tab", tabName, "AD_Window", AD_Window_ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tabid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Tab_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
MField mField = findPO(ctx, element);
|
||||
if (mField == null)
|
||||
{
|
||||
int AD_Table_ID = ReferenceUtils.resolveReference(ctx, element.parent.properties.get("AD_Table_ID"), getTrxName(ctx));
|
||||
excludes.add("AD_Table_ID");
|
||||
excludes.add("AD_Column_ID");
|
||||
|
||||
int AD_Table_ID = ReferenceUtils.resolveReference(ctx.ctx, element.properties.get("AD_Table_ID"), getTrxName(ctx));
|
||||
Element columnElement = element.properties.get("AD_Column_ID");
|
||||
int AD_Column_ID = 0;
|
||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement))
|
||||
{
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -79,20 +93,32 @@ public class FieldElementHandler extends AbstractElementHandler {
|
|||
|
||||
if (AD_Column_ID == 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Column_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
MField mField = findPO(ctx, element);
|
||||
if (mField == null)
|
||||
{
|
||||
StringBuffer sqlB = new StringBuffer(
|
||||
"select AD_Field_ID from AD_Field where AD_Column_ID = ")
|
||||
.append(AD_Column_ID)
|
||||
.append(" and AD_Tab_ID = ?");
|
||||
int id = DB.getSQLValue(getTrxName(ctx), sqlB.toString(), tabid);
|
||||
mField = new MField(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mField = new MField(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
if (mField.is_new()) {
|
||||
mField.setAD_Column_ID(AD_Column_ID);
|
||||
mField.setAD_Tab_ID(tabid);
|
||||
}
|
||||
} else {
|
||||
if (mField.getAD_Tab_ID() != tabid) {
|
||||
mField.setAD_Tab_ID(tabid);
|
||||
}
|
||||
if (mField.getAD_Column_ID() != AD_Column_ID) {
|
||||
mField.setAD_Column_ID(AD_Column_ID);
|
||||
}
|
||||
}
|
||||
|
||||
PoFiller filler = new PoFiller(ctx, mField, element, this);
|
||||
if (mField.getAD_Field_ID() == 0 && isOfficialId(element, "AD_Field_ID"))
|
||||
{
|
||||
|
@ -102,6 +128,7 @@ public class FieldElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -124,7 +151,7 @@ public class FieldElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mField.getName(), mField
|
||||
.get_ID(), action);
|
||||
throw new POSaveFailedException("Failed to save field definition.");
|
||||
throw new POSaveFailedException("Failed to save field definition " + mField.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -132,20 +159,16 @@ public class FieldElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Field_ID = Env.getContextAsInt(ctx,
|
||||
int AD_Field_ID = Env.getContextAsInt(ctx.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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Field.Table_Name, atts);
|
||||
createFieldBinding(ctx, document, m_Field);
|
||||
X_AD_Field m_Field = new X_AD_Field(ctx.ctx, AD_Field_ID, null);
|
||||
|
||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
||||
PackOut packOut = ctx.packOut;
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -160,28 +183,26 @@ public class FieldElementHandler extends AbstractElementHandler {
|
|||
ElementHandler handler = packOut.getHandler(I_AD_Reference.Table_Name);
|
||||
handler.packOut(packOut,document,null,m_Field.getAD_Reference_ID());
|
||||
}
|
||||
|
||||
if (m_Field.getAD_Reference_Value_ID()>0)
|
||||
{
|
||||
ElementHandler handler = packOut.getHandler(I_AD_Reference.Table_Name);
|
||||
handler.packOut(packOut,document,null,m_Field.getAD_Reference_Value_ID());
|
||||
}
|
||||
|
||||
if (m_Field.getAD_Val_Rule_ID()>0)
|
||||
{
|
||||
ElementHandler handler = packOut.getHandler(I_AD_Val_Rule.Table_Name);
|
||||
handler.packOut(packOut,document,null,m_Field.getAD_Val_Rule_ID());
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
log.info(e.toString());
|
||||
{
|
||||
throw new SAXException(e);
|
||||
}
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Field.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
document.endElement("", "", I_AD_Field.Table_Name);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", X_AD_Field.Table_Name, atts);
|
||||
createFieldBinding(ctx, document, m_Field);
|
||||
document.endElement("", "", X_AD_Field.Table_Name);
|
||||
}
|
||||
|
||||
private void createFieldBinding(Properties ctx, TransformerHandler document,
|
||||
private void createFieldBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Field m_Field) {
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_Field.Table_Name);
|
||||
|
@ -190,6 +211,20 @@ public class FieldElementHandler extends AbstractElementHandler {
|
|||
filler.add("AD_Field_ID", new AttributesImpl());
|
||||
}
|
||||
|
||||
int AD_Table_ID = DB.getSQLValue(getTrxName(ctx), "SELECT AD_Table_ID FROM AD_Column WHERE AD_Column_ID=?", m_Field.getAD_Column_ID());
|
||||
if (AD_Table_ID > 0) {
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
filler.addTableReference("AD_Table_ID", "AD_Table", "TableName", AD_Table_ID, atts);
|
||||
}
|
||||
|
||||
excludes.add("AD_Tab_ID");
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
filler.addTableReference("AD_Tab_ID", "AD_Tab", "Name", m_Field.getAD_Tab_ID(), atts);
|
||||
if (atts.getValue("reference").equals("table")) {
|
||||
int AD_Window_ID = DB.getSQLValue(getTrxName(ctx), "SELECT AD_Window_ID FROM AD_Tab WHERE AD_Tab_ID=?", m_Field.getAD_Tab_ID());
|
||||
filler.addTableReference("AD_Window_ID", "AD_Window", "Name", AD_Window_ID, new AttributesImpl());
|
||||
}
|
||||
|
||||
filler.export(excludes);
|
||||
}
|
||||
|
||||
|
@ -197,8 +232,8 @@ public class FieldElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_Field.COLUMNNAME_AD_Field_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_Field.COLUMNNAME_AD_Field_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_Field.COLUMNNAME_AD_Field_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_Field.COLUMNNAME_AD_Field_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,11 +19,11 @@ package org.adempiere.pipo2.handler;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -42,7 +42,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
private List<Integer> processedFieldGroups = new ArrayList<Integer>();
|
||||
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
String elementValue = element.getElementValue();
|
||||
String action = null;
|
||||
|
@ -52,13 +52,13 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
String entitytype = getStringValue(element, "EntityType");
|
||||
String name = getStringValue(element, "Name");
|
||||
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
|
||||
X_AD_FieldGroup fieldGroup = findPO(ctx, element);
|
||||
if (fieldGroup == null)
|
||||
{
|
||||
int id = findIdByColumn(ctx, X_AD_FieldGroup.Table_Name, X_AD_FieldGroup.COLUMNNAME_Name, name);
|
||||
fieldGroup = new X_AD_FieldGroup(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
fieldGroup = new X_AD_FieldGroup(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
PoFiller pf = new PoFiller(ctx, fieldGroup, element, this);
|
||||
List<String> excludes = defaultExcludeList(X_AD_FieldGroup.Table_Name);
|
||||
|
@ -75,6 +75,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = pf.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -99,7 +100,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, fieldGroup.getName(),
|
||||
fieldGroup.get_ID(), action);
|
||||
throw new POSaveFailedException("Reference");
|
||||
throw new POSaveFailedException("Failed to save Field Group " + fieldGroup.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -107,14 +108,14 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
protected void create(Properties ctx, TransformerHandler document)
|
||||
protected void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
|
||||
|
||||
int fieldGroup_id = Env.getContextAsInt(ctx,
|
||||
int fieldGroup_id = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID);
|
||||
|
||||
if (processedFieldGroups.contains(fieldGroup_id))
|
||||
|
@ -122,7 +123,13 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
|
||||
processedFieldGroups.add(fieldGroup_id);
|
||||
|
||||
X_AD_FieldGroup fieldGroup = new X_AD_FieldGroup(ctx, fieldGroup_id, null);
|
||||
X_AD_FieldGroup fieldGroup = new X_AD_FieldGroup(ctx.ctx, fieldGroup_id, null);
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (fieldGroup.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
|
@ -130,7 +137,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
|
||||
createAdElementBinding(ctx, document, fieldGroup);
|
||||
|
||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
||||
PackOut packOut = ctx.packOut;
|
||||
|
||||
try{
|
||||
new CommonTranslationHandler().packOut(packOut,document,null,fieldGroup.get_ID());
|
||||
|
@ -143,7 +150,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
|
||||
|
||||
private void createAdElementBinding(Properties ctx, TransformerHandler document,
|
||||
private void createAdElementBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_FieldGroup fieldGroup) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, fieldGroup);
|
||||
|
@ -157,9 +164,9 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID, recordId);
|
||||
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID);
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
@ -10,6 +9,7 @@ import org.adempiere.exceptions.AdempiereException;
|
|||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.FileElementParameters;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PackoutDocument;
|
||||
import org.adempiere.pipo2.PackoutItem;
|
||||
|
@ -88,11 +88,11 @@ public class FileElementHandler implements ElementHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
|
@ -40,7 +40,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class FormAccessElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Form_Access.Table_Name);
|
||||
|
||||
MFormAccess po = findPO(ctx, element);
|
||||
|
@ -49,28 +49,30 @@ public class FormAccessElementHandler extends AbstractElementHandler {
|
|||
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
||||
AD_Role_ID = getParentId(element, I_AD_Role.Table_Name);
|
||||
} else {
|
||||
AD_Role_ID = ReferenceUtils.resolveReference(ctx, element.properties.get("AD_Role_ID"), getTrxName(ctx));
|
||||
AD_Role_ID = ReferenceUtils.resolveReference(ctx.ctx, element.properties.get("AD_Role_ID"), getTrxName(ctx));
|
||||
}
|
||||
if (AD_Role_ID <= 0)
|
||||
{
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Role_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
int AD_Form_ID = ReferenceUtils.resolveReference(ctx, element.properties.get("AD_Form_ID"), getTrxName(ctx));
|
||||
int AD_Form_ID = ReferenceUtils.resolveReference(ctx.ctx, element.properties.get("AD_Form_ID"), getTrxName(ctx));
|
||||
if (AD_Form_ID <= 0)
|
||||
{
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Form_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Query query = new Query(ctx, "AD_Form_Access", "AD_Form_ID = ? AND AD_Role_ID = ?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_Form_Access", "AD_Form_ID = ? AND AD_Role_ID = ?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{AD_Form_ID, AD_Role_ID})
|
||||
.setClient_ID()
|
||||
.<MFormAccess>first();
|
||||
if (po == null)
|
||||
{
|
||||
po = new MFormAccess(ctx, 0, null);
|
||||
po = new MFormAccess(ctx.ctx, 0, getTrxName(ctx));
|
||||
po.setAD_Form_ID(AD_Form_ID);
|
||||
po.setAD_Role_ID(AD_Role_ID);
|
||||
}
|
||||
|
@ -83,43 +85,51 @@ public class FormAccessElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
po.saveEx();
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Form_Access.Table_Name, atts);
|
||||
createFormAccessBinding(ctx, document, AD_Form_ID, AD_Role_ID);
|
||||
document.endElement("", "", I_AD_Form_Access.Table_Name);
|
||||
int AD_Form_ID = Env.getContextAsInt(ctx.ctx, X_AD_Form.COLUMNNAME_AD_Form_ID);
|
||||
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
|
||||
MFormAccess po = null;
|
||||
Query query = new Query(ctx.ctx, "AD_Form_Access", "AD_Form_ID = ? AND AD_Role_ID = ?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{AD_Form_ID, AD_Role_ID}).<MFormAccess>first();
|
||||
|
||||
if (po != null) {
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Form_Access.Table_Name, atts);
|
||||
createFormAccessBinding(ctx, document, po);
|
||||
document.endElement("", "", I_AD_Form_Access.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createFormAccessBinding(Properties ctx, TransformerHandler document,
|
||||
int formId, int roleId) {
|
||||
MFormAccess po = null;
|
||||
Query query = new Query(ctx, "AD_Form_Access", "AD_Form_ID = ? AND AD_Role_ID = ?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{formId, roleId}).<MFormAccess>first();
|
||||
if (po != null) {
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Form_Access.Table_Name);
|
||||
filler.export(excludes);
|
||||
}
|
||||
private void createFormAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||
MFormAccess po) {
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Form_Access.Table_Name);
|
||||
filler.export(excludes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,11 +19,11 @@ package org.adempiere.pipo2.handler;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -42,16 +42,16 @@ public class FormElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> forms = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Form.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
MForm mForm = findPO(ctx, element);
|
||||
if (mForm == null) {
|
||||
String name = getStringValue(element, "Name");
|
||||
int id = findIdByName(ctx, "AD_Form", name);
|
||||
mForm = new MForm(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mForm = new MForm(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
PoFiller filler = new PoFiller(ctx, mForm, element, this);
|
||||
|
||||
|
@ -63,6 +63,7 @@ public class FormElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -83,7 +84,7 @@ public class FormElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
else{
|
||||
logImportDetail (ctx, impDetail, 0, mForm.getName(), mForm.get_ID(), action);
|
||||
throw new POSaveFailedException("Failed to save form definition");
|
||||
throw new POSaveFailedException("Failed to save form definition " + mForm.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -91,16 +92,23 @@ public class FormElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
protected void create(Properties ctx, TransformerHandler document)
|
||||
protected void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Form_ID = Env.getContextAsInt(ctx, "AD_Form_ID");
|
||||
int AD_Form_ID = Env.getContextAsInt(ctx.ctx, "AD_Form_ID");
|
||||
if (forms.contains(AD_Form_ID)) return;
|
||||
|
||||
forms.add(AD_Form_ID);
|
||||
X_AD_Form m_Form = new X_AD_Form (ctx, AD_Form_ID, null);
|
||||
X_AD_Form m_Form = new X_AD_Form (ctx.ctx, AD_Form_ID, null);
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Form.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","",I_AD_Form.Table_Name,atts);
|
||||
|
@ -108,7 +116,7 @@ public class FormElementHandler extends AbstractElementHandler {
|
|||
document.endElement("","",I_AD_Form.Table_Name);
|
||||
}
|
||||
|
||||
private void createFormBinding(Properties ctx, TransformerHandler document, X_AD_Form m_Form)
|
||||
private void createFormBinding(PIPOContext ctx, TransformerHandler document, X_AD_Form m_Form)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Form);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Form.Table_Name);
|
||||
|
@ -121,8 +129,8 @@ public class FormElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Form_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Form_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Form_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Form_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ import java.sql.ResultSet;
|
|||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
|
@ -29,11 +28,13 @@ import org.adempiere.exceptions.AdempiereException;
|
|||
import org.adempiere.model.GenericPO;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.DataElementParameters;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackoutItem;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoFiller;
|
||||
import org.adempiere.pipo2.ReferenceUtils;
|
||||
import org.compiere.model.MColumn;
|
||||
import org.compiere.model.MRole;
|
||||
import org.compiere.model.MTable;
|
||||
|
@ -54,56 +55,112 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
*/
|
||||
public class GenericPOElementHandler extends AbstractElementHandler {
|
||||
|
||||
public GenericPOElementHandler() {
|
||||
private String tableName;
|
||||
|
||||
public GenericPOElementHandler(String tableName) {
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
String tableName = element.getElementValue();
|
||||
|
||||
PO po = findPO(ctx, element);
|
||||
if (po == null) {
|
||||
MTable table = MTable.get(ctx, tableName);
|
||||
POInfo info = POInfo.getPOInfo(ctx, table.getAD_Table_ID());
|
||||
MColumn columns[] = table.getColumns(false);
|
||||
StringBuffer whereClause = new StringBuffer();
|
||||
List<Object> parameters = new ArrayList<Object>();
|
||||
for(int i = 0; i < columns.length; i++) {
|
||||
MColumn column = columns[i];
|
||||
if (column.isIdentifier()) {
|
||||
if (whereClause.length() > 0)
|
||||
whereClause.append(" AND ");
|
||||
whereClause.append(column.getColumnName()).append(" = ? ");
|
||||
parameters.add(getStringValue(element, column.getColumnName()));
|
||||
} else if (column.isParent()) {
|
||||
int parentId = 0;
|
||||
String parentTableName = null;
|
||||
if (column.getAD_Reference_ID() == DisplayType.TableDir) {
|
||||
parentTableName = column.getColumnName().substring(0, column.getColumnName().length() - 3);
|
||||
} else {
|
||||
String searchColumn = info.getColumnLookup(i).getColumnName();
|
||||
parentTableName = searchColumn.substring(0, searchColumn.indexOf("."));
|
||||
}
|
||||
String uuidColumn = PO.getUUIDColumnName(tableName);
|
||||
String idColumn = tableName + "_ID";
|
||||
MTable table = MTable.get(ctx.ctx, tableName);
|
||||
if ((!element.properties.containsKey(uuidColumn) || element.properties.get(uuidColumn).contents == null || element.properties.get(uuidColumn).contents.toString().trim().length() > 0)
|
||||
&& (!element.properties.containsKey(idColumn) || element.properties.get(idColumn).contents == null || element.properties.get(idColumn).contents.toString().trim().length() > 0)) {
|
||||
POInfo info = POInfo.getPOInfo(ctx.ctx, table.getAD_Table_ID());
|
||||
MColumn columns[] = table.getColumns(false);
|
||||
StringBuffer whereClause = new StringBuffer();
|
||||
List<Object> parameters = new ArrayList<Object>();
|
||||
boolean search = true;
|
||||
for(int i = 0; i < columns.length; i++) {
|
||||
MColumn column = columns[i];
|
||||
if (column.isParent()) {
|
||||
int parentId = 0;
|
||||
String parentTableName = null;
|
||||
if (column.getAD_Reference_ID() == DisplayType.TableDir) {
|
||||
parentTableName = column.getColumnName().substring(0, column.getColumnName().length() - 3);
|
||||
} else {
|
||||
String searchColumn = info.getColumnLookup(i).getColumnName();
|
||||
parentTableName = searchColumn.substring(0, searchColumn.indexOf("."));
|
||||
}
|
||||
|
||||
Element parent = element.parent;
|
||||
while (parent != null) {
|
||||
if (parent.getElementValue().equalsIgnoreCase(parentTableName)) {
|
||||
parentId = parent.recordId;
|
||||
Element parent = element.parent;
|
||||
while (parent != null) {
|
||||
if (parent.getElementValue().equalsIgnoreCase(parentTableName)) {
|
||||
parentId = parent.recordId;
|
||||
break;
|
||||
}
|
||||
parent = parent.parent;
|
||||
}
|
||||
|
||||
if (parentId == 0) {
|
||||
Element parentElement = element.properties.get(column.getColumnName());
|
||||
if (parentElement != null) {
|
||||
parentId = ReferenceUtils.resolveReference(ctx.ctx, parentElement, getTrxName(ctx));
|
||||
}
|
||||
}
|
||||
if (parentId > 0) {
|
||||
if (whereClause.length() > 0)
|
||||
whereClause.append(" AND ");
|
||||
whereClause.append(column.getColumnName()).append(" = ?");
|
||||
parameters.add(parentId);
|
||||
} else {
|
||||
search = false;
|
||||
break;
|
||||
}
|
||||
parent = parent.parent;
|
||||
}
|
||||
if (parentId > 0) {
|
||||
} else if (column.isIdentifier()) {
|
||||
if (whereClause.length() > 0)
|
||||
whereClause.append(" AND ");
|
||||
whereClause.append(column.getColumnName()).append(" = ?");
|
||||
parameters.add(parentId);
|
||||
whereClause.append(column.getColumnName()).append(" = ? ");
|
||||
|
||||
String refTableName = null;
|
||||
if (column.getAD_Reference_ID() == DisplayType.TableDir) {
|
||||
refTableName = column.getColumnName().substring(0, column.getColumnName().length() - 3);
|
||||
} else if (column.getAD_Reference_ID() == DisplayType.Table ||
|
||||
column.getAD_Reference_ID() == DisplayType.Search) {
|
||||
String searchColumn = info.getColumnLookup(i).getColumnName();
|
||||
refTableName = searchColumn.substring(0, searchColumn.indexOf("."));
|
||||
}
|
||||
|
||||
if (refTableName == null) {
|
||||
parameters.add(getStringValue(element, column.getColumnName()));
|
||||
} else {
|
||||
int refId = 0;
|
||||
Element parent = element.parent;
|
||||
while (parent != null) {
|
||||
if (parent.getElementValue().equalsIgnoreCase(refTableName)) {
|
||||
refId = parent.recordId;
|
||||
break;
|
||||
}
|
||||
parent = parent.parent;
|
||||
}
|
||||
|
||||
if (refId == 0) {
|
||||
Element refElement = element.properties.get(column.getColumnName());
|
||||
if (refElement != null) {
|
||||
refId = ReferenceUtils.resolveReference(ctx.ctx, refElement, getTrxName(ctx));
|
||||
}
|
||||
}
|
||||
if (refId > 0) {
|
||||
parameters.add(refId);
|
||||
} else {
|
||||
search = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Query query = new Query(ctx, table, whereClause.toString(), getTrxName(ctx));
|
||||
po = query.setParameters(parameters).first();
|
||||
if (whereClause.length() > 0 && search) {
|
||||
Query query = new Query(ctx.ctx, table, whereClause.toString(), getTrxName(ctx));
|
||||
po = query.setParameters(parameters).setApplyAccessFilter(true).first();
|
||||
}
|
||||
}
|
||||
if (po == null) {
|
||||
po = new GenericPO(tableName, ctx, 0);
|
||||
po = table.getPO(0, getTrxName(ctx));
|
||||
}
|
||||
}
|
||||
PoFiller filler = new PoFiller(ctx, po, element, this);
|
||||
|
@ -115,27 +172,39 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
|||
try {
|
||||
id = Integer.parseInt(idElement.contents.toString());
|
||||
if (id > 0 && id <= PackOut.MAX_OFFICIAL_ID) {
|
||||
po.set_ValueOfColumn(tableName + "_ID", id);
|
||||
po.set_ValueNoCheck(tableName + "_ID", id);
|
||||
}
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
}
|
||||
List<String> notfounds = filler.autoFill(excludes);
|
||||
/* Verify if the table has entitytype and check dictionary maintenance */
|
||||
int idxet = po.get_ColumnIndex("EntityType");
|
||||
if (idxet >= 0) {
|
||||
String entityType = (String) po.get_Value(idxet);
|
||||
if (! isProcessElement(ctx.ctx, entityType)) {
|
||||
log.info("Generic PO not processed as it's official " + po.toString());
|
||||
element.skip = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
po.saveEx();
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
|
||||
String sql = Env.getContext(ctx, DataElementParameters.SQL_STATEMENT);
|
||||
String sql = Env.getContext(ctx.ctx, DataElementParameters.SQL_STATEMENT);
|
||||
String components[] = null;
|
||||
if (sql.indexOf(";") > 0) {
|
||||
components = sql.split("[;]");
|
||||
|
@ -143,8 +212,8 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
components = new String[]{sql};
|
||||
}
|
||||
int tableId = Env.getContextAsInt(ctx, DataElementParameters.AD_TABLE_ID);
|
||||
String tableName = MTable.getTableName(ctx, tableId);
|
||||
int tableId = Env.getContextAsInt(ctx.ctx, DataElementParameters.AD_TABLE_ID);
|
||||
String tableName = MTable.getTableName(ctx.ctx, tableId);
|
||||
List<String> excludes = defaultExcludeList(tableName);
|
||||
Statement stmt = null;
|
||||
ResultSet rs = null;
|
||||
|
@ -153,20 +222,36 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
|||
stmt = DB.createStatement();
|
||||
rs = stmt.executeQuery(sql);
|
||||
while (rs.next()) {
|
||||
GenericPO po = new GenericPO(tableName, ctx, rs);
|
||||
GenericPO po = new GenericPO(tableName, ctx.ctx, rs, getTrxName(ctx));
|
||||
int AD_Client_ID = po.getAD_Client_ID();
|
||||
if (AD_Client_ID != Env.getAD_Client_ID(ctx))
|
||||
if (AD_Client_ID != Env.getAD_Client_ID(ctx.ctx))
|
||||
continue;
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","", tableName, atts);
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
filler.export(excludes, true);
|
||||
|
||||
boolean createElement = true;
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (createElement) {
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","", tableName, atts);
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
filler.export(excludes, true);
|
||||
if (po.get_ID() > 0 && po.get_ID() < 1000000) {
|
||||
filler.add(tableName+"_ID", new AttributesImpl());
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 1; i < components.length; i++) {
|
||||
String tables[] = components[i].split("[>]");
|
||||
exportDetail(ctx, document, po, 0, tables);
|
||||
}
|
||||
document.endElement("","",tableName);
|
||||
|
||||
if (createElement) {
|
||||
document.endElement("","",tableName);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new AdempiereException(e);
|
||||
|
@ -175,7 +260,7 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private void exportDetail(Properties ctx, TransformerHandler document, GenericPO parent, int index, String[] tables) {
|
||||
private void exportDetail(PIPOContext ctx, TransformerHandler document, GenericPO parent, int index, String[] tables) {
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
String sql = "SELECT * FROM " + tables[index] + " WHERE " + parent.get_TableName() + "_ID = ?";
|
||||
PreparedStatement pstmt = null;
|
||||
|
@ -186,18 +271,30 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
|||
pstmt.setInt(1, parent.get_ID());
|
||||
rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
GenericPO po = new GenericPO(tables[index], ctx, rs);
|
||||
GenericPO po = new GenericPO(tables[index], ctx.ctx, rs, getTrxName(ctx));
|
||||
int AD_Client_ID = po.getAD_Client_ID();
|
||||
if (AD_Client_ID != Env.getAD_Client_ID(ctx))
|
||||
if (AD_Client_ID != Env.getAD_Client_ID(ctx.ctx))
|
||||
continue;
|
||||
List<String> excludes = defaultExcludeList(tables[index]);
|
||||
document.startElement("", "", tables[index], atts);
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
filler.export(excludes, true);
|
||||
|
||||
boolean createElement = true;
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
if (createElement) {
|
||||
List<String> excludes = defaultExcludeList(tables[index]);
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", tables[index], atts);
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
filler.export(excludes, true);
|
||||
}
|
||||
if (index + 1 < tables.length) {
|
||||
exportDetail(ctx, document, po, index+1, tables);
|
||||
}
|
||||
document.endElement("","",tables[index]);
|
||||
if (createElement) {
|
||||
document.endElement("","",tables[index]);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new AdempiereException(e);
|
||||
|
@ -210,10 +307,22 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
PackoutItem detail = packout.getCurrentPackoutItem();
|
||||
Env.setContext(packout.getCtx(), DataElementParameters.AD_TABLE_ID, (Integer)detail.getProperty(DataElementParameters.AD_TABLE_ID));
|
||||
Env.setContext(packout.getCtx(), DataElementParameters.SQL_STATEMENT, (String)detail.getProperty(DataElementParameters.SQL_STATEMENT));
|
||||
int tableId = 0;
|
||||
String sql = null;
|
||||
if (detail.getProperty(DataElementParameters.AD_TABLE_ID) != null)
|
||||
{
|
||||
tableId = (Integer)detail.getProperty(DataElementParameters.AD_TABLE_ID);
|
||||
sql = (String)detail.getProperty(DataElementParameters.SQL_STATEMENT);
|
||||
}
|
||||
else
|
||||
{
|
||||
tableId = MTable.get(packout.getCtx().ctx, tableName).getAD_Table_ID();
|
||||
sql = "SELECT * FROM " + tableName + " WHERE " + tableName + "_ID=" + recordId;
|
||||
}
|
||||
packout.getCtx().ctx.put(DataElementParameters.AD_TABLE_ID, tableId);
|
||||
packout.getCtx().ctx.put(DataElementParameters.SQL_STATEMENT, sql);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(DataElementParameters.AD_TABLE_ID);
|
||||
packout.getCtx().remove(DataElementParameters.SQL_STATEMENT);
|
||||
packout.getCtx().ctx.remove(DataElementParameters.AD_TABLE_ID);
|
||||
packout.getCtx().ctx.remove(DataElementParameters.SQL_STATEMENT);
|
||||
}
|
||||
}
|
|
@ -20,12 +20,12 @@ 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.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -48,7 +48,7 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> formats = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_ImpFormat.Table_Name);
|
||||
|
@ -57,7 +57,7 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
|||
X_AD_ImpFormat mImpFormat = findPO(ctx, element);
|
||||
if (mImpFormat == null) {
|
||||
int id = findIdByName(ctx, "AD_ImpFormat", name);
|
||||
mImpFormat = new X_AD_ImpFormat(ctx, id > 0 ? id : 0,
|
||||
mImpFormat = new X_AD_ImpFormat(ctx.ctx, id > 0 ? id : 0,
|
||||
getTrxName(ctx));
|
||||
}
|
||||
PoFiller filler = new PoFiller(ctx, mImpFormat, element, this);
|
||||
|
@ -70,6 +70,7 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -89,27 +90,37 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mImpFormat.getName(), mImpFormat
|
||||
.get_ID(), action);
|
||||
throw new POSaveFailedException("Failed to save Import Format.");
|
||||
throw new POSaveFailedException("Failed to save Import Format " + mImpFormat.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
protected void create(Properties ctx, TransformerHandler document)
|
||||
protected void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int import_id = Env.getContextAsInt(ctx,
|
||||
int import_id = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID);
|
||||
|
||||
if (formats.contains(import_id))
|
||||
return;
|
||||
formats.add(import_id);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
X_AD_ImpFormat m_ImpFormat = new X_AD_ImpFormat(ctx, import_id, null);
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_ImpFormat.Table_Name, atts);
|
||||
createImpFormatBinding(ctx, document, m_ImpFormat);
|
||||
X_AD_ImpFormat m_ImpFormat = new X_AD_ImpFormat(ctx.ctx, import_id, null);
|
||||
|
||||
boolean createElement = true;
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_ImpFormat.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (createElement) {
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_ImpFormat.Table_Name, atts);
|
||||
createImpFormatBinding(ctx, document, m_ImpFormat);
|
||||
}
|
||||
|
||||
String sql = "SELECT * FROM AD_ImpFormat_Row WHERE AD_ImpFormat_ID= "
|
||||
+ import_id;
|
||||
|
@ -130,20 +141,23 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
|||
} finally {
|
||||
DB.close(rs, pstmt);
|
||||
}
|
||||
document.endElement("", "", I_AD_ImpFormat.Table_Name);
|
||||
|
||||
if (createElement) {
|
||||
document.endElement("", "", I_AD_ImpFormat.Table_Name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void createImpFormatRow(Properties ctx,
|
||||
private void createImpFormatRow(PIPOContext ctx,
|
||||
TransformerHandler document, int AD_ImpFormat_Row_ID)
|
||||
throws SAXException {
|
||||
Env.setContext(ctx, X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID,
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID);
|
||||
}
|
||||
|
||||
private void createImpFormatBinding(Properties ctx, TransformerHandler document,
|
||||
private void createImpFormatBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_ImpFormat m_ImpFormat) {
|
||||
PoExporter filler = new PoExporter(ctx, document, m_ImpFormat);
|
||||
List<String> excludes = defaultExcludeList(X_AD_ImpFormat.Table_Name);
|
||||
|
@ -156,8 +170,8 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
|
||||
String action = null;
|
||||
List<String> excludes = defaultExcludeList(X_AD_ImpFormat_Row.Table_Name);
|
||||
|
@ -57,20 +57,21 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
Element e = element.properties.get(I_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_ID);
|
||||
if (ReferenceUtils.isIDLookup(e) || ReferenceUtils.isUUIDLookup(e))
|
||||
impFormatId = ReferenceUtils.resolveReference(ctx, e, getTrxName(ctx));
|
||||
impFormatId = ReferenceUtils.resolveReference(ctx.ctx, e, getTrxName(ctx));
|
||||
else
|
||||
impFormatId = findIdByName(ctx, "AD_ImpFormat", e.contents.toString());
|
||||
}
|
||||
|
||||
if (impFormatId <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_ImpFormat_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Element tableElement = element.properties.get(I_AD_ImpFormat.COLUMNNAME_AD_Table_ID);
|
||||
int tableId = 0;
|
||||
if (ReferenceUtils.isIDLookup(tableElement) || ReferenceUtils.isUUIDLookup(tableElement)) {
|
||||
tableId = ReferenceUtils.resolveReference(ctx, tableElement, getTrxName(ctx));
|
||||
tableId = ReferenceUtils.resolveReference(ctx.ctx, tableElement, getTrxName(ctx));
|
||||
} else {
|
||||
String tableName = getStringValue(element, I_AD_ImpFormat.COLUMNNAME_AD_Table_ID, excludes);
|
||||
|
||||
|
@ -79,6 +80,7 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
if (tableId <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Table_ID";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +88,7 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
|||
Element columnElement = element.properties.get(I_AD_ImpFormat_Row.COLUMNNAME_AD_Column_ID);
|
||||
int columnId = 0;
|
||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||
columnId = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
||||
columnId = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||
} else {
|
||||
String columnName = getStringValue(element, I_AD_ImpFormat_Row.COLUMNNAME_AD_Column_ID, excludes);
|
||||
|
||||
|
@ -95,13 +97,14 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
if (columnId <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Column_ID";
|
||||
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,impFormatId);
|
||||
mImpFormatRow = new X_AD_ImpFormat_Row(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mImpFormatRow = new X_AD_ImpFormat_Row(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
|
||||
mImpFormatRow.setAD_Column_ID(columnId);
|
||||
mImpFormatRow.setAD_ImpFormat_ID(impFormatId);
|
||||
|
@ -115,6 +118,7 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -133,18 +137,25 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
else{
|
||||
logImportDetail (ctx, impDetail, 0, mImpFormatRow.getName(), mImpFormatRow.get_ID(),action);
|
||||
throw new POSaveFailedException("Failed to import Import Format Row.");
|
||||
throw new POSaveFailedException("Failed to save Import Format Row " + mImpFormatRow.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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));
|
||||
int AD_ImpFormat_Row_ID = Env.getContextAsInt(ctx.ctx, X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID);
|
||||
X_AD_ImpFormat_Row m_ImpFormat_Row = new X_AD_ImpFormat_Row (ctx.ctx, AD_ImpFormat_Row_ID, getTrxName(ctx));
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_ImpFormat_Row.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","",I_AD_ImpFormat_Row.Table_Name,atts);
|
||||
|
@ -152,12 +163,12 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
|||
document.endElement("","",I_AD_ImpFormat_Row.Table_Name);
|
||||
}
|
||||
|
||||
private void createImpFormatRowBinding(Properties ctx, TransformerHandler document, X_AD_ImpFormat_Row m_ImpFormat_Row)
|
||||
private void createImpFormatRowBinding(PIPOContext ctx, TransformerHandler document, X_AD_ImpFormat_Row m_ImpFormat_Row)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx, document, m_ImpFormat_Row);
|
||||
List<String> excludes = defaultExcludeList(X_AD_ImpFormat_Row.Table_Name);
|
||||
|
||||
String sql = null;
|
||||
String sql = "SELECT AD_Table_ID FROM AD_Column WHERE AD_Column_ID=?";
|
||||
|
||||
int tableId = DB.getSQLValue(null, sql,m_ImpFormat_Row.getAD_Column_ID());
|
||||
filler.addTableReference("AD_Table_ID", "AD_Table", "TableName", tableId, new AttributesImpl());
|
||||
|
@ -174,8 +185,8 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,6 @@ import java.sql.PreparedStatement;
|
|||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
@ -28,6 +27,7 @@ import javax.xml.transform.sax.TransformerHandler;
|
|||
import org.adempiere.exceptions.DBException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -52,7 +52,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class MenuElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_Menu.Table_Name);
|
||||
|
@ -61,7 +61,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
if (mMenu == null) {
|
||||
String menuName = getStringValue(element, "Name");
|
||||
int menuId = findIdByColumn(ctx, "AD_Menu", "Name", menuName);
|
||||
mMenu = new X_AD_Menu(ctx, menuId > 0 ? menuId : 0, getTrxName(ctx));
|
||||
mMenu = new X_AD_Menu(ctx.ctx, menuId > 0 ? menuId : 0, getTrxName(ctx));
|
||||
}
|
||||
PoFiller filler = new PoFiller(ctx, mMenu, element, this);
|
||||
|
||||
|
@ -73,6 +73,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
List<String> notFounds = filler.autoFill(excludes);
|
||||
if (notFounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notFounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -108,7 +109,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
int parentId = 0;
|
||||
if (parentElement != null) {
|
||||
if (ReferenceUtils.isIDLookup(parentElement) || ReferenceUtils.isUUIDLookup(parentElement)) {
|
||||
parentId = ReferenceUtils.resolveReference(ctx, parentElement, getTrxName(ctx));
|
||||
parentId = ReferenceUtils.resolveReference(ctx.ctx, parentElement, getTrxName(ctx));
|
||||
} else {
|
||||
String parent = getStringValue(element, "Parent_ID");
|
||||
parentId = findIdByName(ctx, "AD_Menu", parent);
|
||||
|
@ -116,11 +117,12 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
|
||||
StringBuffer updateSQL = null;
|
||||
String sql = "SELECT count(Parent_ID) FROM AD_TREENODEMM WHERE AD_Tree_ID = 10"
|
||||
int AD_Tree_ID = getDefaultMenuTreeId();
|
||||
String sql = "SELECT count(Parent_ID) FROM AD_TREENODEMM WHERE AD_Tree_ID = "+AD_Tree_ID
|
||||
+ " AND Node_ID = " + mMenu.getAD_Menu_ID();
|
||||
int countRecords = DB.getSQLValue(getTrxName(ctx), sql);
|
||||
if (countRecords > 0) {
|
||||
sql = "select * from AD_TREENODEMM where AD_Tree_ID = 10 and "
|
||||
sql = "select * from AD_TREENODEMM where AD_Tree_ID = "+AD_Tree_ID+" and "
|
||||
+ " Node_ID =?";
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
|
@ -154,9 +156,9 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
colValue = obj == null ? "" : obj.toString();
|
||||
}
|
||||
|
||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx, 0, getTrxName(ctx));
|
||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx.ctx, 0, getTrxName(ctx));
|
||||
backup.setAD_Package_Imp_Detail_ID(impDetail.getAD_Package_Imp_Detail_ID());
|
||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx));
|
||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||
backup.setAD_Table_ID(tableID);
|
||||
backup.setAD_Column_ID(columnID);
|
||||
backup.setAD_Reference_ID(referenceID);
|
||||
|
@ -175,26 +177,30 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
updateSQL = new StringBuffer("UPDATE AD_TREENODEMM ").append(
|
||||
"SET Parent_ID = " + parentId).append(
|
||||
" , SeqNo = " + getStringValue(element, "SeqNo")).append(
|
||||
" WHERE AD_Tree_ID = 10").append(
|
||||
" WHERE AD_Tree_ID = "+AD_Tree_ID).append(
|
||||
" AND Node_ID = " + mMenu.getAD_Menu_ID());
|
||||
} else {
|
||||
updateSQL = 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(
|
||||
parentId + "," + getStringValue(element, "SeqNo") + ", 10, "
|
||||
parentId + "," + getStringValue(element, "SeqNo") + ", "+AD_Tree_ID+", "
|
||||
+ mMenu.getAD_Menu_ID() + ")");
|
||||
}
|
||||
DB.executeUpdateEx(updateSQL.toString(), getTrxName(ctx));
|
||||
DB.executeUpdate(updateSQL.toString(), getTrxName(ctx));
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
private int getDefaultMenuTreeId() {
|
||||
return DB.getSQLValue(null, "SELECT MIN(AD_Tree_ID) FROM AD_Tree WHERE IsDefault='Y' AND TreeType='MM' AND AD_Client_ID=0");
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(PIPOContext 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);
|
||||
int AD_Menu_ID = Env.getContextAsInt(ctx.ctx, "AD_Menu_ID");
|
||||
X_AD_Menu m_Menu = new X_AD_Menu(ctx.ctx, AD_Menu_ID, null);
|
||||
if (m_Menu.isSummary() == false) {
|
||||
createApplication(ctx, document, AD_Menu_ID);
|
||||
} else {
|
||||
|
@ -207,17 +213,18 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private void createMenuBinding(Properties ctx, TransformerHandler document,
|
||||
private void createMenuBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Menu m_Menu) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Menu);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Menu.Table_Name);
|
||||
String sql = "SELECT Parent_ID FROM AD_TreeNoDemm WHERE AD_Tree_ID = 10 and Node_ID=?";
|
||||
int AD_Tree_ID = getDefaultMenuTreeId();
|
||||
String sql = "SELECT Parent_ID FROM AD_TreeNoDemm WHERE AD_Tree_ID = "+AD_Tree_ID+" and Node_ID=?";
|
||||
int id = DB.getSQLValue(null, sql, m_Menu.getAD_Menu_ID());
|
||||
if (id > 0) {
|
||||
filler.addTableReference("Parent_ID", "AD_Menu", "Name", id, new AttributesImpl());
|
||||
}
|
||||
sql = "SELECT SeqNo FROM AD_TreeNoDemm WHERE AD_Tree_ID = 10 and Node_ID=?";
|
||||
sql = "SELECT SeqNo FROM AD_TreeNoDemm WHERE AD_Tree_ID = "+AD_Tree_ID+" and Node_ID=?";
|
||||
int seqNo = DB.getSQLValue(null, sql, m_Menu.getAD_Menu_ID());
|
||||
filler.addString("SeqNo", Integer.toString(seqNo), new AttributesImpl());
|
||||
if (m_Menu.getAD_Menu_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||
|
@ -226,16 +233,16 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
filler.export(excludes);
|
||||
}
|
||||
|
||||
private void createApplication(Properties ctx, TransformerHandler document,
|
||||
private void createApplication(PIPOContext ctx, TransformerHandler document,
|
||||
int AD_Menu_ID) throws SAXException {
|
||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
||||
PackOut packOut = ctx.packOut;
|
||||
String sql = null;
|
||||
// int x = 0;
|
||||
int AD_Tree_ID = getDefaultMenuTreeId();
|
||||
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 "
|
||||
+ "FROM AD_TreeNodeMM A, AD_Menu B "
|
||||
+ "WHERE A.Node_ID = "
|
||||
+ AD_Menu_ID + " AND A.Node_ID = B.AD_Menu_ID";
|
||||
+ AD_Menu_ID + " AND A.Node_ID = B.AD_Menu_ID" + " AND A.AD_Tree_ID="+AD_Tree_ID;
|
||||
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
|
@ -244,7 +251,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
|
||||
X_AD_Menu m_Menu = new X_AD_Menu(ctx, rs.getInt("AD_Menu_ID"),
|
||||
X_AD_Menu m_Menu = new X_AD_Menu(ctx.ctx, rs.getInt("AD_Menu_ID"),
|
||||
null);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
|
@ -294,15 +301,16 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void createModule(Properties ctx, TransformerHandler document,
|
||||
public void createModule(PIPOContext ctx, TransformerHandler document,
|
||||
int menu_id) throws SAXException {
|
||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
||||
PackOut packOut = ctx.packOut;
|
||||
String sql = null;
|
||||
int AD_Tree_ID = getDefaultMenuTreeId();
|
||||
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 "
|
||||
+ "FROM AD_TreeNodeMM A, AD_Menu B "
|
||||
+ "WHERE A.Parent_ID = "
|
||||
+ menu_id + " AND A.Node_ID = B.AD_Menu_ID";
|
||||
+ menu_id + " AND A.Node_ID = B.AD_Menu_ID" + " AND A.AD_Tree_ID="+AD_Tree_ID;
|
||||
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
|
@ -311,7 +319,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
// Menu tag Start.
|
||||
X_AD_Menu m_Menu = new X_AD_Menu(ctx, rs.getInt("AD_Menu_ID"),
|
||||
X_AD_Menu m_Menu = new X_AD_Menu(ctx.ctx, rs.getInt("AD_Menu_ID"),
|
||||
null);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
|
@ -364,9 +372,9 @@ public class MenuElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Menu_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Menu_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Menu_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Menu_ID);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,11 +18,11 @@ package org.adempiere.pipo2.handler;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -41,15 +41,15 @@ public class MessageElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> messages = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
MMessage mMessage = findPO(ctx, element);
|
||||
if (mMessage == null) {
|
||||
String value = getStringValue(element, "Value");
|
||||
int id = findIdByColumn(ctx, "AD_Message", "value", value);
|
||||
|
||||
mMessage = new MMessage(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mMessage = new MMessage(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
PoFiller filler = new PoFiller(ctx, mMessage, element, this);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Message.Table_Name);
|
||||
|
@ -57,6 +57,7 @@ public class MessageElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -79,7 +80,7 @@ public class MessageElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
else{
|
||||
logImportDetail (ctx, impDetail, 0, mMessage.getValue(), mMessage.get_ID(),action);
|
||||
throw new POSaveFailedException("Failed to save message.");
|
||||
throw new POSaveFailedException("Failed to save message " + mMessage.getValue());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -88,24 +89,31 @@ public class MessageElementHandler extends AbstractElementHandler {
|
|||
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Message_ID = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID);
|
||||
int AD_Message_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID);
|
||||
if (messages.contains(AD_Message_ID))
|
||||
return;
|
||||
messages.add(AD_Message_ID);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
X_AD_Message m_Message = new X_AD_Message (ctx, AD_Message_ID, null);
|
||||
X_AD_Message m_Message = new X_AD_Message (ctx.ctx, AD_Message_ID, null);
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Message.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","",I_AD_Message.Table_Name,atts);
|
||||
createMessageBinding(ctx,document,m_Message);
|
||||
document.endElement("","",I_AD_Message.Table_Name);
|
||||
}
|
||||
|
||||
private void createMessageBinding(Properties ctx, TransformerHandler document, X_AD_Message m_Message)
|
||||
private void createMessageBinding(PIPOContext ctx, TransformerHandler document, X_AD_Message m_Message)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Message);
|
||||
if (m_Message.getAD_Message_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||
|
@ -117,8 +125,8 @@ public class MessageElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,12 +17,12 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.PoFiller;
|
||||
|
@ -38,7 +38,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class OrgRoleElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Role_OrgAccess.Table_Name);
|
||||
|
||||
X_AD_Role_OrgAccess po = findPO(ctx, element);
|
||||
|
@ -48,19 +48,25 @@ public class OrgRoleElementHandler extends AbstractElementHandler {
|
|||
roleId = getParentId(element, I_AD_Role.Table_Name);
|
||||
} else {
|
||||
Element roleElement = element.properties.get("AD_Role_ID");
|
||||
roleId = ReferenceUtils.resolveReference(ctx, roleElement, getTrxName(ctx));
|
||||
roleId = ReferenceUtils.resolveReference(ctx.ctx, roleElement, getTrxName(ctx));
|
||||
}
|
||||
|
||||
if (roleId <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Role_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Element orgElement = element.properties.get("AD_Org_ID");
|
||||
int orgId = ReferenceUtils.resolveReference(ctx, orgElement, getTrxName(ctx));
|
||||
int orgId = ReferenceUtils.resolveReference(ctx.ctx, orgElement, getTrxName(ctx));
|
||||
|
||||
Query query = new Query(ctx, "AD_Role_OrgAccess", "AD_Role_ID=? and AD_Org_ID=?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_Role_OrgAccess", "AD_Role_ID=? and AD_Org_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{roleId, orgId})
|
||||
.setClient_ID()
|
||||
.<X_AD_Role_OrgAccess>first();
|
||||
|
||||
if (po == null) {
|
||||
po = new X_AD_Role_OrgAccess(ctx, 0, getTrxName(ctx));
|
||||
po = new X_AD_Role_OrgAccess(ctx.ctx, 0, getTrxName(ctx));
|
||||
po.setAD_Org_ID(orgId);
|
||||
po.setAD_Role_ID(roleId);
|
||||
}
|
||||
|
@ -72,37 +78,46 @@ public class OrgRoleElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
po.saveEx();
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Role_OrgAccess.Table_Name, atts);
|
||||
createOrgAccessBinding(ctx, document, AD_Org_ID, AD_Role_ID);
|
||||
document.endElement("", "", I_AD_Role_OrgAccess.Table_Name);
|
||||
int AD_Org_ID = Env.getContextAsInt(ctx.ctx, "AD_Org_ID");
|
||||
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
|
||||
Query query = new Query(ctx.ctx, "AD_Role_OrgAccess", "AD_Role_ID=? and AD_Org_ID=?", getTrxName(ctx));
|
||||
X_AD_Role_OrgAccess po = query.setParameters(new Object[]{AD_Role_ID, AD_Org_ID}).<X_AD_Role_OrgAccess>first();
|
||||
if (po != null) {
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Role_OrgAccess.Table_Name, atts);
|
||||
createOrgAccessBinding(ctx, document, po);
|
||||
document.endElement("", "", I_AD_Role_OrgAccess.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createOrgAccessBinding(Properties ctx, TransformerHandler document,
|
||||
int orgId, int roleId) {
|
||||
Query query = new Query(ctx, "AD_Role_OrgAccess", "AD_Role_ID=? and AD_Org_ID=?", getTrxName(ctx));
|
||||
X_AD_Role_OrgAccess po = query.setParameters(new Object[]{roleId, orgId}).<X_AD_Role_OrgAccess>first();
|
||||
private void createOrgAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Role_OrgAccess po) {
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
AttributesImpl orgRefAtts = new AttributesImpl();
|
||||
String orgReference = ReferenceUtils.getTableReference("AD_Org", "Name", orgId, orgRefAtts);
|
||||
String orgReference = ReferenceUtils.getTableReference("AD_Org", "Name", po.getAD_Org_ID(), orgRefAtts);
|
||||
filler.addString("AD_Org_ID", orgReference, orgRefAtts);
|
||||
|
||||
AttributesImpl roleRefAtts = new AttributesImpl();
|
||||
String roleReference = ReferenceUtils.getTableReference("AD_Role", "Name", roleId, roleRefAtts);
|
||||
String roleReference = ReferenceUtils.getTableReference("AD_Role", "Name", po.getAD_Role_ID(), roleRefAtts);
|
||||
filler.addString("AD_Role_ID", roleReference, roleRefAtts);
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_Role_OrgAccess.Table_Name);
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -38,21 +38,22 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class PreferenceElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_Preference.Table_Name);
|
||||
MPreference mPreference = findPO(ctx, element);
|
||||
if (mPreference == null) {
|
||||
mPreference = new MPreference(ctx, 0, getTrxName(ctx));
|
||||
mPreference = new MPreference(ctx.ctx, 0, getTrxName(ctx));
|
||||
PoFiller filler = new PoFiller(ctx, mPreference, element, this);
|
||||
List<String> notFounds = filler.autoFill(excludes);
|
||||
if (notFounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notFounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
Query query = new Query(ctx, "AD_Preference", "Attribute = ? AND coalesce(AD_User_ID,0) = ? AND coalesce(AD_Window_ID,0) = ?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_Preference", "Attribute = ? AND coalesce(AD_User_ID,0) = ? AND coalesce(AD_Window_ID,0) = ?", getTrxName(ctx));
|
||||
MPreference tmp = query
|
||||
.setParameters(new Object[]{mPreference.getAttribute(), mPreference.getAD_User_ID(), mPreference.getAD_Window_ID()})
|
||||
.first();
|
||||
|
@ -61,6 +62,7 @@ public class PreferenceElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
mPreference = tmp;
|
||||
|
@ -70,6 +72,7 @@ public class PreferenceElementHandler extends AbstractElementHandler {
|
|||
List<String> notFounds = filler.autoFill(excludes);
|
||||
if (notFounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notFounds.toString();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -94,28 +97,35 @@ public class PreferenceElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mPreference.getAttribute(),
|
||||
mPreference.get_ID(), action);
|
||||
throw new POSaveFailedException("Failed to save Preference");
|
||||
throw new POSaveFailedException("Failed to save Preference " + mPreference.getAttribute());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Preference_ID = Env.getContextAsInt(ctx,
|
||||
int AD_Preference_ID = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_Preference.COLUMNNAME_AD_Preference_ID);
|
||||
X_AD_Preference m_Preference = new X_AD_Preference(ctx,
|
||||
X_AD_Preference m_Preference = new X_AD_Preference(ctx.ctx,
|
||||
AD_Preference_ID, getTrxName(ctx));
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Preference.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Preference.Table_Name, atts);
|
||||
document.startElement("", "", X_AD_Preference.Table_Name, atts);
|
||||
createPreferenceBinding(ctx, document, m_Preference);
|
||||
document.endElement("", "", I_AD_Preference.Table_Name);
|
||||
}
|
||||
|
||||
private void createPreferenceBinding(Properties ctx, TransformerHandler document,
|
||||
private void createPreferenceBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Preference m_Preference) {
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Preference);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Preference.Table_Name);
|
||||
|
@ -130,9 +140,9 @@ public class PreferenceElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_Preference.COLUMNNAME_AD_Preference_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_Preference.COLUMNNAME_AD_Preference_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_Preference.COLUMNNAME_AD_Preference_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_Preference.COLUMNNAME_AD_Preference_ID);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,24 +21,26 @@ import java.sql.PreparedStatement;
|
|||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.exceptions.DBException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoFiller;
|
||||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
||||
import org.compiere.model.I_AD_PrintFormat;
|
||||
import org.compiere.model.I_AD_PrintFormatItem;
|
||||
import org.compiere.model.I_AD_PrintPaper;
|
||||
import org.compiere.model.I_AD_Table;
|
||||
import org.compiere.model.X_AD_Package_Exp_Detail;
|
||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||
import org.compiere.model.X_AD_PrintFormat;
|
||||
import org.compiere.model.X_AD_PrintFormatItem;
|
||||
import org.compiere.print.MPrintFormat;
|
||||
import org.compiere.print.MPrintFormatItem;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
import org.xml.sax.SAXException;
|
||||
|
@ -48,14 +50,14 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> formats = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
X_AD_PrintFormat mPrintFormat = findPO(ctx, element);
|
||||
if (mPrintFormat == null) {
|
||||
String name = getStringValue(element, "Name");
|
||||
int id = findIdByColumn(ctx, "AD_PrintFormat", "Name", name);
|
||||
mPrintFormat = new X_AD_PrintFormat(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mPrintFormat = new X_AD_PrintFormat(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
PoFiller filler = new PoFiller(ctx, mPrintFormat, element, this);
|
||||
List<String> excludes = defaultExcludeList(X_AD_PrintFormat.Table_Name);
|
||||
|
@ -65,6 +67,7 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -85,17 +88,17 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mPrintFormat.getName(),
|
||||
mPrintFormat.get_ID(), action);
|
||||
throw new POSaveFailedException("Failed to save Print Format");
|
||||
throw new POSaveFailedException("Failed to save Print Format " + mPrintFormat.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_PrintFormat_ID = Env.getContextAsInt(ctx,
|
||||
int AD_PrintFormat_ID = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID);
|
||||
|
||||
if (formats.contains(AD_PrintFormat_ID))
|
||||
|
@ -103,17 +106,48 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
|||
formats.add(AD_PrintFormat_ID);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
|
||||
X_AD_PrintFormat m_Printformat = new X_AD_PrintFormat(ctx, AD_PrintFormat_ID, null);
|
||||
MPrintFormat m_Printformat = new MPrintFormat(ctx.ctx, AD_PrintFormat_ID, null);
|
||||
if (m_Printformat.getAD_PrintPaper_ID() > 0) {
|
||||
try {
|
||||
getPackOut(ctx).getHandler(I_AD_PrintPaper.Table_Name).packOut(getPackOut(ctx), document, getLogDocument(ctx), m_Printformat.getAD_PrintPaper_ID());
|
||||
ctx.packOut.getHandler(I_AD_PrintPaper.Table_Name).packOut(ctx.packOut, document, ctx.logDocument, m_Printformat.getAD_PrintPaper_ID());
|
||||
} catch (Exception e) {
|
||||
throw new SAXException(e);
|
||||
}
|
||||
}
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_PrintFormat.Table_Name, atts);
|
||||
createPrintFormatBinding(ctx, document, m_Printformat);
|
||||
|
||||
if (m_Printformat.getAD_Client_ID() == 0 && m_Printformat.getAD_Table_ID() > 0) {
|
||||
try {
|
||||
ctx.packOut.getHandler(I_AD_Table.Table_Name).packOut(ctx.packOut, document, ctx.logDocument, m_Printformat.getAD_Table_ID());
|
||||
} catch (Exception e) {
|
||||
throw new SAXException(e);
|
||||
}
|
||||
}
|
||||
|
||||
boolean createElement = true;
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Printformat.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
int size = m_Printformat.getItemCount();
|
||||
for(int i = 0; i < size; i++) {
|
||||
MPrintFormatItem item = m_Printformat.getItem(i);
|
||||
if (item.getAD_PrintFormatChild_ID() > 0)
|
||||
{
|
||||
try {
|
||||
this.packOut(ctx.packOut, document, null, item.getAD_PrintFormatChild_ID());
|
||||
} catch (Exception e) {
|
||||
throw new SAXException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (createElement) {
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_PrintFormat.Table_Name, atts);
|
||||
createPrintFormatBinding(ctx, document, m_Printformat);
|
||||
}
|
||||
|
||||
String sql = "SELECT AD_PrintFormatItem_ID FROM AD_PrintFormatItem WHERE AD_PrintFormat_ID= "
|
||||
+ m_Printformat.getAD_PrintFormat_ID()
|
||||
|
@ -131,21 +165,23 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
|||
} finally {
|
||||
DB.close(rs, pstmt);
|
||||
}
|
||||
document.endElement("", "", I_AD_PrintFormat.Table_Name);
|
||||
|
||||
if (createElement) {
|
||||
document.endElement("", "", X_AD_PrintFormat.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createItem(Properties ctx, TransformerHandler document,
|
||||
private void createItem(PIPOContext ctx, TransformerHandler document,
|
||||
int AD_PrintFormatItem_ID) throws SAXException {
|
||||
try {
|
||||
getPackOut(ctx).getHandler(I_AD_PrintFormatItem.Table_Name).packOut(getPackOut(ctx), document, getLogDocument(ctx), AD_PrintFormatItem_ID);
|
||||
ctx.packOut.getHandler(X_AD_PrintFormatItem.Table_Name).packOut(ctx.packOut, document, ctx.logDocument, AD_PrintFormatItem_ID);
|
||||
} catch (Exception e) {
|
||||
throw new SAXException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void createPrintFormatBinding(Properties ctx, TransformerHandler document,
|
||||
X_AD_PrintFormat m_Printformat) {
|
||||
private void createPrintFormatBinding(PIPOContext ctx, TransformerHandler document,
|
||||
MPrintFormat m_Printformat) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Printformat);
|
||||
List<String> excludes = defaultExcludeList(X_AD_PrintFormat.Table_Name);
|
||||
|
@ -158,9 +194,9 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_PrintFormatItem.Table_Name);
|
||||
|
@ -56,16 +56,17 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
|||
parentId = getParentId(element, I_AD_PrintFormatItem.Table_Name);
|
||||
} else {
|
||||
Element pfElement = element.properties.get(I_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormat_ID);
|
||||
parentId = ReferenceUtils.resolveReference(ctx, pfElement, getTrxName(ctx));
|
||||
parentId = ReferenceUtils.resolveReference(ctx.ctx, pfElement, getTrxName(ctx));
|
||||
}
|
||||
if (parentId <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_PrintFormat_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
String name = getStringValue(element, "Name");
|
||||
int id = findIdByNameAndParentId(ctx, "AD_PrintFormatItem", name, "AD_PrintFormat", parentId);
|
||||
mPrintFormatItem = new X_AD_PrintFormatItem(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mPrintFormatItem = new X_AD_PrintFormatItem(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mPrintFormatItem.setAD_PrintFormat_ID(parentId);
|
||||
excludes.add(I_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormat_ID);
|
||||
}
|
||||
|
@ -79,10 +80,10 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
|||
int columnId = 0;
|
||||
Element columnElement = element.properties.get("AD_Column_ID");
|
||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||
columnId = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
||||
columnId = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||
} else {
|
||||
Element tableElement = element.properties.get("AD_Table_ID");
|
||||
int tableId = ReferenceUtils.resolveReference(ctx, tableElement, getTrxName(ctx));
|
||||
int tableId = ReferenceUtils.resolveReference(ctx.ctx, tableElement, getTrxName(ctx));
|
||||
String columnName = getStringValue(element, "AD_Column_ID");
|
||||
columnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnName,
|
||||
"AD_Table", tableId);
|
||||
|
@ -92,7 +93,7 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
|||
|
||||
excludes.add("AD_PrintFormatChild_ID");
|
||||
Element pfchildElement = element.properties.get(I_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatChild_ID);
|
||||
int AD_PrintFormatChild_ID = ReferenceUtils.resolveReference(ctx, pfchildElement, getTrxName(ctx));
|
||||
int AD_PrintFormatChild_ID = ReferenceUtils.resolveReference(ctx.ctx, pfchildElement, getTrxName(ctx));
|
||||
if (AD_PrintFormatChild_ID > 0) {
|
||||
mPrintFormatItem.setAD_PrintFormatChild_ID(AD_PrintFormatChild_ID);
|
||||
} else if (pfchildElement.contents != null && pfchildElement.contents.length() > 0) {
|
||||
|
@ -105,6 +106,7 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -124,20 +126,27 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mPrintFormatItem.getName(),
|
||||
mPrintFormatItem.get_ID(), action);
|
||||
throw new POSaveFailedException("PrintFormatItem");
|
||||
throw new POSaveFailedException("Failed to save PrintFormatItem " + mPrintFormatItem.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_PrintFormatItem_ID = Env.getContextAsInt(ctx,
|
||||
int AD_PrintFormatItem_ID = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID);
|
||||
X_AD_PrintFormatItem m_PrintFormatItem = new X_AD_PrintFormatItem(ctx,
|
||||
X_AD_PrintFormatItem m_PrintFormatItem = new X_AD_PrintFormatItem(ctx.ctx,
|
||||
AD_PrintFormatItem_ID, null);
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_PrintFormatItem.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_PrintFormatItem.Table_Name, atts);
|
||||
|
@ -145,7 +154,7 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
|||
document.endElement("", "", I_AD_PrintFormatItem.Table_Name);
|
||||
}
|
||||
|
||||
private void createPrintFormatItemBinding(Properties ctx, TransformerHandler document,
|
||||
private void createPrintFormatItemBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_PrintFormatItem mPrintformatItem) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, mPrintformatItem);
|
||||
|
@ -154,12 +163,11 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
|||
if (mPrintformatItem.getAD_PrintFormatItem_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||
filler.add("AD_PrintFormatItem_ID", new AttributesImpl());
|
||||
|
||||
if (mPrintformatItem.getAD_Column_ID() > 0) {
|
||||
if (mPrintformatItem.getAD_Client_ID() == 0 && mPrintformatItem.getAD_Column_ID() > 0) {
|
||||
String sql = "SELECT AD_Table_ID FROM AD_Column WHERE AD_Column_ID=?";
|
||||
int tableID = DB.getSQLValue(null, sql, mPrintformatItem.getAD_Column_ID());
|
||||
AttributesImpl referenceAtts = new AttributesImpl();
|
||||
String value = ReferenceUtils.getTableReference("AD_Table", "TableName", tableID, referenceAtts);
|
||||
filler.addString("AD_Table.TableName", value, referenceAtts);
|
||||
filler.addTableReference("AD_Table_ID", "AD_Table", "TableName", tableID, referenceAtts);
|
||||
}
|
||||
|
||||
filler.export(excludes);
|
||||
|
@ -169,9 +177,9 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
|||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
|
||||
Env.setContext(packout.getCtx(), X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID, recordId);
|
||||
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -37,7 +37,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class PrintPaperElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_PrintPaper.Table_Name);
|
||||
|
@ -48,7 +48,7 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
|||
String printPaperName = getStringValue(element, "Name", excludes);
|
||||
int id = findIdByName(ctx, "AD_PrintPaper", printPaperName);
|
||||
|
||||
printPaper = new X_AD_PrintPaper(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
printPaper = new X_AD_PrintPaper(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
PoFiller filler = new PoFiller(ctx, printPaper, element, this);
|
||||
|
||||
|
@ -58,6 +58,7 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -76,20 +77,27 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, printPaper.getName(),
|
||||
printPaper.get_ID(), action);
|
||||
throw new POSaveFailedException("PrintPaper");
|
||||
throw new POSaveFailedException("Failed to save PrintPaper " + printPaper.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_PrintPaper_ID = Env.getContextAsInt(ctx,
|
||||
int AD_PrintPaper_ID = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_PrintPaper.COLUMNNAME_AD_PrintPaper_ID);
|
||||
X_AD_PrintPaper printPaper = new X_AD_PrintPaper(ctx,
|
||||
X_AD_PrintPaper printPaper = new X_AD_PrintPaper(ctx.ctx,
|
||||
AD_PrintPaper_ID, null);
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (printPaper.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_PrintPaper.Table_Name, atts);
|
||||
|
@ -97,7 +105,7 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
|||
document.endElement("", "", I_AD_PrintPaper.Table_Name);
|
||||
}
|
||||
|
||||
private void createPrintPaperBinding(Properties ctx, TransformerHandler document,
|
||||
private void createPrintPaperBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_PrintPaper printPaper) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, printPaper);
|
||||
|
@ -112,9 +120,9 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), X_AD_PrintPaper.COLUMNNAME_AD_PrintPaper_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_PrintPaper.COLUMNNAME_AD_PrintPaper_ID, recordId);
|
||||
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_PrintPaper.COLUMNNAME_AD_PrintPaper_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_PrintPaper.COLUMNNAME_AD_PrintPaper_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class ProcessAccessElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
int roleid =0;
|
||||
int processid =0;
|
||||
List<String> excludes = defaultExcludeList(X_AD_Process_Access.Table_Name);
|
||||
|
@ -49,18 +49,29 @@ public class ProcessAccessElementHandler extends AbstractElementHandler {
|
|||
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
||||
roleid = getParentId(element, I_AD_Role.Table_Name);
|
||||
} else {
|
||||
Element roleElement = element.properties.get(I_AD_Process_Access.COLUMNNAME_AD_Role_ID);
|
||||
roleid = ReferenceUtils.resolveReference(ctx, roleElement, getTrxName(ctx));
|
||||
Element roleElement = element.properties.get("AD_Role_ID");
|
||||
roleid = ReferenceUtils.resolveReference(ctx.ctx, roleElement, getTrxName(ctx));
|
||||
}
|
||||
|
||||
if (roleid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Role_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Element processElement = element.properties.get(I_AD_Process_Access.COLUMNNAME_AD_Process_ID);
|
||||
processid = ReferenceUtils.resolveReference(ctx, processElement, getTrxName(ctx));
|
||||
processid = ReferenceUtils.resolveReference(ctx.ctx, processElement, getTrxName(ctx));
|
||||
if (processid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Process_ID " + (processElement.contents != null ? processElement.contents.toString() : "");
|
||||
return;
|
||||
}
|
||||
|
||||
Query query = new Query(ctx, "AD_Process_Access", "AD_Role_ID=? and AD_Process_ID=?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_Process_Access", "AD_Role_ID=? and AD_Process_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{roleid, processid}).first();
|
||||
if (po == null)
|
||||
{
|
||||
po = new X_AD_Process_Access(ctx, 0, getTrxName(ctx));
|
||||
po = new X_AD_Process_Access(ctx.ctx, 0, getTrxName(ctx));
|
||||
po.setAD_Process_ID(processid);
|
||||
po.setAD_Role_ID(roleid);
|
||||
}
|
||||
|
@ -71,39 +82,47 @@ public class ProcessAccessElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
po.saveEx();
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Process_Access.Table_Name, atts);
|
||||
createProcessAccessBinding(ctx, document, AD_Process_ID, AD_Role_ID);
|
||||
document.endElement("", "", I_AD_Process_Access.Table_Name);
|
||||
}
|
||||
|
||||
private void createProcessAccessBinding(Properties ctx, TransformerHandler document,
|
||||
int process_id, int role_id) {
|
||||
int AD_Process_ID = Env.getContextAsInt(ctx.ctx, X_AD_Process.COLUMNNAME_AD_Process_ID);
|
||||
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
|
||||
X_AD_Process_Access po = null;
|
||||
Query query = new Query(ctx, "AD_Process_Access", "AD_Role_ID=? and AD_Process_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{role_id, process_id}).first();
|
||||
if (po != null)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Process_Access.Table_Name);
|
||||
filler.export(excludes);
|
||||
Query query = new Query(ctx.ctx, "AD_Process_Access", "AD_Role_ID=? and AD_Process_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{AD_Role_ID, AD_Process_ID}).first();
|
||||
|
||||
if (po != null) {
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Process_Access.Table_Name, atts);
|
||||
createProcessAccessBinding(ctx, document, po);
|
||||
document.endElement("", "", I_AD_Process_Access.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createProcessAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Process_Access po) {
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Process_Access.Table_Name);
|
||||
filler.export(excludes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
|
|
|
@ -18,13 +18,13 @@ package org.adempiere.pipo2.handler;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -51,17 +51,17 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> processes = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
X_AD_Process mProcess = findPO(ctx, element);
|
||||
if (mProcess == null) {
|
||||
String value = getStringValue(element, "Value");
|
||||
|
||||
// Get New process.
|
||||
int id = findIdByColumn(ctx, "AD_Process", "Value", value);
|
||||
mProcess = new X_AD_Process(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mProcess = new X_AD_Process(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
|
||||
if (mProcess.getAD_Process_ID() == 0 && isOfficialId(element, "AD_Process_ID"))
|
||||
|
@ -73,6 +73,7 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -94,7 +95,7 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mProcess.getName(), mProcess
|
||||
.get_ID(), action);
|
||||
throw new POSaveFailedException("Process");
|
||||
throw new POSaveFailedException("Failed to save Process " + mProcess.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -102,18 +103,18 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Process_ID = Env.getContextAsInt(ctx, "AD_Process_ID");
|
||||
int AD_Process_ID = Env.getContextAsInt(ctx.ctx, "AD_Process_ID");
|
||||
if (processes.contains(AD_Process_ID))
|
||||
return;
|
||||
processes.add(AD_Process_ID);
|
||||
PackOut packOut = getPackOut(ctx);
|
||||
PackOut packOut = ctx.packOut;
|
||||
|
||||
X_AD_Process m_Process = new X_AD_Process(ctx, AD_Process_ID, getTrxName(ctx));
|
||||
X_AD_Process m_Process = new X_AD_Process(ctx.ctx, AD_Process_ID, getTrxName(ctx));
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
|
||||
|
@ -132,11 +133,22 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
|||
ElementHandler handler = packOut.getHandler(I_AD_Workflow.Table_Name);
|
||||
handler.packOut(packOut,document,null,m_Process.getAD_Workflow_ID());
|
||||
}
|
||||
|
||||
boolean createElement = true;
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Process.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (createElement) {
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Process.Table_Name, atts);
|
||||
createProcessBinding(ctx, document, m_Process);
|
||||
}
|
||||
|
||||
Query query = new Query(ctx, "AD_Process_PARA", "AD_Process_ID = ?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_Process_PARA", "AD_Process_ID = ?", getTrxName(ctx));
|
||||
List<X_AD_Process_Para> paralist = query.setParameters(new Object[]{AD_Process_ID}).list();
|
||||
for (X_AD_Process_Para para : paralist) {
|
||||
if (para.getAD_Reference_ID()>0)
|
||||
|
@ -160,22 +172,24 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
|||
createProcessPara(ctx, document, para.getAD_Process_Para_ID());
|
||||
}
|
||||
|
||||
document.endElement("", "", I_AD_Process.Table_Name);
|
||||
if (createElement) {
|
||||
document.endElement("", "", X_AD_Process.Table_Name);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new AdempiereException(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void createProcessPara(Properties ctx, TransformerHandler document,
|
||||
private void createProcessPara(PIPOContext ctx, TransformerHandler document,
|
||||
int AD_Process_Para_ID) throws SAXException {
|
||||
Env.setContext(ctx, X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID,
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID);
|
||||
}
|
||||
|
||||
private void createProcessBinding(Properties ctx, TransformerHandler document,
|
||||
private void createProcessBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Process m_Process) {
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Process);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Process.Table_Name);
|
||||
|
@ -188,8 +202,8 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Process_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Process_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Process_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Process_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,13 +17,12 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -41,12 +40,12 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class ProcessParaElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Process_Para.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
if (isParentDefer(element, I_AD_Process.Table_Name)) {
|
||||
element.defer = true;
|
||||
return;
|
||||
|
@ -54,15 +53,15 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
|||
|
||||
X_AD_Process_Para mProcessPara = findPO(ctx, element);
|
||||
if (mProcessPara == null) {
|
||||
String name = getStringValue(element, "Name");
|
||||
String name = getStringValue(element, "ColumnName");
|
||||
|
||||
int id = 0;
|
||||
int masterId = 0;
|
||||
if (getParentId(element, I_AD_Process.Table_Name) > 0) {
|
||||
masterId = getParentId(element, "process");
|
||||
masterId = getParentId(element, I_AD_Process.Table_Name);
|
||||
} else {
|
||||
Element processElement = element.properties.get(I_AD_Process_Para.COLUMNNAME_AD_Process_ID);
|
||||
masterId = ReferenceUtils.resolveReference(ctx, processElement, getTrxName(ctx));
|
||||
masterId = ReferenceUtils.resolveReference(ctx.ctx, processElement, getTrxName(ctx));
|
||||
}
|
||||
if (masterId <= 0) {
|
||||
element.defer = true;
|
||||
|
@ -70,8 +69,8 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
id = findIdByColumnAndParentId(ctx, "AD_Process_Para", "Name", name, "AD_Process", masterId);
|
||||
mProcessPara = new X_AD_Process_Para(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
id = findIdByColumnAndParentId(ctx, "AD_Process_Para", "ColumnName", name, "AD_Process", masterId);
|
||||
mProcessPara = new X_AD_Process_Para(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mProcessPara.setAD_Process_ID(masterId);
|
||||
excludes.add(I_AD_Process_Para.COLUMNNAME_AD_Process_ID);
|
||||
}
|
||||
|
@ -84,6 +83,7 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -99,12 +99,12 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
|||
action = "New";
|
||||
}
|
||||
if (mProcessPara.save(getTrxName(ctx)) == true) {
|
||||
logImportDetail(ctx, impDetail, 1, mProcessPara.getName(),
|
||||
logImportDetail(ctx, impDetail, 1, mProcessPara.getColumnName(),
|
||||
mProcessPara.get_ID(), action);
|
||||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mProcessPara.getName(),
|
||||
logImportDetail(ctx, impDetail, 0, mProcessPara.getColumnName(),
|
||||
mProcessPara.get_ID(), action);
|
||||
throw new POSaveFailedException("ProcessPara");
|
||||
throw new POSaveFailedException("Failed to save ProcessPara " + mProcessPara.getColumnName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -112,23 +112,29 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Process_Para_ID = Env.getContextAsInt(ctx,
|
||||
int AD_Process_Para_ID = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID);
|
||||
X_AD_Process_Para m_Processpara = new X_AD_Process_Para(ctx,
|
||||
X_AD_Process_Para m_Processpara = new X_AD_Process_Para(ctx.ctx,
|
||||
AD_Process_Para_ID, getTrxName(ctx));
|
||||
|
||||
if (m_Processpara.getAD_Element_ID() > 0) {
|
||||
PackOut packOut = getPackOut(ctx);
|
||||
PackOut packOut = ctx.packOut;
|
||||
ElementHandler handler = packOut.getHandler(I_AD_Element.Table_Name);
|
||||
try {
|
||||
handler.packOut(packOut,document,null,m_Processpara.getAD_Element_ID());
|
||||
} catch (Exception e) {
|
||||
throw new AdempiereException(e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Processpara.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
|
@ -138,7 +144,7 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
|||
document.endElement("", "", I_AD_Process_Para.Table_Name);
|
||||
}
|
||||
|
||||
private void createProcessParaBinding(Properties ctx, TransformerHandler document,
|
||||
private void createProcessParaBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Process_Para m_Processpara) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Processpara);
|
||||
|
@ -153,8 +159,8 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,12 +21,12 @@ import java.sql.ResultSet;
|
|||
import java.sql.SQLException;
|
||||
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.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -51,17 +51,17 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> references = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
String name = getStringValue(element, "Name");
|
||||
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
|
||||
X_AD_Reference mReference = findPO(ctx, element);
|
||||
if (mReference == null) {
|
||||
int id = findIdByName(ctx, "AD_Reference", name);
|
||||
mReference = new X_AD_Reference(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mReference = new X_AD_Reference(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
List<String> excludes = defaultExcludeList(X_AD_Reference.Table_Name);
|
||||
if (mReference.getAD_Reference_ID() == 0 && isOfficialId(element, "AD_Reference_ID"))
|
||||
|
@ -71,6 +71,7 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -96,7 +97,7 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mReference.getName(),
|
||||
mReference.get_ID(), action);
|
||||
throw new POSaveFailedException("Reference");
|
||||
throw new POSaveFailedException("Failed to save Reference " + mReference.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -104,12 +105,12 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int Reference_id = Env.getContextAsInt(ctx,
|
||||
int Reference_id = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_Reference.COLUMNNAME_AD_Reference_ID);
|
||||
|
||||
if (references.contains(Reference_id))
|
||||
|
@ -118,11 +119,20 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
|||
references.add(Reference_id);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
|
||||
X_AD_Reference m_Reference = new X_AD_Reference(ctx, Reference_id, getTrxName(ctx));
|
||||
X_AD_Reference m_Reference = new X_AD_Reference(ctx.ctx, Reference_id, getTrxName(ctx));
|
||||
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Reference.Table_Name, atts);
|
||||
createReferenceBinding(ctx, document, m_Reference);
|
||||
boolean createElement = true;
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Reference.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (createElement) {
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Reference.Table_Name, atts);
|
||||
createReferenceBinding(ctx, document, m_Reference);
|
||||
}
|
||||
|
||||
if (m_Reference.getValidationType().compareTo("L") == 0) {
|
||||
String sql1 = "SELECT AD_REF_LIST_ID FROM AD_Ref_List WHERE AD_Reference_ID= "
|
||||
|
@ -156,27 +166,29 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
|||
} else if (m_Reference.getValidationType().compareTo("T") == 0) {
|
||||
createReferenceTable(ctx, document, Reference_id);
|
||||
}
|
||||
document.endElement("", "", I_AD_Reference.Table_Name);
|
||||
|
||||
if (createElement) {
|
||||
document.endElement("", "", X_AD_Reference.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createReferenceTable(Properties ctx, TransformerHandler document,
|
||||
private void createReferenceTable(PIPOContext ctx, TransformerHandler document,
|
||||
int reference_id) throws SAXException {
|
||||
Env.setContext(ctx, X_AD_Ref_Table.COLUMNNAME_AD_Reference_ID, reference_id);
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
|
||||
}
|
||||
|
||||
private void createReferenceList(Properties ctx,
|
||||
private void createReferenceList(PIPOContext ctx,
|
||||
TransformerHandler document, int AD_Ref_List_ID)
|
||||
throws SAXException {
|
||||
Env.setContext(ctx, X_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID,
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID);
|
||||
}
|
||||
|
||||
private void createReferenceBinding(Properties ctx, TransformerHandler document,
|
||||
private void createReferenceBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Reference m_Reference) {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Reference.Table_Name);
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Reference);
|
||||
|
@ -188,8 +200,8 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Reference_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Reference_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Reference_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Reference_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -38,15 +38,15 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class ReferenceListElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isParentSkip(element, null)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
/*if (isParentSkip(element, null)) {
|
||||
element.skip = true;
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
|
||||
X_AD_Ref_List mRefList = findPO(ctx, element);
|
||||
if (mRefList == null) {
|
||||
|
@ -56,11 +56,11 @@ public class ReferenceListElementHandler extends AbstractElementHandler {
|
|||
AD_Reference_ID = getParentId(element, I_AD_Reference.Table_Name);
|
||||
} else {
|
||||
Element referenceElement = element.properties.get(I_AD_Ref_List.COLUMNNAME_AD_Reference_ID);
|
||||
AD_Reference_ID = ReferenceUtils.resolveReference(ctx, referenceElement, getTrxName(ctx));
|
||||
AD_Reference_ID = ReferenceUtils.resolveReference(ctx.ctx, referenceElement, getTrxName(ctx));
|
||||
}
|
||||
|
||||
int AD_Ref_List_ID = findIdByColumnAndParentId(ctx, "AD_Ref_List", "Value", value, "AD_Reference", AD_Reference_ID);
|
||||
mRefList = new X_AD_Ref_List(ctx, AD_Ref_List_ID, getTrxName(ctx));
|
||||
mRefList = new X_AD_Ref_List(ctx.ctx, AD_Ref_List_ID, getTrxName(ctx));
|
||||
}
|
||||
|
||||
if (mRefList.getAD_Ref_List_ID() == 0 && isOfficialId(element, "AD_Ref_List_ID"))
|
||||
|
@ -71,6 +71,7 @@ public class ReferenceListElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -90,7 +91,7 @@ public class ReferenceListElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mRefList.getName(),
|
||||
mRefList.get_ID(), action);
|
||||
throw new POSaveFailedException("ReferenceList");
|
||||
throw new POSaveFailedException("Failed to save ReferenceList " + mRefList.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -98,15 +99,20 @@ public class ReferenceListElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Ref_List_ID = Env.getContextAsInt(ctx,
|
||||
int AD_Ref_List_ID = Env.getContextAsInt(ctx.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,
|
||||
X_AD_Ref_List m_Ref_List = new X_AD_Ref_List(ctx.ctx, AD_Ref_List_ID,
|
||||
getTrxName(ctx));
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Ref_List.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Ref_List.Table_Name, atts);
|
||||
|
@ -114,7 +120,7 @@ public class ReferenceListElementHandler extends AbstractElementHandler {
|
|||
document.endElement("", "", I_AD_Ref_List.Table_Name);
|
||||
}
|
||||
|
||||
private void createRefListBinding(Properties ctx, TransformerHandler document,
|
||||
private void createRefListBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Ref_List m_Ref_List) {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Ref_List.Table_Name);
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Ref_List);
|
||||
|
@ -128,8 +134,8 @@ public class ReferenceListElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,12 +19,12 @@ package org.adempiere.pipo2.handler;
|
|||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -35,6 +35,7 @@ import org.compiere.model.I_AD_Ref_Table;
|
|||
import org.compiere.model.I_AD_Reference;
|
||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||
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.SAXException;
|
||||
|
@ -42,13 +43,13 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class ReferenceTableElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
List<String > excludes = defaultExcludeList(X_AD_Ref_Table.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
if (isParentSkip(element, null)) {
|
||||
element.skip = true;
|
||||
return;
|
||||
|
@ -61,7 +62,7 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
|||
AD_Reference_ID = getParentId(element, I_AD_Reference.Table_Name);
|
||||
} else {
|
||||
Element referenceElement = element.properties.get(I_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
|
||||
AD_Reference_ID = ReferenceUtils.resolveReference(ctx, referenceElement, getTrxName(ctx));
|
||||
AD_Reference_ID = ReferenceUtils.resolveReference(ctx.ctx, referenceElement, getTrxName(ctx));
|
||||
}
|
||||
if (AD_Reference_ID <= 0 && isOfficialId(element, "AD_Reference_ID"))
|
||||
AD_Reference_ID = getIntValue(element, "AD_Reference_ID");
|
||||
|
@ -74,9 +75,9 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
|||
pstmt.setInt(1, AD_Reference_ID);
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next()) {
|
||||
refTable = new X_AD_Ref_Table(ctx, rs, getTrxName(ctx));
|
||||
refTable = new X_AD_Ref_Table(ctx.ctx, rs, getTrxName(ctx));
|
||||
} else {
|
||||
refTable = new X_AD_Ref_Table(ctx, 0, getTrxName(ctx));
|
||||
refTable = new X_AD_Ref_Table(ctx.ctx, 0, getTrxName(ctx));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new DatabaseAccessException(e.getLocalizedMessage(), e);
|
||||
|
@ -89,13 +90,14 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
int tableId = refTable.getAD_Table_ID();
|
||||
Element displayElement = element.properties.get("AD_Display");
|
||||
int displayColumnId = 0;
|
||||
if (ReferenceUtils.isIDLookup(displayElement) || ReferenceUtils.isUUIDLookup(displayElement)) {
|
||||
displayColumnId = ReferenceUtils.resolveReference(ctx, displayElement, getTrxName(ctx));
|
||||
displayColumnId = ReferenceUtils.resolveReference(ctx.ctx, displayElement, getTrxName(ctx));
|
||||
} else {
|
||||
displayColumnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", displayElement.contents.toString(), "AD_Table", tableId);
|
||||
}
|
||||
|
@ -105,7 +107,7 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
|||
Element keyElement = element.properties.get("AD_Key");
|
||||
int keyColumnId = 0;
|
||||
if (ReferenceUtils.isIDLookup(keyElement) || ReferenceUtils.isUUIDLookup(keyElement)) {
|
||||
keyColumnId = ReferenceUtils.resolveReference(ctx, keyElement, getTrxName(ctx));
|
||||
keyColumnId = ReferenceUtils.resolveReference(ctx.ctx, keyElement, getTrxName(ctx));
|
||||
} else {
|
||||
keyColumnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", keyElement.contents.toString(), "AD_Table", tableId);
|
||||
}
|
||||
|
@ -117,35 +119,27 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
|||
X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Ref_Table.Table_Name,
|
||||
X_AD_Ref_Table.Table_ID);
|
||||
|
||||
logImportDetail(ctx, impDetail, 1, refTable.getAD_Reference().getName(), refTable.getAD_Reference_ID(), action);
|
||||
int AD_Reference_ID = refTable.getAD_Reference_ID();
|
||||
X_AD_Reference adReference = new X_AD_Reference(ctx.ctx, AD_Reference_ID, getTrxName(ctx));
|
||||
logImportDetail(ctx, impDetail, 1, adReference.getName(), refTable.getAD_Reference_ID(), action);
|
||||
}
|
||||
} else {
|
||||
element.skip = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int Reference_id = Env.getContextAsInt(ctx,
|
||||
X_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Ref_Table.Table_Name, atts);
|
||||
int Reference_id = Env.getContextAsInt(ctx.ctx, "AD_Reference_ID");
|
||||
createReferenceTableBinding(ctx, document, Reference_id);
|
||||
document.endElement("", "", I_AD_Ref_Table.Table_Name);
|
||||
}
|
||||
|
||||
private void createReferenceTableBinding(Properties ctx,
|
||||
private void createReferenceTableBinding(PIPOContext ctx,
|
||||
TransformerHandler document, int reference_ID) {
|
||||
|
||||
if (reference_ID <= PackOut.MAX_OFFICIAL_ID)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx,document,null);
|
||||
filler.addString("AD_Reference_ID", Integer.toString(reference_ID), new AttributesImpl());
|
||||
}
|
||||
String sql = "SELECT * FROM AD_Ref_Table WHERE AD_Reference_ID= "
|
||||
+ reference_ID;
|
||||
|
||||
|
@ -155,7 +149,23 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
|||
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next()) {
|
||||
X_AD_Ref_Table refTable = new X_AD_Ref_Table(ctx, rs, getTrxName(ctx));
|
||||
X_AD_Ref_Table refTable = new X_AD_Ref_Table(ctx.ctx, rs, getTrxName(ctx));
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (refTable.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", X_AD_Ref_Table.Table_Name, atts);
|
||||
|
||||
if (reference_ID <= PackOut.MAX_OFFICIAL_ID)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx,document,null);
|
||||
filler.addString("AD_Reference_ID", Integer.toString(reference_ID), new AttributesImpl());
|
||||
}
|
||||
|
||||
PoExporter filler = new PoExporter(ctx,document,refTable);
|
||||
List<String > excludes = defaultExcludeList(X_AD_Ref_Table.Table_Name);
|
||||
excludes.add("ad_display");
|
||||
|
@ -163,6 +173,8 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
|||
filler.export(excludes);
|
||||
filler.addTableReference("AD_Display", "AD_Column", "ColumnName", new AttributesImpl());
|
||||
filler.addTableReference("AD_Key", "AD_Column", "ColumnName", new AttributesImpl());
|
||||
|
||||
document.endElement("", "", X_AD_Ref_Table.Table_Name);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
||||
|
@ -176,8 +188,8 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_Ref_Table.COLUMNNAME_AD_Reference_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_Ref_Table.COLUMNNAME_AD_Reference_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -30,6 +30,7 @@ import org.adempiere.pipo2.ReferenceUtils;
|
|||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
||||
import org.compiere.model.I_AD_ReportView;
|
||||
import org.compiere.model.I_AD_ReportView_Col;
|
||||
import org.compiere.model.MColumn;
|
||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||
import org.compiere.model.X_AD_ReportView_Col;
|
||||
import org.compiere.util.DB;
|
||||
|
@ -39,12 +40,12 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class ReportViewColElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_ReportView_Col.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element,"EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
excludes.add("AD_Table_ID");
|
||||
X_AD_ReportView_Col mReportviewCol = findPO(ctx, element);
|
||||
if (mReportviewCol == null) {
|
||||
|
@ -53,25 +54,27 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
|||
AD_ReportView_ID = getParentId(element, I_AD_ReportView.Table_Name);
|
||||
} else {
|
||||
Element rvElement = element.properties.get(I_AD_ReportView_Col.COLUMNNAME_AD_ReportView_ID);
|
||||
AD_ReportView_ID = ReferenceUtils.resolveReference(ctx, rvElement, getTrxName(ctx));
|
||||
AD_ReportView_ID = ReferenceUtils.resolveReference(ctx.ctx, rvElement, getTrxName(ctx));
|
||||
}
|
||||
if (AD_ReportView_ID <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_ReportView_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
int AD_Column_ID = 0;
|
||||
Element columnElement = element.properties.get(I_AD_ReportView_Col.COLUMNNAME_AD_Column_ID);
|
||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||
} else {
|
||||
if (columnElement.contents != null && columnElement.contents.length() > 0) {
|
||||
Element tableElement = element.properties.get("AD_Table_ID");
|
||||
int AD_Table_ID = ReferenceUtils.resolveReference(ctx, tableElement, getTrxName(ctx));
|
||||
int AD_Table_ID = ReferenceUtils.resolveReference(ctx.ctx, tableElement, getTrxName(ctx));
|
||||
AD_Column_ID = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnElement.contents.toString(),
|
||||
"AD_Table", AD_Table_ID);
|
||||
if (AD_Column_ID <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Column_ID";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -88,10 +91,10 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
|||
sql.append(" AND AD_ReportView_ID = ?");
|
||||
|
||||
int id = DB.getSQLValue(getTrxName(ctx), sql.toString(), functionColumn, AD_ReportView_ID);
|
||||
mReportviewCol = new X_AD_ReportView_Col(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mReportviewCol = new X_AD_ReportView_Col(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mReportviewCol.setAD_ReportView_ID(AD_ReportView_ID);
|
||||
if (AD_Column_ID > 0) {
|
||||
mReportviewCol.setAD_Column_ID(id);
|
||||
mReportviewCol.setAD_Column_ID(AD_Column_ID);
|
||||
}
|
||||
mReportviewCol.setFunctionColumn(functionColumn);
|
||||
excludes.add("FunctionColumn");
|
||||
|
@ -106,6 +109,7 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -126,7 +130,7 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, "" + mReportviewCol.getAD_ReportView_ID(),
|
||||
mReportviewCol.get_ID(),action);
|
||||
throw new POSaveFailedException("ReportViewCol");
|
||||
throw new POSaveFailedException("Failed to save ReportViewCol");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -134,23 +138,30 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_ReportView_Col_ID = Env.getContextAsInt(ctx,
|
||||
int AD_ReportView_Col_ID = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID);
|
||||
X_AD_ReportView_Col m_Reportview_Col = new X_AD_ReportView_Col(ctx,
|
||||
X_AD_ReportView_Col m_Reportview_Col = new X_AD_ReportView_Col(ctx.ctx,
|
||||
AD_ReportView_Col_ID, getTrxName(ctx));
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Reportview_Col.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_ReportView_Col.Table_Name, atts);
|
||||
document.startElement("", "", X_AD_ReportView_Col.Table_Name, atts);
|
||||
createReportViewColBinding(ctx, document, m_Reportview_Col);
|
||||
document.endElement("", "", I_AD_ReportView_Col.Table_Name);
|
||||
document.endElement("", "", X_AD_ReportView_Col.Table_Name);
|
||||
}
|
||||
|
||||
private void createReportViewColBinding(Properties ctx, TransformerHandler document,
|
||||
private void createReportViewColBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_ReportView_Col m_Reportview_Col) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Reportview_Col);
|
||||
|
@ -159,7 +170,9 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
|||
filler.add("AD_ReportView_Col_ID", new AttributesImpl());
|
||||
|
||||
if (m_Reportview_Col.getAD_Column_ID() > 0) {
|
||||
int AD_Table_ID = m_Reportview_Col.getAD_Column().getAD_Table_ID();
|
||||
int AD_Column_ID = m_Reportview_Col.getAD_Column_ID();
|
||||
MColumn mColumn = new MColumn(ctx.ctx, AD_Column_ID, getTrxName(ctx));
|
||||
int AD_Table_ID = mColumn.getAD_Table_ID();
|
||||
AttributesImpl tableAtts = new AttributesImpl();
|
||||
String value = ReferenceUtils.getTableReference("AD_Table", "TableName", AD_Table_ID, tableAtts);
|
||||
filler.addString("AD_Table_ID", value, tableAtts);
|
||||
|
@ -172,8 +185,8 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,13 +20,13 @@ import java.sql.PreparedStatement;
|
|||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -50,7 +50,7 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> views = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_ReportView.Table_Name);
|
||||
|
@ -59,7 +59,7 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
|||
if (mReportview == null) {
|
||||
String name = getStringValue(element, "Name");
|
||||
int id = findIdByName(ctx, "AD_ReportView", name);
|
||||
mReportview = new X_AD_ReportView(ctx, id, getTrxName(ctx));
|
||||
mReportview = new X_AD_ReportView(ctx.ctx, id, getTrxName(ctx));
|
||||
}
|
||||
PoFiller filler = new PoFiller(ctx, mReportview, element, this);
|
||||
if (mReportview.getAD_ReportView_ID() == 0 && isOfficialId(element, "AD_ReportView_ID"))
|
||||
|
@ -68,6 +68,7 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
|||
List<String> notfound = filler.autoFill(excludes);
|
||||
if (notfound.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfound.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -88,60 +89,50 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mReportview.getName(),
|
||||
mReportview.get_ID(), action);
|
||||
throw new POSaveFailedException("ReportView");
|
||||
throw new POSaveFailedException("Failed to save ReportView " + mReportview.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
PackOut packOut = getPackOut(ctx);
|
||||
int AD_ReportView_ID = Env.getContextAsInt(ctx, "AD_ReportView_ID");
|
||||
PackOut packOut = ctx.packOut;
|
||||
int AD_ReportView_ID = Env.getContextAsInt(ctx.ctx, "AD_ReportView_ID");
|
||||
if (views.contains(AD_ReportView_ID))
|
||||
return;
|
||||
|
||||
views.add(AD_ReportView_ID);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
X_AD_ReportView m_Reportview = new X_AD_ReportView(ctx, AD_ReportView_ID, getTrxName(ctx));
|
||||
X_AD_ReportView m_Reportview = new X_AD_ReportView(ctx.ctx, AD_ReportView_ID, getTrxName(ctx));
|
||||
|
||||
// Export Table if neccessary
|
||||
ElementHandler tableHandler = packOut.getHandler(I_AD_Table.Table_Name);
|
||||
try {
|
||||
tableHandler.packOut(packOut, document, null, m_Reportview.getAD_Table_ID());
|
||||
} catch (Exception e) {
|
||||
throw new AdempiereException(e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_ReportView.Table_Name, atts);
|
||||
createReportViewBinding(ctx, document, m_Reportview);
|
||||
document.endElement("", "", I_AD_ReportView.Table_Name);
|
||||
boolean createElement = true;
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Reportview.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
String sql = "SELECT AD_PrintFormat_ID FROM AD_PrintFormat WHERE AD_ReportView_ID= "
|
||||
if (createElement) {
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_ReportView.Table_Name, atts);
|
||||
createReportViewBinding(ctx, document, m_Reportview);
|
||||
}
|
||||
|
||||
String sql = "SELECT AD_ReportView_Col_ID FROM AD_ReportView_Col WHERE AD_Reportview_ID= "
|
||||
+ AD_ReportView_ID;
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
||||
rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
ElementHandler pftHandler = packOut.getHandler(I_AD_PrintFormat.Table_Name);
|
||||
pftHandler.packOut(packOut, document, null, rs.getInt(1));
|
||||
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new AdempiereException(e);
|
||||
} finally {
|
||||
DB.close(rs, pstmt);
|
||||
}
|
||||
|
||||
sql = "SELECT AD_ReportView_Col_ID FROM AD_ReportView_Col WHERE AD_Reportview_ID= "
|
||||
+ AD_ReportView_ID;
|
||||
pstmt = null;
|
||||
rs = null;
|
||||
try {
|
||||
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
||||
rs = pstmt.executeQuery();
|
||||
|
@ -153,19 +144,40 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
|||
} finally {
|
||||
DB.close(rs, pstmt);
|
||||
}
|
||||
|
||||
if (createElement) {
|
||||
document.endElement("", "", X_AD_ReportView.Table_Name);
|
||||
}
|
||||
|
||||
sql = "SELECT AD_PrintFormat_ID FROM AD_PrintFormat WHERE AD_ReportView_ID= "
|
||||
+ AD_ReportView_ID;
|
||||
pstmt = null;
|
||||
rs = null;
|
||||
try {
|
||||
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
||||
rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
ElementHandler pftHandler = packOut.getHandler(I_AD_PrintFormat.Table_Name);
|
||||
pftHandler.packOut(packOut, document, null, rs.getInt(1));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new AdempiereException(e);
|
||||
} finally {
|
||||
DB.close(rs, pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
private void createReportViewCol(Properties ctx,
|
||||
private void createReportViewCol(PIPOContext ctx,
|
||||
TransformerHandler document, int AD_ReportView_Col_ID)
|
||||
throws SAXException {
|
||||
Env.setContext(ctx,
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID);
|
||||
}
|
||||
|
||||
private void createReportViewBinding(Properties ctx, TransformerHandler document,
|
||||
private void createReportViewBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_ReportView m_Reportview) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Reportview);
|
||||
|
@ -177,8 +189,8 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_ReportView_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_ReportView_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_ReportView_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_ReportView_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,12 +20,12 @@ 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.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -61,7 +61,7 @@ public class RoleElementHandler extends AbstractElementHandler {
|
|||
private TaskAccessElementHandler taskHandler = new TaskAccessElementHandler();
|
||||
private WorkflowAccessElementHandler workflowHandler = new WorkflowAccessElementHandler();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_Role.Table_Name);
|
||||
|
@ -70,7 +70,7 @@ public class RoleElementHandler extends AbstractElementHandler {
|
|||
if (mRole == null) {
|
||||
String name = getStringValue(element, "Name", excludes);
|
||||
int id = findIdByName(ctx, "AD_Role", name);
|
||||
mRole = new MRole(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mRole = new MRole(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mRole.setName(name);
|
||||
}
|
||||
|
||||
|
@ -81,6 +81,7 @@ public class RoleElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -101,26 +102,36 @@ public class RoleElementHandler extends AbstractElementHandler {
|
|||
|
||||
logImportDetail(ctx, impDetail, 0, mRole.getName(), mRole.get_ID(),
|
||||
action);
|
||||
throw new POSaveFailedException("Role");
|
||||
throw new POSaveFailedException("Failed to save Role " + mRole.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int Role_id = Env.getContextAsInt(ctx,
|
||||
int Role_id = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID);
|
||||
if (roles.contains(Role_id))
|
||||
return;
|
||||
roles.add(Role_id);
|
||||
X_AD_Role m_Role = new X_AD_Role(ctx, Role_id, null);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Role.Table_Name, atts);
|
||||
createRoleBinding(ctx, document, m_Role);
|
||||
|
||||
boolean createElement = true;
|
||||
X_AD_Role m_Role = new X_AD_Role(ctx.ctx, Role_id, null);
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Role.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (createElement) {
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Role.Table_Name, atts);
|
||||
createRoleBinding(ctx, document, m_Role);
|
||||
}
|
||||
|
||||
// Process org access
|
||||
String sql = "SELECT AD_Org_ID, AD_Role_ID FROM AD_Role_OrgAccess WHERE AD_Role_ID= "
|
||||
|
@ -141,7 +152,8 @@ public class RoleElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
|
||||
// Process user assignment access
|
||||
sql = "SELECT AD_User_ID, AD_Role_ID, AD_Org_ID FROM AD_User_Roles WHERE AD_Role_ID= " + Role_id;
|
||||
sql = "SELECT AD_User_ID, AD_Role_ID, AD_Org_ID FROM AD_User_Roles WHERE AD_Role_ID= " + Role_id
|
||||
+ " AND AD_User_ID > 0 ";
|
||||
pstmt = null;
|
||||
rs = null;
|
||||
try {
|
||||
|
@ -241,75 +253,78 @@ public class RoleElementHandler extends AbstractElementHandler {
|
|||
} finally {
|
||||
DB.close(rs, pstmt);
|
||||
}
|
||||
document.endElement("", "", I_AD_Role.Table_Name);
|
||||
|
||||
if (createElement) {
|
||||
document.endElement("", "", X_AD_Role.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createTaskAccess(Properties ctx, TransformerHandler document,
|
||||
private void createTaskAccess(PIPOContext 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);
|
||||
Env.setContext(ctx.ctx, X_AD_Task.COLUMNNAME_AD_Task_ID, AD_Task_ID);
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_Task.COLUMNNAME_AD_Task_ID);
|
||||
ctx.ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
}
|
||||
|
||||
private void createWorkflowAccess(Properties ctx,
|
||||
private void createWorkflowAccess(PIPOContext 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);
|
||||
Env.setContext(ctx.ctx, X_AD_Workflow.COLUMNNAME_AD_Workflow_ID, AD_Workflow_ID);
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
|
||||
ctx.ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
}
|
||||
|
||||
private void createFormAccess(Properties ctx, TransformerHandler document,
|
||||
private void createFormAccess(PIPOContext 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);
|
||||
Env.setContext(ctx.ctx, X_AD_Form.COLUMNNAME_AD_Form_ID, AD_Form_ID);
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_Form.COLUMNNAME_AD_Form_ID);
|
||||
ctx.ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
}
|
||||
|
||||
private void createProcessAccess(Properties ctx,
|
||||
private void createProcessAccess(PIPOContext 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);
|
||||
Env.setContext(ctx.ctx, X_AD_Process.COLUMNNAME_AD_Process_ID, AD_Process_ID);
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_Process.COLUMNNAME_AD_Process_ID);
|
||||
ctx.ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
}
|
||||
|
||||
private void createWindowAccess(Properties ctx,
|
||||
private void createWindowAccess(PIPOContext 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);
|
||||
Env.setContext(ctx.ctx, X_AD_Window.COLUMNNAME_AD_Window_ID, AD_Window_ID);
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_Window.COLUMNNAME_AD_Window_ID);
|
||||
ctx.ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
}
|
||||
|
||||
private void createUserRole(Properties ctx, TransformerHandler document,
|
||||
private void createUserRole(PIPOContext 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);
|
||||
Env.setContext(ctx.ctx, X_AD_User.COLUMNNAME_AD_User_ID, AD_User_ID);
|
||||
Env.setContext(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
||||
Env.setContext(ctx.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");
|
||||
ctx.ctx.remove(X_AD_User.COLUMNNAME_AD_User_ID);
|
||||
ctx.ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
ctx.ctx.remove("AD_Org_ID");
|
||||
}
|
||||
|
||||
private void createOrgAccess(Properties ctx, TransformerHandler document,
|
||||
private void createOrgAccess(PIPOContext 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);
|
||||
Env.setContext(ctx.ctx, "AD_Org_ID", AD_Org_ID);
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove("AD_Org_ID");
|
||||
ctx.ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
}
|
||||
|
||||
private void createRoleBinding(Properties ctx, TransformerHandler document,
|
||||
private void createRoleBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Role m_Role) {
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Role);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Role.Table_Name);
|
||||
|
@ -329,8 +344,8 @@ public class RoleElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,16 +19,17 @@ package org.adempiere.pipo2.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.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PackoutItem;
|
||||
import org.adempiere.pipo2.SQLElementParameters;
|
||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
import org.xml.sax.SAXException;
|
||||
|
@ -36,13 +37,13 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class SQLStatementElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
String elementValue = element.getElementValue();
|
||||
|
||||
log.info(elementValue);
|
||||
String DBType = getStringValue(element, "DBType");
|
||||
String sql = getStringValue(element, "statement");
|
||||
if (sql.endsWith(";"))
|
||||
if (sql.endsWith(";") && !(sql.toLowerCase().endsWith("end;")))
|
||||
sql = sql.substring(0, sql.length() - 1);
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
|
@ -52,8 +53,8 @@ public class SQLStatementElementHandler extends AbstractElementHandler {
|
|||
log.info("Executed SQL Statement: "+ getStringValue(element, "statement") + " ReturnValue="+n);
|
||||
}
|
||||
else if(DB.isOracle() == true && DBType.equals("Oracle")) {
|
||||
pstmt.executeUpdate();
|
||||
log.info("Executed SQL Statement for Oracle: "+ getStringValue(element, "statement"));
|
||||
int n = pstmt.executeUpdate();
|
||||
log.info("Executed SQL Statement for Oracle: "+ getStringValue(element, "statement") + " ReturnValue="+n);
|
||||
}
|
||||
else if ( DB.isPostgreSQL()
|
||||
&& ( DBType.equals("Postgres")
|
||||
|
@ -78,20 +79,27 @@ public class SQLStatementElementHandler extends AbstractElementHandler {
|
|||
m_con.close();
|
||||
}
|
||||
}
|
||||
|
||||
X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, "",
|
||||
0);
|
||||
logImportDetail (ctx, impDetail, 1, "SQLStatement",1,"Execute");
|
||||
} catch (Exception e) {
|
||||
log.log(Level.SEVERE,"SQLSatement", e);
|
||||
X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, "",
|
||||
0);
|
||||
logImportDetail (ctx, impDetail, 0, "SQLStatement",1,"Execute");
|
||||
} finally {
|
||||
DB.close(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
String SQLStatement = Env.getContext(ctx, SQLElementParameters.SQL_STATEMENT);
|
||||
String DBType = Env.getContext(ctx, SQLElementParameters.DB_TYPE);
|
||||
String SQLStatement = Env.getContext(ctx.ctx, SQLElementParameters.SQL_STATEMENT);
|
||||
String DBType = Env.getContext(ctx.ctx, SQLElementParameters.DB_TYPE);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "custom");
|
||||
document.startElement("","","SQLStatement",atts);
|
||||
|
@ -108,7 +116,9 @@ public class SQLStatementElementHandler extends AbstractElementHandler {
|
|||
|
||||
document.startElement("","","statement", new AttributesImpl());
|
||||
contents = sqlStatement.toCharArray();
|
||||
document.startCDATA();
|
||||
document.characters(contents,0,contents.length);
|
||||
document.endCDATA();
|
||||
document.endElement("","","statement");
|
||||
|
||||
}
|
||||
|
@ -116,10 +126,10 @@ public class SQLStatementElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int field) throws Exception
|
||||
{
|
||||
PackoutItem detail = packout.getCurrentPackoutItem();
|
||||
Env.setContext(packout.getCtx(), SQLElementParameters.SQL_STATEMENT, (String)detail.getProperty(SQLElementParameters.SQL_STATEMENT));
|
||||
Env.setContext(packout.getCtx(), SQLElementParameters.DB_TYPE, (String)detail.getProperty(SQLElementParameters.DB_TYPE));
|
||||
Env.setContext(packout.getCtx().ctx, SQLElementParameters.SQL_STATEMENT, (String)detail.getProperty(SQLElementParameters.SQL_STATEMENT));
|
||||
Env.setContext(packout.getCtx().ctx, SQLElementParameters.DB_TYPE, (String)detail.getProperty(SQLElementParameters.DB_TYPE));
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(SQLElementParameters.SQL_STATEMENT);
|
||||
packout.getCtx().remove(SQLElementParameters.DB_TYPE);
|
||||
packout.getCtx().ctx.remove(SQLElementParameters.SQL_STATEMENT);
|
||||
packout.getCtx().ctx.remove(SQLElementParameters.DB_TYPE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@ package org.adempiere.pipo2.handler;
|
|||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
@ -27,6 +26,7 @@ import javax.xml.transform.sax.TransformerHandler;
|
|||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -50,11 +50,11 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
|
||||
private FieldElementHandler fieldHandler = new FieldElementHandler();
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Tab.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
if (isParentDefer(element, I_AD_Window.Table_Name)) {
|
||||
element.defer = true;
|
||||
return;
|
||||
|
@ -69,17 +69,19 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
windowId = getParentId(element, I_AD_Window.Table_Name);
|
||||
} else {
|
||||
Element windowElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_Window_ID);
|
||||
windowId = ReferenceUtils.resolveReference(ctx, windowElement, getTrxName(ctx));
|
||||
windowId = ReferenceUtils.resolveReference(ctx.ctx, windowElement, getTrxName(ctx));
|
||||
}
|
||||
if (windowId <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Window_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Element tableElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_Table_ID);
|
||||
int tableId = ReferenceUtils.resolveReference(ctx, tableElement, getTrxName(ctx));
|
||||
int tableId = ReferenceUtils.resolveReference(ctx.ctx, tableElement, getTrxName(ctx));
|
||||
if (tableId <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Table_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -88,7 +90,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
+ " AND AD_Table_ID = ?";
|
||||
|
||||
int id = DB.getSQLValue(getTrxName(ctx), sql, windowId, name, tableId);
|
||||
mTab = new MTab(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mTab = new MTab(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mTab.setAD_Table_ID(tableId);
|
||||
mTab.setName(name);
|
||||
mTab.setAD_Window_ID(windowId);
|
||||
|
@ -101,7 +103,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
Element columnElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_Column_ID);
|
||||
int AD_Column_ID = 0;
|
||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||
} else if (columnElement.contents != null && columnElement.contents.length() > 0){
|
||||
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
||||
"AD_Table", mTab.getAD_Table_ID());
|
||||
|
@ -111,7 +113,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
columnElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_ColumnSortOrder_ID);
|
||||
AD_Column_ID = 0;
|
||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||
} else if (columnElement.contents != null && columnElement.contents.length() > 0){
|
||||
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
||||
"AD_Table", mTab.getAD_Table_ID());
|
||||
|
@ -121,7 +123,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
columnElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_ColumnSortYesNo_ID);
|
||||
AD_Column_ID = 0;
|
||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
||||
AD_Column_ID = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||
} else if (columnElement.contents != null && columnElement.contents.length() > 0){
|
||||
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
||||
"AD_Table", mTab.getAD_Table_ID());
|
||||
|
@ -131,6 +133,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -150,7 +153,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
element.recordId = mTab.getAD_Tab_ID();
|
||||
} else {
|
||||
logImportDetail (ctx, impDetail, 0, mTab.getName(), mTab.get_ID(),action);
|
||||
throw new POSaveFailedException("Tab");
|
||||
throw new POSaveFailedException("Failed to save Tab " + mTab.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -159,18 +162,28 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
PackOut packOut = getPackOut(ctx);
|
||||
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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","",I_AD_Tab.Table_Name,atts);
|
||||
createTabBinding(ctx,document,m_Tab);
|
||||
PackOut packOut = ctx.packOut;
|
||||
int AD_Tab_ID = Env.getContextAsInt(ctx.ctx, "AD_Tab_ID");
|
||||
|
||||
boolean createElement = true;
|
||||
X_AD_Tab m_Tab = new X_AD_Tab (ctx.ctx, AD_Tab_ID, getTrxName(ctx));
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Tab.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
if (createElement) {
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","",I_AD_Tab.Table_Name,atts);
|
||||
createTabBinding(ctx,document,m_Tab);
|
||||
}
|
||||
|
||||
//Fields tags.
|
||||
String sql = "SELECT AD_Field_ID FROM AD_FIELD WHERE AD_TAB_ID = " + AD_Tab_ID
|
||||
+ "ORDER BY SEQNO asc";
|
||||
|
@ -193,7 +206,10 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
{
|
||||
DB.close(rs, pstmt);
|
||||
}
|
||||
document.endElement("","",I_AD_Tab.Table_Name);
|
||||
|
||||
if (createElement) {
|
||||
document.endElement("","",X_AD_Tab.Table_Name);
|
||||
}
|
||||
|
||||
if(m_Tab.getAD_Process_ID() > 0 )
|
||||
{
|
||||
|
@ -210,14 +226,14 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
|
||||
}
|
||||
|
||||
private void createField(Properties ctx, TransformerHandler document,
|
||||
private void createField(PIPOContext ctx, TransformerHandler document,
|
||||
int AD_Field_ID) throws SAXException {
|
||||
Env.setContext(ctx, X_AD_Field.COLUMNNAME_AD_Field_ID, AD_Field_ID);
|
||||
Env.setContext(ctx.ctx, X_AD_Field.COLUMNNAME_AD_Field_ID, AD_Field_ID);
|
||||
fieldHandler.create(ctx, document);
|
||||
ctx.remove(X_AD_Field.COLUMNNAME_AD_Field_ID);
|
||||
ctx.ctx.remove(X_AD_Field.COLUMNNAME_AD_Field_ID);
|
||||
}
|
||||
|
||||
private void createTabBinding(Properties ctx, TransformerHandler document, X_AD_Tab m_Tab)
|
||||
private void createTabBinding(PIPOContext ctx, TransformerHandler document, X_AD_Tab m_Tab)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Tab);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Tab.Table_Name);
|
||||
|
@ -232,8 +248,8 @@ public class TabElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_Tab.COLUMNNAME_AD_Tab_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_Tab.COLUMNNAME_AD_Tab_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_Tab.COLUMNNAME_AD_Tab_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_Tab.COLUMNNAME_AD_Tab_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,13 +20,13 @@ import java.sql.PreparedStatement;
|
|||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackIn;
|
||||
|
@ -49,12 +49,12 @@ public class TableElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer>tables = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
PackIn packIn = getPackIn(ctx);
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
PackIn packIn = ctx.packIn;
|
||||
List<String> excludes = defaultExcludeList(X_AD_Table.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
|
||||
MTable mTable = findPO(ctx, element);
|
||||
if (mTable == null) {
|
||||
|
@ -70,7 +70,7 @@ public class TableElementHandler extends AbstractElementHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
mTable = new MTable(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mTable = new MTable(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mTable.setTableName(tableName);
|
||||
}
|
||||
|
||||
|
@ -83,6 +83,7 @@ public class TableElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -105,7 +106,7 @@ public class TableElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
else{
|
||||
logImportDetail (ctx, impDetail, 0, mTable.getName(), mTable.get_ID(),action);
|
||||
throw new POSaveFailedException("Table");
|
||||
throw new POSaveFailedException("Failed to save Table " + mTable.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -113,22 +114,30 @@ public class TableElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
|
||||
int AD_Table_ID = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID);
|
||||
PackOut packOut = getPackOut(ctx);
|
||||
int AD_Table_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID);
|
||||
PackOut packOut = ctx.packOut;
|
||||
boolean exported = isTableProcess(ctx, AD_Table_ID);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
//Export table if not already done so
|
||||
if (!exported){
|
||||
X_AD_Table m_Table = new X_AD_Table (ctx, AD_Table_ID, null);
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","",I_AD_Table.Table_Name,atts);
|
||||
createTableBinding(ctx,document,m_Table);
|
||||
boolean createElement = true;
|
||||
X_AD_Table m_Table = new X_AD_Table (ctx.ctx, AD_Table_ID, null);
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Table.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
if (createElement) {
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("","",I_AD_Table.Table_Name,atts);
|
||||
createTableBinding(ctx,document,m_Table);
|
||||
}
|
||||
|
||||
String sql = "SELECT * FROM AD_Column WHERE AD_Table_ID = ? "
|
||||
+ " ORDER BY IsKey DESC, AD_Column_ID"; // Export key column as the first one
|
||||
|
@ -176,18 +185,21 @@ public class TableElementHandler extends AbstractElementHandler {
|
|||
} finally {
|
||||
DB.close(rs, pstmt);
|
||||
}
|
||||
document.endElement("","",I_AD_Table.Table_Name);
|
||||
|
||||
if (createElement) {
|
||||
document.endElement("","",X_AD_Table.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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);
|
||||
private void createColumn(PIPOContext ctx, TransformerHandler document, int AD_Column_ID) throws SAXException {
|
||||
Env.setContext(ctx.ctx, X_AD_Column.COLUMNNAME_AD_Column_ID, AD_Column_ID);
|
||||
columnHandler.create(ctx, document);
|
||||
ctx.remove(X_AD_Column.COLUMNNAME_AD_Column_ID);
|
||||
ctx.ctx.remove(X_AD_Column.COLUMNNAME_AD_Column_ID);
|
||||
}
|
||||
|
||||
private boolean isTableProcess(Properties ctx, int AD_Table_ID) {
|
||||
private boolean isTableProcess(PIPOContext ctx, int AD_Table_ID) {
|
||||
if (tables.contains(AD_Table_ID))
|
||||
return true;
|
||||
else {
|
||||
|
@ -196,7 +208,7 @@ public class TableElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private void createTableBinding(Properties ctx, TransformerHandler document, X_AD_Table m_Table)
|
||||
private void createTableBinding(PIPOContext ctx, TransformerHandler document, X_AD_Table m_Table)
|
||||
{
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Table);
|
||||
if (m_Table.getAD_Table_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||
|
@ -210,8 +222,8 @@ public class TableElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class TaskAccessElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
int roleid =0;
|
||||
int taskid =0;
|
||||
List<String> excludes = defaultExcludeList(X_AD_Task_Access.Table_Name);
|
||||
|
@ -49,17 +49,28 @@ public class TaskAccessElementHandler extends AbstractElementHandler {
|
|||
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
||||
roleid = getParentId(element, I_AD_Role.Table_Name);
|
||||
} else {
|
||||
Element roleElement = element.properties.get(I_AD_Task_Access.COLUMNNAME_AD_Role_ID);
|
||||
roleid = ReferenceUtils.resolveReference(ctx, roleElement, getTrxName(ctx));
|
||||
Element roleElement = element.properties.get("AD_Role_ID");
|
||||
roleid = ReferenceUtils.resolveReference(ctx.ctx, roleElement, getTrxName(ctx));
|
||||
}
|
||||
|
||||
if (roleid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Role_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Element taskElement = element.properties.get(I_AD_Task_Access.COLUMNNAME_AD_Task_ID);
|
||||
taskid = ReferenceUtils.resolveReference(ctx, taskElement, getTrxName(ctx));
|
||||
taskid = ReferenceUtils.resolveReference(ctx.ctx, taskElement, getTrxName(ctx));
|
||||
if (taskid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Task_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Query query = new Query(ctx, "AD_Task_Access", "AD_Role_ID=? and AD_Task_ID=?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_Task_Access", "AD_Role_ID=? and AD_Task_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{roleid, taskid}).first();
|
||||
if (po == null){
|
||||
po = new X_AD_Task_Access(ctx, 0, getTrxName(ctx));
|
||||
po = new X_AD_Task_Access(ctx.ctx, 0, getTrxName(ctx));
|
||||
po.setAD_Role_ID(roleid);
|
||||
po.setAD_Task_ID(taskid);
|
||||
}
|
||||
|
@ -70,35 +81,41 @@ public class TaskAccessElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
po.saveEx();
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Task_Access.Table_Name, atts);
|
||||
createTaskAccessBinding(ctx, document, AD_Task_ID, AD_Role_ID);
|
||||
document.endElement("", "", I_AD_Task_Access.Table_Name);
|
||||
int AD_Task_ID = Env.getContextAsInt(ctx.ctx, X_AD_Task.COLUMNNAME_AD_Task_ID);
|
||||
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
Query query = new Query(ctx.ctx, "AD_Task_Access", "AD_Role_ID=? and AD_Task_ID=?", getTrxName(ctx));
|
||||
X_AD_Task_Access po = query.setParameters(new Object[]{AD_Role_ID, AD_Task_ID}).first();
|
||||
if (po != null) {
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Task_Access.Table_Name, atts);
|
||||
createTaskAccessBinding(ctx, document, po);
|
||||
document.endElement("", "", I_AD_Task_Access.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createTaskAccessBinding(Properties ctx, TransformerHandler document,
|
||||
int taskid, int roleid) {
|
||||
Query query = new Query(ctx, "AD_Task_Access", "AD_Role_ID=? and AD_Task_ID=?", getTrxName(ctx));
|
||||
X_AD_Task_Access po = query.setParameters(new Object[]{roleid, taskid}).first();
|
||||
if (po != null) {
|
||||
private void createTaskAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Task_Access po) {
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Task_Access.Table_Name);
|
||||
filler.export(excludes);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
|
|
|
@ -19,11 +19,11 @@ package org.adempiere.pipo2.handler;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -41,18 +41,18 @@ public class TaskElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> tasks = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Task.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
|
||||
MTask mTask = findPO(ctx, element);
|
||||
if (mTask == null) {
|
||||
String name = getStringValue(element, "Name");
|
||||
int id = findIdByName(ctx, "AD_Task", name);
|
||||
mTask = new MTask(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mTask = new MTask(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
}
|
||||
|
||||
if (mTask.getAD_Task_ID() == 0 && isOfficialId(element, "AD_Task_ID"))
|
||||
|
@ -62,6 +62,7 @@ public class TaskElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -81,7 +82,7 @@ public class TaskElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mTask.getName(), mTask.get_ID(),
|
||||
action);
|
||||
throw new POSaveFailedException("Task");
|
||||
throw new POSaveFailedException("Failed to save Task " + mTask.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -89,16 +90,21 @@ public class TaskElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Task_ID = Env.getContextAsInt(ctx, "AD_Task_ID");
|
||||
int AD_Task_ID = Env.getContextAsInt(ctx.ctx, "AD_Task_ID");
|
||||
if (tasks.contains(AD_Task_ID))
|
||||
return;
|
||||
tasks.add(AD_Task_ID);
|
||||
X_AD_Task m_Task = new X_AD_Task(ctx, AD_Task_ID, null);
|
||||
X_AD_Task m_Task = new X_AD_Task(ctx.ctx, AD_Task_ID, null);
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Task.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Task.Table_Name, atts);
|
||||
|
@ -107,7 +113,7 @@ public class TaskElementHandler extends AbstractElementHandler {
|
|||
|
||||
}
|
||||
|
||||
private void createTaskBinding(Properties ctx, TransformerHandler document,
|
||||
private void createTaskBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Task m_Task) {
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Task);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Task.Table_Name);
|
||||
|
@ -118,9 +124,9 @@ public class TaskElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Task.COLUMNNAME_AD_Task_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Task.COLUMNNAME_AD_Task_ID, recordId);
|
||||
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Task.COLUMNNAME_AD_Task_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Task.COLUMNNAME_AD_Task_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
|
@ -38,7 +38,8 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class UserRoleElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
int roleid =0;
|
||||
int userid =0;
|
||||
int orgid =0;
|
||||
|
@ -48,22 +49,34 @@ public class UserRoleElementHandler extends AbstractElementHandler {
|
|||
X_AD_User_Roles po = findPO(ctx, element);
|
||||
if (po == null) {
|
||||
Element userElement = element.properties.get(I_AD_User_Roles.COLUMNNAME_AD_User_ID);
|
||||
userid = ReferenceUtils.resolveReference(ctx, userElement, getTrxName(ctx));
|
||||
|
||||
if (getParentId(element, "role") > 0) {
|
||||
roleid = getParentId(element, "role");
|
||||
userid = ReferenceUtils.resolveReference(ctx.ctx, userElement, getTrxName(ctx));
|
||||
if (userid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_User_ID " + (userElement.contents != null ? userElement.contents.toString() : "");
|
||||
return;
|
||||
}
|
||||
if (getParentId(element, X_AD_Role.Table_Name) > 0) {
|
||||
roleid = getParentId(element, X_AD_Role.Table_Name);
|
||||
} else {
|
||||
Element roleElement = element.properties.get(I_AD_User_Roles.COLUMNNAME_AD_Role_ID);
|
||||
roleid = ReferenceUtils.resolveReference(ctx, roleElement, getTrxName(ctx));
|
||||
Element roleElement = element.properties.get("AD_Role_ID");
|
||||
roleid = ReferenceUtils.resolveReference(ctx.ctx, roleElement,
|
||||
getTrxName(ctx));
|
||||
}
|
||||
|
||||
if (roleid <= 0)
|
||||
{
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Role_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Element orgElement = element.properties.get(I_AD_User_Roles.COLUMNNAME_AD_Org_ID);
|
||||
orgid = ReferenceUtils.resolveReference(ctx, orgElement, getTrxName(ctx));
|
||||
orgid = ReferenceUtils.resolveReference(ctx.ctx, orgElement, getTrxName(ctx));
|
||||
|
||||
Query query = new Query(ctx, "AD_User_Roles", "AD_User_ID = ? AND AD_Role_ID = ? AND AD_Org_ID = ?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_User_Roles", "AD_User_ID = ? AND AD_Role_ID = ? AND AD_Org_ID = ?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{userid, roleid, orgid}).first();
|
||||
if (po == null) {
|
||||
po = new X_AD_User_Roles(ctx, 0, getTrxName(ctx));
|
||||
po = new X_AD_User_Roles(ctx.ctx, 0, getTrxName(ctx));
|
||||
po.setAD_Org_ID(orgid);
|
||||
po.setAD_Role_ID(roleid);
|
||||
po.setAD_User_ID(userid);
|
||||
|
@ -76,33 +89,49 @@ public class UserRoleElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
po.saveEx();
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void endElement(PIPOContext ctx, Element element)
|
||||
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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_User_Roles.Table_Name, atts);
|
||||
createUserAssignBinding(ctx, document, AD_User_ID,AD_Role_ID, AD_Org_ID);
|
||||
document.endElement("", "", I_AD_User_Roles.Table_Name);
|
||||
}
|
||||
|
||||
private void createUserAssignBinding(Properties ctx, TransformerHandler document,
|
||||
int user_id, int role_id, int org_id) {
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_User_ID = Env.getContextAsInt(ctx.ctx, X_AD_User.COLUMNNAME_AD_User_ID);
|
||||
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
int AD_Org_ID = Env.getContextAsInt(ctx.ctx, "AD_Org_ID");
|
||||
Query query = new Query(ctx.ctx, "AD_User_Roles",
|
||||
"AD_User_ID = ? AND AD_Role_ID = ? AND AD_Org_ID = ?", getTrxName(ctx));
|
||||
X_AD_User_Roles po = query.setParameters(
|
||||
new Object[] { AD_User_ID, AD_Role_ID, AD_Org_ID }).first();
|
||||
if (po != null) {
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_User_Roles.Table_Name, atts);
|
||||
createUserAssignBinding(ctx, document, po);
|
||||
document.endElement("", "", I_AD_User_Roles.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
Query query = new Query(ctx, "AD_User_Roles", "AD_User_ID = ? AND AD_Role_ID = ? AND AD_Org_ID = ?", getTrxName(ctx));
|
||||
X_AD_User_Roles po = query.setParameters(new Object[]{user_id, role_id, org_id}).first();
|
||||
private void createUserAssignBinding(PIPOContext ctx,
|
||||
TransformerHandler document, X_AD_User_Roles po) {
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
|
||||
AttributesImpl orgRefAtts = new AttributesImpl();
|
||||
String orgReference = ReferenceUtils.getTableReference("AD_Org", "Name", po.getAD_Org_ID(), orgRefAtts);
|
||||
filler.addString("AD_Org_ID", orgReference, orgRefAtts);
|
||||
|
||||
List<String> excludes = defaultExcludeList(X_AD_User_Roles.Table_Name);
|
||||
excludes.add("AD_Org_ID");
|
||||
|
||||
filler.export(excludes);
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class WindowAccessElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
int roleid =0;
|
||||
int windowid =0;
|
||||
List<String> excludes = defaultExcludeList(X_AD_Window_Access.Table_Name);
|
||||
|
@ -50,24 +50,26 @@ public class WindowAccessElementHandler extends AbstractElementHandler {
|
|||
roleid = getParentId(element, I_AD_Role.Table_Name);
|
||||
} else {
|
||||
Element roleElement = element.properties.get(I_AD_Window_Access.COLUMNNAME_AD_Role_ID);
|
||||
roleid = ReferenceUtils.resolveReference(ctx, roleElement, getTrxName(ctx));
|
||||
roleid = ReferenceUtils.resolveReference(ctx.ctx, roleElement, getTrxName(ctx));
|
||||
}
|
||||
if (roleid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Role_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Element windowElement = element.properties.get(I_AD_Window_Access.COLUMNNAME_AD_Window_ID);
|
||||
windowid = ReferenceUtils.resolveReference(ctx, windowElement, getTrxName(ctx));
|
||||
windowid = ReferenceUtils.resolveReference(ctx.ctx, windowElement, getTrxName(ctx));
|
||||
if (windowid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Window_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Query query = new Query(ctx, "AD_Window_Access", "AD_Role_ID=? and AD_Window_ID=?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_Window_Access", "AD_Role_ID=? and AD_Window_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{roleid, windowid}).first();
|
||||
if (po == null) {
|
||||
po = new X_AD_Window_Access(ctx, 0, getTrxName(ctx));
|
||||
po = new X_AD_Window_Access(ctx.ctx, 0, getTrxName(ctx));
|
||||
po.setAD_Role_ID(roleid);
|
||||
po.setAD_Window_ID(windowid);
|
||||
}
|
||||
|
@ -76,30 +78,37 @@ public class WindowAccessElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
po.saveEx();
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Window_Access.Table_Name, atts);
|
||||
createWindowAccessBinding(ctx, document, AD_Window_ID, AD_Role_ID);
|
||||
document.endElement("", "", I_AD_Window_Access.Table_Name);
|
||||
int AD_Window_ID = Env.getContextAsInt(ctx.ctx, X_AD_Window.COLUMNNAME_AD_Window_ID);
|
||||
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
Query query = new Query(ctx.ctx, "AD_Window_Access", "AD_Role_ID=? and AD_Window_ID=?", getTrxName(ctx));
|
||||
X_AD_Window_Access po = query.setParameters(new Object[]{AD_Role_ID, AD_Window_ID}).first();
|
||||
if (po != null) {
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Window_Access.Table_Name, atts);
|
||||
createWindowAccessBinding(ctx, document, po);
|
||||
document.endElement("", "", I_AD_Window_Access.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createWindowAccessBinding(Properties ctx, TransformerHandler document,
|
||||
int window_id, int role_id) {
|
||||
|
||||
Query query = new Query(ctx, "AD_Window_Access", "AD_Role_ID=? and AD_Window_ID=?", getTrxName(ctx));
|
||||
X_AD_Window_Access po = query.setParameters(new Object[]{role_id, window_id}).first();
|
||||
private void createWindowAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Window_Access po) {
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Window_Access.Table_Name);
|
||||
|
||||
|
|
|
@ -21,19 +21,21 @@ import java.sql.ResultSet;
|
|||
import java.sql.SQLException;
|
||||
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.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.ElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoFiller;
|
||||
import org.adempiere.pipo2.exception.DatabaseAccessException;
|
||||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
||||
import org.compiere.model.I_AD_Color;
|
||||
import org.compiere.model.I_AD_Image;
|
||||
import org.compiere.model.I_AD_Window;
|
||||
import org.compiere.model.MWindow;
|
||||
import org.compiere.model.X_AD_Package_Exp_Detail;
|
||||
|
@ -53,12 +55,12 @@ public class WindowElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> windows = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Window.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
MWindow mWindow = findPO(ctx, element);
|
||||
if (mWindow == null) {
|
||||
String name = getStringValue(element, "Name", excludes);
|
||||
|
@ -67,7 +69,7 @@ public class WindowElementHandler extends AbstractElementHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
mWindow = new MWindow(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mWindow = new MWindow(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mWindow.setName(name);
|
||||
} else {
|
||||
if (windows.contains(mWindow.getAD_Window_ID())) {
|
||||
|
@ -83,6 +85,7 @@ public class WindowElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -104,7 +107,7 @@ public class WindowElementHandler extends AbstractElementHandler {
|
|||
} else {
|
||||
logImportDetail(ctx, impDetail, 0, mWindow.getName(), mWindow
|
||||
.get_ID(), action);
|
||||
throw new POSaveFailedException("Window");
|
||||
throw new POSaveFailedException("Failed to save Window " + mWindow.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -112,19 +115,48 @@ public class WindowElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Window_ID = Env.getContextAsInt(ctx, "AD_Window_ID");
|
||||
PackOut packOut = (PackOut) ctx.get("PackOutProcess");
|
||||
int AD_Window_ID = Env.getContextAsInt(ctx.ctx, "AD_Window_ID");
|
||||
PackOut packOut = ctx.packOut;
|
||||
|
||||
X_AD_Window m_Window = new X_AD_Window(ctx, AD_Window_ID, null);
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Window.Table_Name, atts);
|
||||
createWindowBinding(ctx, document, m_Window);
|
||||
boolean createElement = true;
|
||||
X_AD_Window m_Window = new X_AD_Window(ctx.ctx, AD_Window_ID, null);
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Window.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
createElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
//export color
|
||||
if (m_Window.getAD_Color_ID() > 0) {
|
||||
ElementHandler handler = ctx.packOut.getHandler(I_AD_Color.Table_Name);
|
||||
try {
|
||||
handler.packOut(ctx.packOut, document, null, m_Window.getAD_Color_ID());
|
||||
} catch (Exception e) {
|
||||
throw new SAXException(e);
|
||||
}
|
||||
}
|
||||
|
||||
//export image
|
||||
if (m_Window.getAD_Image_ID() > 0) {
|
||||
ElementHandler handler = ctx.packOut.getHandler(I_AD_Image.Table_Name);
|
||||
try {
|
||||
handler.packOut(ctx.packOut, document, null, m_Window.getAD_Image_ID());
|
||||
} catch (Exception e) {
|
||||
throw new SAXException(e);
|
||||
}
|
||||
}
|
||||
|
||||
if (createElement) {
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Window.Table_Name, atts);
|
||||
createWindowBinding(ctx, document, m_Window);
|
||||
}
|
||||
// Tab Tag
|
||||
String sql = "SELECT AD_Tab_ID, AD_Table_ID FROM AD_TAB WHERE AD_WINDOW_ID = "
|
||||
+ AD_Window_ID;
|
||||
|
@ -153,10 +185,9 @@ public class WindowElementHandler extends AbstractElementHandler {
|
|||
DB.close(rs, pstmt);
|
||||
}
|
||||
|
||||
//TODO: export of ad_image and ad_color use
|
||||
|
||||
// Loop tags.
|
||||
document.endElement("", "", I_AD_Window.Table_Name);
|
||||
if (createElement) {
|
||||
document.endElement("", "", X_AD_Window.Table_Name);
|
||||
}
|
||||
|
||||
// Preference Tag
|
||||
sql = "SELECT AD_Preference_ID FROM AD_PREFERENCE WHERE AD_WINDOW_ID = ?";
|
||||
|
@ -184,22 +215,22 @@ public class WindowElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private void createPreference(Properties ctx, TransformerHandler document,
|
||||
private void createPreference(PIPOContext ctx, TransformerHandler document,
|
||||
int AD_Preference_ID) throws SAXException {
|
||||
Env.setContext(ctx, X_AD_Preference.COLUMNNAME_AD_Preference_ID,
|
||||
Env.setContext(ctx.ctx, X_AD_Preference.COLUMNNAME_AD_Preference_ID,
|
||||
AD_Preference_ID);
|
||||
preferenceHandler.create(ctx, document);
|
||||
ctx.remove(X_AD_Preference.COLUMNNAME_AD_Preference_ID);
|
||||
ctx.ctx.remove(X_AD_Preference.COLUMNNAME_AD_Preference_ID);
|
||||
}
|
||||
|
||||
private void createTab(Properties ctx, TransformerHandler document,
|
||||
private void createTab(PIPOContext ctx, TransformerHandler document,
|
||||
int AD_Tab_ID) throws SAXException {
|
||||
Env.setContext(ctx, X_AD_Tab.COLUMNNAME_AD_Tab_ID, AD_Tab_ID);
|
||||
Env.setContext(ctx.ctx, X_AD_Tab.COLUMNNAME_AD_Tab_ID, AD_Tab_ID);
|
||||
tabHandler.create(ctx, document);
|
||||
ctx.remove(X_AD_Tab.COLUMNNAME_AD_Tab_ID);
|
||||
ctx.ctx.remove(X_AD_Tab.COLUMNNAME_AD_Tab_ID);
|
||||
}
|
||||
|
||||
private void createWindowBinding(Properties ctx, TransformerHandler document,
|
||||
private void createWindowBinding(PIPOContext ctx, TransformerHandler document,
|
||||
X_AD_Window m_Window) {
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Window);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Window.Table_Name);
|
||||
|
@ -212,8 +243,8 @@ public class WindowElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Window_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Window_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Window_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Window_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
|
@ -34,32 +34,43 @@ import org.compiere.model.X_AD_Role;
|
|||
import org.compiere.model.X_AD_Workflow;
|
||||
import org.compiere.model.X_AD_Workflow_Access;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.wf.MWorkflowAccess;
|
||||
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 {
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
int roleid =0;
|
||||
int workflowid =0;
|
||||
List<String> excludes = defaultExcludeList(X_AD_Workflow_Access.Table_Name);
|
||||
|
||||
X_AD_Workflow_Access po = findPO(ctx, element);
|
||||
MWorkflowAccess po = findPO(ctx, element);
|
||||
if (po == null) {
|
||||
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
||||
roleid = getParentId(element, I_AD_Role.Table_Name);
|
||||
} else {
|
||||
Element roleElement = element.properties.get(I_AD_Workflow_Access.COLUMNNAME_AD_Role_ID);
|
||||
roleid = ReferenceUtils.resolveReference(ctx, roleElement, getTrxName(ctx));
|
||||
roleid = ReferenceUtils.resolveReference(ctx.ctx, roleElement, getTrxName(ctx));
|
||||
}
|
||||
|
||||
if (roleid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Role_ID";
|
||||
return;
|
||||
}
|
||||
|
||||
Element wfElement = element.properties.get(I_AD_Workflow_Access.COLUMNNAME_AD_Workflow_ID);
|
||||
workflowid = ReferenceUtils.resolveReference(ctx, wfElement, getTrxName(ctx));
|
||||
workflowid = ReferenceUtils.resolveReference(ctx.ctx, wfElement, getTrxName(ctx));
|
||||
if (workflowid <= 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = "AD_Workflow_ID";
|
||||
}
|
||||
|
||||
Query query = new Query(ctx, "AD_Workflow_Access", "AD_Role_ID=? and AD_Workflow_ID=?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, "AD_Workflow_Access", "AD_Role_ID=? and AD_Workflow_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{roleid, workflowid}).first();
|
||||
if (po == null) {
|
||||
po = new X_AD_Workflow_Access(ctx, 0, getTrxName(ctx));
|
||||
po = new MWorkflowAccess(ctx.ctx, 0, getTrxName(ctx));
|
||||
po.setAD_Role_ID(roleid);
|
||||
po.setAD_Workflow_ID(workflowid);
|
||||
}
|
||||
|
@ -71,31 +82,38 @@ public class WorkflowAccessElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
po.saveEx();
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Workflow_Access.Table_Name, atts);
|
||||
createWorkflowAccessBinding(ctx, document, AD_Workflow_ID, AD_Role_ID);
|
||||
document.endElement("", "", I_AD_Workflow_Access.Table_Name);
|
||||
int AD_Workflow_ID = Env.getContextAsInt(ctx.ctx, X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
|
||||
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||
MWorkflowAccess po = null;
|
||||
Query query = new Query(ctx.ctx, "AD_Workflow_Access", "AD_Role_ID=? and AD_Workflow_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{AD_Role_ID, AD_Workflow_ID}).first();
|
||||
if (po != null) {
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_Workflow_Access.Table_Name, atts);
|
||||
createWorkflowAccessBinding(ctx, document, po);
|
||||
document.endElement("", "", I_AD_Workflow_Access.Table_Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void createWorkflowAccessBinding(Properties ctx, TransformerHandler document,
|
||||
int workflow_id, int role_id) {
|
||||
|
||||
X_AD_Workflow_Access po = null;
|
||||
Query query = new Query(ctx, "AD_Workflow_Access", "AD_Role_ID=? and AD_Workflow_ID=?", getTrxName(ctx));
|
||||
po = query.setParameters(new Object[]{role_id, workflow_id}).first();
|
||||
private void createWorkflowAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||
MWorkflowAccess po) {
|
||||
PoExporter filler = new PoExporter(ctx, document, po);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Workflow_Access.Table_Name);
|
||||
|
||||
|
|
|
@ -20,12 +20,12 @@ import java.sql.PreparedStatement;
|
|||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.exceptions.DBException;
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -52,12 +52,12 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
|
||||
private List<Integer> workflows = new ArrayList<Integer>();
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_Workflow.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
|
||||
MWorkflow mWorkflow = findPO(ctx, element);
|
||||
if (mWorkflow == null) {
|
||||
|
@ -68,7 +68,7 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
mWorkflow = new MWorkflow(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mWorkflow = new MWorkflow(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mWorkflow.setValue(workflowValue);
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,7 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -102,7 +103,7 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
log.info("m_Workflow save failure");
|
||||
logImportDetail(ctx, impDetail, 0, mWorkflow.getName(), mWorkflow
|
||||
.get_ID(), action);
|
||||
throw new POSaveFailedException("MWorkflow");
|
||||
throw new POSaveFailedException("Failed to save MWorkflow " + mWorkflow.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -114,12 +115,12 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
* @param ctx
|
||||
* @param element
|
||||
*/
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
if (!element.defer && !element.skip && element.recordId > 0) {
|
||||
//set start node
|
||||
String value = getStringValue(element, "AD_WF_Node.Value");
|
||||
if (value != null && value.trim().length() > 0) {
|
||||
MWorkflow m_Workflow = new MWorkflow(ctx, element.recordId, getTrxName(ctx));
|
||||
MWorkflow m_Workflow = new MWorkflow(ctx.ctx, element.recordId, getTrxName(ctx));
|
||||
int id = findIdByColumnAndParentId(ctx, "AD_WF_Node", "Value", value, "AD_Workflow", m_Workflow.getAD_Workflow_ID());
|
||||
if (id <= 0) {
|
||||
log.warning("Failed to resolve start node reference for workflow element. Workflow="
|
||||
|
@ -141,15 +142,15 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
log.info("m_Workflow update fail");
|
||||
logImportDetail(ctx, impDetail, 0, m_Workflow.getName(), m_Workflow
|
||||
.get_ID(), "Update");
|
||||
throw new POSaveFailedException("MWorkflow");
|
||||
throw new POSaveFailedException("Failed to save MWorkflow " + m_Workflow.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_Workflow_ID = Env.getContextAsInt(ctx,
|
||||
int AD_Workflow_ID = Env.getContextAsInt(ctx.ctx,
|
||||
X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID);
|
||||
if (workflows.contains(AD_Workflow_ID))
|
||||
return;
|
||||
|
@ -159,18 +160,30 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
int ad_wf_nodenextcondition_id = 0;
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
|
||||
X_AD_Workflow m_Workflow = new X_AD_Workflow(ctx,
|
||||
boolean creatElement = true;
|
||||
MWorkflow m_Workflow = new MWorkflow(ctx.ctx,
|
||||
AD_Workflow_ID, null);
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_Workflow.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
creatElement = false;
|
||||
}
|
||||
}
|
||||
if (creatElement) {
|
||||
atts.addAttribute("", "", "type", "CDATA", "object");
|
||||
atts.addAttribute("", "", "type-name", "CDATA", "ad.workflow");
|
||||
document.startElement("", "", I_AD_Workflow.Table_Name, atts);
|
||||
createWorkflowBinding(ctx, document, m_Workflow);
|
||||
}
|
||||
|
||||
atts.addAttribute("", "", "type", "CDATA", "object");
|
||||
atts.addAttribute("", "", "type-name", "CDATA", "ad.workflow");
|
||||
document.startElement("", "", I_AD_Workflow.Table_Name, atts);
|
||||
createWorkflowBinding(ctx, document, m_Workflow);
|
||||
String sql = "SELECT AD_WF_Node_ID FROM AD_WF_Node WHERE AD_Workflow_ID = "
|
||||
+ AD_Workflow_ID;
|
||||
|
||||
PreparedStatement pstmt = null;
|
||||
PreparedStatement psNodeNext = null;
|
||||
PreparedStatement psNCondition = null;
|
||||
ResultSet rs = null;
|
||||
ResultSet nodeNextrs = null;
|
||||
ResultSet nodeNConditionrs = null;
|
||||
try {
|
||||
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
||||
// Generated workflowNodeNext(s) and
|
||||
|
@ -179,20 +192,18 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
while (rs.next()) {
|
||||
int nodeId = rs.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, nodeId);
|
||||
if (ad_wf_nodenext_id > 0) {
|
||||
sql = "SELECT ad_wf_nodenext_id from ad_wf_nodenext WHERE ad_wf_node_id =" +nodeId;
|
||||
psNodeNext = DB.prepareStatement(sql, getTrxName(ctx));
|
||||
nodeNextrs = psNodeNext.executeQuery();
|
||||
while (nodeNextrs.next()){
|
||||
ad_wf_nodenext_id = nodeNextrs.getInt("AD_WF_NodeNext_ID");
|
||||
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, nodeId);
|
||||
log.info("ad_wf_nodenextcondition_id: "
|
||||
+ String.valueOf(ad_wf_nodenextcondition_id));
|
||||
if (ad_wf_nodenextcondition_id > 0) {
|
||||
sql = "SELECT ad_wf_nextcondition_id from ad_wf_nextcondition WHERE ad_wf_nodenext_id =" + ad_wf_nodenext_id;
|
||||
psNCondition = DB.prepareStatement(sql, getTrxName(ctx));
|
||||
nodeNConditionrs = psNCondition.executeQuery();
|
||||
while (nodeNConditionrs.next()) {
|
||||
ad_wf_nodenextcondition_id= nodeNConditionrs.getInt("AD_WF_NextCondition_ID");
|
||||
log.info("ad_wf_nodenextcondition_id: "+ String.valueOf(ad_wf_nodenextcondition_id));
|
||||
createNodeNextCondition(ctx, document, ad_wf_nodenextcondition_id);
|
||||
}
|
||||
}
|
||||
|
@ -201,37 +212,41 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
throw new DBException(e);
|
||||
} finally {
|
||||
DB.close(rs, pstmt);
|
||||
document.endElement("", "", I_AD_Workflow.Table_Name);
|
||||
DB.close(nodeNextrs, psNodeNext);
|
||||
DB.close(nodeNConditionrs,psNCondition);
|
||||
if (creatElement) {
|
||||
document.endElement("", "", MWorkflow.Table_Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createNodeNextCondition(Properties ctx,
|
||||
private void createNodeNextCondition(PIPOContext ctx,
|
||||
TransformerHandler document, int ad_wf_nodenextcondition_id)
|
||||
throws SAXException {
|
||||
Env.setContext(ctx,
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID);
|
||||
}
|
||||
|
||||
private void createNodeNext(Properties ctx, TransformerHandler document,
|
||||
private void createNodeNext(PIPOContext ctx, TransformerHandler document,
|
||||
int ad_wf_nodenext_id) throws SAXException {
|
||||
Env.setContext(ctx, X_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID,
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID);
|
||||
}
|
||||
|
||||
private void createNode(Properties ctx, TransformerHandler document,
|
||||
private void createNode(PIPOContext ctx, TransformerHandler document,
|
||||
int AD_WF_Node_ID) throws SAXException {
|
||||
Env.setContext(ctx, X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID,
|
||||
Env.setContext(ctx.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);
|
||||
ctx.ctx.remove(X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID);
|
||||
}
|
||||
|
||||
private void createWorkflowBinding(Properties ctx, TransformerHandler document, X_AD_Workflow m_Workflow) {
|
||||
private void createWorkflowBinding(PIPOContext ctx, TransformerHandler document, MWorkflow m_Workflow) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_Workflow);
|
||||
List<String> excludes = defaultExcludeList(X_AD_Workflow.Table_Name);
|
||||
|
@ -244,8 +259,8 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
|||
|
||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||
{
|
||||
Env.setContext(packout.getCtx(), X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID, recordId);
|
||||
this.create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID);
|
||||
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -35,35 +35,37 @@ import org.compiere.model.X_AD_Package_Imp_Detail;
|
|||
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.compiere.wf.MWorkflow;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_WF_Node.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isParentSkip(element, null)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
/*if (isParentSkip(element, null)) {
|
||||
element.skip = true;
|
||||
return;
|
||||
}
|
||||
if (isParentDefer(element, I_AD_Workflow.Table_Name)) {
|
||||
}*/
|
||||
if (isParentDefer(element, MWorkflow.Table_Name)) {
|
||||
element.unresolved = "Parent element mark as defer: " + getStringValue(element, "AD_Workflow.Value");
|
||||
element.defer = true;
|
||||
return;
|
||||
}
|
||||
|
||||
X_AD_WF_Node mWFNode = findPO(ctx, element);
|
||||
MWFNode mWFNode = findPO(ctx, element);
|
||||
if (mWFNode == null) {
|
||||
int workflowId = 0;
|
||||
Element wfElement = element.properties.get(I_AD_WF_Node.COLUMNNAME_AD_Workflow_ID);
|
||||
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
||||
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
||||
} else {
|
||||
workflowId = ReferenceUtils.resolveReference(ctx, wfElement, getTrxName(ctx));
|
||||
workflowId = ReferenceUtils.resolveReference(ctx.ctx, wfElement, getTrxName(ctx));
|
||||
}
|
||||
if (workflowId <= 0) {
|
||||
element.defer = true;
|
||||
|
@ -76,7 +78,7 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
|||
"SELECT AD_WF_Node_ID FROM AD_WF_Node WHERE AD_Workflow_ID=? and Value =?");
|
||||
|
||||
int id = DB.getSQLValue(getTrxName(ctx), sqlB.toString(), workflowId, workflowNodeValue);
|
||||
mWFNode = new X_AD_WF_Node(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mWFNode = new MWFNode(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mWFNode.setValue(workflowNodeValue);
|
||||
mWFNode.setAD_Workflow_ID(workflowId);
|
||||
excludes.add(I_AD_WF_Node.COLUMNNAME_AD_Workflow_ID);
|
||||
|
@ -87,6 +89,7 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -110,7 +113,7 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
|||
log.info("m_WFNode save failure");
|
||||
logImportDetail(ctx, impDetail, 0, mWFNode.getName(), mWFNode
|
||||
.get_ID(), action);
|
||||
throw new POSaveFailedException("WorkflowNode");
|
||||
throw new POSaveFailedException("Failed to save WorkflowNode " + mWFNode.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -118,25 +121,29 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext ctx, TransformerHandler document)
|
||||
throws SAXException {
|
||||
int AD_WF_Node_ID = Env.getContextAsInt(ctx,
|
||||
int AD_WF_Node_ID = Env.getContextAsInt(ctx.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,
|
||||
MWFNode m_WF_Node = new MWFNode(ctx.ctx, AD_WF_Node_ID,
|
||||
getTrxName(ctx));
|
||||
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_WF_Node.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_WF_Node.Table_Name, atts);
|
||||
createWorkflowNodeBinding(ctx, document, m_WF_Node);
|
||||
document.endElement("", "", I_AD_WF_Node.Table_Name);
|
||||
}
|
||||
|
||||
private void createWorkflowNodeBinding(Properties ctx, TransformerHandler document,
|
||||
X_AD_WF_Node m_WF_Node) {
|
||||
private void createWorkflowNodeBinding(PIPOContext ctx, TransformerHandler document,
|
||||
MWFNode m_WF_Node) {
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_WF_Node);
|
||||
List<String> excludes = defaultExcludeList(X_AD_WF_Node.Table_Name);
|
||||
|
@ -150,8 +157,8 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -30,27 +30,30 @@ import org.adempiere.pipo2.ReferenceUtils;
|
|||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
||||
import org.compiere.model.I_AD_WF_NextCondition;
|
||||
import org.compiere.model.I_AD_Workflow;
|
||||
import org.compiere.model.MColumn;
|
||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||
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.compiere.wf.MWFNode;
|
||||
import org.compiere.wf.MWFNodeNext;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
public class WorkflowNodeNextConditionElementHandler extends
|
||||
AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element)
|
||||
public void startElement(PIPOContext ctx, Element element)
|
||||
throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_WF_NextCondition.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isParentSkip(element, null)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
/* if (isParentSkip(element, null)) {
|
||||
element.skip = true;
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
|
||||
MWFNextCondition mWFNodeNextCondition = findPO(ctx, element);
|
||||
if (mWFNodeNextCondition == null) {
|
||||
|
@ -59,7 +62,7 @@ public class WorkflowNodeNextConditionElementHandler extends
|
|||
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
||||
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
||||
} else {
|
||||
workflowId = ReferenceUtils.resolveReference(ctx, wfElement, getTrxName(ctx));
|
||||
workflowId = ReferenceUtils.resolveReference(ctx.ctx, wfElement, getTrxName(ctx));
|
||||
}
|
||||
if (workflowId <= 0) {
|
||||
element.defer = true;
|
||||
|
@ -67,36 +70,20 @@ public class WorkflowNodeNextConditionElementHandler extends
|
|||
return;
|
||||
}
|
||||
|
||||
int AD_WF_NodeNext_ID = 0;
|
||||
Element nodeNextElement = element.properties.get(I_AD_WF_NextCondition.COLUMNNAME_AD_WF_NodeNext_ID);
|
||||
if (ReferenceUtils.isIDLookup(nodeNextElement) || ReferenceUtils.isUUIDLookup(nodeNextElement)) {
|
||||
AD_WF_NodeNext_ID = ReferenceUtils.resolveReference(ctx, nodeNextElement, getTrxName(ctx));
|
||||
} else {
|
||||
Element wfnElement = element.properties.get("AD_WF_Node_ID");
|
||||
int wfNodeId = ReferenceUtils.resolveReference(ctx, wfnElement, getTrxName(ctx));
|
||||
if (wfNodeId <= 0) {
|
||||
element.unresolved = "AD_WF_Node=" + wfnElement.contents;
|
||||
element.defer = true;
|
||||
return;
|
||||
}
|
||||
|
||||
Element nextElement = element.properties.get("AD_WF_Next_ID");
|
||||
int wfNodeNextId = ReferenceUtils.resolveReference(ctx, nextElement, getTrxName(ctx));
|
||||
if (wfNodeNextId <= 0) {
|
||||
element.unresolved = "AD_WF_Node=" + nextElement.contents;
|
||||
element.defer = true;
|
||||
return;
|
||||
}
|
||||
|
||||
String sql = "SELECT AD_WF_NodeNext_ID FROM AD_WF_NodeNext WHERE AD_WF_Node_ID =? and AD_WF_Next_ID =?";
|
||||
AD_WF_NodeNext_ID = DB.getSQLValue(getTrxName(ctx), sql, wfNodeId, wfNodeNextId);
|
||||
Element nextElement = element.properties.get("AD_WF_NodeNext_ID");
|
||||
int wfNodeNextId = ReferenceUtils.resolveReference(ctx.ctx, nextElement, getTrxName(ctx));
|
||||
if (wfNodeNextId <= 0) {
|
||||
element.unresolved = "AD_WF_NodeNext=" + nextElement.contents;
|
||||
element.defer = true;
|
||||
return;
|
||||
}
|
||||
|
||||
String sql = "SELECT AD_WF_NextCondition_ID FROM AD_WF_NextCondition WHERE AD_WF_NodeNext_ID =?";
|
||||
int id = DB.getSQLValue(getTrxName(ctx), sql, AD_WF_NodeNext_ID);
|
||||
int seqNo = getIntValue(element, "SeqNo");
|
||||
String sql = "SELECT AD_WF_NextCondition_ID FROM AD_WF_NextCondition WHERE AD_WF_NodeNext_ID =? AND SeqNo=?";
|
||||
int id = DB.getSQLValue(getTrxName(ctx), sql, new Object[] {wfNodeNextId, seqNo});
|
||||
|
||||
mWFNodeNextCondition = new MWFNextCondition(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mWFNodeNextCondition.setAD_WF_NodeNext_ID(AD_WF_NodeNext_ID);
|
||||
mWFNodeNextCondition = new MWFNextCondition(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||
mWFNodeNextCondition.setAD_WF_NodeNext_ID(wfNodeNextId);
|
||||
}
|
||||
|
||||
PoFiller filler = new PoFiller(ctx, mWFNodeNextCondition, element, this);
|
||||
|
@ -107,9 +94,9 @@ public class WorkflowNodeNextConditionElementHandler extends
|
|||
Element columnElement = element.properties.get("AD_Column_ID");
|
||||
int columnId = 0;
|
||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||
columnId = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
||||
columnId = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||
} else {
|
||||
int AD_Table_ID = ReferenceUtils.resolveReference(ctx, tableElement, getTrxName(ctx));
|
||||
int AD_Table_ID = ReferenceUtils.resolveReference(ctx.ctx, tableElement, getTrxName(ctx));
|
||||
columnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnElement.contents.toString(), "AD_Table", AD_Table_ID);
|
||||
}
|
||||
mWFNodeNextCondition.setAD_Column_ID(columnId);
|
||||
|
@ -117,6 +104,7 @@ public class WorkflowNodeNextConditionElementHandler extends
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -149,7 +137,7 @@ public class WorkflowNodeNextConditionElementHandler extends
|
|||
String.valueOf(mWFNodeNextCondition.get_ID()),
|
||||
mWFNodeNextCondition.get_ID(),
|
||||
action);
|
||||
throw new POSaveFailedException("WorkflowNodeNextCondition");
|
||||
throw new POSaveFailedException("Failed to save WorkflowNodeNextCondition");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -157,15 +145,19 @@ public class WorkflowNodeNextConditionElementHandler extends
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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);
|
||||
int ad_wf_nodenextcondition_id = Env.getContextAsInt(ctx.ctx, "AD_WF_NextCondition_ID");
|
||||
MWFNextCondition m_WF_NodeNextCondition = new MWFNextCondition(
|
||||
ctx.ctx, ad_wf_nodenextcondition_id, null);
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_WF_NodeNextCondition.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_WF_NextCondition.Table_Name, atts);
|
||||
|
@ -173,30 +165,34 @@ public class WorkflowNodeNextConditionElementHandler extends
|
|||
document.endElement("", "", I_AD_WF_NextCondition.Table_Name);
|
||||
}
|
||||
|
||||
private void createWorkflowNodeNextConditionBinding(Properties ctx, TransformerHandler document, X_AD_WF_NextCondition mWFNodeNextCondition) {
|
||||
private void createWorkflowNodeNextConditionBinding(PIPOContext ctx, TransformerHandler document, MWFNextCondition mWFNodeNextCondition) {
|
||||
PoExporter filler = new PoExporter(ctx, document, mWFNodeNextCondition);
|
||||
List<String> excludes = defaultExcludeList(X_AD_WF_NextCondition.Table_Name);
|
||||
|
||||
if (mWFNodeNextCondition.getAD_WF_NextCondition_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||
filler.add("AD_WF_NextCondition_ID", new AttributesImpl());
|
||||
|
||||
int AD_workflow_ID = mWFNodeNextCondition.getAD_WF_NodeNext().getAD_WF_Node().getAD_Workflow_ID();
|
||||
MWFNodeNext mWFNodeNext = new MWFNodeNext(ctx.ctx, mWFNodeNextCondition.getAD_WF_NodeNext_ID(), getTrxName(ctx));
|
||||
MWFNode mWFNode = new MWFNode(ctx.ctx, mWFNodeNext.getAD_WF_Node_ID(), getTrxName(ctx));
|
||||
int AD_workflow_ID = mWFNode.getAD_Workflow_ID();
|
||||
AttributesImpl wfAttributes = new AttributesImpl();
|
||||
String value = ReferenceUtils.getTableReference("AD_Workflow", "Value", AD_workflow_ID, wfAttributes);
|
||||
filler.addString("AD_Workflow_ID", value, wfAttributes);
|
||||
|
||||
int AD_WF_Node_ID = mWFNodeNextCondition.getAD_WF_NodeNext().getAD_WF_Node_ID();
|
||||
int AD_WF_Node_ID = mWFNodeNext.getAD_WF_Node_ID();
|
||||
AttributesImpl wfnAttributes = new AttributesImpl();
|
||||
value = ReferenceUtils.getTableReference("AD_WF_Node", "Value", AD_WF_Node_ID, wfnAttributes);
|
||||
filler.addString("AD_WF_Node_ID", value, wfnAttributes);
|
||||
|
||||
int AD_WF_Next_ID = mWFNodeNextCondition.getAD_WF_NodeNext().getAD_WF_Next_ID();
|
||||
int AD_WF_Next_ID = mWFNodeNext.getAD_WF_Next_ID();
|
||||
AttributesImpl nextAttributes = new AttributesImpl();
|
||||
value = ReferenceUtils.getTableReference("AD_WF_Node", "Value", AD_WF_Next_ID, nextAttributes);
|
||||
filler.addString("AD_WF_Next_ID", value, nextAttributes);
|
||||
|
||||
if (mWFNodeNextCondition.getAD_Column_ID() > 0) {
|
||||
int AD_Table_ID = mWFNodeNextCondition.getAD_Column().getAD_Table_ID();
|
||||
int AD_Column_ID = mWFNodeNextCondition.getAD_Column_ID();
|
||||
MColumn mColumn = new MColumn(ctx.ctx, AD_Column_ID, getTrxName(ctx));
|
||||
int AD_Table_ID = mColumn.getAD_Table_ID();
|
||||
AttributesImpl tableAttributes = new AttributesImpl();
|
||||
value = ReferenceUtils.getTableReference("AD_Table", "TableName", AD_Table_ID, tableAttributes);
|
||||
filler.addString("AD_Table_ID", value, tableAttributes);
|
||||
|
@ -209,9 +205,9 @@ public class WorkflowNodeNextConditionElementHandler extends
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
package org.adempiere.pipo2.handler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.pipo2.AbstractElementHandler;
|
||||
import org.adempiere.pipo2.PIPOContext;
|
||||
import org.adempiere.pipo2.PoExporter;
|
||||
import org.adempiere.pipo2.Element;
|
||||
import org.adempiere.pipo2.PackOut;
|
||||
|
@ -41,15 +41,15 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
|
||||
public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
||||
|
||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(X_AD_WF_NodeNext.Table_Name);
|
||||
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
List<String> excludes = defaultExcludeList(MWFNodeNext.Table_Name);
|
||||
|
||||
String entitytype = getStringValue(element, "EntityType");
|
||||
if (isProcessElement(ctx, entitytype)) {
|
||||
if (isParentSkip(element, null)) {
|
||||
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||
/*if (isParentSkip(element, null)) {
|
||||
element.skip = true;
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
|
||||
MWFNodeNext mWFNodeNext = findPO(ctx, element);
|
||||
if (mWFNodeNext == null) {
|
||||
|
@ -58,7 +58,7 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
||||
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
||||
} else {
|
||||
workflowId = ReferenceUtils.resolveReference(ctx, wfElement, getTrxName(ctx));
|
||||
workflowId = ReferenceUtils.resolveReference(ctx.ctx, wfElement, getTrxName(ctx));
|
||||
}
|
||||
if (workflowId <= 0) {
|
||||
element.defer = true;
|
||||
|
@ -69,10 +69,10 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
int wfNodeId = 0;
|
||||
Element wfnElement = element.properties.get(I_AD_WF_NodeNext.COLUMNNAME_AD_WF_Node_ID);
|
||||
if (ReferenceUtils.isIDLookup(wfnElement) || ReferenceUtils.isUUIDLookup(wfnElement)) {
|
||||
wfNodeId = ReferenceUtils.resolveReference(ctx, wfnElement, getTrxName(ctx));
|
||||
wfNodeId = ReferenceUtils.resolveReference(ctx.ctx, wfnElement, getTrxName(ctx));
|
||||
} else {
|
||||
wfNodeId = DB.getSQLValue(getTrxName(ctx), "SELECT AD_WF_Node_Id FROM AD_WF_Node WHERE AD_Workflow_ID=? AND Value=? AND AD_Client_ID=?",
|
||||
workflowId, wfnElement.contents.toString(), Env.getAD_Client_ID(ctx));
|
||||
workflowId, wfnElement.contents.toString(), Env.getAD_Client_ID(ctx.ctx));
|
||||
}
|
||||
if (wfNodeId <= 0) {
|
||||
element.defer = true;
|
||||
|
@ -83,10 +83,10 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
int AD_WF_Next_ID = 0;
|
||||
Element nextElement = element.properties.get(I_AD_WF_NodeNext.COLUMNNAME_AD_WF_Next_ID);
|
||||
if (ReferenceUtils.isIDLookup(nextElement) || ReferenceUtils.isUUIDLookup(nextElement)) {
|
||||
AD_WF_Next_ID = ReferenceUtils.resolveReference(ctx, nextElement, getTrxName(ctx));
|
||||
AD_WF_Next_ID = ReferenceUtils.resolveReference(ctx.ctx, nextElement, getTrxName(ctx));
|
||||
} else {
|
||||
AD_WF_Next_ID = DB.getSQLValue(getTrxName(ctx), "SELECT AD_WF_Node_Id FROM AD_WF_Node WHERE AD_Workflow_ID=? AND Value=? AND AD_Client_ID=?",
|
||||
workflowId, nextElement.contents.toString(), Env.getAD_Client_ID(ctx));
|
||||
workflowId, nextElement.contents.toString(), Env.getAD_Client_ID(ctx.ctx));
|
||||
}
|
||||
if (AD_WF_Next_ID <= 0) {
|
||||
element.defer = true;
|
||||
|
@ -96,7 +96,7 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
|
||||
int AD_WF_NodeNext_ID = DB.getSQLValue(getTrxName(ctx), "SELECT AD_WF_NodeNext_ID FROM AD_WF_NodeNext WHERE AD_WF_Node_ID=? and AD_WF_NEXT_ID =?", wfNodeId, AD_WF_Next_ID);
|
||||
|
||||
mWFNodeNext = new MWFNodeNext(ctx, AD_WF_NodeNext_ID, getTrxName(ctx));
|
||||
mWFNodeNext = new MWFNodeNext(ctx.ctx, AD_WF_NodeNext_ID, getTrxName(ctx));
|
||||
mWFNodeNext.setAD_WF_Node_ID(wfNodeId);
|
||||
mWFNodeNext.setAD_WF_Next_ID(AD_WF_Next_ID);
|
||||
}
|
||||
|
@ -108,6 +108,7 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
List<String> notfounds = filler.autoFill(excludes);
|
||||
if (notfounds.size() > 0) {
|
||||
element.defer = true;
|
||||
element.unresolved = notfounds.toString();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -127,7 +128,7 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
} else{
|
||||
log.info("m_WFNodeNext save failure");
|
||||
logImportDetail (ctx, impDetail, 0, String.valueOf(mWFNodeNext.get_ID()), mWFNodeNext.get_ID(), action);
|
||||
throw new POSaveFailedException("WorkflowNodeNext");
|
||||
throw new POSaveFailedException("Failed to save WorkflowNodeNext");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -135,14 +136,19 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void endElement(Properties ctx, Element element) throws SAXException {
|
||||
public void endElement(PIPOContext ctx, Element element) throws SAXException {
|
||||
}
|
||||
|
||||
public void create(Properties ctx, TransformerHandler document)
|
||||
public void create(PIPOContext 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);
|
||||
int ad_wf_nodenext_id = Env.getContextAsInt(ctx.ctx, "AD_WF_NodeNext_ID");
|
||||
MWFNodeNext m_WF_NodeNext = new MWFNodeNext(
|
||||
ctx.ctx, ad_wf_nodenext_id, null);
|
||||
if (ctx.packOut.getFromDate() != null) {
|
||||
if (m_WF_NodeNext.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
addTypeName(atts, "table");
|
||||
document.startElement("", "", I_AD_WF_NodeNext.Table_Name, atts);
|
||||
|
@ -151,8 +157,8 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
|
||||
}
|
||||
|
||||
private void createWorkflowNodeNextBinding(Properties ctx, TransformerHandler document,
|
||||
X_AD_WF_NodeNext m_WF_NodeNext)
|
||||
private void createWorkflowNodeNextBinding(PIPOContext ctx, TransformerHandler document,
|
||||
MWFNodeNext m_WF_NodeNext)
|
||||
{
|
||||
|
||||
PoExporter filler = new PoExporter(ctx, document, m_WF_NodeNext);
|
||||
|
@ -161,6 +167,9 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
if (m_WF_NodeNext.getAD_WF_NodeNext_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||
filler.add("AD_WF_NodeNext_ID", new AttributesImpl());
|
||||
|
||||
int AD_Workflow_ID = DB.getSQLValue(getTrxName(ctx), "SELECT AD_Workflow_ID FROM AD_WF_Node WHERE AD_WF_Node_ID=?", m_WF_NodeNext.getAD_WF_Node_ID());
|
||||
filler.addTableReference("AD_Workflow_ID", "AD_Workflow", "Value", AD_Workflow_ID, new AttributesImpl());
|
||||
|
||||
filler.export(excludes);
|
||||
}
|
||||
|
||||
|
@ -168,8 +177,8 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
|||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||
TransformerHandler docHandler,
|
||||
int recordId) throws Exception {
|
||||
Env.setContext(packout.getCtx(), I_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID, recordId);
|
||||
Env.setContext(packout.getCtx().ctx, I_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID, recordId);
|
||||
create(packout.getCtx(), packoutHandler);
|
||||
packout.getCtx().remove(I_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID);
|
||||
packout.getCtx().ctx.remove(I_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,9 @@ Bundle-Name: PiPo
|
|||
Bundle-SymbolicName: org.adempiere.pipo;singleton:=true
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Import-Package: org.apache.tools.ant,
|
||||
Import-Package: org.apache.commons.codec;version="1.3.0",
|
||||
org.apache.commons.codec.binary;version="1.3.0",
|
||||
org.apache.tools.ant,
|
||||
org.apache.tools.ant.taskdefs,
|
||||
org.apache.xerces.jaxp;version="2.9.0",
|
||||
org.osgi.framework
|
||||
|
|
|
@ -61,8 +61,8 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @param name
|
||||
*
|
||||
*/
|
||||
public int findIdByName (Properties ctx, String tableName, String name) {
|
||||
return IDFinder.findIdByName(tableName, name, getClientId(ctx), getTrxName(ctx));
|
||||
public int findIdByName (PIPOContext ctx, String tableName, String name) {
|
||||
return IDFinder.findIdByName(tableName, name, getClientId(ctx.ctx), ctx.trx.getTrxName());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -72,22 +72,25 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @param columName
|
||||
* @param name
|
||||
*/
|
||||
public int findIdByColumn (Properties ctx, String tableName, String columnName, Object value) {
|
||||
public int findIdByColumn (PIPOContext ctx, String tableName, String columnName, Object value, boolean ignorecase) {
|
||||
int id = 0;
|
||||
if ("AD_Table".equals(tableName) && "TableName".equals(columnName) && value != null) {
|
||||
id = getPackIn(ctx).getTableId(value.toString());
|
||||
id = ctx.packIn.getTableId(value.toString());
|
||||
if (id <= 0) {
|
||||
id = IDFinder.findIdByColumn(tableName, columnName, value, getClientId(ctx), getTrxName(ctx));
|
||||
id = IDFinder.findIdByColumn(tableName, columnName, value, getClientId(ctx.ctx), ignorecase, ctx.trx.getTrxName());
|
||||
if (id > 0) {
|
||||
getPackIn(ctx).addTable(value.toString(), id);
|
||||
ctx.packIn.addTable(value.toString(), id);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
id = IDFinder.findIdByColumn(tableName, columnName, value, getClientId(ctx), getTrxName(ctx));
|
||||
id = IDFinder.findIdByColumn(tableName, columnName, value, getClientId(ctx.ctx), ignorecase, ctx.trx.getTrxName());
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
public int findIdByColumn (PIPOContext ctx, String tableName, String columnName, Object value) {
|
||||
return findIdByColumn (ctx, tableName, columnName, value, false);
|
||||
}
|
||||
/**
|
||||
* @param ctx
|
||||
* @param type
|
||||
|
@ -95,17 +98,17 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @param tableId
|
||||
* @return X_AD_Package_Imp_Detail
|
||||
*/
|
||||
public X_AD_Package_Imp_Detail createImportDetail(Properties ctx, String type, String tableName, int tableId) {
|
||||
X_AD_Package_Imp_Detail impDetail = new X_AD_Package_Imp_Detail(ctx, 0, getTrxName(ctx));
|
||||
impDetail.setAD_Package_Imp_ID(getPackageImpId(ctx));
|
||||
impDetail.setAD_Org_ID(Env.getAD_Org_ID(ctx) );
|
||||
public X_AD_Package_Imp_Detail createImportDetail(PIPOContext ctx, String type, String tableName, int tableId) {
|
||||
X_AD_Package_Imp_Detail impDetail = new X_AD_Package_Imp_Detail(ctx.ctx, 0, ctx.trx.getTrxName());
|
||||
impDetail.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||
impDetail.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx) );
|
||||
impDetail.setType(type);
|
||||
impDetail.setName("");
|
||||
impDetail.setAction("");
|
||||
impDetail.setAD_Original_ID(1);
|
||||
impDetail.setTableName(tableName);
|
||||
impDetail.setAD_Table_ID(tableId);
|
||||
impDetail.saveEx(getTrxName(ctx));
|
||||
impDetail.saveEx(ctx.trx.getTrxName());
|
||||
|
||||
return impDetail;
|
||||
}
|
||||
|
@ -122,33 +125,15 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @throws SAXException
|
||||
*
|
||||
*/
|
||||
public void logImportDetail (Properties ctx, X_AD_Package_Imp_Detail detail, int success, String objectName, int objectID,
|
||||
public void logImportDetail (PIPOContext ctx, X_AD_Package_Imp_Detail detail, int success, String objectName, int objectID,
|
||||
String action) throws SAXException{
|
||||
StringBuffer recordLayout = new StringBuffer();
|
||||
TransformerHandler hd_document = getLogDocument(ctx);
|
||||
AttributesImpl attsOut = new AttributesImpl();
|
||||
String result = success == 1 ? "Success" : "Failure";
|
||||
|
||||
//hd_documemt.startElement("","","Successful",attsOut);
|
||||
recordLayout.append("Type:")
|
||||
.append(detail.getType())
|
||||
.append(" - Name:")
|
||||
.append(objectName)
|
||||
.append(" - ID:")
|
||||
.append(objectID)
|
||||
.append(" - Action:")
|
||||
.append(action)
|
||||
.append(" - " + result);
|
||||
|
||||
hd_document.startElement("","",result,attsOut);
|
||||
hd_document.characters(recordLayout.toString().toCharArray(),0,recordLayout.length());
|
||||
hd_document.endElement("","",result);
|
||||
|
||||
detail.setName(objectName);
|
||||
detail.setAction(action);
|
||||
detail.setSuccess(result);
|
||||
detail.setAD_Original_ID(objectID);
|
||||
detail.saveEx(getTrxName(ctx));
|
||||
ctx.packIn.addImportDetail(detail);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -159,8 +144,8 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @param tableNameMaster
|
||||
* @param nameMaster
|
||||
*/
|
||||
public int findIdByNameAndParentName (Properties ctx, String tableName, String name, String tableNameMaster, String nameMaster) {
|
||||
return IDFinder.findIdByNameAndParentName(tableName, name, tableNameMaster, nameMaster, getTrxName(ctx));
|
||||
public int findIdByNameAndParentName (PIPOContext ctx, String tableName, String name, String tableNameMaster, String nameMaster) {
|
||||
return IDFinder.findIdByNameAndParentName(tableName, name, tableNameMaster, nameMaster, getClientId(ctx.ctx), ctx.trx.getTrxName());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -172,9 +157,23 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @param nameMaster
|
||||
*/
|
||||
|
||||
public int findIdByColumnAndParentId (Properties ctx, String tableName, String columnName, String name, String tableNameMaster, int masterID) {
|
||||
return IDFinder.findIdByColumnAndParentId(tableName, columnName, name, tableNameMaster, masterID,
|
||||
getTrxName(ctx));
|
||||
public int findIdByColumnAndParentId (PIPOContext ctx, String tableName, String columnName, String name, String tableNameMaster, int masterID) {
|
||||
return IDFinder.findIdByColumnAndParentId(tableName, columnName, name, tableNameMaster, masterID, getClientId(ctx.ctx),
|
||||
ctx.trx.getTrxName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ID from column value for a table with a parent id reference.
|
||||
*
|
||||
* @param tableName
|
||||
* @param name
|
||||
* @param tableNameMaster
|
||||
* @param nameMaster
|
||||
* @param ignoreCase
|
||||
*/
|
||||
public int findIdByColumnAndParentId (PIPOContext ctx, String tableName, String columnName, String name, String tableNameMaster, int masterID, boolean ignoreCase) {
|
||||
return IDFinder.findIdByColumnAndParentId(tableName, columnName, name, tableNameMaster, masterID, getClientId(ctx.ctx),
|
||||
ignoreCase, ctx.trx.getTrxName());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -185,8 +184,8 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @param tableNameMaster
|
||||
* @param masterID
|
||||
*/
|
||||
public int findIdByNameAndParentId (Properties ctx, String tableName, String name, String tableNameMaster, int masterID) {
|
||||
return IDFinder.findIdByNameAndParentId(tableName, name, tableNameMaster, masterID, getTrxName(ctx));
|
||||
public int findIdByNameAndParentId (PIPOContext ctx, String tableName, String name, String tableNameMaster, int masterID) {
|
||||
return IDFinder.findIdByNameAndParentId(tableName, name, tableNameMaster, masterID, getClientId(ctx.ctx), ctx.trx.getTrxName());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -198,40 +197,42 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
*
|
||||
*/
|
||||
|
||||
public void backupRecord(Properties ctx, int AD_Package_Imp_Detail_ID, String tableName,PO from){
|
||||
public void backupRecord(PIPOContext ctx, int AD_Package_Imp_Detail_ID, String tableName,PO from){
|
||||
|
||||
// Create new record
|
||||
int tableID = findIdByColumn(ctx, "AD_Table", "TableName", tableName);
|
||||
POInfo poInfo = POInfo.getPOInfo(ctx, tableID, getTrxName(ctx));
|
||||
POInfo poInfo = POInfo.getPOInfo(ctx.ctx, tableID);
|
||||
|
||||
PreparedStatement pstmtReferenceId = DB.prepareStatement("SELECT AD_Reference_ID FROM AD_COLUMN WHERE AD_Column_ID = ?", getTrxName(ctx));
|
||||
PreparedStatement pstmtReferenceId = DB.prepareStatement("SELECT AD_Reference_ID FROM AD_COLUMN WHERE AD_Column_ID = ?", ctx.trx.getTrxName());
|
||||
ResultSet rs=null;
|
||||
|
||||
try{
|
||||
for (int i = 0; i < poInfo.getColumnCount(); i++){
|
||||
|
||||
int columnID =findIdByColumnAndParentId (ctx, "AD_Column", "ColumnName", poInfo.getColumnName(i), "AD_Table", tableID);
|
||||
if (from.is_ValueChanged(i)) {
|
||||
int columnID =findIdByColumnAndParentId (ctx, "AD_Column", "ColumnName", poInfo.getColumnName(i), "AD_Table", tableID);
|
||||
|
||||
int referenceID=0;
|
||||
int referenceID=0;
|
||||
|
||||
pstmtReferenceId.setInt(1,columnID);
|
||||
rs = pstmtReferenceId.executeQuery();
|
||||
pstmtReferenceId.setInt(1,columnID);
|
||||
rs = pstmtReferenceId.executeQuery();
|
||||
|
||||
if (rs.next())
|
||||
referenceID = rs.getInt(1);
|
||||
if (rs.next())
|
||||
referenceID = rs.getInt(1);
|
||||
|
||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx, 0, getTrxName(ctx));
|
||||
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx));
|
||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx));
|
||||
backup.setAD_Package_Imp_Detail_ID(AD_Package_Imp_Detail_ID);
|
||||
backup.setAD_Table_ID(tableID);
|
||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx.ctx, 0, ctx.trx.getTrxName());
|
||||
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx));
|
||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||
backup.setAD_Package_Imp_Detail_ID(AD_Package_Imp_Detail_ID);
|
||||
backup.setAD_Table_ID(tableID);
|
||||
|
||||
backup.setAD_Column_ID(columnID);
|
||||
backup.setAD_Reference_ID(referenceID);
|
||||
Object value = from.get_ValueOld(i);
|
||||
backup.setColValue(value != null ? value.toString() : null);
|
||||
backup.setAD_Column_ID(columnID);
|
||||
backup.setAD_Reference_ID(referenceID);
|
||||
Object value = from.get_ValueOld(i);
|
||||
backup.setColValue(value != null ? value.toString() : null);
|
||||
|
||||
backup.saveEx(getTrxName(ctx));
|
||||
backup.saveEx();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
|
@ -306,7 +307,7 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
}
|
||||
source.close();
|
||||
target.close();
|
||||
//System.out.println("Successfully copied " + byteCount + " bytes.");
|
||||
log.finer("Successfully copied " + byteCount + " bytes.");
|
||||
}
|
||||
catch (Exception e) {
|
||||
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
||||
|
@ -347,21 +348,8 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @param ctx
|
||||
* @return transaction name
|
||||
*/
|
||||
protected String getTrxName(Properties ctx) {
|
||||
String trxName = Env.getContext(ctx, "TrxName");
|
||||
if (trxName != null && trxName.trim().length() > 0)
|
||||
return trxName;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get share document
|
||||
* @param ctx
|
||||
* @return TransformerHandler
|
||||
*/
|
||||
protected TransformerHandler getLogDocument(Properties ctx) {
|
||||
return (TransformerHandler)ctx.get("LogDocument");
|
||||
protected String getTrxName(PIPOContext ctx) {
|
||||
return ctx.trx != null ? ctx.trx.getTrxName() : null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -472,24 +460,6 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
return excludes;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param ctx
|
||||
* @return PackIn instance
|
||||
*/
|
||||
protected PackIn getPackIn(Properties ctx) {
|
||||
return (PackIn)ctx.get(PackInHandler.PACK_IN_PROCESS_CTX_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param ctx
|
||||
* @return PackOut instance
|
||||
*/
|
||||
protected PackOut getPackOut(Properties ctx) {
|
||||
return (PackOut) ctx.get(PackOut.PACK_OUT_PROCESS_CTX_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param element
|
||||
|
@ -582,7 +552,7 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
* @param element
|
||||
* @return T
|
||||
*/
|
||||
protected <T extends PO> T findPO(Properties ctx, Element element) {
|
||||
protected <T extends PO> T findPO(PIPOContext ctx, Element element) {
|
||||
T po = null;
|
||||
String tableName = element.getElementValue();
|
||||
String uuidColumn = PO.getUUIDColumnName(tableName);
|
||||
|
@ -590,13 +560,15 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
|||
if (element.properties.containsKey(uuidColumn)) {
|
||||
String uuid = element.properties.get(uuidColumn).contents.toString();
|
||||
if (uuid != null && uuid.trim().length() == 36) {
|
||||
Query query = new Query(ctx, tableName, uuidColumn+"=?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, tableName, uuidColumn+"=?", ctx.trx.getTrxName());
|
||||
po = query.setParameters(uuid.trim()).firstOnly();
|
||||
}
|
||||
} else if (element.properties.containsKey(idColumn)) {
|
||||
}
|
||||
|
||||
if (po == null && element.properties.containsKey(idColumn)) {
|
||||
String id = element.properties.get(idColumn).contents.toString();
|
||||
if (id != null && id.trim().length() > 0) {
|
||||
Query query = new Query(ctx, tableName, idColumn+"=?", getTrxName(ctx));
|
||||
Query query = new Query(ctx.ctx, tableName, idColumn+"=?", ctx.trx.getTrxName());
|
||||
po = query.setParameters(id.trim()).firstOnly();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
*****************************************************************************/
|
||||
package org.adempiere.pipo2;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
@ -35,7 +33,7 @@ public interface ElementHandler {
|
|||
* @param element
|
||||
* @throws org.xml.sax.SAXException
|
||||
*/
|
||||
public void startElement (Properties ctx, Element element)
|
||||
public void startElement (PIPOContext ctx, Element element)
|
||||
throws org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
|
@ -44,7 +42,7 @@ public interface ElementHandler {
|
|||
* @param element
|
||||
* @throws SAXException
|
||||
*/
|
||||
public void endElement (Properties ctx, Element element) throws SAXException;
|
||||
public void endElement (PIPOContext ctx, Element element) throws SAXException;
|
||||
|
||||
/**
|
||||
* @param packout
|
||||
|
|
|
@ -16,14 +16,24 @@
|
|||
*****************************************************************************/
|
||||
package org.adempiere.pipo2;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.adempiere.pipo2.exception.DatabaseAccessException;
|
||||
import org.apache.commons.codec.DecoderException;
|
||||
import org.apache.commons.codec.binary.Hex;
|
||||
import org.compiere.model.MColumn;
|
||||
import org.compiere.model.MTable;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.DisplayType;
|
||||
import org.compiere.util.Env;
|
||||
|
||||
/**
|
||||
|
@ -46,7 +56,7 @@ public class IDFinder {
|
|||
* @param AD_Client_ID
|
||||
* @param trxName
|
||||
*/
|
||||
public static int findIdByColumn (String tableName, String columnName, Object value, int AD_Client_ID, String trxName) {
|
||||
public static int findIdByColumn (String tableName, String columnName, Object value, int AD_Client_ID, boolean ignorecase, String trxName) {
|
||||
int id = 0;
|
||||
|
||||
if (value == null)
|
||||
|
@ -70,24 +80,81 @@ public class IDFinder {
|
|||
.append("_ID FROM ")
|
||||
.append(tableName)
|
||||
.append(" WHERE ")
|
||||
.append(columnName)
|
||||
.append(" = ?")
|
||||
.append(" AND AD_Client_ID IN (0, ?)")
|
||||
.append(" Order By AD_Client_ID Desc, ")
|
||||
.append(" AD_Client_ID IN (0, ?) AND ");
|
||||
|
||||
Object[] params = null;
|
||||
String[] columns = null;
|
||||
if (columnName.indexOf(",") > 0 && value instanceof String) {
|
||||
columns = columnName.split("[,]");
|
||||
String[] values = ((String)value).split("[,]");
|
||||
List<Object> paramList = new ArrayList<Object>();
|
||||
for (int i = 0; i < columns.length; i++) {
|
||||
if (i > 0)
|
||||
sqlB.append(" AND ");
|
||||
if (ignorecase) {
|
||||
sqlB.append("UPPER(").append(columns[i]).append(")=? ");
|
||||
} else {
|
||||
sqlB.append(columns[i]).append("=? ");
|
||||
}
|
||||
try {
|
||||
byte[] bytes = Hex.decodeHex(values[i].toCharArray());
|
||||
String s = new String(bytes, "UTF-8");
|
||||
if (ignorecase) {
|
||||
paramList.add(s.toUpperCase());
|
||||
} else {
|
||||
paramList.add(s);
|
||||
}
|
||||
} catch (DecoderException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
params = paramList.toArray();
|
||||
} else {
|
||||
if (ignorecase && value != null && value instanceof String) {
|
||||
sqlB.append("UPPER(").append(columnName).append(") =? ");
|
||||
params = new Object[]{ ((String)value).toUpperCase()};
|
||||
} else {
|
||||
sqlB.append(columnName).append(" =? ");
|
||||
params = new Object[]{value};
|
||||
}
|
||||
columns = new String[]{columnName};
|
||||
}
|
||||
|
||||
sqlB.append(" Order By AD_Client_ID Desc, ")
|
||||
.append(tableName)
|
||||
.append("_ID");
|
||||
|
||||
MTable table = MTable.get(Env.getCtx(), tableName);
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
||||
if (value instanceof String)
|
||||
pstmt.setString(1, (String)value);
|
||||
else if (value instanceof Integer)
|
||||
pstmt.setInt(1, ((Integer)value).intValue());
|
||||
else
|
||||
pstmt.setObject(1, value);
|
||||
pstmt.setInt(2, AD_Client_ID);
|
||||
pstmt.setInt(1, AD_Client_ID);
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
Object param = params[i];
|
||||
if (param instanceof String) {
|
||||
String s = (String)param;
|
||||
MColumn column = table.getColumn(columns[i]);
|
||||
if (column.getAD_Reference_ID() == DisplayType.Amount
|
||||
|| column.getAD_Reference_ID() == DisplayType.Number
|
||||
|| column.getAD_Reference_ID() == DisplayType.CostPrice
|
||||
|| column.getAD_Reference_ID() == DisplayType.Quantity)
|
||||
pstmt.setBigDecimal(i+2, new BigDecimal(s));
|
||||
else if (column.getAD_Reference_ID() == DisplayType.Date
|
||||
|| column.getAD_Reference_ID() == DisplayType.DateTime)
|
||||
pstmt.setTimestamp(i+2, Timestamp.valueOf(s));
|
||||
else if (column.getAD_Reference_ID() == DisplayType.Integer)
|
||||
pstmt.setInt(i+2, Integer.parseInt(s));
|
||||
else
|
||||
pstmt.setString(i+2, s);
|
||||
} else if (param instanceof Integer) {
|
||||
pstmt.setInt(i+2, ((Integer)param).intValue());
|
||||
} else {
|
||||
pstmt.setObject(i+2, param);
|
||||
}
|
||||
}
|
||||
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next())
|
||||
|
@ -106,6 +173,10 @@ public class IDFinder {
|
|||
return id;
|
||||
}
|
||||
|
||||
public static int findIdByColumn(String tableName, String columnName, Object value, int clientId, String trxName) {
|
||||
return findIdByColumn(tableName, columnName, value, clientId, false, trxName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ID from Name for a table with a parent name reference.
|
||||
*
|
||||
|
@ -115,7 +186,7 @@ public class IDFinder {
|
|||
* @param nameMaster
|
||||
* @param trxName
|
||||
*/
|
||||
public static int findIdByNameAndParentName (String tableName, String name, String tableNameMaster, String nameMaster, String trxName) {
|
||||
public static int findIdByNameAndParentName (String tableName, String name, String tableNameMaster, String nameMaster, int AD_Client_ID, String trxName) {
|
||||
int id = 0;
|
||||
//construct cache key
|
||||
StringBuffer key = new StringBuffer();
|
||||
|
@ -179,10 +250,24 @@ public class IDFinder {
|
|||
* @param name
|
||||
* @param tableNameMaster
|
||||
* @param masterID
|
||||
* @param trx
|
||||
*/
|
||||
|
||||
public static int findIdByColumnAndParentId (String tableName, String columnName, String name, String tableNameMaster, int masterID, int AD_Client_ID, String trxName) {
|
||||
return findIdByColumnAndParentId(tableName, columnName, name, tableNameMaster, masterID, AD_Client_ID, false, trxName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ID from column value for a table with a parent id reference.
|
||||
*
|
||||
* @param tableName
|
||||
* @param name
|
||||
* @param tableNameMaster
|
||||
* @param masterID
|
||||
* @param trxName
|
||||
*/
|
||||
|
||||
public static int findIdByColumnAndParentId (String tableName, String columnName, String name, String tableNameMaster, int masterID, String trxName) {
|
||||
public static int findIdByColumnAndParentId (String tableName, String columnName, String name, String tableNameMaster, int masterID, int AD_Client_ID, boolean ignoreCase, String trxName) {
|
||||
int id = 0;
|
||||
|
||||
//check cache
|
||||
|
@ -195,10 +280,16 @@ public class IDFinder {
|
|||
.append(tableName)
|
||||
.append("_ID FROM ")
|
||||
.append(tableName)
|
||||
.append(" WHERE ")
|
||||
.append(columnName)
|
||||
.append(" = ? and ")
|
||||
.append(tableNameMaster+"_ID = ? AND AD_Client_ID IN (0, ?) ")
|
||||
.append(" WHERE ");
|
||||
if (ignoreCase) {
|
||||
sqlB.append("Upper(")
|
||||
.append(columnName)
|
||||
.append(") = ? and ");
|
||||
} else {
|
||||
sqlB.append(columnName)
|
||||
.append(" = ? and ");
|
||||
}
|
||||
sqlB.append(tableNameMaster+"_ID = ? AND AD_Client_ID IN (0, ?) ")
|
||||
.append("ORDER BY AD_Client_ID Desc ");
|
||||
|
||||
log.info(sqlB.toString());
|
||||
|
@ -208,9 +299,13 @@ public class IDFinder {
|
|||
try {
|
||||
|
||||
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
||||
pstmt.setString(1, name);
|
||||
if (ignoreCase) {
|
||||
pstmt.setString(1, name.toUpperCase());
|
||||
} else {
|
||||
pstmt.setString(1, name);
|
||||
}
|
||||
pstmt.setInt(2, masterID);
|
||||
pstmt.setInt(3, Env.getAD_Client_ID(Env.getCtx()));
|
||||
pstmt.setInt(3, AD_Client_ID);
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next())
|
||||
{
|
||||
|
@ -239,7 +334,7 @@ public class IDFinder {
|
|||
* @param masterID
|
||||
* @param trxName
|
||||
*/
|
||||
public static int findIdByNameAndParentId (String tableName, String name, String tableNameMaster, int masterID, String trxName) {
|
||||
public static int findIdByNameAndParentId (String tableName, String name, String tableNameMaster, int masterID, int AD_Client_ID, String trxName) {
|
||||
int id = 0;
|
||||
|
||||
//construct cache key
|
||||
|
@ -273,7 +368,7 @@ public class IDFinder {
|
|||
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
||||
pstmt.setString(1, name);
|
||||
pstmt.setInt(2, masterID);
|
||||
pstmt.setInt(3, Env.getAD_Client_ID(Env.getCtx()));
|
||||
pstmt.setInt(3, AD_Client_ID);
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next())
|
||||
id = rs.getInt(1);
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package org.adempiere.pipo2;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.compiere.util.Trx;
|
||||
|
||||
public class PIPOContext {
|
||||
public Properties ctx;
|
||||
public Trx trx;
|
||||
public PackIn packIn;
|
||||
public PackOut packOut;
|
||||
public TransformerHandler logDocument;
|
||||
}
|
|
@ -23,7 +23,9 @@ import java.io.File;
|
|||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
@ -31,7 +33,10 @@ import java.util.logging.Level;
|
|||
import javax.xml.parsers.SAXParser;
|
||||
import javax.xml.parsers.SAXParserFactory;
|
||||
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.Trx;
|
||||
|
||||
/**
|
||||
* IntPackIn Tool.
|
||||
|
@ -51,6 +56,8 @@ public class PackIn {
|
|||
private String packageName = null;
|
||||
private String packageVersion = null;
|
||||
|
||||
private List<X_AD_Package_Imp_Detail> importDetails;
|
||||
|
||||
public PackIn() {
|
||||
super();
|
||||
}
|
||||
|
@ -123,6 +130,10 @@ public class PackIn {
|
|||
}
|
||||
}
|
||||
|
||||
public void addImportDetail(X_AD_Package_Imp_Detail importDetail) {
|
||||
importDetails.add(importDetail);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param input
|
||||
|
@ -135,20 +146,29 @@ public class PackIn {
|
|||
log.info("starting");
|
||||
// clear cache of previous runs
|
||||
IDFinder.clearIDCache();
|
||||
importDetails = new ArrayList<X_AD_Package_Imp_Detail>();
|
||||
|
||||
System.setProperty("javax.xml.parsers.SAXParserFactory",
|
||||
"org.apache.xerces.jaxp.SAXParserFactoryImpl");
|
||||
PackInHandler handler = new PackInHandler();
|
||||
handler.set_TrxName(trxName);
|
||||
handler.setCtx(ctx);
|
||||
PIPOContext context = new PIPOContext();
|
||||
context.trx = Trx.get(trxName, true);
|
||||
context.packIn = this;
|
||||
context.ctx = ctx;
|
||||
handler.setCtx(context);
|
||||
handler.setProcess(this);
|
||||
SAXParserFactory factory = SAXParserFactory.newInstance();
|
||||
SAXParser parser = factory.newSAXParser();
|
||||
String msg = "Start Parser";
|
||||
log.info(msg);
|
||||
parser.parse(input, handler);
|
||||
for (PO importDetail : importDetails) {
|
||||
importDetail.saveEx();
|
||||
}
|
||||
msg = "End Parser";
|
||||
log.info(msg);
|
||||
if (handler.getUnresolvedCount() > 0)
|
||||
handler.dumpUnresolvedElements();
|
||||
return "Processed="+handler.getElementsProcessed()+" Un-Resolved="+handler.getUnresolvedCount();
|
||||
} catch (Exception e) {
|
||||
log.log(Level.SEVERE, "importXML:", e);
|
||||
|
@ -188,6 +208,7 @@ public class PackIn {
|
|||
else
|
||||
baos.write(b);
|
||||
}
|
||||
data = baos.toByteArray();
|
||||
} finally {
|
||||
if (fis != null) {
|
||||
try {
|
||||
|
|
|
@ -19,27 +19,14 @@
|
|||
|
||||
package org.adempiere.pipo2;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.Stack;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.xml.transform.OutputKeys;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerConfigurationException;
|
||||
import javax.xml.transform.sax.SAXTransformerFactory;
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
|
||||
import org.adempiere.pipo2.exception.DatabaseAccessException;
|
||||
import org.compiere.model.X_AD_Package_Imp;
|
||||
import org.compiere.model.X_AD_Package_Imp_Inst;
|
||||
|
@ -77,17 +64,9 @@ public class PackInHandler extends DefaultHandler {
|
|||
private int AD_Package_Imp_ID=0;
|
||||
private int AD_Package_Imp_Inst_ID=0;
|
||||
private CLogger log = CLogger.getCLogger(PackInHandler.class);
|
||||
private OutputStream logOutputStream = null;
|
||||
private TransformerHandler logDocument = null;
|
||||
private StreamResult loStreamResult = null;
|
||||
private SAXTransformerFactory transformerFactory = null;
|
||||
private Transformer logTransformer = null;
|
||||
private boolean isInit = false;
|
||||
private String logDate = null;
|
||||
private String packageStatus = "Installing";
|
||||
// transaction name
|
||||
private String m_trxName = null;
|
||||
private Properties m_ctx = null;
|
||||
private PIPOContext m_ctx = null;
|
||||
|
||||
private IHandlerRegistry handlerRegistry = null;
|
||||
private List<DeferEntry> defer = new ArrayList<DeferEntry>();
|
||||
|
@ -99,41 +78,11 @@ public class PackInHandler extends DefaultHandler {
|
|||
|
||||
packageDirectory = packIn.getPackageDirectory();
|
||||
m_updateDictionary = packIn.isUpdateDictionary();
|
||||
SimpleDateFormat formatter_file = new SimpleDateFormat("yyMMddHHmmssZ");
|
||||
SimpleDateFormat formatter_log = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
|
||||
Date today = new Date();
|
||||
String fileDate = formatter_file.format(today);
|
||||
logDate = formatter_log.format(today);
|
||||
|
||||
String logFileName = packageDirectory+File.separator+"doc"+File.separator+"Importlog_"+fileDate+".xml";
|
||||
log.info("packin log file="+logFileName);
|
||||
try {
|
||||
logOutputStream = new FileOutputStream (logFileName, false);
|
||||
} catch (FileNotFoundException e1) {
|
||||
log.warning ("Failed to create log file. error="+e1+" file="+logFileName);
|
||||
}
|
||||
loStreamResult = new StreamResult(logOutputStream);
|
||||
transformerFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
|
||||
|
||||
try {
|
||||
logDocument = transformerFactory.newTransformerHandler();
|
||||
} catch (TransformerConfigurationException e2) {
|
||||
log.info ("startElement:"+e2);
|
||||
}
|
||||
logTransformer = logDocument.getTransformer();
|
||||
logTransformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
|
||||
logTransformer.setOutputProperty(OutputKeys.INDENT,"yes");
|
||||
logDocument.setResult(loStreamResult);
|
||||
logDocument.startDocument();
|
||||
logDocument.processingInstruction("xml-stylesheet","type=\"text/css\" href=\"adempiereDocument.css\"");
|
||||
Properties tmp = new Properties();
|
||||
if (m_ctx != null)
|
||||
tmp.putAll(m_ctx);
|
||||
else
|
||||
tmp.putAll(Env.getCtx());
|
||||
m_ctx = tmp;
|
||||
if (m_trxName == null)
|
||||
m_trxName = Trx.createTrxName("PackIn");
|
||||
if (m_ctx == null)
|
||||
m_ctx = new PIPOContext();
|
||||
if (m_ctx.trx == null)
|
||||
m_ctx.trx = Trx.get("PackIn", true);
|
||||
|
||||
isInit=true;
|
||||
}
|
||||
|
@ -164,10 +113,17 @@ public class PackInHandler extends DefaultHandler {
|
|||
{
|
||||
log.info("adempiereAD updateMode="+m_updateDictionary);
|
||||
|
||||
createLogHeader(atts);
|
||||
//check client
|
||||
String clientAttribute = atts.getValue("Client");
|
||||
String[] clientComponent = clientAttribute.split("[-]");
|
||||
int clientId = Integer.parseInt(clientComponent[0]);
|
||||
if (clientId == 0 && Env.getAD_Client_ID(m_ctx.ctx) > 0) {
|
||||
throw new RuntimeException("Package is created for System, not Tenant");
|
||||
} else if (clientId > 0 && Env.getAD_Client_ID(m_ctx.ctx) == 0) {
|
||||
throw new RuntimeException("Package is created for Tenant, not System");
|
||||
}
|
||||
|
||||
// Update Summary Package History Table
|
||||
|
||||
int PK_preInstalled=0;
|
||||
|
||||
String packageName = packIn.getPackageName();
|
||||
|
@ -199,8 +155,8 @@ public class PackInHandler extends DefaultHandler {
|
|||
DB.close(rs, pstmt);
|
||||
}
|
||||
|
||||
X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx, 0, null);
|
||||
packageImp.setAD_Org_ID(Env.getAD_Org_ID(m_ctx));
|
||||
X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx.ctx, 0, null);
|
||||
packageImp.setAD_Org_ID(Env.getAD_Org_ID(m_ctx.ctx));
|
||||
packageImp.setReleaseNo(atts.getValue("CompVer"));
|
||||
packageImp.setPK_Version(packageVersion);
|
||||
packageImp.setVersion(atts.getValue("DataBase"));
|
||||
|
@ -216,8 +172,8 @@ public class PackInHandler extends DefaultHandler {
|
|||
if ( PK_preInstalled <= 0){
|
||||
//Insert Package into package install log
|
||||
|
||||
X_AD_Package_Imp_Inst packageInst = new X_AD_Package_Imp_Inst(m_ctx, 0, null);
|
||||
packageInst.setAD_Org_ID(Env.getAD_Org_ID(m_ctx));
|
||||
X_AD_Package_Imp_Inst packageInst = new X_AD_Package_Imp_Inst(m_ctx.ctx, 0, null);
|
||||
packageInst.setAD_Org_ID(Env.getAD_Org_ID(m_ctx.ctx));
|
||||
packageInst.setReleaseNo(atts.getValue("CompVer"));
|
||||
packageInst.setPK_Version(atts.getValue("Version"));
|
||||
packageInst.setVersion(atts.getValue("DataBase"));
|
||||
|
@ -232,17 +188,15 @@ public class PackInHandler extends DefaultHandler {
|
|||
//Update package list with package status
|
||||
AD_Package_Imp_Inst_ID = PK_preInstalled;
|
||||
|
||||
X_AD_Package_Imp_Inst packageInst = new X_AD_Package_Imp_Inst(m_ctx, AD_Package_Imp_Inst_ID, null);
|
||||
X_AD_Package_Imp_Inst packageInst = new X_AD_Package_Imp_Inst(m_ctx.ctx, AD_Package_Imp_Inst_ID, null);
|
||||
packageInst.setPK_Status(packageStatus);
|
||||
packageInst.saveEx();
|
||||
}
|
||||
|
||||
Env.setContext(m_ctx, "AD_Package_Imp_ID", AD_Package_Imp_ID);
|
||||
Env.setContext(m_ctx, "UpdateMode", m_updateDictionary);
|
||||
Env.setContext(m_ctx, "TrxName", m_trxName);
|
||||
Env.setContext(m_ctx, "PackageDirectory", packageDirectory);
|
||||
m_ctx.put("LogDocument", logDocument);
|
||||
m_ctx.put(PACK_IN_PROCESS_CTX_KEY, packIn);
|
||||
m_ctx.ctx.put("AD_Package_Imp_ID", AD_Package_Imp_ID);
|
||||
m_ctx.ctx.put("UpdateMode", m_updateDictionary);
|
||||
m_ctx.ctx.put("PackageDirectory", packageDirectory);
|
||||
m_ctx.packIn = packIn;
|
||||
} else {
|
||||
Element e = new Element(uri, localName, qName, new AttributesImpl(atts));
|
||||
if (stack.size() > 0)
|
||||
|
@ -292,22 +246,6 @@ public class PackInHandler extends DefaultHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private void createLogHeader(Attributes atts) throws SAXException {
|
||||
AttributesImpl attsOut = new AttributesImpl();
|
||||
logDocument.startElement("","","adempiereDocument",attsOut);
|
||||
PackOut.addTextElement(logDocument, "header", atts.getValue("Name")+" Install Log", attsOut);
|
||||
PackOut.addTextElement(logDocument, "H3", "Package Name:", attsOut);
|
||||
PackOut.addTextElement(logDocument, "packagename4log", atts.getValue("Name"), attsOut);
|
||||
PackOut.addTextElement(logDocument, "H3", "Version:", attsOut);
|
||||
PackOut.addTextElement(logDocument, "Version", atts.getValue("Version"), attsOut);
|
||||
PackOut.addTextElement(logDocument, "H3", "Package Install Date:", attsOut);
|
||||
PackOut.addTextElement(logDocument, "installDate", logDate, attsOut);
|
||||
PackOut.addTextElement(logDocument, "H3", "Min. Version:", attsOut);
|
||||
PackOut.addTextElement(logDocument, "AdempiereVersion", atts.getValue("AdempiereVersion"), attsOut);
|
||||
PackOut.addTextElement(logDocument, "H3", "Min. Database Date:", attsOut);
|
||||
PackOut.addTextElement(logDocument, "Database", atts.getValue("Database"), attsOut);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
|
||||
*/
|
||||
|
@ -343,30 +281,38 @@ public class PackInHandler extends DefaultHandler {
|
|||
packageStatus = "Completed successfully";
|
||||
|
||||
//Update package history log with package status
|
||||
X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx, AD_Package_Imp_ID, null);
|
||||
X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx.ctx, AD_Package_Imp_ID, null);
|
||||
packageImp.setPK_Status(packageStatus);
|
||||
packageImp.saveEx();
|
||||
|
||||
//Update package list with package status
|
||||
X_AD_Package_Imp_Inst packageInst = new X_AD_Package_Imp_Inst(m_ctx, AD_Package_Imp_Inst_ID, null);
|
||||
X_AD_Package_Imp_Inst packageInst = new X_AD_Package_Imp_Inst(m_ctx.ctx, AD_Package_Imp_Inst_ID, null);
|
||||
packageInst.setPK_Status(packageStatus);
|
||||
packageInst.saveEx();
|
||||
|
||||
logDocument.endElement("","","adempiereDocument");
|
||||
logDocument.endDocument();
|
||||
try {
|
||||
logOutputStream.close();
|
||||
}
|
||||
catch (Exception e)
|
||||
{}
|
||||
|
||||
//reset
|
||||
setupHandlers();
|
||||
} else {
|
||||
Element e = stack.pop();
|
||||
if (stack.isEmpty())
|
||||
{
|
||||
processElement(e);
|
||||
try {
|
||||
processElement(e);
|
||||
} catch (RuntimeException re) {
|
||||
packageStatus = "Import Failed";
|
||||
//Update package history log with package status
|
||||
X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx.ctx, AD_Package_Imp_ID, null);
|
||||
packageImp.setPK_Status(packageStatus);
|
||||
packageImp.save();
|
||||
throw re;
|
||||
} catch (SAXException se) {
|
||||
packageStatus = "Import Failed";
|
||||
//Update package history log with package status
|
||||
X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx.ctx, AD_Package_Imp_ID, null);
|
||||
packageImp.setPK_Status(packageStatus);
|
||||
packageImp.save();
|
||||
throw se;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // endElement
|
||||
|
@ -391,7 +337,7 @@ public class PackInHandler extends DefaultHandler {
|
|||
}
|
||||
}
|
||||
if (log.isLoggable(Level.INFO)) {
|
||||
log.info("Processeing Element: " + d.element.getElementValue() + " - "
|
||||
log.info("Processing Element: " + d.element.getElementValue() + " - "
|
||||
+ d.element.attributes.getValue(0));
|
||||
}
|
||||
ElementHandler handler = handlerRegistry.getHandler(d.element);
|
||||
|
@ -419,13 +365,7 @@ public class PackInHandler extends DefaultHandler {
|
|||
} while (defer.size() > 0);
|
||||
}
|
||||
|
||||
// globalqss - add support for trx in 3.1.2
|
||||
public void set_TrxName(String trxName) {
|
||||
m_trxName = trxName;
|
||||
}
|
||||
|
||||
// globalqss - add support for trx in 3.1.2
|
||||
public void setCtx(Properties ctx) {
|
||||
public void setCtx(PIPOContext ctx) {
|
||||
m_ctx = ctx;
|
||||
}
|
||||
|
||||
|
@ -457,6 +397,35 @@ public class PackInHandler extends DefaultHandler {
|
|||
return count;
|
||||
}
|
||||
|
||||
public void dumpUnresolvedElements() {
|
||||
if (defer != null && !defer.isEmpty()) {
|
||||
for(DeferEntry entry : defer) {
|
||||
if (!entry.startElement)
|
||||
{
|
||||
Element e = entry.element;
|
||||
StringBuffer s = new StringBuffer(e.qName);
|
||||
s.append(" [");
|
||||
Set<String> keys = e.properties.keySet();
|
||||
int i = 0;
|
||||
for(String key : keys)
|
||||
{
|
||||
Element value = e.properties.get(key);
|
||||
if (i > 0)
|
||||
s.append(", ");
|
||||
s.append(key).append("=");
|
||||
if (value.contents != null)
|
||||
s.append(value.contents);
|
||||
i++;
|
||||
}
|
||||
s.append("]");
|
||||
if (e.unresolved != null && e.unresolved.length() > 0)
|
||||
s.append(" unresolved ").append(e.unresolved);
|
||||
log.warning(s.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class DeferEntry {
|
||||
Element element;
|
||||
boolean startElement = false;
|
||||
|
|
|
@ -18,8 +18,11 @@
|
|||
package org.adempiere.pipo2;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
import org.compiere.Adempiere;
|
||||
import org.compiere.model.MAttachment;
|
||||
import org.compiere.model.MAttachmentEntry;
|
||||
import org.compiere.model.X_AD_Package_Imp_Proc;
|
||||
import org.compiere.process.ProcessInfoParameter;
|
||||
import org.compiere.process.SvrProcess;
|
||||
|
@ -70,7 +73,7 @@ public class PackInProcess extends SvrProcess {
|
|||
protected String doIt() throws Exception {
|
||||
|
||||
X_AD_Package_Imp_Proc adPackageImp = new X_AD_Package_Imp_Proc(getCtx(),
|
||||
p_PackIn_ID, null);
|
||||
p_PackIn_ID, get_TrxName());
|
||||
|
||||
// Create Target directory if required
|
||||
String packageDirectory = adPackageImp.getAD_Package_Dir();
|
||||
|
@ -78,7 +81,7 @@ public class PackInProcess extends SvrProcess {
|
|||
packageDirectory = Adempiere.getAdempiereHome();
|
||||
}
|
||||
|
||||
String targetDirName = packageDirectory + File.separator + "packages";
|
||||
String targetDirName = packageDirectory + File.separator + "packin";
|
||||
File targetDir = new File(targetDirName);
|
||||
|
||||
if (!targetDir.exists()) {
|
||||
|
@ -88,14 +91,24 @@ public class PackInProcess extends SvrProcess {
|
|||
}
|
||||
}
|
||||
|
||||
MAttachment attachment = adPackageImp.getAttachment();
|
||||
if (attachment == null) {
|
||||
return "Please attach the pack out archive before running the process";
|
||||
}
|
||||
|
||||
MAttachmentEntry entry = attachment.getEntry(0);
|
||||
if (entry == null) {
|
||||
return "Please attach the pack out archive before running the process";
|
||||
}
|
||||
|
||||
// Unzip package
|
||||
File zipFilepath = new File(adPackageImp.getAD_Package_Source());
|
||||
File zipFilepath = entry.getFile();
|
||||
log.info("zipFilepath->" + zipFilepath);
|
||||
String parentDir = Zipper.getParentDir(zipFilepath);
|
||||
Zipper.unpackFile(zipFilepath, targetDir);
|
||||
|
||||
String dict_file = packageDirectory + File.separator
|
||||
+ "packages" + File.separator + parentDir + File.separator
|
||||
+ "packin" + File.separator + parentDir + File.separator
|
||||
+ "dict" + File.separator + "PackOut.xml";
|
||||
|
||||
log.info("dict file->" + dict_file);
|
||||
|
@ -106,15 +119,23 @@ public class PackInProcess extends SvrProcess {
|
|||
m_UpdateDictionary = false;
|
||||
|
||||
m_packageDirectory = packageDirectory + File.separator
|
||||
+ "packages" + File.separator + parentDir + File.separator;
|
||||
+ "packin" + File.separator + parentDir + File.separator;
|
||||
|
||||
PackIn packIn = new PackIn();
|
||||
packIn.setPackageDirectory(m_packageDirectory);
|
||||
packIn.setPackageName(packageName);
|
||||
packIn.setPackageVersion(packageVersion);
|
||||
packIn.setUpdateDictionary(m_UpdateDictionary);
|
||||
|
||||
// call XML Handler
|
||||
String msg = packIn.importXML(dict_file, getCtx(), get_TrxName());
|
||||
if (adPackageImp.get_ColumnIndex("DateProcessed") > 0) {
|
||||
adPackageImp.set_ValueOfColumn("DateProcessed", new Timestamp(System.currentTimeMillis()));
|
||||
}
|
||||
if (adPackageImp.get_ColumnIndex("P_Msg") > 0) {
|
||||
adPackageImp.set_ValueOfColumn("P_Msg", msg);
|
||||
}
|
||||
adPackageImp.saveEx();
|
||||
|
||||
return msg;
|
||||
} // doIt
|
||||
|
|
|
@ -27,6 +27,7 @@ import java.io.InputStream;
|
|||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
@ -41,7 +42,7 @@ import javax.xml.transform.stream.StreamResult;
|
|||
import org.compiere.model.MClient;
|
||||
import org.compiere.model.MTable;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Trx;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
|
@ -66,10 +67,6 @@ public class PackOut
|
|||
public final static String PackOutVersion = "100";
|
||||
private final static CLogger log = CLogger.getCLogger(PackOut.class);
|
||||
|
||||
private static final String TRX_NAME_CTX_KEY = "TrxName";
|
||||
public static final String PACK_OUT_PROCESS_CTX_KEY = "PackOutProcess";
|
||||
|
||||
private Properties localContext = null;
|
||||
private String packageDirectory;
|
||||
private int blobCount = 0;
|
||||
|
||||
|
@ -80,6 +77,8 @@ public class PackOut
|
|||
private int processedCount;
|
||||
private String exportFile;
|
||||
private String packoutDirectory;
|
||||
private PIPOContext pipoContext;
|
||||
private Timestamp fromDate;
|
||||
|
||||
public static final int MAX_OFFICIAL_ID = MTable.MAX_OFFICIAL_ID;
|
||||
|
||||
|
@ -192,26 +191,33 @@ public class PackOut
|
|||
OutputStream packoutStream) throws UnsupportedEncodingException, TransformerConfigurationException, SAXException {
|
||||
StreamResult packoutStreamResult = new StreamResult(new OutputStreamWriter(packoutStream,"UTF-8"));
|
||||
SAXTransformerFactory packoutFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
|
||||
packoutFactory.setAttribute("indent-number", new Integer(4));
|
||||
//indent-number attribute support is not guarantee
|
||||
try {
|
||||
packoutFactory.setAttribute("indent-number", new Integer(4));
|
||||
} catch (Exception e) {}
|
||||
TransformerHandler packoutHandler = packoutFactory.newTransformerHandler();
|
||||
Transformer packoutTransformer = packoutHandler.getTransformer();
|
||||
packoutTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
|
||||
packoutTransformer.setOutputProperty(OutputKeys.INDENT,"yes");
|
||||
//indent-amount property support is not guarantee
|
||||
try {
|
||||
packoutTransformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount","4");
|
||||
} catch (Exception e) {}
|
||||
packoutHandler.setResult(packoutStreamResult);
|
||||
packoutHandler.startDocument();
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
atts.addAttribute("","","Name","CDATA",packoutDocument.getPackageName());
|
||||
atts.addAttribute("","","Version","CDATA",packoutDocument.getPackageVersion());
|
||||
atts.addAttribute("","","AdempiereVersion","CDATA",packoutDocument.getAdempiereVersion());
|
||||
atts.addAttribute("","","DataBaseVersion","CDATA",packoutDocument.getDatabaseVersion());
|
||||
atts.addAttribute("","","AdempiereVersion","CDATA",emptyIfNull(packoutDocument.getAdempiereVersion()));
|
||||
atts.addAttribute("","","DataBaseVersion","CDATA",emptyIfNull(packoutDocument.getDatabaseVersion()));
|
||||
atts.addAttribute("","","Description","CDATA",emptyIfNull(packoutDocument.getDescription()));
|
||||
atts.addAttribute("","","Author","CDATA",packoutDocument.getAuthor());
|
||||
atts.addAttribute("","","Author","CDATA",emptyIfNull(packoutDocument.getAuthor()));
|
||||
atts.addAttribute("","","AuthorEmail","CDATA",emptyIfNull(packoutDocument.getAuthorEmail()));
|
||||
atts.addAttribute("","","CreatedDate","CDATA",packoutDocument.getCreated().toString());
|
||||
atts.addAttribute("","","UpdatedDate","CDATA",packoutDocument.getUpdated().toString());
|
||||
atts.addAttribute("","","PackOutVersion","CDATA",PackOutVersion);
|
||||
|
||||
MClient client = MClient.get(localContext);
|
||||
MClient client = MClient.get(pipoContext.ctx);
|
||||
StringBuffer sb = new StringBuffer ()
|
||||
.append(client.get_ID())
|
||||
.append("-")
|
||||
|
@ -231,11 +237,18 @@ public class PackOut
|
|||
private TransformerHandler createDocHandler(OutputStream docStream) throws UnsupportedEncodingException, TransformerConfigurationException, SAXException {
|
||||
StreamResult docStreamResult = new StreamResult(new OutputStreamWriter(docStream,"UTF-8"));
|
||||
SAXTransformerFactory transformerFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
|
||||
transformerFactory.setAttribute("indent-number", new Integer(4));
|
||||
//indent-number attribute support is not guarantee
|
||||
try {
|
||||
transformerFactory.setAttribute("indent-number", new Integer(4));
|
||||
} catch (Exception e) {}
|
||||
TransformerHandler docHandler = transformerFactory.newTransformerHandler();
|
||||
Transformer transformer = docHandler.getTransformer();
|
||||
transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
|
||||
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
|
||||
//indent-amount property support is not guarantee
|
||||
try {
|
||||
transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount","4");
|
||||
} catch (Exception e) {}
|
||||
docHandler.setResult(docStreamResult);
|
||||
docHandler.startDocument();
|
||||
docHandler.processingInstruction("xml-stylesheet","type=\"text/css\" href=\"adempiereDocument.css\"");
|
||||
|
@ -261,7 +274,7 @@ public class PackOut
|
|||
addTextElement(docHandler, "filedirectory", "Directory: \\dict\\", atts);
|
||||
addTextElement(docHandler, "filenotes", "Notes: Contains all application/object settings for package", atts);
|
||||
|
||||
MClient client = MClient.get(localContext);
|
||||
MClient client = MClient.get(pipoContext.ctx);
|
||||
StringBuffer sb = new StringBuffer ()
|
||||
.append(client.get_ID())
|
||||
.append("-")
|
||||
|
@ -281,13 +294,7 @@ public class PackOut
|
|||
}
|
||||
|
||||
private void initContext() {
|
||||
Properties tmp = new Properties();
|
||||
if (getCtx() != null)
|
||||
tmp.putAll(getCtx());
|
||||
if (trxName != null)
|
||||
tmp.put(TRX_NAME_CTX_KEY, trxName);
|
||||
tmp.put(PACK_OUT_PROCESS_CTX_KEY, this);
|
||||
localContext = tmp;
|
||||
pipoContext.trx = Trx.get(trxName, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -352,8 +359,8 @@ public class PackOut
|
|||
}
|
||||
}
|
||||
|
||||
public Properties getCtx() {
|
||||
return localContext != null ? localContext : Env.getCtx();
|
||||
public PIPOContext getCtx() {
|
||||
return pipoContext;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -422,4 +429,25 @@ public class PackOut
|
|||
public String getExportFile() {
|
||||
return exportFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fromDate
|
||||
*/
|
||||
public void setFromDate(Timestamp fromDate) {
|
||||
this.fromDate = fromDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return from date
|
||||
*/
|
||||
public Timestamp getFromDate() {
|
||||
return fromDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ctx
|
||||
*/
|
||||
public void setCtx(Properties ctx) {
|
||||
pipoContext.ctx = ctx;
|
||||
}
|
||||
} // PackOut
|
||||
|
|
|
@ -19,12 +19,14 @@
|
|||
package org.adempiere.pipo2;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.Adempiere;
|
||||
import org.compiere.model.I_AD_Form;
|
||||
import org.compiere.model.I_AD_ImpFormat;
|
||||
import org.compiere.model.I_AD_Menu;
|
||||
|
@ -95,9 +97,27 @@ public class PackOutProcess extends SvrProcess
|
|||
|
||||
if (packageExp.getAD_Package_Exp_ID() == p_PackOut_ID){
|
||||
//Create the package documentation
|
||||
packoutDirectory = packageExp.getFile_Directory().trim();
|
||||
if (!packoutDirectory.endsWith("/") && !packoutDirectory.endsWith("\\"))
|
||||
packoutDirectory+= File.separator;
|
||||
packoutDirectory = packageExp.getFile_Directory();
|
||||
if (packoutDirectory == null || packoutDirectory.trim().length() == 0) {
|
||||
packoutDirectory = Adempiere.getAdempiereHome().trim();
|
||||
if (!packoutDirectory.endsWith("/") && !packoutDirectory.endsWith("\\"))
|
||||
packoutDirectory+= File.separator;
|
||||
packoutDirectory = packoutDirectory + "packout" + File.separator;
|
||||
} else {
|
||||
packoutDirectory = packoutDirectory.trim();
|
||||
if (!packoutDirectory.endsWith("/") && !packoutDirectory.endsWith("\\"))
|
||||
packoutDirectory+= File.separator;
|
||||
}
|
||||
|
||||
//create packout folder if needed
|
||||
File packoutDirectoryFile = new File(packoutDirectory);
|
||||
if (!packoutDirectoryFile.exists()) {
|
||||
boolean success = packoutDirectoryFile.mkdirs();
|
||||
if (!success) {
|
||||
log.warning("Failed to create target directory. " + packoutDirectory);
|
||||
}
|
||||
}
|
||||
|
||||
PackoutDocument packoutDocument = new PackoutDocument(packageExp.getName(), packageExp.getPK_Version(), packageExp.getReleaseNo(), packageExp.getVersion(),
|
||||
packageExp.getDescription(), packageExp.getInstructions(), packageExp.getUserName(),
|
||||
packageExp.getEMail(), packageExp.getCreated(), packageExp.getUpdated());
|
||||
|
@ -115,6 +135,12 @@ public class PackOutProcess extends SvrProcess
|
|||
}
|
||||
|
||||
PackOut packOut = new PackOut();
|
||||
packOut.setCtx(getCtx());
|
||||
Object dateFromValue = packageExp.get_Value("DateFrom");
|
||||
if (dateFromValue != null && dateFromValue instanceof Timestamp) {
|
||||
packOut.setFromDate((Timestamp) dateFromValue);
|
||||
}
|
||||
|
||||
packOut.export(packoutDirectory, null, packoutDocument, packoutItems, get_TrxName());
|
||||
processedCount = packOut.getExportCount();
|
||||
exportFile = packOut.getExportFile();
|
||||
|
|
|
@ -2,18 +2,17 @@ package org.adempiere.pipo2;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.xml.transform.sax.TransformerHandler;
|
||||
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.compiere.model.I_AD_Client;
|
||||
import org.compiere.model.I_AD_Org;
|
||||
import org.compiere.model.MTable;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.model.POInfo;
|
||||
import org.compiere.model.X_AD_Client;
|
||||
import org.compiere.model.X_AD_Org;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.DisplayType;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
@ -24,7 +23,7 @@ public class PoExporter {
|
|||
|
||||
@SuppressWarnings("unused")
|
||||
private CLogger log = CLogger.getCLogger(getClass());
|
||||
private Properties ctx;
|
||||
private PIPOContext ctx;
|
||||
|
||||
private TransformerHandler transformerHandler;
|
||||
|
||||
|
@ -48,7 +47,7 @@ public class PoExporter {
|
|||
* @param ctx
|
||||
* @param po
|
||||
*/
|
||||
public PoExporter(Properties ctx, TransformerHandler handler, PO po){
|
||||
public PoExporter(PIPOContext ctx, TransformerHandler handler, PO po){
|
||||
this.ctx = ctx;
|
||||
this.po = po;
|
||||
transformerHandler = handler;
|
||||
|
@ -180,22 +179,27 @@ public class PoExporter {
|
|||
int AD_Client_ID = po.getAD_Client_ID();
|
||||
if (AD_Client_ID == 0)
|
||||
{
|
||||
addString("AD_Org_ID", "0", new AttributesImpl());
|
||||
addString("AD_Client_ID", "0", new AttributesImpl());
|
||||
if (excludes == null || !excludes.contains("AD_Org_ID"))
|
||||
addString("AD_Org_ID", "0", new AttributesImpl());
|
||||
}
|
||||
else
|
||||
{
|
||||
int AD_Org_ID = po.getAD_Org_ID();
|
||||
if (AD_Org_ID == 0)
|
||||
if (excludes == null || !excludes.contains("AD_Org_ID"))
|
||||
{
|
||||
addString("AD_Org_ID", "0", new AttributesImpl());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!preservedOrg)
|
||||
addString("AD_Org_ID", "@AD_Org_ID@", new AttributesImpl());
|
||||
else {
|
||||
addTableReference(I_AD_Client.Table_Name, I_AD_Client.COLUMNNAME_Value, new AttributesImpl());
|
||||
addTableReference(I_AD_Org.Table_Name, I_AD_Org.COLUMNNAME_Value, new AttributesImpl());
|
||||
int AD_Org_ID = po.getAD_Org_ID();
|
||||
if (AD_Org_ID == 0)
|
||||
{
|
||||
addString("AD_Org_ID", "0", new AttributesImpl());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!preservedOrg)
|
||||
addString("AD_Org_ID", "@AD_Org_ID@", new AttributesImpl());
|
||||
else {
|
||||
addTableReference(X_AD_Client.Table_Name, "Value", new AttributesImpl());
|
||||
addTableReference(X_AD_Org.Table_Name, "Value", new AttributesImpl());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -225,8 +229,18 @@ public class PoExporter {
|
|||
if ("Record_ID".equalsIgnoreCase(columnName) && po.get_ColumnIndex("AD_Table_ID") >= 0) {
|
||||
int AD_Table_ID = po.get_Value(po.get_ColumnIndex("AD_Table_ID")) != null
|
||||
? (Integer)po.get_Value(po.get_ColumnIndex("AD_Table_ID")) : 0;
|
||||
tableName = MTable.getTableName(ctx, AD_Table_ID);
|
||||
tableName = MTable.getTableName(ctx.ctx, AD_Table_ID);
|
||||
searchColumn = tableName + "_ID";
|
||||
} else if (po.get_TableName().equals("AD_TreeNode") && columnName.equals("Parent_ID")) {
|
||||
int AD_Tree_ID = po.get_ValueAsInt("AD_Tree_ID");
|
||||
int AD_Table_ID = DB.getSQLValue(po.get_TrxName(), "SELECT AD_Table_ID From AD_Tree WHERE AD_Tree_ID="+AD_Tree_ID);
|
||||
tableName = MTable.getTableName(po.getCtx(), AD_Table_ID);
|
||||
searchColumn = tableName+"_ID";
|
||||
} else if (po.get_TableName().equals("AD_TreeNode") && columnName.equals("Node_ID")) {
|
||||
int AD_Tree_ID = po.get_ValueAsInt("AD_Tree_ID");
|
||||
int AD_Table_ID = DB.getSQLValue(po.get_TrxName(), "SELECT AD_Table_ID From AD_Tree WHERE AD_Tree_ID="+AD_Tree_ID);
|
||||
tableName = MTable.getTableName(po.getCtx(), AD_Table_ID);
|
||||
searchColumn = tableName+"_ID";
|
||||
} else {
|
||||
//remove _ID
|
||||
searchColumn = columnName;
|
||||
|
@ -257,7 +271,7 @@ public class PoExporter {
|
|||
if ("Record_ID".equalsIgnoreCase(columnName) && po.get_ColumnIndex("AD_Table_ID") >= 0) {
|
||||
int AD_Table_ID = po.get_Value(po.get_ColumnIndex("AD_Table_ID")) != null
|
||||
? (Integer)po.get_Value(po.get_ColumnIndex("AD_Table_ID")) : 0;
|
||||
tableName = MTable.getTableName(ctx, AD_Table_ID);
|
||||
tableName = MTable.getTableName(ctx.ctx, AD_Table_ID);
|
||||
searchColumn = tableName + "_ID";
|
||||
} else if (info.getColumnLookup(i) != null){
|
||||
searchColumn = info.getColumnLookup(i).getColumnName();
|
||||
|
@ -286,6 +300,8 @@ public class PoExporter {
|
|||
addTableReference(columnName, tableName, searchColumn, new AttributesImpl());
|
||||
} else if (DisplayType.isLOB(displayType)) {
|
||||
addBlob(columnName);
|
||||
} else if (columnName.equals(po.getUUIDColumnName()) && po.get_Value(columnName) == null) {
|
||||
continue;
|
||||
} else {
|
||||
add(columnName, "", new AttributesImpl());
|
||||
}
|
||||
|
@ -299,7 +315,7 @@ public class PoExporter {
|
|||
return;
|
||||
}
|
||||
|
||||
PackOut packOut = (PackOut) ctx.get(PackOut.PACK_OUT_PROCESS_CTX_KEY);
|
||||
PackOut packOut = ctx.packOut;
|
||||
byte[] data = null;
|
||||
String dataType = null;
|
||||
String fileName = null;
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.math.BigDecimal;
|
|||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.compiere.model.PO;
|
||||
|
@ -16,8 +15,9 @@ import org.compiere.util.Env;
|
|||
public class PoFiller{
|
||||
|
||||
PO po = null;
|
||||
@SuppressWarnings("unused")
|
||||
private AbstractElementHandler handler;
|
||||
private Properties ctx;
|
||||
private PIPOContext ctx;
|
||||
private Element element;
|
||||
|
||||
/**
|
||||
|
@ -26,7 +26,7 @@ public class PoFiller{
|
|||
* @param atts
|
||||
* @param handler
|
||||
*/
|
||||
public PoFiller(Properties ctx, PO po, Element element, AbstractElementHandler handler){
|
||||
public PoFiller(PIPOContext ctx, PO po, Element element, AbstractElementHandler handler){
|
||||
|
||||
this.ctx = ctx;
|
||||
this.po = po;
|
||||
|
@ -51,7 +51,7 @@ public class PoFiller{
|
|||
else if (oldValue != null && oldValue.toString().equals(value))
|
||||
return;
|
||||
else
|
||||
po.set_ValueOfColumn(columnName, value);
|
||||
po.set_ValueNoCheck(columnName, value);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -68,7 +68,7 @@ public class PoFiller{
|
|||
if (po.get_Value(columnName) != null && po.get_ValueAsBoolean(columnName) == bool)
|
||||
return;
|
||||
else
|
||||
po.set_ValueOfColumn(columnName, bool);
|
||||
po.set_ValueNoCheck(columnName, bool);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -89,7 +89,7 @@ public class PoFiller{
|
|||
else if (oldValue != null && oldValue.equals(ts))
|
||||
return;
|
||||
else
|
||||
po.set_ValueOfColumn(qName, ts);
|
||||
po.set_ValueNoCheck(qName, ts);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -110,7 +110,7 @@ public class PoFiller{
|
|||
else if (oldValue != null && oldValue.equals(i))
|
||||
return;
|
||||
else
|
||||
po.set_ValueOfColumn(qName, i);
|
||||
po.set_ValueNoCheck(qName, i);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -131,10 +131,10 @@ public class PoFiller{
|
|||
else if (oldValue != null && oldValue.equals(bd))
|
||||
return;
|
||||
else
|
||||
po.set_ValueOfColumn(qName, bd);
|
||||
po.set_ValueNoCheck(qName, bd);
|
||||
}
|
||||
|
||||
public static int findTableReference(Properties ctx, AbstractElementHandler handler, Element element, String qName) {
|
||||
public static int findTableReference(PIPOContext ctx, AbstractElementHandler handler, Element element, String qName) {
|
||||
Element propertyElement = element.properties.get(qName);
|
||||
if (propertyElement == null)
|
||||
return 0;
|
||||
|
@ -169,16 +169,16 @@ public class PoFiller{
|
|||
String value = e.contents.toString();
|
||||
String columnName = qName;
|
||||
if (value != null && value.trim().length() > 0) {
|
||||
int id = ReferenceUtils.resolveReference(ctx, e, po.get_TrxName());
|
||||
int id = ReferenceUtils.resolveReference(ctx.ctx, e, po.get_TrxName());
|
||||
if (columnName.equals("AD_Client_ID") && id > 0) {
|
||||
if (id != Env.getAD_Client_ID(ctx)) {
|
||||
if (id != Env.getAD_Client_ID(ctx.ctx)) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (po.get_ColumnIndex(columnName) >= 0) {
|
||||
if (id > 0) {
|
||||
if (po.get_ValueAsInt(columnName) != id) {
|
||||
po.set_ValueOfColumn(columnName, id);
|
||||
po.set_ValueNoCheck(columnName, id);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
@ -199,16 +199,26 @@ public class PoFiller{
|
|||
POInfo info = POInfo.getPOInfo(po.getCtx(), po.get_Table_ID());
|
||||
List<String>notFounds = new ArrayList<String>();
|
||||
|
||||
//special treatment for ad_org_id
|
||||
Element orgElement = element.properties.get("AD_Org_ID");
|
||||
String sAD_Org_ID = orgElement != null ? orgElement.contents.toString() : null;
|
||||
if (sAD_Org_ID != null && sAD_Org_ID.equals("0"))
|
||||
//special treatment for ad_client_id and ad_org_id
|
||||
Element clientElement = element.properties.get("AD_Client_ID");
|
||||
String sAD_Client_ID = clientElement != null ? clientElement.contents.toString() : null;
|
||||
if (sAD_Client_ID != null && sAD_Client_ID.equals("0"))
|
||||
{
|
||||
po.set_ValueNoCheck("AD_Client_ID", 0);
|
||||
po.setAD_Org_ID(0);
|
||||
else if (sAD_Org_ID != null && sAD_Org_ID.equals("@AD_Org_ID@"))
|
||||
po.setAD_Org_ID(Env.getAD_Org_ID(ctx));
|
||||
else {
|
||||
if (setTableReference("AD_Client_ID") >= 0)
|
||||
setTableReference("AD_Org_ID");
|
||||
}
|
||||
else
|
||||
{
|
||||
Element orgElement = element.properties.get("AD_Org_ID");
|
||||
String sAD_Org_ID = orgElement != null ? orgElement.contents.toString() : null;
|
||||
if (sAD_Org_ID != null && sAD_Org_ID.equals("0"))
|
||||
po.setAD_Org_ID(0);
|
||||
else if (sAD_Org_ID != null && sAD_Org_ID.equals("@AD_Org_ID@"))
|
||||
po.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx));
|
||||
else {
|
||||
if (setTableReference("AD_Client_ID") >= 0)
|
||||
setTableReference("AD_Org_ID");
|
||||
}
|
||||
}
|
||||
|
||||
for(String qName : element.properties.keySet()) {
|
||||
|
@ -262,7 +272,7 @@ public class PoFiller{
|
|||
if (component.length == 2) {
|
||||
String fileName = component[0];
|
||||
String dataType = component[1];
|
||||
PackIn packIn = handler.getPackIn(ctx);
|
||||
PackIn packIn = ctx.packIn;
|
||||
try {
|
||||
byte[] bytes = packIn.readBlob(fileName);
|
||||
if ("byte[]".equals(dataType)) {
|
||||
|
@ -275,6 +285,6 @@ public class PoFiller{
|
|||
}
|
||||
}
|
||||
}
|
||||
po.set_ValueOfColumn(qName, data);
|
||||
po.set_ValueNoCheck(qName, data);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
package org.adempiere.pipo2;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.adempiere.exceptions.DBException;
|
||||
import org.apache.commons.codec.binary.Hex;
|
||||
import org.compiere.model.MTable;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.util.DB;
|
||||
|
@ -79,25 +85,29 @@ public class ReferenceUtils {
|
|||
public static String getTableReference(String tableName, String searchColumn, int id, AttributesImpl atts)
|
||||
{
|
||||
String keyColumn = tableName + "_ID";
|
||||
String sql = "SELECT " + searchColumn + " FROM "
|
||||
+ tableName + " WHERE " + keyColumn + " = ?";
|
||||
if (id > 0 && id <= PackOut.MAX_OFFICIAL_ID)
|
||||
{
|
||||
//official id
|
||||
atts.addAttribute("", "", "reference", "CDATA", "id");
|
||||
String value = Integer.toString(id);
|
||||
return value;
|
||||
}
|
||||
else if (id == 0)
|
||||
{
|
||||
//no id, should never happen
|
||||
atts.addAttribute("", "", "reference", "CDATA", "id");
|
||||
return "";
|
||||
}
|
||||
else
|
||||
{
|
||||
MTable table = MTable.get(Env.getCtx(), tableName);
|
||||
if (table.getColumn(PO.getUUIDColumnName(tableName)) != null)
|
||||
if (table == null)
|
||||
throw new RuntimeException("Table Not Found. TableName="+tableName);
|
||||
String uuidColumnName = PO.getUUIDColumnName(tableName);
|
||||
if (table.getColumn(uuidColumnName) != null)
|
||||
{
|
||||
sql = "SELECT " + PO.getUUIDColumnName(tableName) + " FROM "
|
||||
//uuid
|
||||
String sql = "SELECT " + uuidColumnName + " FROM "
|
||||
+ tableName + " WHERE " + keyColumn + " = ?";
|
||||
String value = DB.getSQLValueString(null, sql, id);
|
||||
if (value != null && value.trim().length() > 0)
|
||||
|
@ -108,12 +118,53 @@ public class ReferenceUtils {
|
|||
}
|
||||
}
|
||||
|
||||
String value = DB.getSQLValueString(null, sql, id);
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append(tableName).append(".").append(searchColumn);
|
||||
atts.addAttribute("", "", "reference", "CDATA", "table");
|
||||
atts.addAttribute("", "", "reference-key", "CDATA", buffer.toString());
|
||||
return value;
|
||||
//search column
|
||||
if (searchColumn.indexOf(",") > 0) {
|
||||
//composite search column
|
||||
String value = "";
|
||||
String[] columns = searchColumn.split("[,]");
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
stmt = DB.prepareStatement("SELECT " + searchColumn + " FROM " + tableName, null);
|
||||
rs = stmt.executeQuery();
|
||||
if (rs.next()) {
|
||||
for(int i = 0; i < columns.length; i++) {
|
||||
Object o = rs.getObject(i+1);
|
||||
String s = o != null ? o.toString() : "";
|
||||
if (s.length() > 0) {
|
||||
char[] chars = Hex.encodeHex(s.getBytes("UTF-8"));
|
||||
s = new String(chars);
|
||||
}
|
||||
if (i == 0) {
|
||||
value = s;
|
||||
} else {
|
||||
value = value+","+s;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new DBException(e);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
DB.close(rs, stmt);
|
||||
}
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append(tableName).append(".").append(searchColumn);
|
||||
atts.addAttribute("", "", "reference", "CDATA", "table");
|
||||
atts.addAttribute("", "", "reference-key", "CDATA", buffer.toString());
|
||||
return value;
|
||||
} else {
|
||||
String sql = "SELECT " + searchColumn + " FROM "
|
||||
+ tableName + " WHERE " + keyColumn + " = ?";
|
||||
String value = DB.getSQLValueString(null, sql, id);
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append(tableName).append(".").append(searchColumn);
|
||||
atts.addAttribute("", "", "reference", "CDATA", "table");
|
||||
atts.addAttribute("", "", "reference-key", "CDATA", buffer.toString());
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue