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
|
* @param value value
|
||||||
* @return true if value set
|
* @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);
|
int index = get_ColumnIndex(ColumnName);
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
|
|
|
@ -164,6 +164,10 @@
|
||||||
class="org.adempiere.pipo2.handler.ReferenceTableElementHandler"
|
class="org.adempiere.pipo2.handler.ReferenceTableElementHandler"
|
||||||
id="AD_Ref_Table">
|
id="AD_Ref_Table">
|
||||||
</handler>
|
</handler>
|
||||||
|
<handler
|
||||||
|
class="org.adempiere.pipo2.handler.AttachmentElementHandler"
|
||||||
|
id="AD_Attachment">
|
||||||
|
</handler>
|
||||||
<handler
|
<handler
|
||||||
class="org.adempiere.pipo2.handler.CommonTranslationHandler"
|
class="org.adempiere.pipo2.handler.CommonTranslationHandler"
|
||||||
id="table.translationHandler">
|
id="table.translationHandler">
|
||||||
|
|
|
@ -19,11 +19,11 @@ package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -44,19 +44,19 @@ public class AdElementHandler extends AbstractElementHandler {
|
||||||
private final String AD_ELEMENT = "AD_Element";
|
private final String AD_ELEMENT = "AD_Element";
|
||||||
|
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
String action = null;
|
String action = null;
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
String ColumnName = getStringValue(element, "ColumnName");
|
String ColumnName = getStringValue(element, "ColumnName");
|
||||||
|
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
|
|
||||||
M_Element mElement = findPO(ctx, element);
|
M_Element mElement = findPO(ctx, element);
|
||||||
if (mElement == null) {
|
if (mElement == null) {
|
||||||
int id = findIdByColumn(ctx, X_AD_Element.Table_Name, X_AD_Element.COLUMNNAME_ColumnName, ColumnName);
|
int id = findIdByColumn(ctx, X_AD_Element.Table_Name, X_AD_Element.COLUMNNAME_ColumnName, ColumnName, /*ignorecase=*/true);
|
||||||
mElement = new M_Element(ctx, id, getTrxName(ctx));
|
mElement = new M_Element(ctx.ctx, id, getTrxName(ctx));
|
||||||
}
|
}
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Element.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Element.Table_Name);
|
||||||
if (mElement.getAD_Element_ID() == 0 && isOfficialId(element, "AD_Element_ID"))
|
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);
|
List<String> notfounds = pf.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +95,7 @@ public class AdElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mElement.getName(),
|
logImportDetail(ctx, impDetail, 0, mElement.getName(),
|
||||||
mElement.get_ID(), action);
|
mElement.get_ID(), action);
|
||||||
throw new POSaveFailedException("Reference");
|
throw new POSaveFailedException("Failed to save Element " + mElement.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
throws SAXException {
|
||||||
|
|
||||||
|
|
||||||
int adElement_id = Env.getContextAsInt(ctx,
|
int adElement_id = Env.getContextAsInt(ctx.ctx,
|
||||||
X_AD_Element.COLUMNNAME_AD_Element_ID);
|
X_AD_Element.COLUMNNAME_AD_Element_ID);
|
||||||
|
|
||||||
if (processedElements.contains(adElement_id))
|
if (processedElements.contains(adElement_id))
|
||||||
|
@ -117,18 +118,22 @@ public class AdElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
processedElements.add(adElement_id);
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", "AD_Element", atts);
|
document.startElement("", "", "AD_Element", atts);
|
||||||
createAdElementBinding(ctx, document, m_AdElement);
|
createAdElementBinding(ctx, document, mAdElement);
|
||||||
|
|
||||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
|
||||||
|
|
||||||
|
|
||||||
|
PackOut packOut = ctx.packOut;
|
||||||
try{
|
try{
|
||||||
new CommonTranslationHandler().packOut(packOut,document,null,m_AdElement.get_ID());
|
new CommonTranslationHandler().packOut(packOut,document,null,mAdElement.get_ID());
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
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) {
|
X_AD_Element m_AdElement) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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
|
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);
|
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.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
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.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.CodeSnippetElementParameters;
|
import org.adempiere.pipo2.CodeSnippetElementParameters;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PackoutItem;
|
import org.adempiere.pipo2.PackoutItem;
|
||||||
|
|
||||||
public class CodeSnippetElementHandler extends AbstractElementHandler {
|
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;
|
String action = null;
|
||||||
action = "Update";
|
action = "Update";
|
||||||
String releaseNumber = getStringValue(element, "ReleaseNo");
|
String releaseNumber = getStringValue(element, "ReleaseNo");
|
||||||
|
@ -68,7 +68,7 @@ public class CodeSnippetElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
//get adempiere-all directory
|
//get adempiere-all directory
|
||||||
try {
|
try {
|
||||||
packagePath = getPackageDirectory(ctx);
|
packagePath = getPackageDirectory(ctx.ctx);
|
||||||
File parentDirectory = new File(packagePath);
|
File parentDirectory = new File(packagePath);
|
||||||
while (!parentDirectory.getName().equals("packages")){
|
while (!parentDirectory.getName().equals("packages")){
|
||||||
parentDirectory = parentDirectory.getParentFile();
|
parentDirectory = parentDirectory.getParentFile();
|
||||||
|
@ -144,9 +144,9 @@ public class CodeSnippetElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
//Record in transaction file
|
//Record in transaction file
|
||||||
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_Org_ID(Env.getAD_Org_ID(ctx));
|
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx));
|
||||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx));
|
backup.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||||
backup.setAD_Package_Imp_Org_Dir(targetDirectoryModified+sourceName );
|
backup.setAD_Package_Imp_Org_Dir(targetDirectoryModified+sourceName );
|
||||||
backup.setAD_Package_Imp_Bck_Dir(packagePath+File.separator+"backup"+File.separator+fileDate+"_"+sourceName);
|
backup.setAD_Package_Imp_Bck_Dir(packagePath+File.separator+"backup"+File.separator+fileDate+"_"+sourceName);
|
||||||
backup.saveEx();
|
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 {
|
throws SAXException {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void create(Properties ctx, TransformerHandler document)
|
public void create(PIPOContext pipoContext, TransformerHandler document)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
String FileDir = Env.getContext(ctx, CodeSnippetElementParameters.DESTINATION_DIRECTORY);
|
String FileDir = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.DESTINATION_DIRECTORY);
|
||||||
String FileName = Env.getContext(ctx, CodeSnippetElementParameters.DESTINATION_FILE_NAME);
|
String FileName = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.DESTINATION_FILE_NAME);
|
||||||
String OldCode = Env.getContext(ctx, CodeSnippetElementParameters.AD_Package_Code_Old);
|
String OldCode = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.AD_Package_Code_Old);
|
||||||
String NewCode = Env.getContext(ctx, CodeSnippetElementParameters.AD_Package_Code_New);
|
String NewCode = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.AD_Package_Code_New);
|
||||||
String ReleaseNo = Env.getContext(ctx, CodeSnippetElementParameters.RELEASE_NO);
|
String ReleaseNo = Env.getContext(pipoContext.ctx, CodeSnippetElementParameters.RELEASE_NO);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "custom");
|
addTypeName(atts, "custom");
|
||||||
createSnipitBinding(atts, FileDir, FileName, OldCode, NewCode, ReleaseNo);
|
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
|
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||||
{
|
{
|
||||||
PackoutItem detail = packout.getCurrentPackoutItem();
|
PackoutItem detail = packout.getCurrentPackoutItem();
|
||||||
Env.setContext(packout.getCtx(), CodeSnippetElementParameters.DESTINATION_DIRECTORY, (String)detail.getProperty(CodeSnippetElementParameters.DESTINATION_DIRECTORY));
|
Env.setContext(packout.getCtx().ctx, 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().ctx, 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().ctx, 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().ctx, 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.RELEASE_NO, (String)detail.getProperty(CodeSnippetElementParameters.RELEASE_NO));
|
||||||
this.create(packout.getCtx(), packoutHandler);
|
this.create(packout.getCtx(), packoutHandler);
|
||||||
packout.getCtx().remove(CodeSnippetElementParameters.DESTINATION_DIRECTORY);
|
packout.getCtx().ctx.remove(CodeSnippetElementParameters.DESTINATION_DIRECTORY);
|
||||||
packout.getCtx().remove(CodeSnippetElementParameters.DESTINATION_FILE_NAME);
|
packout.getCtx().ctx.remove(CodeSnippetElementParameters.DESTINATION_FILE_NAME);
|
||||||
packout.getCtx().remove(CodeSnippetElementParameters.AD_Package_Code_Old);
|
packout.getCtx().ctx.remove(CodeSnippetElementParameters.AD_Package_Code_Old);
|
||||||
packout.getCtx().remove(CodeSnippetElementParameters.AD_Package_Code_New);
|
packout.getCtx().ctx.remove(CodeSnippetElementParameters.AD_Package_Code_New);
|
||||||
packout.getCtx().remove(CodeSnippetElementParameters.RELEASE_NO);
|
packout.getCtx().ctx.remove(CodeSnippetElementParameters.RELEASE_NO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,12 +21,12 @@ import java.sql.DatabaseMetaData;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -49,11 +49,11 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class ColumnElementHandler extends AbstractElementHandler {
|
public class ColumnElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
int success = 0;
|
int success = 0;
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentDefer(element, I_AD_Table.Table_Name)) {
|
if (isParentDefer(element, I_AD_Table.Table_Name)) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
return;
|
return;
|
||||||
|
@ -68,13 +68,13 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
||||||
if (getParentId(element, I_AD_Table.Table_Name) > 0) {
|
if (getParentId(element, I_AD_Table.Table_Name) > 0) {
|
||||||
tableid = getParentId(element, I_AD_Table.Table_Name);
|
tableid = getParentId(element, I_AD_Table.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
mColumn = new MColumn(ctx, 0, getTrxName(ctx));
|
mColumn = new MColumn(ctx.ctx, 0, getTrxName(ctx));
|
||||||
PoFiller filler = new PoFiller(ctx, mColumn, element, this);
|
PoFiller filler = new PoFiller(ctx, mColumn, element, this);
|
||||||
filler.setTableReference("AD_Table_ID");
|
filler.setTableReference("AD_Table_ID");
|
||||||
tableid = mColumn.getAD_Table_ID();
|
tableid = mColumn.getAD_Table_ID();
|
||||||
}
|
}
|
||||||
int AD_Column_ID = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnName, "AD_Table", tableid);
|
int AD_Column_ID = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnName, "AD_Table", tableid, /*ignorecase=*/true);
|
||||||
mColumn = new MColumn(ctx, AD_Column_ID > 0 ? AD_Column_ID : 0, getTrxName(ctx));
|
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")) {
|
if (mColumn.getAD_Column_ID() == 0 && isOfficialId(element, "AD_Column_ID")) {
|
||||||
mColumn.setAD_Column_ID(getIntValue(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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +105,7 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
// Setup Element.
|
// Setup Element.
|
||||||
if (mColumn.getAD_Element_ID() == 0) {
|
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.setColumnName(mColumn.getColumnName());
|
||||||
adElement.setEntityType(mColumn.getEntityType());
|
adElement.setEntityType(mColumn.getEntityType());
|
||||||
adElement.setPrintName(mColumn.getColumnName());
|
adElement.setPrintName(mColumn.getColumnName());
|
||||||
|
@ -164,11 +165,11 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mColumn.getName(), mColumn
|
logImportDetail(ctx, impDetail, 0, mColumn.getName(), mColumn
|
||||||
.get_ID(), action);
|
.get_ID(), action);
|
||||||
throw new POSaveFailedException("Failed to import column.");
|
throw new POSaveFailedException("Failed to save column " + mColumn.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (recreateColumn || syncDatabase) {
|
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()) {
|
if (!table.isView() && !mColumn.isVirtualColumn()) {
|
||||||
success = createColumn(ctx, table, mColumn, recreateColumn);
|
success = createColumn(ctx, table, mColumn, recreateColumn);
|
||||||
|
|
||||||
|
@ -199,7 +200,7 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
||||||
* @param v_IsMandatory
|
* @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;
|
int no = 0;
|
||||||
|
|
||||||
|
@ -297,23 +298,30 @@ public class ColumnElementHandler extends AbstractElementHandler {
|
||||||
return 1;
|
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 {
|
throws SAXException {
|
||||||
int AD_Column_ID = Env.getContextAsInt(ctx,
|
int AD_Column_ID = Env.getContextAsInt(ctx.ctx,
|
||||||
X_AD_Column.COLUMNNAME_AD_Column_ID);
|
X_AD_Column.COLUMNNAME_AD_Column_ID);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
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));
|
getTrxName(ctx));
|
||||||
|
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (m_Column.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Column.Table_Name, atts);
|
document.startElement("", "", I_AD_Column.Table_Name, atts);
|
||||||
createColumnBinding(ctx, document, m_Column);
|
createColumnBinding(ctx, document, m_Column);
|
||||||
document.endElement("", "", I_AD_Column.Table_Name);
|
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) {
|
X_AD_Column m_Column) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.DBException;
|
import org.adempiere.exceptions.DBException;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
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
|
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
|
return;//translation import option is disabled
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
||||||
|
|
||||||
|
|
||||||
private boolean isRecordExists(String tableName, int parentID,
|
private boolean isRecordExists(String tableName, int parentID,
|
||||||
String language, Properties ctx) {
|
String language, PIPOContext ctx) {
|
||||||
|
|
||||||
String sql =
|
String sql =
|
||||||
"SELECT AD_Client_ID FROM " + tableName +" WHERE " +
|
"SELECT AD_Client_ID FROM " + tableName +" WHERE " +
|
||||||
|
@ -79,7 +79,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
||||||
|
|
||||||
|
|
||||||
private void insertTranslation(String tableName, int parentID,
|
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);
|
String parentTable = tableName.substring(0, tableName.length()-4);
|
||||||
ArrayList<String> columns = getTranslatedColumns(parentTable);
|
ArrayList<String> columns = getTranslatedColumns(parentTable);
|
||||||
|
@ -133,7 +133,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
||||||
|
|
||||||
|
|
||||||
private void updateTranslation(String tableName, int parentID,
|
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);
|
String parentTable = tableName.substring(0, tableName.length()-4);
|
||||||
ArrayList<String> columns = getTranslatedColumns(parentTable);
|
ArrayList<String> columns = getTranslatedColumns(parentTable);
|
||||||
StringBuffer buffer = new StringBuffer("UPDATE "+tableName+" SET ");
|
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);
|
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 {
|
int parentRecordID, TransformerHandler document) throws SAXException {
|
||||||
|
|
||||||
ArrayList<String> translatedColumns = getTranslatedColumns(parentTable);
|
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 {
|
ResultSet rs) throws Exception {
|
||||||
|
|
||||||
PoExporter af = new PoExporter(ctx, document, null);
|
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
|
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||||
{
|
{
|
||||||
if("true".equals(packout.getCtx().getProperty("isHandleTranslations"))){
|
if("true".equals(packout.getCtx().ctx.getProperty("isHandleTranslations"))){
|
||||||
Env.setContext(packout.getCtx(), CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE,X_AD_Element.Table_Name);
|
Env.setContext(packout.getCtx().ctx, CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE,X_AD_Element.Table_Name);
|
||||||
Env.setContext(packout.getCtx(), CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID,recordId);
|
Env.setContext(packout.getCtx().ctx, CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID,recordId);
|
||||||
this.create(packout.getCtx(), packoutHandler);
|
this.create(packout.getCtx(), packoutHandler);
|
||||||
packout.getCtx().remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE);
|
packout.getCtx().ctx.remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE);
|
||||||
packout.getCtx().remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID);
|
packout.getCtx().ctx.remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,12 +22,12 @@ import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PackoutItem;
|
import org.adempiere.pipo2.PackoutItem;
|
||||||
import org.compiere.Adempiere;
|
import org.compiere.Adempiere;
|
||||||
|
@ -53,7 +53,7 @@ public class DistFileElementHandler extends AbstractElementHandler {
|
||||||
this.fileDest=fileDest;
|
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 action = null;
|
||||||
|
|
||||||
String releaseNumber = getStringValue(element,"ReleaseNo");
|
String releaseNumber = getStringValue(element,"ReleaseNo");
|
||||||
|
@ -72,7 +72,7 @@ public class DistFileElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
//get adempiere-all directory
|
//get adempiere-all directory
|
||||||
try {
|
try {
|
||||||
packagePath = getPackageDirectory(ctx);
|
packagePath = getPackageDirectory(ctx.ctx);
|
||||||
File parentDirectory = new File(packagePath);
|
File parentDirectory = new File(packagePath);
|
||||||
while (!parentDirectory.getName().equals("packages")){
|
while (!parentDirectory.getName().equals("packages")){
|
||||||
parentDirectory = parentDirectory.getParentFile();
|
parentDirectory = parentDirectory.getParentFile();
|
||||||
|
@ -165,25 +165,25 @@ public class DistFileElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Record in transaction file
|
//Record in transaction file
|
||||||
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_Org_ID(Env.getAD_Org_ID(ctx));
|
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx));
|
||||||
backup.setAD_Package_Imp_Org_Dir(fullTargetPath+fileName);
|
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_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();
|
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 {
|
throws SAXException {
|
||||||
String FileName = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
|
String FileName = Env.getContext(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
|
||||||
String Source_Directory = Env.getContext(ctx, "Source_Directory");
|
String Source_Directory = Env.getContext(ctx.ctx, "Source_Directory");
|
||||||
String Target_Directory = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory);
|
String Target_Directory = Env.getContext(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory);
|
||||||
String ReleaseNo = Env.getContext(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
|
String ReleaseNo = Env.getContext(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "custom");
|
addTypeName(atts, "custom");
|
||||||
document.startElement("","","Dist_File",atts);
|
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
|
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().ctx, 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().ctx, 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().ctx, X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory, (String)detail.getProperty("TargetDirectory"));
|
||||||
Env.setContext(packout.getCtx(), "Source_Directory", fileDest);
|
Env.setContext(packout.getCtx().ctx, "Source_Directory", fileDest);
|
||||||
this.create(packout.getCtx(), packOutDocument);
|
this.create(packout.getCtx(), packOutDocument);
|
||||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
|
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_FileName);
|
||||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
|
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_ReleaseNo);
|
||||||
packout.getCtx().remove(X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory);
|
packout.getCtx().ctx.remove(X_AD_Package_Exp_Detail.COLUMNNAME_Target_Directory);
|
||||||
packout.getCtx().remove("Source_Directory");
|
packout.getCtx().ctx.remove("Source_Directory");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -40,16 +40,16 @@ public class DynValRuleElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> rules = new ArrayList<Integer>();
|
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");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "Name");
|
||||||
|
|
||||||
X_AD_Val_Rule mValRule = findPO(ctx, element);
|
X_AD_Val_Rule mValRule = findPO(ctx, element);
|
||||||
if (mValRule == null)
|
if (mValRule == null)
|
||||||
{
|
{
|
||||||
int id = findIdByColumn(ctx, "AD_Val_Rule", "Name", name);
|
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"))
|
if (mValRule.getAD_Val_Rule_ID() == 0 && isOfficialId(element, "AD_Val_Rule_ID"))
|
||||||
mValRule.setAD_Val_Rule_ID(getIntValue(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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +81,7 @@ public class DynValRuleElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
logImportDetail (ctx, impDetail, 0, mValRule.getName(), mValRule.get_ID(),action);
|
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 {
|
} 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 {
|
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))
|
if (rules.contains(AD_Val_Rule_ID))
|
||||||
return;
|
return;
|
||||||
rules.add(AD_Val_Rule_ID);
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("","",I_AD_Val_Rule.Table_Name, atts);
|
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);
|
PoExporter filler = new PoExporter(ctx, document, m_ValRule);
|
||||||
List<String>excludes = defaultExcludeList(X_AD_Val_Rule.Table_Name);
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
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_FieldGroup;
|
||||||
import org.compiere.model.I_AD_Reference;
|
import org.compiere.model.I_AD_Reference;
|
||||||
import org.compiere.model.I_AD_Tab;
|
import org.compiere.model.I_AD_Tab;
|
||||||
import org.compiere.model.I_AD_Val_Rule;
|
|
||||||
import org.compiere.model.MField;
|
import org.compiere.model.MField;
|
||||||
import org.compiere.model.X_AD_Field;
|
import org.compiere.model.X_AD_Field;
|
||||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
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 class FieldElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentDefer(element, I_AD_Tab.Table_Name)) {
|
if (isParentDefer(element, I_AD_Tab.Table_Name)) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String>excludes = defaultExcludeList(X_AD_Field.Table_Name);
|
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) ;
|
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) {
|
if (tabid <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Tab_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MField mField = findPO(ctx, element);
|
excludes.add("AD_Table_ID");
|
||||||
if (mField == null)
|
excludes.add("AD_Column_ID");
|
||||||
{
|
|
||||||
int AD_Table_ID = ReferenceUtils.resolveReference(ctx, element.parent.properties.get("AD_Table_ID"), getTrxName(ctx));
|
int AD_Table_ID = ReferenceUtils.resolveReference(ctx.ctx, element.properties.get("AD_Table_ID"), getTrxName(ctx));
|
||||||
Element columnElement = element.properties.get("AD_Column_ID");
|
Element columnElement = element.properties.get("AD_Column_ID");
|
||||||
int AD_Column_ID = 0;
|
int AD_Column_ID = 0;
|
||||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement))
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -79,20 +93,32 @@ public class FieldElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
if (AD_Column_ID == 0) {
|
if (AD_Column_ID == 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Column_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MField mField = findPO(ctx, element);
|
||||||
|
if (mField == null)
|
||||||
|
{
|
||||||
StringBuffer sqlB = new StringBuffer(
|
StringBuffer sqlB = new StringBuffer(
|
||||||
"select AD_Field_ID from AD_Field where AD_Column_ID = ")
|
"select AD_Field_ID from AD_Field where AD_Column_ID = ")
|
||||||
.append(AD_Column_ID)
|
.append(AD_Column_ID)
|
||||||
.append(" and AD_Tab_ID = ?");
|
.append(" and AD_Tab_ID = ?");
|
||||||
int id = DB.getSQLValue(getTrxName(ctx), sqlB.toString(), tabid);
|
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()) {
|
if (mField.is_new()) {
|
||||||
mField.setAD_Column_ID(AD_Column_ID);
|
mField.setAD_Column_ID(AD_Column_ID);
|
||||||
mField.setAD_Tab_ID(tabid);
|
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);
|
PoFiller filler = new PoFiller(ctx, mField, element, this);
|
||||||
if (mField.getAD_Field_ID() == 0 && isOfficialId(element, "AD_Field_ID"))
|
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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +151,7 @@ public class FieldElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mField.getName(), mField
|
logImportDetail(ctx, impDetail, 0, mField.getName(), mField
|
||||||
.get_ID(), action);
|
.get_ID(), action);
|
||||||
throw new POSaveFailedException("Failed to save field definition.");
|
throw new POSaveFailedException("Failed to save field definition " + mField.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
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.COLUMNNAME_AD_Field_ID);
|
||||||
X_AD_Field m_Field = new X_AD_Field(ctx, AD_Field_ID, null);
|
X_AD_Field m_Field = new X_AD_Field(ctx.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);
|
|
||||||
|
|
||||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
PackOut packOut = ctx.packOut;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -160,28 +183,26 @@ public class FieldElementHandler extends AbstractElementHandler {
|
||||||
ElementHandler handler = packOut.getHandler(I_AD_Reference.Table_Name);
|
ElementHandler handler = packOut.getHandler(I_AD_Reference.Table_Name);
|
||||||
handler.packOut(packOut,document,null,m_Field.getAD_Reference_ID());
|
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)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
log.info(e.toString());
|
throw new SAXException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
document.endElement("", "", I_AD_Field.Table_Name);
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (m_Field.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createFieldBinding(Properties ctx, TransformerHandler document,
|
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(PIPOContext ctx, TransformerHandler document,
|
||||||
X_AD_Field m_Field) {
|
X_AD_Field m_Field) {
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Field.Table_Name);
|
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());
|
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);
|
filler.export(excludes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,8 +232,8 @@ public class FieldElementHandler extends AbstractElementHandler {
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -42,7 +42,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
||||||
private List<Integer> processedFieldGroups = new ArrayList<Integer>();
|
private List<Integer> processedFieldGroups = new ArrayList<Integer>();
|
||||||
|
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
String elementValue = element.getElementValue();
|
String elementValue = element.getElementValue();
|
||||||
String action = null;
|
String action = null;
|
||||||
|
@ -52,13 +52,13 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "Name");
|
||||||
|
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
|
|
||||||
X_AD_FieldGroup fieldGroup = findPO(ctx, element);
|
X_AD_FieldGroup fieldGroup = findPO(ctx, element);
|
||||||
if (fieldGroup == null)
|
if (fieldGroup == null)
|
||||||
{
|
{
|
||||||
int id = findIdByColumn(ctx, X_AD_FieldGroup.Table_Name, X_AD_FieldGroup.COLUMNNAME_Name, name);
|
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);
|
PoFiller pf = new PoFiller(ctx, fieldGroup, element, this);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_FieldGroup.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_FieldGroup.Table_Name);
|
||||||
|
@ -75,6 +75,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = pf.autoFill(excludes);
|
List<String> notfounds = pf.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +100,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, fieldGroup.getName(),
|
logImportDetail(ctx, impDetail, 0, fieldGroup.getName(),
|
||||||
fieldGroup.get_ID(), action);
|
fieldGroup.get_ID(), action);
|
||||||
throw new POSaveFailedException("Reference");
|
throw new POSaveFailedException("Failed to save Field Group " + fieldGroup.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
throws SAXException {
|
||||||
|
|
||||||
|
|
||||||
int fieldGroup_id = Env.getContextAsInt(ctx,
|
int fieldGroup_id = Env.getContextAsInt(ctx.ctx,
|
||||||
X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID);
|
X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID);
|
||||||
|
|
||||||
if (processedFieldGroups.contains(fieldGroup_id))
|
if (processedFieldGroups.contains(fieldGroup_id))
|
||||||
|
@ -122,7 +123,13 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
processedFieldGroups.add(fieldGroup_id);
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
|
@ -130,7 +137,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
createAdElementBinding(ctx, document, fieldGroup);
|
createAdElementBinding(ctx, document, fieldGroup);
|
||||||
|
|
||||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
PackOut packOut = ctx.packOut;
|
||||||
|
|
||||||
try{
|
try{
|
||||||
new CommonTranslationHandler().packOut(packOut,document,null,fieldGroup.get_ID());
|
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) {
|
X_AD_FieldGroup fieldGroup) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
@ -10,6 +9,7 @@ import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
import org.adempiere.pipo2.FileElementParameters;
|
import org.adempiere.pipo2.FileElementParameters;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PackoutDocument;
|
import org.adempiere.pipo2.PackoutDocument;
|
||||||
import org.adempiere.pipo2.PackoutItem;
|
import org.adempiere.pipo2.PackoutItem;
|
||||||
|
@ -88,11 +88,11 @@ public class FileElementHandler implements ElementHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
@ -40,7 +40,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class FormAccessElementHandler extends AbstractElementHandler {
|
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);
|
List<String> excludes = defaultExcludeList(X_AD_Form_Access.Table_Name);
|
||||||
|
|
||||||
MFormAccess po = findPO(ctx, element);
|
MFormAccess po = findPO(ctx, element);
|
||||||
|
@ -49,28 +49,30 @@ public class FormAccessElementHandler extends AbstractElementHandler {
|
||||||
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
||||||
AD_Role_ID = getParentId(element, I_AD_Role.Table_Name);
|
AD_Role_ID = getParentId(element, I_AD_Role.Table_Name);
|
||||||
} else {
|
} 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)
|
if (AD_Role_ID <= 0)
|
||||||
{
|
{
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Role_ID";
|
||||||
return;
|
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)
|
if (AD_Form_ID <= 0)
|
||||||
{
|
{
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Form_ID";
|
||||||
return;
|
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})
|
po = query.setParameters(new Object[]{AD_Form_ID, AD_Role_ID})
|
||||||
.setClient_ID()
|
.setClient_ID()
|
||||||
.<MFormAccess>first();
|
.<MFormAccess>first();
|
||||||
if (po == null)
|
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_Form_ID(AD_Form_ID);
|
||||||
po.setAD_Role_ID(AD_Role_ID);
|
po.setAD_Role_ID(AD_Role_ID);
|
||||||
}
|
}
|
||||||
|
@ -83,43 +85,51 @@ public class FormAccessElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
po.saveEx();
|
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 {
|
throws SAXException {
|
||||||
int AD_Form_ID = Env.getContextAsInt(ctx, X_AD_Form.COLUMNNAME_AD_Form_ID);
|
int AD_Form_ID = Env.getContextAsInt(ctx.ctx, X_AD_Form.COLUMNNAME_AD_Form_ID);
|
||||||
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Form_Access.Table_Name, atts);
|
document.startElement("", "", I_AD_Form_Access.Table_Name, atts);
|
||||||
createFormAccessBinding(ctx, document, AD_Form_ID, AD_Role_ID);
|
createFormAccessBinding(ctx, document, po);
|
||||||
document.endElement("", "", I_AD_Form_Access.Table_Name);
|
document.endElement("", "", I_AD_Form_Access.Table_Name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void createFormAccessBinding(Properties ctx, TransformerHandler document,
|
private void createFormAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
int formId, int roleId) {
|
MFormAccess po) {
|
||||||
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);
|
PoExporter filler = new PoExporter(ctx, document, po);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Form_Access.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Form_Access.Table_Name);
|
||||||
filler.export(excludes);
|
filler.export(excludes);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -42,16 +42,16 @@ public class FormElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> forms = new ArrayList<Integer>();
|
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);
|
List<String> excludes = defaultExcludeList(X_AD_Form.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
MForm mForm = findPO(ctx, element);
|
MForm mForm = findPO(ctx, element);
|
||||||
if (mForm == null) {
|
if (mForm == null) {
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "Name");
|
||||||
int id = findIdByName(ctx, "AD_Form", 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);
|
PoFiller filler = new PoFiller(ctx, mForm, element, this);
|
||||||
|
|
||||||
|
@ -63,6 +63,7 @@ public class FormElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +84,7 @@ public class FormElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
logImportDetail (ctx, impDetail, 0, mForm.getName(), mForm.get_ID(), action);
|
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 {
|
} 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 {
|
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;
|
if (forms.contains(AD_Form_ID)) return;
|
||||||
|
|
||||||
forms.add(AD_Form_ID);
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("","",I_AD_Form.Table_Name,atts);
|
document.startElement("","",I_AD_Form.Table_Name,atts);
|
||||||
|
@ -108,7 +116,7 @@ public class FormElementHandler extends AbstractElementHandler {
|
||||||
document.endElement("","",I_AD_Form.Table_Name);
|
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);
|
PoExporter filler = new PoExporter(ctx, document, m_Form);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Form.Table_Name);
|
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
|
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);
|
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.sql.Statement;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
|
@ -29,11 +28,13 @@ import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.model.GenericPO;
|
import org.adempiere.model.GenericPO;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.DataElementParameters;
|
import org.adempiere.pipo2.DataElementParameters;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackoutItem;
|
import org.adempiere.pipo2.PackoutItem;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoFiller;
|
import org.adempiere.pipo2.PoFiller;
|
||||||
|
import org.adempiere.pipo2.ReferenceUtils;
|
||||||
import org.compiere.model.MColumn;
|
import org.compiere.model.MColumn;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
|
@ -54,27 +55,30 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
*/
|
*/
|
||||||
public class GenericPOElementHandler extends AbstractElementHandler {
|
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();
|
String tableName = element.getElementValue();
|
||||||
|
|
||||||
PO po = findPO(ctx, element);
|
PO po = findPO(ctx, element);
|
||||||
if (po == null) {
|
if (po == null) {
|
||||||
MTable table = MTable.get(ctx, tableName);
|
String uuidColumn = PO.getUUIDColumnName(tableName);
|
||||||
POInfo info = POInfo.getPOInfo(ctx, table.getAD_Table_ID());
|
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);
|
MColumn columns[] = table.getColumns(false);
|
||||||
StringBuffer whereClause = new StringBuffer();
|
StringBuffer whereClause = new StringBuffer();
|
||||||
List<Object> parameters = new ArrayList<Object>();
|
List<Object> parameters = new ArrayList<Object>();
|
||||||
|
boolean search = true;
|
||||||
for(int i = 0; i < columns.length; i++) {
|
for(int i = 0; i < columns.length; i++) {
|
||||||
MColumn column = columns[i];
|
MColumn column = columns[i];
|
||||||
if (column.isIdentifier()) {
|
if (column.isParent()) {
|
||||||
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;
|
int parentId = 0;
|
||||||
String parentTableName = null;
|
String parentTableName = null;
|
||||||
if (column.getAD_Reference_ID() == DisplayType.TableDir) {
|
if (column.getAD_Reference_ID() == DisplayType.TableDir) {
|
||||||
|
@ -92,18 +96,71 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
parent = parent.parent;
|
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 (parentId > 0) {
|
||||||
if (whereClause.length() > 0)
|
if (whereClause.length() > 0)
|
||||||
whereClause.append(" AND ");
|
whereClause.append(" AND ");
|
||||||
whereClause.append(column.getColumnName()).append(" = ?");
|
whereClause.append(column.getColumnName()).append(" = ?");
|
||||||
parameters.add(parentId);
|
parameters.add(parentId);
|
||||||
|
} else {
|
||||||
|
search = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (column.isIdentifier()) {
|
||||||
|
if (whereClause.length() > 0)
|
||||||
|
whereClause.append(" AND ");
|
||||||
|
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) {
|
if (po == null) {
|
||||||
po = new GenericPO(tableName, ctx, 0);
|
po = table.getPO(0, getTrxName(ctx));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PoFiller filler = new PoFiller(ctx, po, element, this);
|
PoFiller filler = new PoFiller(ctx, po, element, this);
|
||||||
|
@ -115,27 +172,39 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
||||||
try {
|
try {
|
||||||
id = Integer.parseInt(idElement.contents.toString());
|
id = Integer.parseInt(idElement.contents.toString());
|
||||||
if (id > 0 && id <= PackOut.MAX_OFFICIAL_ID) {
|
if (id > 0 && id <= PackOut.MAX_OFFICIAL_ID) {
|
||||||
po.set_ValueOfColumn(tableName + "_ID", id);
|
po.set_ValueNoCheck(tableName + "_ID", id);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {}
|
} catch (Exception e) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
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) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
po.saveEx();
|
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 {
|
throws SAXException {
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
|
|
||||||
String sql = Env.getContext(ctx, DataElementParameters.SQL_STATEMENT);
|
String sql = Env.getContext(ctx.ctx, DataElementParameters.SQL_STATEMENT);
|
||||||
String components[] = null;
|
String components[] = null;
|
||||||
if (sql.indexOf(";") > 0) {
|
if (sql.indexOf(";") > 0) {
|
||||||
components = sql.split("[;]");
|
components = sql.split("[;]");
|
||||||
|
@ -143,8 +212,8 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
components = new String[]{sql};
|
components = new String[]{sql};
|
||||||
}
|
}
|
||||||
int tableId = Env.getContextAsInt(ctx, DataElementParameters.AD_TABLE_ID);
|
int tableId = Env.getContextAsInt(ctx.ctx, DataElementParameters.AD_TABLE_ID);
|
||||||
String tableName = MTable.getTableName(ctx, tableId);
|
String tableName = MTable.getTableName(ctx.ctx, tableId);
|
||||||
List<String> excludes = defaultExcludeList(tableName);
|
List<String> excludes = defaultExcludeList(tableName);
|
||||||
Statement stmt = null;
|
Statement stmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
@ -153,21 +222,37 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
||||||
stmt = DB.createStatement();
|
stmt = DB.createStatement();
|
||||||
rs = stmt.executeQuery(sql);
|
rs = stmt.executeQuery(sql);
|
||||||
while (rs.next()) {
|
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();
|
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;
|
continue;
|
||||||
|
|
||||||
|
boolean createElement = true;
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (po.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
createElement = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (createElement) {
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("","", tableName, atts);
|
document.startElement("","", tableName, atts);
|
||||||
PoExporter filler = new PoExporter(ctx, document, po);
|
PoExporter filler = new PoExporter(ctx, document, po);
|
||||||
filler.export(excludes, true);
|
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++) {
|
for (int i = 1; i < components.length; i++) {
|
||||||
String tables[] = components[i].split("[>]");
|
String tables[] = components[i].split("[>]");
|
||||||
exportDetail(ctx, document, po, 0, tables);
|
exportDetail(ctx, document, po, 0, tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (createElement) {
|
||||||
document.endElement("","",tableName);
|
document.endElement("","",tableName);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new AdempiereException(e);
|
throw new AdempiereException(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
String sql = "SELECT * FROM " + tables[index] + " WHERE " + parent.get_TableName() + "_ID = ?";
|
String sql = "SELECT * FROM " + tables[index] + " WHERE " + parent.get_TableName() + "_ID = ?";
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
|
@ -186,19 +271,31 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
||||||
pstmt.setInt(1, parent.get_ID());
|
pstmt.setInt(1, parent.get_ID());
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
while (rs.next()) {
|
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();
|
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;
|
continue;
|
||||||
|
|
||||||
|
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]);
|
List<String> excludes = defaultExcludeList(tables[index]);
|
||||||
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", tables[index], atts);
|
document.startElement("", "", tables[index], atts);
|
||||||
PoExporter filler = new PoExporter(ctx, document, po);
|
PoExporter filler = new PoExporter(ctx, document, po);
|
||||||
filler.export(excludes, true);
|
filler.export(excludes, true);
|
||||||
|
}
|
||||||
if (index + 1 < tables.length) {
|
if (index + 1 < tables.length) {
|
||||||
exportDetail(ctx, document, po, index+1, tables);
|
exportDetail(ctx, document, po, index+1, tables);
|
||||||
}
|
}
|
||||||
|
if (createElement) {
|
||||||
document.endElement("","",tables[index]);
|
document.endElement("","",tables[index]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new AdempiereException(e);
|
throw new AdempiereException(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -210,10 +307,22 @@ public class GenericPOElementHandler extends AbstractElementHandler {
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception
|
||||||
{
|
{
|
||||||
PackoutItem detail = packout.getCurrentPackoutItem();
|
PackoutItem detail = packout.getCurrentPackoutItem();
|
||||||
Env.setContext(packout.getCtx(), DataElementParameters.AD_TABLE_ID, (Integer)detail.getProperty(DataElementParameters.AD_TABLE_ID));
|
int tableId = 0;
|
||||||
Env.setContext(packout.getCtx(), DataElementParameters.SQL_STATEMENT, (String)detail.getProperty(DataElementParameters.SQL_STATEMENT));
|
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);
|
this.create(packout.getCtx(), packoutHandler);
|
||||||
packout.getCtx().remove(DataElementParameters.AD_TABLE_ID);
|
packout.getCtx().ctx.remove(DataElementParameters.AD_TABLE_ID);
|
||||||
packout.getCtx().remove(DataElementParameters.SQL_STATEMENT);
|
packout.getCtx().ctx.remove(DataElementParameters.SQL_STATEMENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,12 +20,12 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -48,7 +48,7 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> formats = new ArrayList<Integer>();
|
private List<Integer> formats = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_ImpFormat.Table_Name);
|
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);
|
X_AD_ImpFormat mImpFormat = findPO(ctx, element);
|
||||||
if (mImpFormat == null) {
|
if (mImpFormat == null) {
|
||||||
int id = findIdByName(ctx, "AD_ImpFormat", name);
|
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));
|
getTrxName(ctx));
|
||||||
}
|
}
|
||||||
PoFiller filler = new PoFiller(ctx, mImpFormat, element, this);
|
PoFiller filler = new PoFiller(ctx, mImpFormat, element, this);
|
||||||
|
@ -70,6 +70,7 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,27 +90,37 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mImpFormat.getName(), mImpFormat
|
logImportDetail(ctx, impDetail, 0, mImpFormat.getName(), mImpFormat
|
||||||
.get_ID(), action);
|
.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 {
|
throws SAXException {
|
||||||
int import_id = Env.getContextAsInt(ctx,
|
int import_id = Env.getContextAsInt(ctx.ctx,
|
||||||
X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID);
|
X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID);
|
||||||
|
|
||||||
if (formats.contains(import_id))
|
if (formats.contains(import_id))
|
||||||
return;
|
return;
|
||||||
formats.add(import_id);
|
formats.add(import_id);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
X_AD_ImpFormat m_ImpFormat = new X_AD_ImpFormat(ctx, import_id, null);
|
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");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_ImpFormat.Table_Name, atts);
|
document.startElement("", "", I_AD_ImpFormat.Table_Name, atts);
|
||||||
createImpFormatBinding(ctx, document, m_ImpFormat);
|
createImpFormatBinding(ctx, document, m_ImpFormat);
|
||||||
|
}
|
||||||
|
|
||||||
String sql = "SELECT * FROM AD_ImpFormat_Row WHERE AD_ImpFormat_ID= "
|
String sql = "SELECT * FROM AD_ImpFormat_Row WHERE AD_ImpFormat_ID= "
|
||||||
+ import_id;
|
+ import_id;
|
||||||
|
@ -130,20 +141,23 @@ public class ImpFormatElementHandler extends AbstractElementHandler {
|
||||||
} finally {
|
} finally {
|
||||||
DB.close(rs, pstmt);
|
DB.close(rs, pstmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (createElement) {
|
||||||
document.endElement("", "", I_AD_ImpFormat.Table_Name);
|
document.endElement("", "", I_AD_ImpFormat.Table_Name);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createImpFormatRow(Properties ctx,
|
private void createImpFormatRow(PIPOContext ctx,
|
||||||
TransformerHandler document, int AD_ImpFormat_Row_ID)
|
TransformerHandler document, int AD_ImpFormat_Row_ID)
|
||||||
throws SAXException {
|
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);
|
AD_ImpFormat_Row_ID);
|
||||||
rowHandler.create(ctx, document);
|
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) {
|
X_AD_ImpFormat m_ImpFormat) {
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_ImpFormat);
|
PoExporter filler = new PoExporter(ctx, document, m_ImpFormat);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_ImpFormat.Table_Name);
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
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;
|
String action = null;
|
||||||
List<String> excludes = defaultExcludeList(X_AD_ImpFormat_Row.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_ImpFormat_Row.Table_Name);
|
||||||
|
@ -57,20 +57,21 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
Element e = element.properties.get(I_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_ID);
|
Element e = element.properties.get(I_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_ID);
|
||||||
if (ReferenceUtils.isIDLookup(e) || ReferenceUtils.isUUIDLookup(e))
|
if (ReferenceUtils.isIDLookup(e) || ReferenceUtils.isUUIDLookup(e))
|
||||||
impFormatId = ReferenceUtils.resolveReference(ctx, e, getTrxName(ctx));
|
impFormatId = ReferenceUtils.resolveReference(ctx.ctx, e, getTrxName(ctx));
|
||||||
else
|
else
|
||||||
impFormatId = findIdByName(ctx, "AD_ImpFormat", e.contents.toString());
|
impFormatId = findIdByName(ctx, "AD_ImpFormat", e.contents.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (impFormatId <= 0) {
|
if (impFormatId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_ImpFormat_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Element tableElement = element.properties.get(I_AD_ImpFormat.COLUMNNAME_AD_Table_ID);
|
Element tableElement = element.properties.get(I_AD_ImpFormat.COLUMNNAME_AD_Table_ID);
|
||||||
int tableId = 0;
|
int tableId = 0;
|
||||||
if (ReferenceUtils.isIDLookup(tableElement) || ReferenceUtils.isUUIDLookup(tableElement)) {
|
if (ReferenceUtils.isIDLookup(tableElement) || ReferenceUtils.isUUIDLookup(tableElement)) {
|
||||||
tableId = ReferenceUtils.resolveReference(ctx, tableElement, getTrxName(ctx));
|
tableId = ReferenceUtils.resolveReference(ctx.ctx, tableElement, getTrxName(ctx));
|
||||||
} else {
|
} else {
|
||||||
String tableName = getStringValue(element, I_AD_ImpFormat.COLUMNNAME_AD_Table_ID, excludes);
|
String tableName = getStringValue(element, I_AD_ImpFormat.COLUMNNAME_AD_Table_ID, excludes);
|
||||||
|
|
||||||
|
@ -79,6 +80,7 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
if (tableId <= 0) {
|
if (tableId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Table_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,7 +88,7 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
||||||
Element columnElement = element.properties.get(I_AD_ImpFormat_Row.COLUMNNAME_AD_Column_ID);
|
Element columnElement = element.properties.get(I_AD_ImpFormat_Row.COLUMNNAME_AD_Column_ID);
|
||||||
int columnId = 0;
|
int columnId = 0;
|
||||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||||
columnId = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
columnId = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||||
} else {
|
} else {
|
||||||
String columnName = getStringValue(element, I_AD_ImpFormat_Row.COLUMNNAME_AD_Column_ID, excludes);
|
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) {
|
if (columnId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Column_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuffer sqlB = new StringBuffer ("SELECT AD_ImpFormat_Row_ID FROM AD_ImpFormat_Row WHERE AD_Column_ID=? AND AD_ImpFormat_ID=?");
|
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);
|
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_Column_ID(columnId);
|
||||||
mImpFormatRow.setAD_ImpFormat_ID(impFormatId);
|
mImpFormatRow.setAD_ImpFormat_ID(impFormatId);
|
||||||
|
@ -115,6 +118,7 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,18 +137,25 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
logImportDetail (ctx, impDetail, 0, mImpFormatRow.getName(), mImpFormatRow.get_ID(),action);
|
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 {
|
throws SAXException {
|
||||||
int AD_ImpFormat_Row_ID = Env.getContextAsInt(ctx, X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID);
|
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, AD_ImpFormat_Row_ID, getTrxName(ctx));
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("","",I_AD_ImpFormat_Row.Table_Name,atts);
|
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);
|
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);
|
PoExporter filler = new PoExporter(ctx, document, m_ImpFormat_Row);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_ImpFormat_Row.Table_Name);
|
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());
|
int tableId = DB.getSQLValue(null, sql,m_ImpFormat_Row.getAD_Column_ID());
|
||||||
filler.addTableReference("AD_Table_ID", "AD_Table", "TableName", tableId, new AttributesImpl());
|
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,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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.ResultSet;
|
||||||
import java.sql.ResultSetMetaData;
|
import java.sql.ResultSetMetaData;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
@ -28,6 +27,7 @@ import javax.xml.transform.sax.TransformerHandler;
|
||||||
import org.adempiere.exceptions.DBException;
|
import org.adempiere.exceptions.DBException;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -52,7 +52,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class MenuElementHandler extends AbstractElementHandler {
|
public class MenuElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Menu.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Menu.Table_Name);
|
||||||
|
@ -61,7 +61,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
if (mMenu == null) {
|
if (mMenu == null) {
|
||||||
String menuName = getStringValue(element, "Name");
|
String menuName = getStringValue(element, "Name");
|
||||||
int menuId = findIdByColumn(ctx, "AD_Menu", "Name", menuName);
|
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);
|
PoFiller filler = new PoFiller(ctx, mMenu, element, this);
|
||||||
|
|
||||||
|
@ -73,6 +73,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
List<String> notFounds = filler.autoFill(excludes);
|
List<String> notFounds = filler.autoFill(excludes);
|
||||||
if (notFounds.size() > 0) {
|
if (notFounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notFounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,7 +109,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
int parentId = 0;
|
int parentId = 0;
|
||||||
if (parentElement != null) {
|
if (parentElement != null) {
|
||||||
if (ReferenceUtils.isIDLookup(parentElement) || ReferenceUtils.isUUIDLookup(parentElement)) {
|
if (ReferenceUtils.isIDLookup(parentElement) || ReferenceUtils.isUUIDLookup(parentElement)) {
|
||||||
parentId = ReferenceUtils.resolveReference(ctx, parentElement, getTrxName(ctx));
|
parentId = ReferenceUtils.resolveReference(ctx.ctx, parentElement, getTrxName(ctx));
|
||||||
} else {
|
} else {
|
||||||
String parent = getStringValue(element, "Parent_ID");
|
String parent = getStringValue(element, "Parent_ID");
|
||||||
parentId = findIdByName(ctx, "AD_Menu", parent);
|
parentId = findIdByName(ctx, "AD_Menu", parent);
|
||||||
|
@ -116,11 +117,12 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuffer updateSQL = null;
|
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();
|
+ " AND Node_ID = " + mMenu.getAD_Menu_ID();
|
||||||
int countRecords = DB.getSQLValue(getTrxName(ctx), sql);
|
int countRecords = DB.getSQLValue(getTrxName(ctx), sql);
|
||||||
if (countRecords > 0) {
|
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 =?";
|
+ " Node_ID =?";
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
@ -154,9 +156,9 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
colValue = obj == null ? "" : obj.toString();
|
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_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_Table_ID(tableID);
|
||||||
backup.setAD_Column_ID(columnID);
|
backup.setAD_Column_ID(columnID);
|
||||||
backup.setAD_Reference_ID(referenceID);
|
backup.setAD_Reference_ID(referenceID);
|
||||||
|
@ -175,26 +177,30 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
updateSQL = new StringBuffer("UPDATE AD_TREENODEMM ").append(
|
updateSQL = new StringBuffer("UPDATE AD_TREENODEMM ").append(
|
||||||
"SET Parent_ID = " + parentId).append(
|
"SET Parent_ID = " + parentId).append(
|
||||||
" , SeqNo = " + getStringValue(element, "SeqNo")).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());
|
" AND Node_ID = " + mMenu.getAD_Menu_ID());
|
||||||
} else {
|
} else {
|
||||||
updateSQL = new StringBuffer("Insert INTO AD_TREENODEMM").append(
|
updateSQL = new StringBuffer("Insert INTO AD_TREENODEMM").append(
|
||||||
"(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, ").append(
|
"(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, ").append(
|
||||||
"Parent_ID, SeqNo, AD_Tree_ID, Node_ID)").append(
|
"Parent_ID, SeqNo, AD_Tree_ID, Node_ID)").append(
|
||||||
"VALUES(0, 0, 0, 0, ").append(
|
"VALUES(0, 0, 0, 0, ").append(
|
||||||
parentId + "," + getStringValue(element, "SeqNo") + ", 10, "
|
parentId + "," + getStringValue(element, "SeqNo") + ", "+AD_Tree_ID+", "
|
||||||
+ mMenu.getAD_Menu_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 {
|
throws SAXException {
|
||||||
int AD_Menu_ID = Env.getContextAsInt(ctx, "AD_Menu_ID");
|
int AD_Menu_ID = Env.getContextAsInt(ctx.ctx, "AD_Menu_ID");
|
||||||
X_AD_Menu m_Menu = new X_AD_Menu(ctx, AD_Menu_ID, null);
|
X_AD_Menu m_Menu = new X_AD_Menu(ctx.ctx, AD_Menu_ID, null);
|
||||||
if (m_Menu.isSummary() == false) {
|
if (m_Menu.isSummary() == false) {
|
||||||
createApplication(ctx, document, AD_Menu_ID);
|
createApplication(ctx, document, AD_Menu_ID);
|
||||||
} else {
|
} 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) {
|
X_AD_Menu m_Menu) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Menu);
|
PoExporter filler = new PoExporter(ctx, document, m_Menu);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Menu.Table_Name);
|
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());
|
int id = DB.getSQLValue(null, sql, m_Menu.getAD_Menu_ID());
|
||||||
if (id > 0) {
|
if (id > 0) {
|
||||||
filler.addTableReference("Parent_ID", "AD_Menu", "Name", id, new AttributesImpl());
|
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());
|
int seqNo = DB.getSQLValue(null, sql, m_Menu.getAD_Menu_ID());
|
||||||
filler.addString("SeqNo", Integer.toString(seqNo), new AttributesImpl());
|
filler.addString("SeqNo", Integer.toString(seqNo), new AttributesImpl());
|
||||||
if (m_Menu.getAD_Menu_ID() <= PackOut.MAX_OFFICIAL_ID)
|
if (m_Menu.getAD_Menu_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||||
|
@ -226,16 +233,16 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
filler.export(excludes);
|
filler.export(excludes);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createApplication(Properties ctx, TransformerHandler document,
|
private void createApplication(PIPOContext ctx, TransformerHandler document,
|
||||||
int AD_Menu_ID) throws SAXException {
|
int AD_Menu_ID) throws SAXException {
|
||||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
PackOut packOut = ctx.packOut;
|
||||||
String sql = null;
|
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, "
|
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 "
|
+ "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 = "
|
+ "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;
|
PreparedStatement pstmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
@ -244,7 +251,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
while (rs.next()) {
|
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);
|
null);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
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 {
|
int menu_id) throws SAXException {
|
||||||
PackOut packOut = (PackOut)ctx.get("PackOutProcess");
|
PackOut packOut = ctx.packOut;
|
||||||
String sql = null;
|
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, "
|
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 "
|
+ "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 = "
|
+ "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;
|
PreparedStatement pstmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
@ -311,7 +319,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
// Menu tag Start.
|
// 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);
|
null);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
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
|
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);
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -41,15 +41,15 @@ public class MessageElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> messages = new ArrayList<Integer>();
|
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");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
MMessage mMessage = findPO(ctx, element);
|
MMessage mMessage = findPO(ctx, element);
|
||||||
if (mMessage == null) {
|
if (mMessage == null) {
|
||||||
String value = getStringValue(element, "Value");
|
String value = getStringValue(element, "Value");
|
||||||
int id = findIdByColumn(ctx, "AD_Message", "value", 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);
|
PoFiller filler = new PoFiller(ctx, mMessage, element, this);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Message.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Message.Table_Name);
|
||||||
|
@ -57,6 +57,7 @@ public class MessageElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,7 +80,7 @@ public class MessageElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
logImportDetail (ctx, impDetail, 0, mMessage.getValue(), mMessage.get_ID(),action);
|
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 {
|
} 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 {
|
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))
|
if (messages.contains(AD_Message_ID))
|
||||||
return;
|
return;
|
||||||
messages.add(AD_Message_ID);
|
messages.add(AD_Message_ID);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
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");
|
addTypeName(atts, "table");
|
||||||
document.startElement("","",I_AD_Message.Table_Name,atts);
|
document.startElement("","",I_AD_Message.Table_Name,atts);
|
||||||
createMessageBinding(ctx,document,m_Message);
|
createMessageBinding(ctx,document,m_Message);
|
||||||
document.endElement("","",I_AD_Message.Table_Name);
|
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);
|
PoExporter filler = new PoExporter(ctx, document, m_Message);
|
||||||
if (m_Message.getAD_Message_ID() <= PackOut.MAX_OFFICIAL_ID)
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.PoFiller;
|
import org.adempiere.pipo2.PoFiller;
|
||||||
|
@ -38,7 +38,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class OrgRoleElementHandler extends AbstractElementHandler {
|
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);
|
List<String> excludes = defaultExcludeList(X_AD_Role_OrgAccess.Table_Name);
|
||||||
|
|
||||||
X_AD_Role_OrgAccess po = findPO(ctx, element);
|
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);
|
roleId = getParentId(element, I_AD_Role.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element roleElement = element.properties.get("AD_Role_ID");
|
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");
|
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})
|
po = query.setParameters(new Object[]{roleId, orgId})
|
||||||
.setClient_ID()
|
.setClient_ID()
|
||||||
.<X_AD_Role_OrgAccess>first();
|
.<X_AD_Role_OrgAccess>first();
|
||||||
|
|
||||||
if (po == null) {
|
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_Org_ID(orgId);
|
||||||
po.setAD_Role_ID(roleId);
|
po.setAD_Role_ID(roleId);
|
||||||
}
|
}
|
||||||
|
@ -72,37 +78,46 @@ public class OrgRoleElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
po.saveEx();
|
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 {
|
throws SAXException {
|
||||||
int AD_Org_ID = Env.getContextAsInt(ctx, "AD_Org_ID");
|
int AD_Org_ID = Env.getContextAsInt(ctx.ctx, "AD_Org_ID");
|
||||||
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Role_OrgAccess.Table_Name, atts);
|
document.startElement("", "", I_AD_Role_OrgAccess.Table_Name, atts);
|
||||||
createOrgAccessBinding(ctx, document, AD_Org_ID, AD_Role_ID);
|
createOrgAccessBinding(ctx, document, po);
|
||||||
document.endElement("", "", I_AD_Role_OrgAccess.Table_Name);
|
document.endElement("", "", I_AD_Role_OrgAccess.Table_Name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createOrgAccessBinding(Properties ctx, TransformerHandler document,
|
private void createOrgAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
int orgId, int roleId) {
|
X_AD_Role_OrgAccess po) {
|
||||||
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();
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, po);
|
PoExporter filler = new PoExporter(ctx, document, po);
|
||||||
AttributesImpl orgRefAtts = new AttributesImpl();
|
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);
|
filler.addString("AD_Org_ID", orgReference, orgRefAtts);
|
||||||
|
|
||||||
AttributesImpl roleRefAtts = new AttributesImpl();
|
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);
|
filler.addString("AD_Role_ID", roleReference, roleRefAtts);
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Role_OrgAccess.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Role_OrgAccess.Table_Name);
|
||||||
|
|
|
@ -17,11 +17,11 @@
|
||||||
package org.adempiere.pipo2.handler;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -38,21 +38,22 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class PreferenceElementHandler extends AbstractElementHandler {
|
public class PreferenceElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Preference.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Preference.Table_Name);
|
||||||
MPreference mPreference = findPO(ctx, element);
|
MPreference mPreference = findPO(ctx, element);
|
||||||
if (mPreference == null) {
|
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);
|
PoFiller filler = new PoFiller(ctx, mPreference, element, this);
|
||||||
List<String> notFounds = filler.autoFill(excludes);
|
List<String> notFounds = filler.autoFill(excludes);
|
||||||
if (notFounds.size() > 0) {
|
if (notFounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notFounds.toString();
|
||||||
return;
|
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
|
MPreference tmp = query
|
||||||
.setParameters(new Object[]{mPreference.getAttribute(), mPreference.getAD_User_ID(), mPreference.getAD_Window_ID()})
|
.setParameters(new Object[]{mPreference.getAttribute(), mPreference.getAD_User_ID(), mPreference.getAD_Window_ID()})
|
||||||
.first();
|
.first();
|
||||||
|
@ -61,6 +62,7 @@ public class PreferenceElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mPreference = tmp;
|
mPreference = tmp;
|
||||||
|
@ -70,6 +72,7 @@ public class PreferenceElementHandler extends AbstractElementHandler {
|
||||||
List<String> notFounds = filler.autoFill(excludes);
|
List<String> notFounds = filler.autoFill(excludes);
|
||||||
if (notFounds.size() > 0) {
|
if (notFounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notFounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,28 +97,35 @@ public class PreferenceElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mPreference.getAttribute(),
|
logImportDetail(ctx, impDetail, 0, mPreference.getAttribute(),
|
||||||
mPreference.get_ID(), action);
|
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 {
|
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.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));
|
AD_Preference_ID, getTrxName(ctx));
|
||||||
|
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (m_Preference.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Preference.Table_Name, atts);
|
document.startElement("", "", X_AD_Preference.Table_Name, atts);
|
||||||
createPreferenceBinding(ctx, document, m_Preference);
|
createPreferenceBinding(ctx, document, m_Preference);
|
||||||
document.endElement("", "", I_AD_Preference.Table_Name);
|
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) {
|
X_AD_Preference m_Preference) {
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Preference);
|
PoExporter filler = new PoExporter(ctx, document, m_Preference);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Preference.Table_Name);
|
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,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.DBException;
|
import org.adempiere.exceptions.DBException;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoFiller;
|
import org.adempiere.pipo2.PoFiller;
|
||||||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
import org.adempiere.pipo2.exception.POSaveFailedException;
|
||||||
import org.compiere.model.I_AD_PrintFormat;
|
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_PrintPaper;
|
||||||
|
import org.compiere.model.I_AD_Table;
|
||||||
import org.compiere.model.X_AD_Package_Exp_Detail;
|
import org.compiere.model.X_AD_Package_Exp_Detail;
|
||||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||||
import org.compiere.model.X_AD_PrintFormat;
|
import org.compiere.model.X_AD_PrintFormat;
|
||||||
import org.compiere.model.X_AD_PrintFormatItem;
|
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.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
@ -48,14 +50,14 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> formats = new ArrayList<Integer>();
|
private List<Integer> formats = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
X_AD_PrintFormat mPrintFormat = findPO(ctx, element);
|
X_AD_PrintFormat mPrintFormat = findPO(ctx, element);
|
||||||
if (mPrintFormat == null) {
|
if (mPrintFormat == null) {
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "Name");
|
||||||
int id = findIdByColumn(ctx, "AD_PrintFormat", "Name", 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);
|
PoFiller filler = new PoFiller(ctx, mPrintFormat, element, this);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_PrintFormat.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_PrintFormat.Table_Name);
|
||||||
|
@ -65,6 +67,7 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,17 +88,17 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mPrintFormat.getName(),
|
logImportDetail(ctx, impDetail, 0, mPrintFormat.getName(),
|
||||||
mPrintFormat.get_ID(), action);
|
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 {
|
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);
|
X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID);
|
||||||
|
|
||||||
if (formats.contains(AD_PrintFormat_ID))
|
if (formats.contains(AD_PrintFormat_ID))
|
||||||
|
@ -103,17 +106,48 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
||||||
formats.add(AD_PrintFormat_ID);
|
formats.add(AD_PrintFormat_ID);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
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) {
|
if (m_Printformat.getAD_PrintPaper_ID() > 0) {
|
||||||
try {
|
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) {
|
} catch (Exception e) {
|
||||||
throw new SAXException(e);
|
throw new SAXException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_PrintFormat.Table_Name, atts);
|
document.startElement("", "", I_AD_PrintFormat.Table_Name, atts);
|
||||||
createPrintFormatBinding(ctx, document, m_Printformat);
|
createPrintFormatBinding(ctx, document, m_Printformat);
|
||||||
|
}
|
||||||
|
|
||||||
String sql = "SELECT AD_PrintFormatItem_ID FROM AD_PrintFormatItem WHERE AD_PrintFormat_ID= "
|
String sql = "SELECT AD_PrintFormatItem_ID FROM AD_PrintFormatItem WHERE AD_PrintFormat_ID= "
|
||||||
+ m_Printformat.getAD_PrintFormat_ID()
|
+ m_Printformat.getAD_PrintFormat_ID()
|
||||||
|
@ -131,21 +165,23 @@ public class PrintFormatElementHandler extends AbstractElementHandler {
|
||||||
} finally {
|
} finally {
|
||||||
DB.close(rs, pstmt);
|
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 {
|
int AD_PrintFormatItem_ID) throws SAXException {
|
||||||
try {
|
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) {
|
} catch (Exception e) {
|
||||||
throw new SAXException(e);
|
throw new SAXException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createPrintFormatBinding(Properties ctx, TransformerHandler document,
|
private void createPrintFormatBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
X_AD_PrintFormat m_Printformat) {
|
MPrintFormat m_Printformat) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Printformat);
|
PoExporter filler = new PoExporter(ctx, document, m_Printformat);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_PrintFormat.Table_Name);
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_PrintFormatItem.Table_Name);
|
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);
|
parentId = getParentId(element, I_AD_PrintFormatItem.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element pfElement = element.properties.get(I_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormat_ID);
|
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) {
|
if (parentId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_PrintFormat_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "Name");
|
||||||
int id = findIdByNameAndParentId(ctx, "AD_PrintFormatItem", name, "AD_PrintFormat", parentId);
|
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);
|
mPrintFormatItem.setAD_PrintFormat_ID(parentId);
|
||||||
excludes.add(I_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormat_ID);
|
excludes.add(I_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormat_ID);
|
||||||
}
|
}
|
||||||
|
@ -79,10 +80,10 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
||||||
int columnId = 0;
|
int columnId = 0;
|
||||||
Element columnElement = element.properties.get("AD_Column_ID");
|
Element columnElement = element.properties.get("AD_Column_ID");
|
||||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||||
columnId = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
columnId = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||||
} else {
|
} else {
|
||||||
Element tableElement = element.properties.get("AD_Table_ID");
|
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");
|
String columnName = getStringValue(element, "AD_Column_ID");
|
||||||
columnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnName,
|
columnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnName,
|
||||||
"AD_Table", tableId);
|
"AD_Table", tableId);
|
||||||
|
@ -92,7 +93,7 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
excludes.add("AD_PrintFormatChild_ID");
|
excludes.add("AD_PrintFormatChild_ID");
|
||||||
Element pfchildElement = element.properties.get(I_AD_PrintFormatItem.COLUMNNAME_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) {
|
if (AD_PrintFormatChild_ID > 0) {
|
||||||
mPrintFormatItem.setAD_PrintFormatChild_ID(AD_PrintFormatChild_ID);
|
mPrintFormatItem.setAD_PrintFormatChild_ID(AD_PrintFormatChild_ID);
|
||||||
} else if (pfchildElement.contents != null && pfchildElement.contents.length() > 0) {
|
} else if (pfchildElement.contents != null && pfchildElement.contents.length() > 0) {
|
||||||
|
@ -105,6 +106,7 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,20 +126,27 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mPrintFormatItem.getName(),
|
logImportDetail(ctx, impDetail, 0, mPrintFormatItem.getName(),
|
||||||
mPrintFormatItem.get_ID(), action);
|
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 {
|
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.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);
|
AD_PrintFormatItem_ID, null);
|
||||||
|
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (m_PrintFormatItem.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_PrintFormatItem.Table_Name, atts);
|
document.startElement("", "", I_AD_PrintFormatItem.Table_Name, atts);
|
||||||
|
@ -145,7 +154,7 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
||||||
document.endElement("", "", I_AD_PrintFormatItem.Table_Name);
|
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) {
|
X_AD_PrintFormatItem mPrintformatItem) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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)
|
if (mPrintformatItem.getAD_PrintFormatItem_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||||
filler.add("AD_PrintFormatItem_ID", new AttributesImpl());
|
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=?";
|
String sql = "SELECT AD_Table_ID FROM AD_Column WHERE AD_Column_ID=?";
|
||||||
int tableID = DB.getSQLValue(null, sql, mPrintformatItem.getAD_Column_ID());
|
int tableID = DB.getSQLValue(null, sql, mPrintformatItem.getAD_Column_ID());
|
||||||
AttributesImpl referenceAtts = new AttributesImpl();
|
AttributesImpl referenceAtts = new AttributesImpl();
|
||||||
String value = ReferenceUtils.getTableReference("AD_Table", "TableName", tableID, referenceAtts);
|
filler.addTableReference("AD_Table_ID", "AD_Table", "TableName", tableID, referenceAtts);
|
||||||
filler.addString("AD_Table.TableName", value, referenceAtts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
filler.export(excludes);
|
filler.export(excludes);
|
||||||
|
@ -169,9 +177,9 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler {
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -37,7 +37,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class PrintPaperElementHandler extends AbstractElementHandler {
|
public class PrintPaperElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_PrintPaper.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_PrintPaper.Table_Name);
|
||||||
|
@ -48,7 +48,7 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
||||||
String printPaperName = getStringValue(element, "Name", excludes);
|
String printPaperName = getStringValue(element, "Name", excludes);
|
||||||
int id = findIdByName(ctx, "AD_PrintPaper", printPaperName);
|
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);
|
PoFiller filler = new PoFiller(ctx, printPaper, element, this);
|
||||||
|
|
||||||
|
@ -58,6 +58,7 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,20 +77,27 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, printPaper.getName(),
|
logImportDetail(ctx, impDetail, 0, printPaper.getName(),
|
||||||
printPaper.get_ID(), action);
|
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 {
|
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.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);
|
AD_PrintPaper_ID, null);
|
||||||
|
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (printPaper.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_PrintPaper.Table_Name, atts);
|
document.startElement("", "", I_AD_PrintPaper.Table_Name, atts);
|
||||||
|
@ -97,7 +105,7 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
||||||
document.endElement("", "", I_AD_PrintPaper.Table_Name);
|
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) {
|
X_AD_PrintPaper printPaper) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, printPaper);
|
PoExporter filler = new PoExporter(ctx, document, printPaper);
|
||||||
|
@ -112,9 +120,9 @@ public class PrintPaperElementHandler extends AbstractElementHandler {
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class ProcessAccessElementHandler extends AbstractElementHandler {
|
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 roleid =0;
|
||||||
int processid =0;
|
int processid =0;
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Process_Access.Table_Name);
|
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) {
|
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
||||||
roleid = getParentId(element, I_AD_Role.Table_Name);
|
roleid = getParentId(element, I_AD_Role.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element roleElement = element.properties.get(I_AD_Process_Access.COLUMNNAME_AD_Role_ID);
|
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 processElement = element.properties.get(I_AD_Process_Access.COLUMNNAME_AD_Process_ID);
|
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();
|
po = query.setParameters(new Object[]{roleid, processid}).first();
|
||||||
if (po == null)
|
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_Process_ID(processid);
|
||||||
po.setAD_Role_ID(roleid);
|
po.setAD_Role_ID(roleid);
|
||||||
}
|
}
|
||||||
|
@ -71,38 +82,46 @@ public class ProcessAccessElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
po.saveEx();
|
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 {
|
throws SAXException {
|
||||||
int AD_Process_ID = Env.getContextAsInt(ctx, X_AD_Process.COLUMNNAME_AD_Process_ID);
|
int AD_Process_ID = Env.getContextAsInt(ctx.ctx, X_AD_Process.COLUMNNAME_AD_Process_ID);
|
||||||
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_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.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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Process_Access.Table_Name, atts);
|
document.startElement("", "", I_AD_Process_Access.Table_Name, atts);
|
||||||
createProcessAccessBinding(ctx, document, AD_Process_ID, AD_Role_ID);
|
createProcessAccessBinding(ctx, document, po);
|
||||||
document.endElement("", "", I_AD_Process_Access.Table_Name);
|
document.endElement("", "", I_AD_Process_Access.Table_Name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void createProcessAccessBinding(Properties ctx, TransformerHandler document,
|
private void createProcessAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
int process_id, int role_id) {
|
X_AD_Process_Access po) {
|
||||||
|
|
||||||
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);
|
PoExporter filler = new PoExporter(ctx, document, po);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Process_Access.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Process_Access.Table_Name);
|
||||||
filler.export(excludes);
|
filler.export(excludes);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
|
|
|
@ -18,13 +18,13 @@ package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -51,17 +51,17 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> processes = new ArrayList<Integer>();
|
private List<Integer> processes = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
X_AD_Process mProcess = findPO(ctx, element);
|
X_AD_Process mProcess = findPO(ctx, element);
|
||||||
if (mProcess == null) {
|
if (mProcess == null) {
|
||||||
String value = getStringValue(element, "Value");
|
String value = getStringValue(element, "Value");
|
||||||
|
|
||||||
// Get New process.
|
// Get New process.
|
||||||
int id = findIdByColumn(ctx, "AD_Process", "Value", value);
|
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"))
|
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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +95,7 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mProcess.getName(), mProcess
|
logImportDetail(ctx, impDetail, 0, mProcess.getName(), mProcess
|
||||||
.get_ID(), action);
|
.get_ID(), action);
|
||||||
throw new POSaveFailedException("Process");
|
throw new POSaveFailedException("Failed to save Process " + mProcess.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
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))
|
if (processes.contains(AD_Process_ID))
|
||||||
return;
|
return;
|
||||||
processes.add(AD_Process_ID);
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
|
|
||||||
|
@ -132,11 +133,22 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
||||||
ElementHandler handler = packOut.getHandler(I_AD_Workflow.Table_Name);
|
ElementHandler handler = packOut.getHandler(I_AD_Workflow.Table_Name);
|
||||||
handler.packOut(packOut,document,null,m_Process.getAD_Workflow_ID());
|
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");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Process.Table_Name, atts);
|
document.startElement("", "", I_AD_Process.Table_Name, atts);
|
||||||
createProcessBinding(ctx, document, m_Process);
|
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();
|
List<X_AD_Process_Para> paralist = query.setParameters(new Object[]{AD_Process_ID}).list();
|
||||||
for (X_AD_Process_Para para : paralist) {
|
for (X_AD_Process_Para para : paralist) {
|
||||||
if (para.getAD_Reference_ID()>0)
|
if (para.getAD_Reference_ID()>0)
|
||||||
|
@ -160,22 +172,24 @@ public class ProcessElementHandler extends AbstractElementHandler {
|
||||||
createProcessPara(ctx, document, para.getAD_Process_Para_ID());
|
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) {
|
} catch (Exception e) {
|
||||||
throw new AdempiereException(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 {
|
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);
|
AD_Process_Para_ID);
|
||||||
paraHandler.create(ctx, document);
|
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) {
|
X_AD_Process m_Process) {
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Process);
|
PoExporter filler = new PoExporter(ctx, document, m_Process);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Process.Table_Name);
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -41,12 +40,12 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class ProcessParaElementHandler extends AbstractElementHandler {
|
public class ProcessParaElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Process_Para.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Process_Para.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentDefer(element, I_AD_Process.Table_Name)) {
|
if (isParentDefer(element, I_AD_Process.Table_Name)) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
return;
|
return;
|
||||||
|
@ -54,15 +53,15 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
X_AD_Process_Para mProcessPara = findPO(ctx, element);
|
X_AD_Process_Para mProcessPara = findPO(ctx, element);
|
||||||
if (mProcessPara == null) {
|
if (mProcessPara == null) {
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "ColumnName");
|
||||||
|
|
||||||
int id = 0;
|
int id = 0;
|
||||||
int masterId = 0;
|
int masterId = 0;
|
||||||
if (getParentId(element, I_AD_Process.Table_Name) > 0) {
|
if (getParentId(element, I_AD_Process.Table_Name) > 0) {
|
||||||
masterId = getParentId(element, "process");
|
masterId = getParentId(element, I_AD_Process.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element processElement = element.properties.get(I_AD_Process_Para.COLUMNNAME_AD_Process_ID);
|
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) {
|
if (masterId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
@ -70,8 +69,8 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
id = findIdByColumnAndParentId(ctx, "AD_Process_Para", "Name", name, "AD_Process", masterId);
|
id = findIdByColumnAndParentId(ctx, "AD_Process_Para", "ColumnName", name, "AD_Process", masterId);
|
||||||
mProcessPara = new X_AD_Process_Para(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
mProcessPara = new X_AD_Process_Para(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||||
mProcessPara.setAD_Process_ID(masterId);
|
mProcessPara.setAD_Process_ID(masterId);
|
||||||
excludes.add(I_AD_Process_Para.COLUMNNAME_AD_Process_ID);
|
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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,12 +99,12 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
||||||
action = "New";
|
action = "New";
|
||||||
}
|
}
|
||||||
if (mProcessPara.save(getTrxName(ctx)) == true) {
|
if (mProcessPara.save(getTrxName(ctx)) == true) {
|
||||||
logImportDetail(ctx, impDetail, 1, mProcessPara.getName(),
|
logImportDetail(ctx, impDetail, 1, mProcessPara.getColumnName(),
|
||||||
mProcessPara.get_ID(), action);
|
mProcessPara.get_ID(), action);
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mProcessPara.getName(),
|
logImportDetail(ctx, impDetail, 0, mProcessPara.getColumnName(),
|
||||||
mProcessPara.get_ID(), action);
|
mProcessPara.get_ID(), action);
|
||||||
throw new POSaveFailedException("ProcessPara");
|
throw new POSaveFailedException("Failed to save ProcessPara " + mProcessPara.getColumnName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
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.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));
|
AD_Process_Para_ID, getTrxName(ctx));
|
||||||
|
|
||||||
if (m_Processpara.getAD_Element_ID() > 0) {
|
if (m_Processpara.getAD_Element_ID() > 0) {
|
||||||
PackOut packOut = getPackOut(ctx);
|
PackOut packOut = ctx.packOut;
|
||||||
ElementHandler handler = packOut.getHandler(I_AD_Element.Table_Name);
|
ElementHandler handler = packOut.getHandler(I_AD_Element.Table_Name);
|
||||||
try {
|
try {
|
||||||
handler.packOut(packOut,document,null,m_Processpara.getAD_Element_ID());
|
handler.packOut(packOut,document,null,m_Processpara.getAD_Element_ID());
|
||||||
} catch (Exception e) {
|
} 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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
|
@ -138,7 +144,7 @@ public class ProcessParaElementHandler extends AbstractElementHandler {
|
||||||
document.endElement("", "", I_AD_Process_Para.Table_Name);
|
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) {
|
X_AD_Process_Para m_Processpara) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -51,17 +51,17 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> references = new ArrayList<Integer>();
|
private List<Integer> references = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "Name");
|
||||||
|
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
|
|
||||||
X_AD_Reference mReference = findPO(ctx, element);
|
X_AD_Reference mReference = findPO(ctx, element);
|
||||||
if (mReference == null) {
|
if (mReference == null) {
|
||||||
int id = findIdByName(ctx, "AD_Reference", name);
|
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);
|
List<String> excludes = defaultExcludeList(X_AD_Reference.Table_Name);
|
||||||
if (mReference.getAD_Reference_ID() == 0 && isOfficialId(element, "AD_Reference_ID"))
|
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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +97,7 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mReference.getName(),
|
logImportDetail(ctx, impDetail, 0, mReference.getName(),
|
||||||
mReference.get_ID(), action);
|
mReference.get_ID(), action);
|
||||||
throw new POSaveFailedException("Reference");
|
throw new POSaveFailedException("Failed to save Reference " + mReference.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
throws SAXException {
|
||||||
int Reference_id = Env.getContextAsInt(ctx,
|
int Reference_id = Env.getContextAsInt(ctx.ctx,
|
||||||
X_AD_Reference.COLUMNNAME_AD_Reference_ID);
|
X_AD_Reference.COLUMNNAME_AD_Reference_ID);
|
||||||
|
|
||||||
if (references.contains(Reference_id))
|
if (references.contains(Reference_id))
|
||||||
|
@ -118,11 +119,20 @@ public class ReferenceElementHandler extends AbstractElementHandler {
|
||||||
references.add(Reference_id);
|
references.add(Reference_id);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
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));
|
||||||
|
|
||||||
|
boolean createElement = true;
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (m_Reference.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
createElement = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (createElement) {
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Reference.Table_Name, atts);
|
document.startElement("", "", I_AD_Reference.Table_Name, atts);
|
||||||
createReferenceBinding(ctx, document, m_Reference);
|
createReferenceBinding(ctx, document, m_Reference);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_Reference.getValidationType().compareTo("L") == 0) {
|
if (m_Reference.getValidationType().compareTo("L") == 0) {
|
||||||
String sql1 = "SELECT AD_REF_LIST_ID FROM AD_Ref_List WHERE AD_Reference_ID= "
|
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) {
|
} else if (m_Reference.getValidationType().compareTo("T") == 0) {
|
||||||
createReferenceTable(ctx, document, Reference_id);
|
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 {
|
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);
|
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)
|
TransformerHandler document, int AD_Ref_List_ID)
|
||||||
throws SAXException {
|
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);
|
AD_Ref_List_ID);
|
||||||
listHandler.create(ctx, document);
|
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) {
|
X_AD_Reference m_Reference) {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Reference.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Reference.Table_Name);
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Reference);
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -38,15 +38,15 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class ReferenceListElementHandler extends AbstractElementHandler {
|
public class ReferenceListElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentSkip(element, null)) {
|
/*if (isParentSkip(element, null)) {
|
||||||
element.skip = true;
|
element.skip = true;
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
X_AD_Ref_List mRefList = findPO(ctx, element);
|
X_AD_Ref_List mRefList = findPO(ctx, element);
|
||||||
if (mRefList == null) {
|
if (mRefList == null) {
|
||||||
|
@ -56,11 +56,11 @@ public class ReferenceListElementHandler extends AbstractElementHandler {
|
||||||
AD_Reference_ID = getParentId(element, I_AD_Reference.Table_Name);
|
AD_Reference_ID = getParentId(element, I_AD_Reference.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element referenceElement = element.properties.get(I_AD_Ref_List.COLUMNNAME_AD_Reference_ID);
|
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);
|
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"))
|
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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +91,7 @@ public class ReferenceListElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mRefList.getName(),
|
logImportDetail(ctx, impDetail, 0, mRefList.getName(),
|
||||||
mRefList.get_ID(), action);
|
mRefList.get_ID(), action);
|
||||||
throw new POSaveFailedException("ReferenceList");
|
throw new POSaveFailedException("Failed to save ReferenceList " + mRefList.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
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.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));
|
getTrxName(ctx));
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (m_Ref_List.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Ref_List.Table_Name, atts);
|
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);
|
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) {
|
X_AD_Ref_List m_Ref_List) {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Ref_List.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Ref_List.Table_Name);
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Ref_List);
|
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,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
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.I_AD_Reference;
|
||||||
import org.compiere.model.X_AD_Package_Imp_Detail;
|
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||||
import org.compiere.model.X_AD_Ref_Table;
|
import org.compiere.model.X_AD_Ref_Table;
|
||||||
|
import org.compiere.model.X_AD_Reference;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
@ -42,13 +43,13 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class ReferenceTableElementHandler extends AbstractElementHandler {
|
public class ReferenceTableElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
List<String > excludes = defaultExcludeList(X_AD_Ref_Table.Table_Name);
|
List<String > excludes = defaultExcludeList(X_AD_Ref_Table.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentSkip(element, null)) {
|
if (isParentSkip(element, null)) {
|
||||||
element.skip = true;
|
element.skip = true;
|
||||||
return;
|
return;
|
||||||
|
@ -61,7 +62,7 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
||||||
AD_Reference_ID = getParentId(element, I_AD_Reference.Table_Name);
|
AD_Reference_ID = getParentId(element, I_AD_Reference.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element referenceElement = element.properties.get(I_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
|
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"))
|
if (AD_Reference_ID <= 0 && isOfficialId(element, "AD_Reference_ID"))
|
||||||
AD_Reference_ID = getIntValue(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);
|
pstmt.setInt(1, AD_Reference_ID);
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
if (rs.next()) {
|
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 {
|
} 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) {
|
} catch (Exception e) {
|
||||||
throw new DatabaseAccessException(e.getLocalizedMessage(), e);
|
throw new DatabaseAccessException(e.getLocalizedMessage(), e);
|
||||||
|
@ -89,13 +90,14 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int tableId = refTable.getAD_Table_ID();
|
int tableId = refTable.getAD_Table_ID();
|
||||||
Element displayElement = element.properties.get("AD_Display");
|
Element displayElement = element.properties.get("AD_Display");
|
||||||
int displayColumnId = 0;
|
int displayColumnId = 0;
|
||||||
if (ReferenceUtils.isIDLookup(displayElement) || ReferenceUtils.isUUIDLookup(displayElement)) {
|
if (ReferenceUtils.isIDLookup(displayElement) || ReferenceUtils.isUUIDLookup(displayElement)) {
|
||||||
displayColumnId = ReferenceUtils.resolveReference(ctx, displayElement, getTrxName(ctx));
|
displayColumnId = ReferenceUtils.resolveReference(ctx.ctx, displayElement, getTrxName(ctx));
|
||||||
} else {
|
} else {
|
||||||
displayColumnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", displayElement.contents.toString(), "AD_Table", tableId);
|
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");
|
Element keyElement = element.properties.get("AD_Key");
|
||||||
int keyColumnId = 0;
|
int keyColumnId = 0;
|
||||||
if (ReferenceUtils.isIDLookup(keyElement) || ReferenceUtils.isUUIDLookup(keyElement)) {
|
if (ReferenceUtils.isIDLookup(keyElement) || ReferenceUtils.isUUIDLookup(keyElement)) {
|
||||||
keyColumnId = ReferenceUtils.resolveReference(ctx, keyElement, getTrxName(ctx));
|
keyColumnId = ReferenceUtils.resolveReference(ctx.ctx, keyElement, getTrxName(ctx));
|
||||||
} else {
|
} else {
|
||||||
keyColumnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", keyElement.contents.toString(), "AD_Table", tableId);
|
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_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Ref_Table.Table_Name,
|
||||||
X_AD_Ref_Table.Table_ID);
|
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 {
|
} else {
|
||||||
element.skip = true;
|
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 {
|
throws SAXException {
|
||||||
int Reference_id = Env.getContextAsInt(ctx,
|
int Reference_id = Env.getContextAsInt(ctx.ctx, "AD_Reference_ID");
|
||||||
X_AD_Ref_Table.COLUMNNAME_AD_Reference_ID);
|
|
||||||
AttributesImpl atts = new AttributesImpl();
|
|
||||||
addTypeName(atts, "table");
|
|
||||||
document.startElement("", "", I_AD_Ref_Table.Table_Name, atts);
|
|
||||||
createReferenceTableBinding(ctx, document, 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) {
|
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= "
|
String sql = "SELECT * FROM AD_Ref_Table WHERE AD_Reference_ID= "
|
||||||
+ reference_ID;
|
+ reference_ID;
|
||||||
|
|
||||||
|
@ -155,7 +149,23 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
||||||
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
if (rs.next()) {
|
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);
|
PoExporter filler = new PoExporter(ctx,document,refTable);
|
||||||
List<String > excludes = defaultExcludeList(X_AD_Ref_Table.Table_Name);
|
List<String > excludes = defaultExcludeList(X_AD_Ref_Table.Table_Name);
|
||||||
excludes.add("ad_display");
|
excludes.add("ad_display");
|
||||||
|
@ -163,6 +173,8 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
||||||
filler.export(excludes);
|
filler.export(excludes);
|
||||||
filler.addTableReference("AD_Display", "AD_Column", "ColumnName", new AttributesImpl());
|
filler.addTableReference("AD_Display", "AD_Column", "ColumnName", new AttributesImpl());
|
||||||
filler.addTableReference("AD_Key", "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) {
|
} catch (Exception e) {
|
||||||
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
||||||
|
@ -176,8 +188,8 @@ public class ReferenceTableElementHandler extends AbstractElementHandler {
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -30,6 +30,7 @@ import org.adempiere.pipo2.ReferenceUtils;
|
||||||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
import org.adempiere.pipo2.exception.POSaveFailedException;
|
||||||
import org.compiere.model.I_AD_ReportView;
|
import org.compiere.model.I_AD_ReportView;
|
||||||
import org.compiere.model.I_AD_ReportView_Col;
|
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_Package_Imp_Detail;
|
||||||
import org.compiere.model.X_AD_ReportView_Col;
|
import org.compiere.model.X_AD_ReportView_Col;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
@ -39,12 +40,12 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class ReportViewColElementHandler extends AbstractElementHandler {
|
public class ReportViewColElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_ReportView_Col.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_ReportView_Col.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element,"EntityType");
|
String entitytype = getStringValue(element,"EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
excludes.add("AD_Table_ID");
|
excludes.add("AD_Table_ID");
|
||||||
X_AD_ReportView_Col mReportviewCol = findPO(ctx, element);
|
X_AD_ReportView_Col mReportviewCol = findPO(ctx, element);
|
||||||
if (mReportviewCol == null) {
|
if (mReportviewCol == null) {
|
||||||
|
@ -53,25 +54,27 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
||||||
AD_ReportView_ID = getParentId(element, I_AD_ReportView.Table_Name);
|
AD_ReportView_ID = getParentId(element, I_AD_ReportView.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element rvElement = element.properties.get(I_AD_ReportView_Col.COLUMNNAME_AD_ReportView_ID);
|
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) {
|
if (AD_ReportView_ID <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_ReportView_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AD_Column_ID = 0;
|
int AD_Column_ID = 0;
|
||||||
Element columnElement = element.properties.get(I_AD_ReportView_Col.COLUMNNAME_AD_Column_ID);
|
Element columnElement = element.properties.get(I_AD_ReportView_Col.COLUMNNAME_AD_Column_ID);
|
||||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
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 {
|
} else {
|
||||||
if (columnElement.contents != null && columnElement.contents.length() > 0) {
|
if (columnElement.contents != null && columnElement.contents.length() > 0) {
|
||||||
Element tableElement = element.properties.get("AD_Table_ID");
|
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_Column_ID = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnElement.contents.toString(),
|
||||||
"AD_Table", AD_Table_ID);
|
"AD_Table", AD_Table_ID);
|
||||||
if (AD_Column_ID <= 0) {
|
if (AD_Column_ID <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Column_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,10 +91,10 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
||||||
sql.append(" AND AD_ReportView_ID = ?");
|
sql.append(" AND AD_ReportView_ID = ?");
|
||||||
|
|
||||||
int id = DB.getSQLValue(getTrxName(ctx), sql.toString(), functionColumn, 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);
|
mReportviewCol.setAD_ReportView_ID(AD_ReportView_ID);
|
||||||
if (AD_Column_ID > 0) {
|
if (AD_Column_ID > 0) {
|
||||||
mReportviewCol.setAD_Column_ID(id);
|
mReportviewCol.setAD_Column_ID(AD_Column_ID);
|
||||||
}
|
}
|
||||||
mReportviewCol.setFunctionColumn(functionColumn);
|
mReportviewCol.setFunctionColumn(functionColumn);
|
||||||
excludes.add("FunctionColumn");
|
excludes.add("FunctionColumn");
|
||||||
|
@ -106,6 +109,7 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,7 +130,7 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, "" + mReportviewCol.getAD_ReportView_ID(),
|
logImportDetail(ctx, impDetail, 0, "" + mReportviewCol.getAD_ReportView_ID(),
|
||||||
mReportviewCol.get_ID(),action);
|
mReportviewCol.get_ID(),action);
|
||||||
throw new POSaveFailedException("ReportViewCol");
|
throw new POSaveFailedException("Failed to save ReportViewCol");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
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.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));
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
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);
|
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) {
|
X_AD_ReportView_Col m_Reportview_Col) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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());
|
filler.add("AD_ReportView_Col_ID", new AttributesImpl());
|
||||||
|
|
||||||
if (m_Reportview_Col.getAD_Column_ID() > 0) {
|
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();
|
AttributesImpl tableAtts = new AttributesImpl();
|
||||||
String value = ReferenceUtils.getTableReference("AD_Table", "TableName", AD_Table_ID, tableAtts);
|
String value = ReferenceUtils.getTableReference("AD_Table", "TableName", AD_Table_ID, tableAtts);
|
||||||
filler.addString("AD_Table_ID", value, tableAtts);
|
filler.addString("AD_Table_ID", value, tableAtts);
|
||||||
|
@ -172,8 +185,8 @@ public class ReportViewColElementHandler extends AbstractElementHandler {
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -50,7 +50,7 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> views = new ArrayList<Integer>();
|
private List<Integer> views = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_ReportView.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_ReportView.Table_Name);
|
||||||
|
@ -59,7 +59,7 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
||||||
if (mReportview == null) {
|
if (mReportview == null) {
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "Name");
|
||||||
int id = findIdByName(ctx, "AD_ReportView", 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);
|
PoFiller filler = new PoFiller(ctx, mReportview, element, this);
|
||||||
if (mReportview.getAD_ReportView_ID() == 0 && isOfficialId(element, "AD_ReportView_ID"))
|
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);
|
List<String> notfound = filler.autoFill(excludes);
|
||||||
if (notfound.size() > 0) {
|
if (notfound.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfound.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,60 +89,50 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mReportview.getName(),
|
logImportDetail(ctx, impDetail, 0, mReportview.getName(),
|
||||||
mReportview.get_ID(), action);
|
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 {
|
throws SAXException {
|
||||||
PackOut packOut = getPackOut(ctx);
|
PackOut packOut = ctx.packOut;
|
||||||
int AD_ReportView_ID = Env.getContextAsInt(ctx, "AD_ReportView_ID");
|
int AD_ReportView_ID = Env.getContextAsInt(ctx.ctx, "AD_ReportView_ID");
|
||||||
if (views.contains(AD_ReportView_ID))
|
if (views.contains(AD_ReportView_ID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
views.add(AD_ReportView_ID);
|
views.add(AD_ReportView_ID);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
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
|
// Export Table if neccessary
|
||||||
ElementHandler tableHandler = packOut.getHandler(I_AD_Table.Table_Name);
|
ElementHandler tableHandler = packOut.getHandler(I_AD_Table.Table_Name);
|
||||||
try {
|
try {
|
||||||
tableHandler.packOut(packOut, document, null, m_Reportview.getAD_Table_ID());
|
tableHandler.packOut(packOut, document, null, m_Reportview.getAD_Table_ID());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new AdempiereException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean createElement = true;
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (m_Reportview.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
createElement = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (createElement) {
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_ReportView.Table_Name, atts);
|
document.startElement("", "", I_AD_ReportView.Table_Name, atts);
|
||||||
createReportViewBinding(ctx, document, m_Reportview);
|
createReportViewBinding(ctx, document, m_Reportview);
|
||||||
document.endElement("", "", I_AD_ReportView.Table_Name);
|
}
|
||||||
|
|
||||||
String sql = "SELECT AD_PrintFormat_ID FROM AD_PrintFormat WHERE AD_ReportView_ID= "
|
String sql = "SELECT AD_ReportView_Col_ID FROM AD_ReportView_Col WHERE AD_Reportview_ID= "
|
||||||
+ AD_ReportView_ID;
|
+ AD_ReportView_ID;
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
ResultSet rs = 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 {
|
try {
|
||||||
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
|
@ -153,19 +144,40 @@ public class ReportViewElementHandler extends AbstractElementHandler {
|
||||||
} finally {
|
} finally {
|
||||||
DB.close(rs, pstmt);
|
DB.close(rs, pstmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (createElement) {
|
||||||
|
document.endElement("", "", X_AD_ReportView.Table_Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createReportViewCol(Properties ctx,
|
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(PIPOContext ctx,
|
||||||
TransformerHandler document, int AD_ReportView_Col_ID)
|
TransformerHandler document, int AD_ReportView_Col_ID)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
Env.setContext(ctx,
|
Env.setContext(ctx.ctx,
|
||||||
X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID,
|
X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID,
|
||||||
AD_ReportView_Col_ID);
|
AD_ReportView_Col_ID);
|
||||||
columnHandler.create(ctx, document);
|
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) {
|
X_AD_ReportView m_Reportview) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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
|
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);
|
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.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -61,7 +61,7 @@ public class RoleElementHandler extends AbstractElementHandler {
|
||||||
private TaskAccessElementHandler taskHandler = new TaskAccessElementHandler();
|
private TaskAccessElementHandler taskHandler = new TaskAccessElementHandler();
|
||||||
private WorkflowAccessElementHandler workflowHandler = new WorkflowAccessElementHandler();
|
private WorkflowAccessElementHandler workflowHandler = new WorkflowAccessElementHandler();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
|
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Role.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Role.Table_Name);
|
||||||
|
@ -70,7 +70,7 @@ public class RoleElementHandler extends AbstractElementHandler {
|
||||||
if (mRole == null) {
|
if (mRole == null) {
|
||||||
String name = getStringValue(element, "Name", excludes);
|
String name = getStringValue(element, "Name", excludes);
|
||||||
int id = findIdByName(ctx, "AD_Role", name);
|
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);
|
mRole.setName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ public class RoleElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,26 +102,36 @@ public class RoleElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
logImportDetail(ctx, impDetail, 0, mRole.getName(), mRole.get_ID(),
|
logImportDetail(ctx, impDetail, 0, mRole.getName(), mRole.get_ID(),
|
||||||
action);
|
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 {
|
throws SAXException {
|
||||||
int Role_id = Env.getContextAsInt(ctx,
|
int Role_id = Env.getContextAsInt(ctx.ctx,
|
||||||
X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID);
|
X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID);
|
||||||
if (roles.contains(Role_id))
|
if (roles.contains(Role_id))
|
||||||
return;
|
return;
|
||||||
roles.add(Role_id);
|
roles.add(Role_id);
|
||||||
X_AD_Role m_Role = new X_AD_Role(ctx, Role_id, null);
|
|
||||||
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Role.Table_Name, atts);
|
document.startElement("", "", I_AD_Role.Table_Name, atts);
|
||||||
createRoleBinding(ctx, document, m_Role);
|
createRoleBinding(ctx, document, m_Role);
|
||||||
|
}
|
||||||
|
|
||||||
// Process org access
|
// Process org access
|
||||||
String sql = "SELECT AD_Org_ID, AD_Role_ID FROM AD_Role_OrgAccess WHERE AD_Role_ID= "
|
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
|
// 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;
|
pstmt = null;
|
||||||
rs = null;
|
rs = null;
|
||||||
try {
|
try {
|
||||||
|
@ -241,75 +253,78 @@ public class RoleElementHandler extends AbstractElementHandler {
|
||||||
} finally {
|
} finally {
|
||||||
DB.close(rs, pstmt);
|
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 {
|
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.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_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
||||||
taskHandler.create(ctx, document);
|
taskHandler.create(ctx, document);
|
||||||
ctx.remove(X_AD_Task.COLUMNNAME_AD_Task_ID);
|
ctx.ctx.remove(X_AD_Task.COLUMNNAME_AD_Task_ID);
|
||||||
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_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 {
|
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.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_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
||||||
workflowHandler.create(ctx, document);
|
workflowHandler.create(ctx, document);
|
||||||
ctx.remove(X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
|
ctx.ctx.remove(X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
|
||||||
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_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 {
|
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.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_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
||||||
formHandler.create(ctx, document);
|
formHandler.create(ctx, document);
|
||||||
ctx.remove(X_AD_Form.COLUMNNAME_AD_Form_ID);
|
ctx.ctx.remove(X_AD_Form.COLUMNNAME_AD_Form_ID);
|
||||||
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_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 {
|
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.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_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
||||||
processHandler.create(ctx, document);
|
processHandler.create(ctx, document);
|
||||||
ctx.remove(X_AD_Process.COLUMNNAME_AD_Process_ID);
|
ctx.ctx.remove(X_AD_Process.COLUMNNAME_AD_Process_ID);
|
||||||
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_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 {
|
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.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_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
||||||
windowHandler.create(ctx, document);
|
windowHandler.create(ctx, document);
|
||||||
ctx.remove(X_AD_Window.COLUMNNAME_AD_Window_ID);
|
ctx.ctx.remove(X_AD_Window.COLUMNNAME_AD_Window_ID);
|
||||||
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_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 {
|
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.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.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
||||||
Env.setContext(ctx, "AD_Org_ID", AD_Org_ID);
|
Env.setContext(ctx.ctx, "AD_Org_ID", AD_Org_ID);
|
||||||
userHandler.create(ctx, document);
|
userHandler.create(ctx, document);
|
||||||
ctx.remove(X_AD_User.COLUMNNAME_AD_User_ID);
|
ctx.ctx.remove(X_AD_User.COLUMNNAME_AD_User_ID);
|
||||||
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
ctx.ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||||
ctx.remove("AD_Org_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 {
|
int AD_Org_ID, int AD_Role_ID) throws SAXException {
|
||||||
Env.setContext(ctx, "AD_Org_ID", AD_Org_ID);
|
Env.setContext(ctx.ctx, "AD_Org_ID", AD_Org_ID);
|
||||||
Env.setContext(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
Env.setContext(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, AD_Role_ID);
|
||||||
orgHandler.create(ctx, document);
|
orgHandler.create(ctx, document);
|
||||||
ctx.remove("AD_Org_ID");
|
ctx.ctx.remove("AD_Org_ID");
|
||||||
ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_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) {
|
X_AD_Role m_Role) {
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Role);
|
PoExporter filler = new PoExporter(ctx, document, m_Role);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Role.Table_Name);
|
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
|
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);
|
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.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PackoutItem;
|
import org.adempiere.pipo2.PackoutItem;
|
||||||
import org.adempiere.pipo2.SQLElementParameters;
|
import org.adempiere.pipo2.SQLElementParameters;
|
||||||
|
import org.compiere.model.X_AD_Package_Imp_Detail;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
@ -36,13 +37,13 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class SQLStatementElementHandler extends AbstractElementHandler {
|
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();
|
String elementValue = element.getElementValue();
|
||||||
|
|
||||||
log.info(elementValue);
|
log.info(elementValue);
|
||||||
String DBType = getStringValue(element, "DBType");
|
String DBType = getStringValue(element, "DBType");
|
||||||
String sql = getStringValue(element, "statement");
|
String sql = getStringValue(element, "statement");
|
||||||
if (sql.endsWith(";"))
|
if (sql.endsWith(";") && !(sql.toLowerCase().endsWith("end;")))
|
||||||
sql = sql.substring(0, sql.length() - 1);
|
sql = sql.substring(0, sql.length() - 1);
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
try {
|
try {
|
||||||
|
@ -52,8 +53,8 @@ public class SQLStatementElementHandler extends AbstractElementHandler {
|
||||||
log.info("Executed SQL Statement: "+ getStringValue(element, "statement") + " ReturnValue="+n);
|
log.info("Executed SQL Statement: "+ getStringValue(element, "statement") + " ReturnValue="+n);
|
||||||
}
|
}
|
||||||
else if(DB.isOracle() == true && DBType.equals("Oracle")) {
|
else if(DB.isOracle() == true && DBType.equals("Oracle")) {
|
||||||
pstmt.executeUpdate();
|
int n = pstmt.executeUpdate();
|
||||||
log.info("Executed SQL Statement for Oracle: "+ getStringValue(element, "statement"));
|
log.info("Executed SQL Statement for Oracle: "+ getStringValue(element, "statement") + " ReturnValue="+n);
|
||||||
}
|
}
|
||||||
else if ( DB.isPostgreSQL()
|
else if ( DB.isPostgreSQL()
|
||||||
&& ( DBType.equals("Postgres")
|
&& ( DBType.equals("Postgres")
|
||||||
|
@ -78,20 +79,27 @@ public class SQLStatementElementHandler extends AbstractElementHandler {
|
||||||
m_con.close();
|
m_con.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, "",
|
||||||
|
0);
|
||||||
|
logImportDetail (ctx, impDetail, 1, "SQLStatement",1,"Execute");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.log(Level.SEVERE,"SQLSatement", 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 {
|
} finally {
|
||||||
DB.close(pstmt);
|
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 {
|
throws SAXException {
|
||||||
String SQLStatement = Env.getContext(ctx, SQLElementParameters.SQL_STATEMENT);
|
String SQLStatement = Env.getContext(ctx.ctx, SQLElementParameters.SQL_STATEMENT);
|
||||||
String DBType = Env.getContext(ctx, SQLElementParameters.DB_TYPE);
|
String DBType = Env.getContext(ctx.ctx, SQLElementParameters.DB_TYPE);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "custom");
|
addTypeName(atts, "custom");
|
||||||
document.startElement("","","SQLStatement",atts);
|
document.startElement("","","SQLStatement",atts);
|
||||||
|
@ -108,7 +116,9 @@ public class SQLStatementElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
document.startElement("","","statement", new AttributesImpl());
|
document.startElement("","","statement", new AttributesImpl());
|
||||||
contents = sqlStatement.toCharArray();
|
contents = sqlStatement.toCharArray();
|
||||||
|
document.startCDATA();
|
||||||
document.characters(contents,0,contents.length);
|
document.characters(contents,0,contents.length);
|
||||||
|
document.endCDATA();
|
||||||
document.endElement("","","statement");
|
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
|
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int field) throws Exception
|
||||||
{
|
{
|
||||||
PackoutItem detail = packout.getCurrentPackoutItem();
|
PackoutItem detail = packout.getCurrentPackoutItem();
|
||||||
Env.setContext(packout.getCtx(), SQLElementParameters.SQL_STATEMENT, (String)detail.getProperty(SQLElementParameters.SQL_STATEMENT));
|
Env.setContext(packout.getCtx().ctx, 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.DB_TYPE, (String)detail.getProperty(SQLElementParameters.DB_TYPE));
|
||||||
this.create(packout.getCtx(), packoutHandler);
|
this.create(packout.getCtx(), packoutHandler);
|
||||||
packout.getCtx().remove(SQLElementParameters.SQL_STATEMENT);
|
packout.getCtx().ctx.remove(SQLElementParameters.SQL_STATEMENT);
|
||||||
packout.getCtx().remove(SQLElementParameters.DB_TYPE);
|
packout.getCtx().ctx.remove(SQLElementParameters.DB_TYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ package org.adempiere.pipo2.handler;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
@ -27,6 +26,7 @@ import javax.xml.transform.sax.TransformerHandler;
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -50,11 +50,11 @@ public class TabElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private FieldElementHandler fieldHandler = new FieldElementHandler();
|
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);
|
List<String> excludes = defaultExcludeList(X_AD_Tab.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentDefer(element, I_AD_Window.Table_Name)) {
|
if (isParentDefer(element, I_AD_Window.Table_Name)) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
return;
|
return;
|
||||||
|
@ -69,17 +69,19 @@ public class TabElementHandler extends AbstractElementHandler {
|
||||||
windowId = getParentId(element, I_AD_Window.Table_Name);
|
windowId = getParentId(element, I_AD_Window.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element windowElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_Window_ID);
|
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) {
|
if (windowId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Window_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Element tableElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_Table_ID);
|
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) {
|
if (tableId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Table_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +90,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
||||||
+ " AND AD_Table_ID = ?";
|
+ " AND AD_Table_ID = ?";
|
||||||
|
|
||||||
int id = DB.getSQLValue(getTrxName(ctx), sql, windowId, name, tableId);
|
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.setAD_Table_ID(tableId);
|
||||||
mTab.setName(name);
|
mTab.setName(name);
|
||||||
mTab.setAD_Window_ID(windowId);
|
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);
|
Element columnElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_Column_ID);
|
||||||
int AD_Column_ID = 0;
|
int AD_Column_ID = 0;
|
||||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
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){
|
} else if (columnElement.contents != null && columnElement.contents.length() > 0){
|
||||||
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
||||||
"AD_Table", mTab.getAD_Table_ID());
|
"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);
|
columnElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_ColumnSortOrder_ID);
|
||||||
AD_Column_ID = 0;
|
AD_Column_ID = 0;
|
||||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
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){
|
} else if (columnElement.contents != null && columnElement.contents.length() > 0){
|
||||||
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
||||||
"AD_Table", mTab.getAD_Table_ID());
|
"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);
|
columnElement = element.properties.get(I_AD_Tab.COLUMNNAME_AD_ColumnSortYesNo_ID);
|
||||||
AD_Column_ID = 0;
|
AD_Column_ID = 0;
|
||||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
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){
|
} else if (columnElement.contents != null && columnElement.contents.length() > 0){
|
||||||
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
AD_Column_ID = findIdByColumnAndParentId (ctx, "AD_Column","ColumnName", columnElement.contents.toString(),
|
||||||
"AD_Table", mTab.getAD_Table_ID());
|
"AD_Table", mTab.getAD_Table_ID());
|
||||||
|
@ -131,6 +133,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +153,7 @@ public class TabElementHandler extends AbstractElementHandler {
|
||||||
element.recordId = mTab.getAD_Tab_ID();
|
element.recordId = mTab.getAD_Tab_ID();
|
||||||
} else {
|
} else {
|
||||||
logImportDetail (ctx, impDetail, 0, mTab.getName(), mTab.get_ID(),action);
|
logImportDetail (ctx, impDetail, 0, mTab.getName(), mTab.get_ID(),action);
|
||||||
throw new POSaveFailedException("Tab");
|
throw new POSaveFailedException("Failed to save Tab " + mTab.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
throws SAXException {
|
||||||
PackOut packOut = getPackOut(ctx);
|
PackOut packOut = ctx.packOut;
|
||||||
int AD_Tab_ID = Env.getContextAsInt(ctx, X_AD_Tab.COLUMNNAME_AD_Tab_ID);
|
int AD_Tab_ID = Env.getContextAsInt(ctx.ctx, "AD_Tab_ID");
|
||||||
X_AD_Tab m_Tab = new X_AD_Tab (ctx, AD_Tab_ID, getTrxName(ctx));
|
|
||||||
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("","",I_AD_Tab.Table_Name,atts);
|
document.startElement("","",I_AD_Tab.Table_Name,atts);
|
||||||
createTabBinding(ctx,document,m_Tab);
|
createTabBinding(ctx,document,m_Tab);
|
||||||
|
}
|
||||||
|
|
||||||
//Fields tags.
|
//Fields tags.
|
||||||
String sql = "SELECT AD_Field_ID FROM AD_FIELD WHERE AD_TAB_ID = " + AD_Tab_ID
|
String sql = "SELECT AD_Field_ID FROM AD_FIELD WHERE AD_TAB_ID = " + AD_Tab_ID
|
||||||
+ "ORDER BY SEQNO asc";
|
+ "ORDER BY SEQNO asc";
|
||||||
|
@ -193,7 +206,10 @@ public class TabElementHandler extends AbstractElementHandler {
|
||||||
{
|
{
|
||||||
DB.close(rs, pstmt);
|
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 )
|
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 {
|
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);
|
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);
|
PoExporter filler = new PoExporter(ctx, document, m_Tab);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Tab.Table_Name);
|
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,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackIn;
|
import org.adempiere.pipo2.PackIn;
|
||||||
|
@ -49,12 +49,12 @@ public class TableElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer>tables = new ArrayList<Integer>();
|
private List<Integer>tables = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element) throws SAXException {
|
public void startElement(PIPOContext ctx, Element element) throws SAXException {
|
||||||
PackIn packIn = getPackIn(ctx);
|
PackIn packIn = ctx.packIn;
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Table.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Table.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
|
|
||||||
MTable mTable = findPO(ctx, element);
|
MTable mTable = findPO(ctx, element);
|
||||||
if (mTable == null) {
|
if (mTable == null) {
|
||||||
|
@ -70,7 +70,7 @@ public class TableElementHandler extends AbstractElementHandler {
|
||||||
return;
|
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);
|
mTable.setTableName(tableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,6 +83,7 @@ public class TableElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +106,7 @@ public class TableElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
logImportDetail (ctx, impDetail, 0, mTable.getName(), mTable.get_ID(),action);
|
logImportDetail (ctx, impDetail, 0, mTable.getName(), mTable.get_ID(),action);
|
||||||
throw new POSaveFailedException("Table");
|
throw new POSaveFailedException("Failed to save Table " + mTable.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
throws SAXException {
|
||||||
|
|
||||||
int AD_Table_ID = Env.getContextAsInt(ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID);
|
int AD_Table_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID);
|
||||||
PackOut packOut = getPackOut(ctx);
|
PackOut packOut = ctx.packOut;
|
||||||
boolean exported = isTableProcess(ctx, AD_Table_ID);
|
boolean exported = isTableProcess(ctx, AD_Table_ID);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
//Export table if not already done so
|
//Export table if not already done so
|
||||||
if (!exported){
|
if (!exported){
|
||||||
X_AD_Table m_Table = new X_AD_Table (ctx, AD_Table_ID, null);
|
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");
|
addTypeName(atts, "table");
|
||||||
document.startElement("","",I_AD_Table.Table_Name,atts);
|
document.startElement("","",I_AD_Table.Table_Name,atts);
|
||||||
createTableBinding(ctx,document,m_Table);
|
createTableBinding(ctx,document,m_Table);
|
||||||
|
}
|
||||||
|
|
||||||
String sql = "SELECT * FROM AD_Column WHERE AD_Table_ID = ? "
|
String sql = "SELECT * FROM AD_Column WHERE AD_Table_ID = ? "
|
||||||
+ " ORDER BY IsKey DESC, AD_Column_ID"; // Export key column as the first one
|
+ " ORDER BY IsKey DESC, AD_Column_ID"; // Export key column as the first one
|
||||||
|
@ -176,18 +185,21 @@ public class TableElementHandler extends AbstractElementHandler {
|
||||||
} finally {
|
} finally {
|
||||||
DB.close(rs, pstmt);
|
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 {
|
private void createColumn(PIPOContext ctx, TransformerHandler document, int AD_Column_ID) throws SAXException {
|
||||||
Env.setContext(ctx, X_AD_Column.COLUMNNAME_AD_Column_ID, AD_Column_ID);
|
Env.setContext(ctx.ctx, X_AD_Column.COLUMNNAME_AD_Column_ID, AD_Column_ID);
|
||||||
columnHandler.create(ctx, document);
|
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))
|
if (tables.contains(AD_Table_ID))
|
||||||
return true;
|
return true;
|
||||||
else {
|
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);
|
PoExporter filler = new PoExporter(ctx, document, m_Table);
|
||||||
if (m_Table.getAD_Table_ID() <= PackOut.MAX_OFFICIAL_ID)
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class TaskAccessElementHandler extends AbstractElementHandler {
|
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 roleid =0;
|
||||||
int taskid =0;
|
int taskid =0;
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Task_Access.Table_Name);
|
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) {
|
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
||||||
roleid = getParentId(element, I_AD_Role.Table_Name);
|
roleid = getParentId(element, I_AD_Role.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element roleElement = element.properties.get(I_AD_Task_Access.COLUMNNAME_AD_Role_ID);
|
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 taskElement = element.properties.get(I_AD_Task_Access.COLUMNNAME_AD_Task_ID);
|
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();
|
po = query.setParameters(new Object[]{roleid, taskid}).first();
|
||||||
if (po == null){
|
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_Role_ID(roleid);
|
||||||
po.setAD_Task_ID(taskid);
|
po.setAD_Task_ID(taskid);
|
||||||
}
|
}
|
||||||
|
@ -70,35 +81,41 @@ public class TaskAccessElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
po.saveEx();
|
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 {
|
throws SAXException {
|
||||||
int AD_Task_ID = Env.getContextAsInt(ctx, X_AD_Task.COLUMNNAME_AD_Task_ID);
|
int AD_Task_ID = Env.getContextAsInt(ctx.ctx, X_AD_Task.COLUMNNAME_AD_Task_ID);
|
||||||
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Task_Access.Table_Name, atts);
|
document.startElement("", "", I_AD_Task_Access.Table_Name, atts);
|
||||||
createTaskAccessBinding(ctx, document, AD_Task_ID, AD_Role_ID);
|
createTaskAccessBinding(ctx, document, po);
|
||||||
document.endElement("", "", I_AD_Task_Access.Table_Name);
|
document.endElement("", "", I_AD_Task_Access.Table_Name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void createTaskAccessBinding(Properties ctx, TransformerHandler document,
|
private void createTaskAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
int taskid, int roleid) {
|
X_AD_Task_Access po) {
|
||||||
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) {
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, po);
|
PoExporter filler = new PoExporter(ctx, document, po);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Task_Access.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Task_Access.Table_Name);
|
||||||
filler.export(excludes);
|
filler.export(excludes);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
|
|
|
@ -19,11 +19,11 @@ package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -41,18 +41,18 @@ public class TaskElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> tasks = new ArrayList<Integer>();
|
private List<Integer> tasks = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Task.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Task.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
|
|
||||||
MTask mTask = findPO(ctx, element);
|
MTask mTask = findPO(ctx, element);
|
||||||
if (mTask == null) {
|
if (mTask == null) {
|
||||||
String name = getStringValue(element, "Name");
|
String name = getStringValue(element, "Name");
|
||||||
int id = findIdByName(ctx, "AD_Task", 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"))
|
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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +82,7 @@ public class TaskElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mTask.getName(), mTask.get_ID(),
|
logImportDetail(ctx, impDetail, 0, mTask.getName(), mTask.get_ID(),
|
||||||
action);
|
action);
|
||||||
throw new POSaveFailedException("Task");
|
throw new POSaveFailedException("Failed to save Task " + mTask.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
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))
|
if (tasks.contains(AD_Task_ID))
|
||||||
return;
|
return;
|
||||||
tasks.add(AD_Task_ID);
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Task.Table_Name, atts);
|
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) {
|
X_AD_Task m_Task) {
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Task);
|
PoExporter filler = new PoExporter(ctx, document, m_Task);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Task.Table_Name);
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
@ -38,7 +38,8 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class UserRoleElementHandler extends AbstractElementHandler {
|
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 roleid =0;
|
||||||
int userid =0;
|
int userid =0;
|
||||||
int orgid =0;
|
int orgid =0;
|
||||||
|
@ -48,22 +49,34 @@ public class UserRoleElementHandler extends AbstractElementHandler {
|
||||||
X_AD_User_Roles po = findPO(ctx, element);
|
X_AD_User_Roles po = findPO(ctx, element);
|
||||||
if (po == null) {
|
if (po == null) {
|
||||||
Element userElement = element.properties.get(I_AD_User_Roles.COLUMNNAME_AD_User_ID);
|
Element userElement = element.properties.get(I_AD_User_Roles.COLUMNNAME_AD_User_ID);
|
||||||
userid = ReferenceUtils.resolveReference(ctx, userElement, getTrxName(ctx));
|
userid = ReferenceUtils.resolveReference(ctx.ctx, userElement, getTrxName(ctx));
|
||||||
|
if (userid <= 0) {
|
||||||
if (getParentId(element, "role") > 0) {
|
element.defer = true;
|
||||||
roleid = getParentId(element, "role");
|
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 {
|
} else {
|
||||||
Element roleElement = element.properties.get(I_AD_User_Roles.COLUMNNAME_AD_Role_ID);
|
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(I_AD_User_Roles.COLUMNNAME_AD_Org_ID);
|
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();
|
po = query.setParameters(new Object[]{userid, roleid, orgid}).first();
|
||||||
if (po == null) {
|
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_Org_ID(orgid);
|
||||||
po.setAD_Role_ID(roleid);
|
po.setAD_Role_ID(roleid);
|
||||||
po.setAD_User_ID(userid);
|
po.setAD_User_ID(userid);
|
||||||
|
@ -76,33 +89,49 @@ public class UserRoleElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
po.saveEx();
|
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 {
|
throws SAXException {
|
||||||
int AD_User_ID = Env.getContextAsInt(ctx, X_AD_User.COLUMNNAME_AD_User_ID);
|
int AD_User_ID = Env.getContextAsInt(ctx.ctx, X_AD_User.COLUMNNAME_AD_User_ID);
|
||||||
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
|
||||||
int AD_Org_ID = Env.getContextAsInt(ctx, "AD_Org_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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_User_Roles.Table_Name, atts);
|
document.startElement("", "", I_AD_User_Roles.Table_Name, atts);
|
||||||
createUserAssignBinding(ctx, document, AD_User_ID,AD_Role_ID, AD_Org_ID);
|
createUserAssignBinding(ctx, document, po);
|
||||||
document.endElement("", "", I_AD_User_Roles.Table_Name);
|
document.endElement("", "", I_AD_User_Roles.Table_Name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void createUserAssignBinding(Properties ctx, TransformerHandler document,
|
private void createUserAssignBinding(PIPOContext ctx,
|
||||||
int user_id, int role_id, int org_id) {
|
TransformerHandler document, X_AD_User_Roles po) {
|
||||||
|
|
||||||
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();
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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);
|
List<String> excludes = defaultExcludeList(X_AD_User_Roles.Table_Name);
|
||||||
|
excludes.add("AD_Org_ID");
|
||||||
|
|
||||||
filler.export(excludes);
|
filler.export(excludes);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,11 +17,11 @@
|
||||||
package org.adempiere.pipo2.handler;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
|
@ -39,7 +39,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class WindowAccessElementHandler extends AbstractElementHandler {
|
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 roleid =0;
|
||||||
int windowid =0;
|
int windowid =0;
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Window_Access.Table_Name);
|
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);
|
roleid = getParentId(element, I_AD_Role.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element roleElement = element.properties.get(I_AD_Window_Access.COLUMNNAME_AD_Role_ID);
|
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) {
|
if (roleid <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Role_ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Element windowElement = element.properties.get(I_AD_Window_Access.COLUMNNAME_AD_Window_ID);
|
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) {
|
if (windowid <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = "AD_Window_ID";
|
||||||
return;
|
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();
|
po = query.setParameters(new Object[]{roleid, windowid}).first();
|
||||||
if (po == null) {
|
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_Role_ID(roleid);
|
||||||
po.setAD_Window_ID(windowid);
|
po.setAD_Window_ID(windowid);
|
||||||
}
|
}
|
||||||
|
@ -76,30 +78,37 @@ public class WindowAccessElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
po.saveEx();
|
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 {
|
throws SAXException {
|
||||||
int AD_Window_ID = Env.getContextAsInt(ctx, X_AD_Window.COLUMNNAME_AD_Window_ID);
|
int AD_Window_ID = Env.getContextAsInt(ctx.ctx, X_AD_Window.COLUMNNAME_AD_Window_ID);
|
||||||
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Window_Access.Table_Name, atts);
|
document.startElement("", "", I_AD_Window_Access.Table_Name, atts);
|
||||||
createWindowAccessBinding(ctx, document, AD_Window_ID, AD_Role_ID);
|
createWindowAccessBinding(ctx, document, po);
|
||||||
document.endElement("", "", I_AD_Window_Access.Table_Name);
|
document.endElement("", "", I_AD_Window_Access.Table_Name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void createWindowAccessBinding(Properties ctx, TransformerHandler document,
|
private void createWindowAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
int window_id, int role_id) {
|
X_AD_Window_Access po) {
|
||||||
|
|
||||||
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();
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, po);
|
PoExporter filler = new PoExporter(ctx, document, po);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Window_Access.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Window_Access.Table_Name);
|
||||||
|
|
||||||
|
|
|
@ -21,19 +21,21 @@ import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
import org.adempiere.pipo2.ElementHandler;
|
import org.adempiere.pipo2.ElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoFiller;
|
import org.adempiere.pipo2.PoFiller;
|
||||||
import org.adempiere.pipo2.exception.DatabaseAccessException;
|
import org.adempiere.pipo2.exception.DatabaseAccessException;
|
||||||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
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.I_AD_Window;
|
||||||
import org.compiere.model.MWindow;
|
import org.compiere.model.MWindow;
|
||||||
import org.compiere.model.X_AD_Package_Exp_Detail;
|
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>();
|
private List<Integer> windows = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Window.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Window.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
MWindow mWindow = findPO(ctx, element);
|
MWindow mWindow = findPO(ctx, element);
|
||||||
if (mWindow == null) {
|
if (mWindow == null) {
|
||||||
String name = getStringValue(element, "Name", excludes);
|
String name = getStringValue(element, "Name", excludes);
|
||||||
|
@ -67,7 +69,7 @@ public class WindowElementHandler extends AbstractElementHandler {
|
||||||
return;
|
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);
|
mWindow.setName(name);
|
||||||
} else {
|
} else {
|
||||||
if (windows.contains(mWindow.getAD_Window_ID())) {
|
if (windows.contains(mWindow.getAD_Window_ID())) {
|
||||||
|
@ -83,6 +85,7 @@ public class WindowElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +107,7 @@ public class WindowElementHandler extends AbstractElementHandler {
|
||||||
} else {
|
} else {
|
||||||
logImportDetail(ctx, impDetail, 0, mWindow.getName(), mWindow
|
logImportDetail(ctx, impDetail, 0, mWindow.getName(), mWindow
|
||||||
.get_ID(), action);
|
.get_ID(), action);
|
||||||
throw new POSaveFailedException("Window");
|
throw new POSaveFailedException("Failed to save Window " + mWindow.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
throws SAXException {
|
||||||
int AD_Window_ID = Env.getContextAsInt(ctx, "AD_Window_ID");
|
int AD_Window_ID = Env.getContextAsInt(ctx.ctx, "AD_Window_ID");
|
||||||
PackOut packOut = (PackOut) ctx.get("PackOutProcess");
|
PackOut packOut = ctx.packOut;
|
||||||
|
|
||||||
X_AD_Window m_Window = new X_AD_Window(ctx, AD_Window_ID, null);
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Window.Table_Name, atts);
|
document.startElement("", "", I_AD_Window.Table_Name, atts);
|
||||||
createWindowBinding(ctx, document, m_Window);
|
createWindowBinding(ctx, document, m_Window);
|
||||||
|
}
|
||||||
// Tab Tag
|
// Tab Tag
|
||||||
String sql = "SELECT AD_Tab_ID, AD_Table_ID FROM AD_TAB WHERE AD_WINDOW_ID = "
|
String sql = "SELECT AD_Tab_ID, AD_Table_ID FROM AD_TAB WHERE AD_WINDOW_ID = "
|
||||||
+ AD_Window_ID;
|
+ AD_Window_ID;
|
||||||
|
@ -153,10 +185,9 @@ public class WindowElementHandler extends AbstractElementHandler {
|
||||||
DB.close(rs, pstmt);
|
DB.close(rs, pstmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: export of ad_image and ad_color use
|
if (createElement) {
|
||||||
|
document.endElement("", "", X_AD_Window.Table_Name);
|
||||||
// Loop tags.
|
}
|
||||||
document.endElement("", "", I_AD_Window.Table_Name);
|
|
||||||
|
|
||||||
// Preference Tag
|
// Preference Tag
|
||||||
sql = "SELECT AD_Preference_ID FROM AD_PREFERENCE WHERE AD_WINDOW_ID = ?";
|
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 {
|
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);
|
AD_Preference_ID);
|
||||||
preferenceHandler.create(ctx, document);
|
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 {
|
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);
|
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) {
|
X_AD_Window m_Window) {
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_Window);
|
PoExporter filler = new PoExporter(ctx, document, m_Window);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Window.Table_Name);
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
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;
|
||||||
import org.compiere.model.X_AD_Workflow_Access;
|
import org.compiere.model.X_AD_Workflow_Access;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.wf.MWorkflowAccess;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.helpers.AttributesImpl;
|
import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class WorkflowAccessElementHandler extends AbstractElementHandler {
|
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 roleid =0;
|
||||||
int workflowid =0;
|
int workflowid =0;
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Workflow_Access.Table_Name);
|
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 (po == null) {
|
||||||
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
if (getParentId(element, I_AD_Role.Table_Name) > 0) {
|
||||||
roleid = getParentId(element, I_AD_Role.Table_Name);
|
roleid = getParentId(element, I_AD_Role.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
Element roleElement = element.properties.get(I_AD_Workflow_Access.COLUMNNAME_AD_Role_ID);
|
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);
|
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();
|
po = query.setParameters(new Object[]{roleid, workflowid}).first();
|
||||||
if (po == null) {
|
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_Role_ID(roleid);
|
||||||
po.setAD_Workflow_ID(workflowid);
|
po.setAD_Workflow_ID(workflowid);
|
||||||
}
|
}
|
||||||
|
@ -71,31 +82,38 @@ public class WorkflowAccessElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
po.saveEx();
|
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 {
|
throws SAXException {
|
||||||
int AD_Workflow_ID = Env.getContextAsInt(ctx, X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
|
int AD_Workflow_ID = Env.getContextAsInt(ctx.ctx, X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
|
||||||
int AD_Role_ID = Env.getContextAsInt(ctx, X_AD_Role.COLUMNNAME_AD_Role_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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_Workflow_Access.Table_Name, atts);
|
document.startElement("", "", I_AD_Workflow_Access.Table_Name, atts);
|
||||||
createWorkflowAccessBinding(ctx, document, AD_Workflow_ID, AD_Role_ID);
|
createWorkflowAccessBinding(ctx, document, po);
|
||||||
document.endElement("", "", I_AD_Workflow_Access.Table_Name);
|
document.endElement("", "", I_AD_Workflow_Access.Table_Name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void createWorkflowAccessBinding(Properties ctx, TransformerHandler document,
|
private void createWorkflowAccessBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
int workflow_id, int role_id) {
|
MWorkflowAccess po) {
|
||||||
|
|
||||||
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();
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, po);
|
PoExporter filler = new PoExporter(ctx, document, po);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Workflow_Access.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Workflow_Access.Table_Name);
|
||||||
|
|
||||||
|
|
|
@ -20,12 +20,12 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.DBException;
|
import org.adempiere.exceptions.DBException;
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -52,12 +52,12 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
private List<Integer> workflows = new ArrayList<Integer>();
|
private List<Integer> workflows = new ArrayList<Integer>();
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Workflow.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_Workflow.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
|
|
||||||
MWorkflow mWorkflow = findPO(ctx, element);
|
MWorkflow mWorkflow = findPO(ctx, element);
|
||||||
if (mWorkflow == null) {
|
if (mWorkflow == null) {
|
||||||
|
@ -68,7 +68,7 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
||||||
return;
|
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);
|
mWorkflow.setValue(workflowValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +103,7 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
||||||
log.info("m_Workflow save failure");
|
log.info("m_Workflow save failure");
|
||||||
logImportDetail(ctx, impDetail, 0, mWorkflow.getName(), mWorkflow
|
logImportDetail(ctx, impDetail, 0, mWorkflow.getName(), mWorkflow
|
||||||
.get_ID(), action);
|
.get_ID(), action);
|
||||||
throw new POSaveFailedException("MWorkflow");
|
throw new POSaveFailedException("Failed to save MWorkflow " + mWorkflow.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -114,12 +115,12 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
||||||
* @param ctx
|
* @param ctx
|
||||||
* @param element
|
* @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) {
|
if (!element.defer && !element.skip && element.recordId > 0) {
|
||||||
//set start node
|
//set start node
|
||||||
String value = getStringValue(element, "AD_WF_Node.Value");
|
String value = getStringValue(element, "AD_WF_Node.Value");
|
||||||
if (value != null && value.trim().length() > 0) {
|
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());
|
int id = findIdByColumnAndParentId(ctx, "AD_WF_Node", "Value", value, "AD_Workflow", m_Workflow.getAD_Workflow_ID());
|
||||||
if (id <= 0) {
|
if (id <= 0) {
|
||||||
log.warning("Failed to resolve start node reference for workflow element. Workflow="
|
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");
|
log.info("m_Workflow update fail");
|
||||||
logImportDetail(ctx, impDetail, 0, m_Workflow.getName(), m_Workflow
|
logImportDetail(ctx, impDetail, 0, m_Workflow.getName(), m_Workflow
|
||||||
.get_ID(), "Update");
|
.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 {
|
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);
|
X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID);
|
||||||
if (workflows.contains(AD_Workflow_ID))
|
if (workflows.contains(AD_Workflow_ID))
|
||||||
return;
|
return;
|
||||||
|
@ -159,18 +160,30 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
||||||
int ad_wf_nodenextcondition_id = 0;
|
int ad_wf_nodenextcondition_id = 0;
|
||||||
AttributesImpl atts = new AttributesImpl();
|
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);
|
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", "CDATA", "object");
|
||||||
atts.addAttribute("", "", "type-name", "CDATA", "ad.workflow");
|
atts.addAttribute("", "", "type-name", "CDATA", "ad.workflow");
|
||||||
document.startElement("", "", I_AD_Workflow.Table_Name, atts);
|
document.startElement("", "", I_AD_Workflow.Table_Name, atts);
|
||||||
createWorkflowBinding(ctx, document, m_Workflow);
|
createWorkflowBinding(ctx, document, m_Workflow);
|
||||||
|
}
|
||||||
|
|
||||||
String sql = "SELECT AD_WF_Node_ID FROM AD_WF_Node WHERE AD_Workflow_ID = "
|
String sql = "SELECT AD_WF_Node_ID FROM AD_WF_Node WHERE AD_Workflow_ID = "
|
||||||
+ AD_Workflow_ID;
|
+ AD_Workflow_ID;
|
||||||
|
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
|
PreparedStatement psNodeNext = null;
|
||||||
|
PreparedStatement psNCondition = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
ResultSet nodeNextrs = null;
|
||||||
|
ResultSet nodeNConditionrs = null;
|
||||||
try {
|
try {
|
||||||
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
pstmt = DB.prepareStatement(sql, getTrxName(ctx));
|
||||||
// Generated workflowNodeNext(s) and
|
// Generated workflowNodeNext(s) and
|
||||||
|
@ -179,20 +192,18 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
int nodeId = rs.getInt("AD_WF_Node_ID");
|
int nodeId = rs.getInt("AD_WF_Node_ID");
|
||||||
createNode(ctx, document, nodeId);
|
createNode(ctx, document, nodeId);
|
||||||
|
sql = "SELECT ad_wf_nodenext_id from ad_wf_nodenext WHERE ad_wf_node_id =" +nodeId;
|
||||||
ad_wf_nodenext_id = 0;
|
psNodeNext = DB.prepareStatement(sql, getTrxName(ctx));
|
||||||
|
nodeNextrs = psNodeNext.executeQuery();
|
||||||
sql = "SELECT ad_wf_nodenext_id from ad_wf_nodenext WHERE ad_wf_node_id = ?";
|
while (nodeNextrs.next()){
|
||||||
ad_wf_nodenext_id = DB.getSQLValue(null, sql, nodeId);
|
ad_wf_nodenext_id = nodeNextrs.getInt("AD_WF_NodeNext_ID");
|
||||||
if (ad_wf_nodenext_id > 0) {
|
|
||||||
createNodeNext(ctx, document, ad_wf_nodenext_id);
|
createNodeNext(ctx, document, ad_wf_nodenext_id);
|
||||||
|
sql = "SELECT ad_wf_nextcondition_id from ad_wf_nextcondition WHERE ad_wf_nodenext_id =" + ad_wf_nodenext_id;
|
||||||
ad_wf_nodenextcondition_id = 0;
|
psNCondition = DB.prepareStatement(sql, getTrxName(ctx));
|
||||||
sql = "SELECT ad_wf_nextcondition_id from ad_wf_nextcondition WHERE ad_wf_nodenext_id = ?";
|
nodeNConditionrs = psNCondition.executeQuery();
|
||||||
ad_wf_nodenextcondition_id = DB.getSQLValue(null, sql, nodeId);
|
while (nodeNConditionrs.next()) {
|
||||||
log.info("ad_wf_nodenextcondition_id: "
|
ad_wf_nodenextcondition_id= nodeNConditionrs.getInt("AD_WF_NextCondition_ID");
|
||||||
+ String.valueOf(ad_wf_nodenextcondition_id));
|
log.info("ad_wf_nodenextcondition_id: "+ String.valueOf(ad_wf_nodenextcondition_id));
|
||||||
if (ad_wf_nodenextcondition_id > 0) {
|
|
||||||
createNodeNextCondition(ctx, document, ad_wf_nodenextcondition_id);
|
createNodeNextCondition(ctx, document, ad_wf_nodenextcondition_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -201,37 +212,41 @@ public class WorkflowElementHandler extends AbstractElementHandler {
|
||||||
throw new DBException(e);
|
throw new DBException(e);
|
||||||
} finally {
|
} finally {
|
||||||
DB.close(rs, pstmt);
|
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)
|
TransformerHandler document, int ad_wf_nodenextcondition_id)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
Env.setContext(ctx,
|
Env.setContext(ctx.ctx,
|
||||||
X_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID,
|
X_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID,
|
||||||
ad_wf_nodenextcondition_id);
|
ad_wf_nodenextcondition_id);
|
||||||
nextConditionHandler.create(ctx, document);
|
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 {
|
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);
|
ad_wf_nodenext_id);
|
||||||
nodeNextHandler.create(ctx, document);
|
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 {
|
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);
|
AD_WF_Node_ID);
|
||||||
nodeHandler.create(ctx, document);
|
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);
|
PoExporter filler = new PoExporter(ctx, document, m_Workflow);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_Workflow.Table_Name);
|
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
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
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.model.X_AD_WF_Node;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.wf.MWFNode;
|
||||||
|
import org.compiere.wf.MWorkflow;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.helpers.AttributesImpl;
|
import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_WF_Node.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_WF_Node.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentSkip(element, null)) {
|
/*if (isParentSkip(element, null)) {
|
||||||
element.skip = true;
|
element.skip = true;
|
||||||
return;
|
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.unresolved = "Parent element mark as defer: " + getStringValue(element, "AD_Workflow.Value");
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
X_AD_WF_Node mWFNode = findPO(ctx, element);
|
MWFNode mWFNode = findPO(ctx, element);
|
||||||
if (mWFNode == null) {
|
if (mWFNode == null) {
|
||||||
int workflowId = 0;
|
int workflowId = 0;
|
||||||
Element wfElement = element.properties.get(I_AD_WF_Node.COLUMNNAME_AD_Workflow_ID);
|
Element wfElement = element.properties.get(I_AD_WF_Node.COLUMNNAME_AD_Workflow_ID);
|
||||||
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
||||||
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
workflowId = ReferenceUtils.resolveReference(ctx, wfElement, getTrxName(ctx));
|
workflowId = ReferenceUtils.resolveReference(ctx.ctx, wfElement, getTrxName(ctx));
|
||||||
}
|
}
|
||||||
if (workflowId <= 0) {
|
if (workflowId <= 0) {
|
||||||
element.defer = true;
|
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 =?");
|
"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);
|
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.setValue(workflowNodeValue);
|
||||||
mWFNode.setAD_Workflow_ID(workflowId);
|
mWFNode.setAD_Workflow_ID(workflowId);
|
||||||
excludes.add(I_AD_WF_Node.COLUMNNAME_AD_Workflow_ID);
|
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);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +113,7 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler {
|
||||||
log.info("m_WFNode save failure");
|
log.info("m_WFNode save failure");
|
||||||
logImportDetail(ctx, impDetail, 0, mWFNode.getName(), mWFNode
|
logImportDetail(ctx, impDetail, 0, mWFNode.getName(), mWFNode
|
||||||
.get_ID(), action);
|
.get_ID(), action);
|
||||||
throw new POSaveFailedException("WorkflowNode");
|
throw new POSaveFailedException("Failed to save WorkflowNode " + mWFNode.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
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);
|
X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID);
|
||||||
AttributesImpl atts = new AttributesImpl();
|
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));
|
getTrxName(ctx));
|
||||||
|
if (ctx.packOut.getFromDate() != null) {
|
||||||
|
if (m_WF_Node.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_WF_Node.Table_Name, atts);
|
document.startElement("", "", I_AD_WF_Node.Table_Name, atts);
|
||||||
createWorkflowNodeBinding(ctx, document, m_WF_Node);
|
createWorkflowNodeBinding(ctx, document, m_WF_Node);
|
||||||
document.endElement("", "", I_AD_WF_Node.Table_Name);
|
document.endElement("", "", I_AD_WF_Node.Table_Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createWorkflowNodeBinding(Properties ctx, TransformerHandler document,
|
private void createWorkflowNodeBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
X_AD_WF_Node m_WF_Node) {
|
MWFNode m_WF_Node) {
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, m_WF_Node);
|
PoExporter filler = new PoExporter(ctx, document, m_WF_Node);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_WF_Node.Table_Name);
|
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,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -30,27 +30,30 @@ import org.adempiere.pipo2.ReferenceUtils;
|
||||||
import org.adempiere.pipo2.exception.POSaveFailedException;
|
import org.adempiere.pipo2.exception.POSaveFailedException;
|
||||||
import org.compiere.model.I_AD_WF_NextCondition;
|
import org.compiere.model.I_AD_WF_NextCondition;
|
||||||
import org.compiere.model.I_AD_Workflow;
|
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_Package_Imp_Detail;
|
||||||
import org.compiere.model.X_AD_WF_NextCondition;
|
import org.compiere.model.X_AD_WF_NextCondition;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.wf.MWFNextCondition;
|
import org.compiere.wf.MWFNextCondition;
|
||||||
|
import org.compiere.wf.MWFNode;
|
||||||
|
import org.compiere.wf.MWFNodeNext;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.helpers.AttributesImpl;
|
import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class WorkflowNodeNextConditionElementHandler extends
|
public class WorkflowNodeNextConditionElementHandler extends
|
||||||
AbstractElementHandler {
|
AbstractElementHandler {
|
||||||
|
|
||||||
public void startElement(Properties ctx, Element element)
|
public void startElement(PIPOContext ctx, Element element)
|
||||||
throws SAXException {
|
throws SAXException {
|
||||||
List<String> excludes = defaultExcludeList(X_AD_WF_NextCondition.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_WF_NextCondition.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentSkip(element, null)) {
|
/* if (isParentSkip(element, null)) {
|
||||||
element.skip = true;
|
element.skip = true;
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
MWFNextCondition mWFNodeNextCondition = findPO(ctx, element);
|
MWFNextCondition mWFNodeNextCondition = findPO(ctx, element);
|
||||||
if (mWFNodeNextCondition == null) {
|
if (mWFNodeNextCondition == null) {
|
||||||
|
@ -59,7 +62,7 @@ public class WorkflowNodeNextConditionElementHandler extends
|
||||||
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
||||||
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
workflowId = ReferenceUtils.resolveReference(ctx, wfElement, getTrxName(ctx));
|
workflowId = ReferenceUtils.resolveReference(ctx.ctx, wfElement, getTrxName(ctx));
|
||||||
}
|
}
|
||||||
if (workflowId <= 0) {
|
if (workflowId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
@ -67,36 +70,20 @@ public class WorkflowNodeNextConditionElementHandler extends
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AD_WF_NodeNext_ID = 0;
|
Element nextElement = element.properties.get("AD_WF_NodeNext_ID");
|
||||||
Element nodeNextElement = element.properties.get(I_AD_WF_NextCondition.COLUMNNAME_AD_WF_NodeNext_ID);
|
int wfNodeNextId = ReferenceUtils.resolveReference(ctx.ctx, nextElement, getTrxName(ctx));
|
||||||
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) {
|
if (wfNodeNextId <= 0) {
|
||||||
element.unresolved = "AD_WF_Node=" + nextElement.contents;
|
element.unresolved = "AD_WF_NodeNext=" + nextElement.contents;
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String sql = "SELECT AD_WF_NodeNext_ID FROM AD_WF_NodeNext WHERE AD_WF_Node_ID =? and AD_WF_Next_ID =?";
|
int seqNo = getIntValue(element, "SeqNo");
|
||||||
AD_WF_NodeNext_ID = DB.getSQLValue(getTrxName(ctx), sql, wfNodeId, wfNodeNextId);
|
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});
|
||||||
|
|
||||||
String sql = "SELECT AD_WF_NextCondition_ID FROM AD_WF_NextCondition WHERE AD_WF_NodeNext_ID =?";
|
mWFNodeNextCondition = new MWFNextCondition(ctx.ctx, id > 0 ? id : 0, getTrxName(ctx));
|
||||||
int id = DB.getSQLValue(getTrxName(ctx), sql, AD_WF_NodeNext_ID);
|
mWFNodeNextCondition.setAD_WF_NodeNext_ID(wfNodeNextId);
|
||||||
|
|
||||||
mWFNodeNextCondition = new MWFNextCondition(ctx, id > 0 ? id : 0, getTrxName(ctx));
|
|
||||||
mWFNodeNextCondition.setAD_WF_NodeNext_ID(AD_WF_NodeNext_ID);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PoFiller filler = new PoFiller(ctx, mWFNodeNextCondition, element, this);
|
PoFiller filler = new PoFiller(ctx, mWFNodeNextCondition, element, this);
|
||||||
|
@ -107,9 +94,9 @@ public class WorkflowNodeNextConditionElementHandler extends
|
||||||
Element columnElement = element.properties.get("AD_Column_ID");
|
Element columnElement = element.properties.get("AD_Column_ID");
|
||||||
int columnId = 0;
|
int columnId = 0;
|
||||||
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
if (ReferenceUtils.isIDLookup(columnElement) || ReferenceUtils.isUUIDLookup(columnElement)) {
|
||||||
columnId = ReferenceUtils.resolveReference(ctx, columnElement, getTrxName(ctx));
|
columnId = ReferenceUtils.resolveReference(ctx.ctx, columnElement, getTrxName(ctx));
|
||||||
} else {
|
} 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);
|
columnId = findIdByColumnAndParentId(ctx, "AD_Column", "ColumnName", columnElement.contents.toString(), "AD_Table", AD_Table_ID);
|
||||||
}
|
}
|
||||||
mWFNodeNextCondition.setAD_Column_ID(columnId);
|
mWFNodeNextCondition.setAD_Column_ID(columnId);
|
||||||
|
@ -117,6 +104,7 @@ public class WorkflowNodeNextConditionElementHandler extends
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +137,7 @@ public class WorkflowNodeNextConditionElementHandler extends
|
||||||
String.valueOf(mWFNodeNextCondition.get_ID()),
|
String.valueOf(mWFNodeNextCondition.get_ID()),
|
||||||
mWFNodeNextCondition.get_ID(),
|
mWFNodeNextCondition.get_ID(),
|
||||||
action);
|
action);
|
||||||
throw new POSaveFailedException("WorkflowNodeNextCondition");
|
throw new POSaveFailedException("Failed to save WorkflowNodeNextCondition");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
throws SAXException {
|
||||||
int ad_wf_nodenextcondition_id = Env.getContextAsInt(ctx,
|
int ad_wf_nodenextcondition_id = Env.getContextAsInt(ctx.ctx, "AD_WF_NextCondition_ID");
|
||||||
X_AD_WF_NextCondition.COLUMNNAME_AD_WF_NextCondition_ID);
|
MWFNextCondition m_WF_NodeNextCondition = new MWFNextCondition(
|
||||||
X_AD_WF_NextCondition m_WF_NodeNextCondition = new X_AD_WF_NextCondition(
|
ctx.ctx, ad_wf_nodenextcondition_id, null);
|
||||||
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_WF_NextCondition.Table_Name, atts);
|
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);
|
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);
|
PoExporter filler = new PoExporter(ctx, document, mWFNodeNextCondition);
|
||||||
List<String> excludes = defaultExcludeList(X_AD_WF_NextCondition.Table_Name);
|
List<String> excludes = defaultExcludeList(X_AD_WF_NextCondition.Table_Name);
|
||||||
|
|
||||||
if (mWFNodeNextCondition.getAD_WF_NextCondition_ID() <= PackOut.MAX_OFFICIAL_ID)
|
if (mWFNodeNextCondition.getAD_WF_NextCondition_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||||
filler.add("AD_WF_NextCondition_ID", new AttributesImpl());
|
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();
|
AttributesImpl wfAttributes = new AttributesImpl();
|
||||||
String value = ReferenceUtils.getTableReference("AD_Workflow", "Value", AD_workflow_ID, wfAttributes);
|
String value = ReferenceUtils.getTableReference("AD_Workflow", "Value", AD_workflow_ID, wfAttributes);
|
||||||
filler.addString("AD_Workflow_ID", value, 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();
|
AttributesImpl wfnAttributes = new AttributesImpl();
|
||||||
value = ReferenceUtils.getTableReference("AD_WF_Node", "Value", AD_WF_Node_ID, wfnAttributes);
|
value = ReferenceUtils.getTableReference("AD_WF_Node", "Value", AD_WF_Node_ID, wfnAttributes);
|
||||||
filler.addString("AD_WF_Node_ID", value, 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();
|
AttributesImpl nextAttributes = new AttributesImpl();
|
||||||
value = ReferenceUtils.getTableReference("AD_WF_Node", "Value", AD_WF_Next_ID, nextAttributes);
|
value = ReferenceUtils.getTableReference("AD_WF_Node", "Value", AD_WF_Next_ID, nextAttributes);
|
||||||
filler.addString("AD_WF_Next_ID", value, nextAttributes);
|
filler.addString("AD_WF_Next_ID", value, nextAttributes);
|
||||||
|
|
||||||
if (mWFNodeNextCondition.getAD_Column_ID() > 0) {
|
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();
|
AttributesImpl tableAttributes = new AttributesImpl();
|
||||||
value = ReferenceUtils.getTableReference("AD_Table", "TableName", AD_Table_ID, tableAttributes);
|
value = ReferenceUtils.getTableReference("AD_Table", "TableName", AD_Table_ID, tableAttributes);
|
||||||
filler.addString("AD_Table_ID", value, tableAttributes);
|
filler.addString("AD_Table_ID", value, tableAttributes);
|
||||||
|
@ -209,9 +205,9 @@ public class WorkflowNodeNextConditionElementHandler extends
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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;
|
package org.adempiere.pipo2.handler;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.pipo2.AbstractElementHandler;
|
import org.adempiere.pipo2.AbstractElementHandler;
|
||||||
|
import org.adempiere.pipo2.PIPOContext;
|
||||||
import org.adempiere.pipo2.PoExporter;
|
import org.adempiere.pipo2.PoExporter;
|
||||||
import org.adempiere.pipo2.Element;
|
import org.adempiere.pipo2.Element;
|
||||||
import org.adempiere.pipo2.PackOut;
|
import org.adempiere.pipo2.PackOut;
|
||||||
|
@ -41,15 +41,15 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
public class WorkflowNodeNextElementHandler 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_WF_NodeNext.Table_Name);
|
List<String> excludes = defaultExcludeList(MWFNodeNext.Table_Name);
|
||||||
|
|
||||||
String entitytype = getStringValue(element, "EntityType");
|
String entitytype = getStringValue(element, "EntityType");
|
||||||
if (isProcessElement(ctx, entitytype)) {
|
if (isProcessElement(ctx.ctx, entitytype)) {
|
||||||
if (isParentSkip(element, null)) {
|
/*if (isParentSkip(element, null)) {
|
||||||
element.skip = true;
|
element.skip = true;
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
MWFNodeNext mWFNodeNext = findPO(ctx, element);
|
MWFNodeNext mWFNodeNext = findPO(ctx, element);
|
||||||
if (mWFNodeNext == null) {
|
if (mWFNodeNext == null) {
|
||||||
|
@ -58,7 +58,7 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
||||||
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
if (getParentId(element, I_AD_Workflow.Table_Name) > 0) {
|
||||||
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
workflowId = getParentId(element, I_AD_Workflow.Table_Name);
|
||||||
} else {
|
} else {
|
||||||
workflowId = ReferenceUtils.resolveReference(ctx, wfElement, getTrxName(ctx));
|
workflowId = ReferenceUtils.resolveReference(ctx.ctx, wfElement, getTrxName(ctx));
|
||||||
}
|
}
|
||||||
if (workflowId <= 0) {
|
if (workflowId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
@ -69,10 +69,10 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
||||||
int wfNodeId = 0;
|
int wfNodeId = 0;
|
||||||
Element wfnElement = element.properties.get(I_AD_WF_NodeNext.COLUMNNAME_AD_WF_Node_ID);
|
Element wfnElement = element.properties.get(I_AD_WF_NodeNext.COLUMNNAME_AD_WF_Node_ID);
|
||||||
if (ReferenceUtils.isIDLookup(wfnElement) || ReferenceUtils.isUUIDLookup(wfnElement)) {
|
if (ReferenceUtils.isIDLookup(wfnElement) || ReferenceUtils.isUUIDLookup(wfnElement)) {
|
||||||
wfNodeId = ReferenceUtils.resolveReference(ctx, wfnElement, getTrxName(ctx));
|
wfNodeId = ReferenceUtils.resolveReference(ctx.ctx, wfnElement, getTrxName(ctx));
|
||||||
} else {
|
} 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=?",
|
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) {
|
if (wfNodeId <= 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
@ -83,10 +83,10 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
||||||
int AD_WF_Next_ID = 0;
|
int AD_WF_Next_ID = 0;
|
||||||
Element nextElement = element.properties.get(I_AD_WF_NodeNext.COLUMNNAME_AD_WF_Next_ID);
|
Element nextElement = element.properties.get(I_AD_WF_NodeNext.COLUMNNAME_AD_WF_Next_ID);
|
||||||
if (ReferenceUtils.isIDLookup(nextElement) || ReferenceUtils.isUUIDLookup(nextElement)) {
|
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 {
|
} 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=?",
|
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) {
|
if (AD_WF_Next_ID <= 0) {
|
||||||
element.defer = true;
|
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);
|
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_Node_ID(wfNodeId);
|
||||||
mWFNodeNext.setAD_WF_Next_ID(AD_WF_Next_ID);
|
mWFNodeNext.setAD_WF_Next_ID(AD_WF_Next_ID);
|
||||||
}
|
}
|
||||||
|
@ -108,6 +108,7 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
element.unresolved = notfounds.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,7 +128,7 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
||||||
} else{
|
} else{
|
||||||
log.info("m_WFNodeNext save failure");
|
log.info("m_WFNodeNext save failure");
|
||||||
logImportDetail (ctx, impDetail, 0, String.valueOf(mWFNodeNext.get_ID()), mWFNodeNext.get_ID(), action);
|
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 {
|
} 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 {
|
throws SAXException {
|
||||||
int ad_wf_nodenext_id = Env.getContextAsInt(ctx, X_AD_WF_NodeNext.COLUMNNAME_AD_WF_NodeNext_ID);
|
int ad_wf_nodenext_id = Env.getContextAsInt(ctx.ctx, "AD_WF_NodeNext_ID");
|
||||||
X_AD_WF_NodeNext m_WF_NodeNext = new X_AD_WF_NodeNext(
|
MWFNodeNext m_WF_NodeNext = new MWFNodeNext(
|
||||||
ctx, ad_wf_nodenext_id, null);
|
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();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
addTypeName(atts, "table");
|
addTypeName(atts, "table");
|
||||||
document.startElement("", "", I_AD_WF_NodeNext.Table_Name, atts);
|
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,
|
private void createWorkflowNodeNextBinding(PIPOContext ctx, TransformerHandler document,
|
||||||
X_AD_WF_NodeNext m_WF_NodeNext)
|
MWFNodeNext m_WF_NodeNext)
|
||||||
{
|
{
|
||||||
|
|
||||||
PoExporter filler = new PoExporter(ctx, document, 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)
|
if (m_WF_NodeNext.getAD_WF_NodeNext_ID() <= PackOut.MAX_OFFICIAL_ID)
|
||||||
filler.add("AD_WF_NodeNext_ID", new AttributesImpl());
|
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);
|
filler.export(excludes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,8 +177,8 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler {
|
||||||
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
public void packOut(PackOut packout, TransformerHandler packoutHandler,
|
||||||
TransformerHandler docHandler,
|
TransformerHandler docHandler,
|
||||||
int recordId) throws Exception {
|
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);
|
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-SymbolicName: org.adempiere.pipo;singleton:=true
|
||||||
Bundle-Version: 1.0.0.qualifier
|
Bundle-Version: 1.0.0.qualifier
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
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.tools.ant.taskdefs,
|
||||||
org.apache.xerces.jaxp;version="2.9.0",
|
org.apache.xerces.jaxp;version="2.9.0",
|
||||||
org.osgi.framework
|
org.osgi.framework
|
||||||
|
|
|
@ -61,8 +61,8 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
* @param name
|
* @param name
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public int findIdByName (Properties ctx, String tableName, String name) {
|
public int findIdByName (PIPOContext ctx, String tableName, String name) {
|
||||||
return IDFinder.findIdByName(tableName, name, getClientId(ctx), getTrxName(ctx));
|
return IDFinder.findIdByName(tableName, name, getClientId(ctx.ctx), ctx.trx.getTrxName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,22 +72,25 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
* @param columName
|
* @param columName
|
||||||
* @param name
|
* @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;
|
int id = 0;
|
||||||
if ("AD_Table".equals(tableName) && "TableName".equals(columnName) && value != null) {
|
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) {
|
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) {
|
if (id > 0) {
|
||||||
getPackIn(ctx).addTable(value.toString(), id);
|
ctx.packIn.addTable(value.toString(), id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int findIdByColumn (PIPOContext ctx, String tableName, String columnName, Object value) {
|
||||||
|
return findIdByColumn (ctx, tableName, columnName, value, false);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @param ctx
|
* @param ctx
|
||||||
* @param type
|
* @param type
|
||||||
|
@ -95,17 +98,17 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
* @param tableId
|
* @param tableId
|
||||||
* @return X_AD_Package_Imp_Detail
|
* @return X_AD_Package_Imp_Detail
|
||||||
*/
|
*/
|
||||||
public X_AD_Package_Imp_Detail createImportDetail(Properties ctx, String type, String tableName, int tableId) {
|
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, 0, getTrxName(ctx));
|
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));
|
impDetail.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||||
impDetail.setAD_Org_ID(Env.getAD_Org_ID(ctx) );
|
impDetail.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx) );
|
||||||
impDetail.setType(type);
|
impDetail.setType(type);
|
||||||
impDetail.setName("");
|
impDetail.setName("");
|
||||||
impDetail.setAction("");
|
impDetail.setAction("");
|
||||||
impDetail.setAD_Original_ID(1);
|
impDetail.setAD_Original_ID(1);
|
||||||
impDetail.setTableName(tableName);
|
impDetail.setTableName(tableName);
|
||||||
impDetail.setAD_Table_ID(tableId);
|
impDetail.setAD_Table_ID(tableId);
|
||||||
impDetail.saveEx(getTrxName(ctx));
|
impDetail.saveEx(ctx.trx.getTrxName());
|
||||||
|
|
||||||
return impDetail;
|
return impDetail;
|
||||||
}
|
}
|
||||||
|
@ -122,33 +125,15 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
* @throws SAXException
|
* @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{
|
String action) throws SAXException{
|
||||||
StringBuffer recordLayout = new StringBuffer();
|
|
||||||
TransformerHandler hd_document = getLogDocument(ctx);
|
|
||||||
AttributesImpl attsOut = new AttributesImpl();
|
|
||||||
String result = success == 1 ? "Success" : "Failure";
|
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.setName(objectName);
|
||||||
detail.setAction(action);
|
detail.setAction(action);
|
||||||
detail.setSuccess(result);
|
detail.setSuccess(result);
|
||||||
detail.setAD_Original_ID(objectID);
|
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 tableNameMaster
|
||||||
* @param nameMaster
|
* @param nameMaster
|
||||||
*/
|
*/
|
||||||
public int findIdByNameAndParentName (Properties ctx, String tableName, String name, String tableNameMaster, String nameMaster) {
|
public int findIdByNameAndParentName (PIPOContext ctx, String tableName, String name, String tableNameMaster, String nameMaster) {
|
||||||
return IDFinder.findIdByNameAndParentName(tableName, name, tableNameMaster, nameMaster, getTrxName(ctx));
|
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
|
* @param nameMaster
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int findIdByColumnAndParentId (Properties ctx, String tableName, String columnName, String name, String tableNameMaster, int masterID) {
|
public int findIdByColumnAndParentId (PIPOContext ctx, String tableName, String columnName, String name, String tableNameMaster, int masterID) {
|
||||||
return IDFinder.findIdByColumnAndParentId(tableName, columnName, name, tableNameMaster, masterID,
|
return IDFinder.findIdByColumnAndParentId(tableName, columnName, name, tableNameMaster, masterID, getClientId(ctx.ctx),
|
||||||
getTrxName(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 tableNameMaster
|
||||||
* @param masterID
|
* @param masterID
|
||||||
*/
|
*/
|
||||||
public int findIdByNameAndParentId (Properties ctx, String tableName, String name, String tableNameMaster, int masterID) {
|
public int findIdByNameAndParentId (PIPOContext ctx, String tableName, String name, String tableNameMaster, int masterID) {
|
||||||
return IDFinder.findIdByNameAndParentId(tableName, name, tableNameMaster, masterID, getTrxName(ctx));
|
return IDFinder.findIdByNameAndParentId(tableName, name, tableNameMaster, masterID, getClientId(ctx.ctx), ctx.trx.getTrxName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -198,18 +197,19 @@ 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
|
// Create new record
|
||||||
int tableID = findIdByColumn(ctx, "AD_Table", "TableName", tableName);
|
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;
|
ResultSet rs=null;
|
||||||
|
|
||||||
try{
|
try{
|
||||||
for (int i = 0; i < poInfo.getColumnCount(); i++){
|
for (int i = 0; i < poInfo.getColumnCount(); i++){
|
||||||
|
|
||||||
|
if (from.is_ValueChanged(i)) {
|
||||||
int columnID =findIdByColumnAndParentId (ctx, "AD_Column", "ColumnName", poInfo.getColumnName(i), "AD_Table", tableID);
|
int columnID =findIdByColumnAndParentId (ctx, "AD_Column", "ColumnName", poInfo.getColumnName(i), "AD_Table", tableID);
|
||||||
|
|
||||||
int referenceID=0;
|
int referenceID=0;
|
||||||
|
@ -220,9 +220,9 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
referenceID = rs.getInt(1);
|
referenceID = rs.getInt(1);
|
||||||
|
|
||||||
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, ctx.trx.getTrxName());
|
||||||
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx));
|
backup.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx));
|
||||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx));
|
backup.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||||
backup.setAD_Package_Imp_Detail_ID(AD_Package_Imp_Detail_ID);
|
backup.setAD_Package_Imp_Detail_ID(AD_Package_Imp_Detail_ID);
|
||||||
backup.setAD_Table_ID(tableID);
|
backup.setAD_Table_ID(tableID);
|
||||||
|
|
||||||
|
@ -231,7 +231,8 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
Object value = from.get_ValueOld(i);
|
Object value = from.get_ValueOld(i);
|
||||||
backup.setColValue(value != null ? value.toString() : null);
|
backup.setColValue(value != null ? value.toString() : null);
|
||||||
|
|
||||||
backup.saveEx(getTrxName(ctx));
|
backup.saveEx();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
|
@ -306,7 +307,7 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
}
|
}
|
||||||
source.close();
|
source.close();
|
||||||
target.close();
|
target.close();
|
||||||
//System.out.println("Successfully copied " + byteCount + " bytes.");
|
log.finer("Successfully copied " + byteCount + " bytes.");
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
||||||
|
@ -347,21 +348,8 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
* @param ctx
|
* @param ctx
|
||||||
* @return transaction name
|
* @return transaction name
|
||||||
*/
|
*/
|
||||||
protected String getTrxName(Properties ctx) {
|
protected String getTrxName(PIPOContext ctx) {
|
||||||
String trxName = Env.getContext(ctx, "TrxName");
|
return ctx.trx != null ? ctx.trx.getTrxName() : null;
|
||||||
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");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -472,24 +460,6 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
return excludes;
|
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
|
* @param element
|
||||||
|
@ -582,7 +552,7 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
* @param element
|
* @param element
|
||||||
* @return T
|
* @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;
|
T po = null;
|
||||||
String tableName = element.getElementValue();
|
String tableName = element.getElementValue();
|
||||||
String uuidColumn = PO.getUUIDColumnName(tableName);
|
String uuidColumn = PO.getUUIDColumnName(tableName);
|
||||||
|
@ -590,13 +560,15 @@ public abstract class AbstractElementHandler implements ElementHandler {
|
||||||
if (element.properties.containsKey(uuidColumn)) {
|
if (element.properties.containsKey(uuidColumn)) {
|
||||||
String uuid = element.properties.get(uuidColumn).contents.toString();
|
String uuid = element.properties.get(uuidColumn).contents.toString();
|
||||||
if (uuid != null && uuid.trim().length() == 36) {
|
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();
|
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();
|
String id = element.properties.get(idColumn).contents.toString();
|
||||||
if (id != null && id.trim().length() > 0) {
|
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();
|
po = query.setParameters(id.trim()).firstOnly();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,8 +16,6 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.adempiere.pipo2;
|
package org.adempiere.pipo2;
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
@ -35,7 +33,7 @@ public interface ElementHandler {
|
||||||
* @param element
|
* @param element
|
||||||
* @throws org.xml.sax.SAXException
|
* @throws org.xml.sax.SAXException
|
||||||
*/
|
*/
|
||||||
public void startElement (Properties ctx, Element element)
|
public void startElement (PIPOContext ctx, Element element)
|
||||||
throws org.xml.sax.SAXException;
|
throws org.xml.sax.SAXException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -44,7 +42,7 @@ public interface ElementHandler {
|
||||||
* @param element
|
* @param element
|
||||||
* @throws SAXException
|
* @throws SAXException
|
||||||
*/
|
*/
|
||||||
public void endElement (Properties ctx, Element element) throws SAXException;
|
public void endElement (PIPOContext ctx, Element element) throws SAXException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param packout
|
* @param packout
|
||||||
|
|
|
@ -16,14 +16,24 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.adempiere.pipo2;
|
package org.adempiere.pipo2;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.adempiere.pipo2.exception.DatabaseAccessException;
|
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.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.DisplayType;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,7 +56,7 @@ public class IDFinder {
|
||||||
* @param AD_Client_ID
|
* @param AD_Client_ID
|
||||||
* @param trxName
|
* @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;
|
int id = 0;
|
||||||
|
|
||||||
if (value == null)
|
if (value == null)
|
||||||
|
@ -70,24 +80,81 @@ public class IDFinder {
|
||||||
.append("_ID FROM ")
|
.append("_ID FROM ")
|
||||||
.append(tableName)
|
.append(tableName)
|
||||||
.append(" WHERE ")
|
.append(" WHERE ")
|
||||||
.append(columnName)
|
.append(" AD_Client_ID IN (0, ?) AND ");
|
||||||
.append(" = ?")
|
|
||||||
.append(" AND AD_Client_ID IN (0, ?)")
|
Object[] params = null;
|
||||||
.append(" Order By AD_Client_ID Desc, ")
|
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(tableName)
|
||||||
.append("_ID");
|
.append("_ID");
|
||||||
|
|
||||||
|
MTable table = MTable.get(Env.getCtx(), tableName);
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
try {
|
try {
|
||||||
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
||||||
if (value instanceof String)
|
pstmt.setInt(1, AD_Client_ID);
|
||||||
pstmt.setString(1, (String)value);
|
for (int i = 0; i < params.length; i++) {
|
||||||
else if (value instanceof Integer)
|
Object param = params[i];
|
||||||
pstmt.setInt(1, ((Integer)value).intValue());
|
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
|
else
|
||||||
pstmt.setObject(1, value);
|
pstmt.setString(i+2, s);
|
||||||
pstmt.setInt(2, AD_Client_ID);
|
} else if (param instanceof Integer) {
|
||||||
|
pstmt.setInt(i+2, ((Integer)param).intValue());
|
||||||
|
} else {
|
||||||
|
pstmt.setObject(i+2, param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
|
@ -106,6 +173,10 @@ public class IDFinder {
|
||||||
return id;
|
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.
|
* Get ID from Name for a table with a parent name reference.
|
||||||
*
|
*
|
||||||
|
@ -115,7 +186,7 @@ public class IDFinder {
|
||||||
* @param nameMaster
|
* @param nameMaster
|
||||||
* @param trxName
|
* @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;
|
int id = 0;
|
||||||
//construct cache key
|
//construct cache key
|
||||||
StringBuffer key = new StringBuffer();
|
StringBuffer key = new StringBuffer();
|
||||||
|
@ -179,10 +250,24 @@ public class IDFinder {
|
||||||
* @param name
|
* @param name
|
||||||
* @param tableNameMaster
|
* @param tableNameMaster
|
||||||
* @param masterID
|
* @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
|
* @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;
|
int id = 0;
|
||||||
|
|
||||||
//check cache
|
//check cache
|
||||||
|
@ -195,10 +280,16 @@ public class IDFinder {
|
||||||
.append(tableName)
|
.append(tableName)
|
||||||
.append("_ID FROM ")
|
.append("_ID FROM ")
|
||||||
.append(tableName)
|
.append(tableName)
|
||||||
.append(" WHERE ")
|
.append(" WHERE ");
|
||||||
|
if (ignoreCase) {
|
||||||
|
sqlB.append("Upper(")
|
||||||
.append(columnName)
|
.append(columnName)
|
||||||
.append(" = ? and ")
|
.append(") = ? and ");
|
||||||
.append(tableNameMaster+"_ID = ? AND AD_Client_ID IN (0, ?) ")
|
} else {
|
||||||
|
sqlB.append(columnName)
|
||||||
|
.append(" = ? and ");
|
||||||
|
}
|
||||||
|
sqlB.append(tableNameMaster+"_ID = ? AND AD_Client_ID IN (0, ?) ")
|
||||||
.append("ORDER BY AD_Client_ID Desc ");
|
.append("ORDER BY AD_Client_ID Desc ");
|
||||||
|
|
||||||
log.info(sqlB.toString());
|
log.info(sqlB.toString());
|
||||||
|
@ -208,9 +299,13 @@ public class IDFinder {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
||||||
|
if (ignoreCase) {
|
||||||
|
pstmt.setString(1, name.toUpperCase());
|
||||||
|
} else {
|
||||||
pstmt.setString(1, name);
|
pstmt.setString(1, name);
|
||||||
|
}
|
||||||
pstmt.setInt(2, masterID);
|
pstmt.setInt(2, masterID);
|
||||||
pstmt.setInt(3, Env.getAD_Client_ID(Env.getCtx()));
|
pstmt.setInt(3, AD_Client_ID);
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
{
|
{
|
||||||
|
@ -239,7 +334,7 @@ public class IDFinder {
|
||||||
* @param masterID
|
* @param masterID
|
||||||
* @param trxName
|
* @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;
|
int id = 0;
|
||||||
|
|
||||||
//construct cache key
|
//construct cache key
|
||||||
|
@ -273,7 +368,7 @@ public class IDFinder {
|
||||||
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
pstmt = DB.prepareStatement(sqlB.toString(), trxName);
|
||||||
pstmt.setString(1, name);
|
pstmt.setString(1, name);
|
||||||
pstmt.setInt(2, masterID);
|
pstmt.setInt(2, masterID);
|
||||||
pstmt.setInt(3, Env.getAD_Client_ID(Env.getCtx()));
|
pstmt.setInt(3, AD_Client_ID);
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
id = rs.getInt(1);
|
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.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
@ -31,7 +33,10 @@ import java.util.logging.Level;
|
||||||
import javax.xml.parsers.SAXParser;
|
import javax.xml.parsers.SAXParser;
|
||||||
import javax.xml.parsers.SAXParserFactory;
|
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.CLogger;
|
||||||
|
import org.compiere.util.Trx;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IntPackIn Tool.
|
* IntPackIn Tool.
|
||||||
|
@ -51,6 +56,8 @@ public class PackIn {
|
||||||
private String packageName = null;
|
private String packageName = null;
|
||||||
private String packageVersion = null;
|
private String packageVersion = null;
|
||||||
|
|
||||||
|
private List<X_AD_Package_Imp_Detail> importDetails;
|
||||||
|
|
||||||
public PackIn() {
|
public PackIn() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
@ -123,6 +130,10 @@ public class PackIn {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addImportDetail(X_AD_Package_Imp_Detail importDetail) {
|
||||||
|
importDetails.add(importDetail);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param input
|
* @param input
|
||||||
|
@ -135,20 +146,29 @@ public class PackIn {
|
||||||
log.info("starting");
|
log.info("starting");
|
||||||
// clear cache of previous runs
|
// clear cache of previous runs
|
||||||
IDFinder.clearIDCache();
|
IDFinder.clearIDCache();
|
||||||
|
importDetails = new ArrayList<X_AD_Package_Imp_Detail>();
|
||||||
|
|
||||||
System.setProperty("javax.xml.parsers.SAXParserFactory",
|
System.setProperty("javax.xml.parsers.SAXParserFactory",
|
||||||
"org.apache.xerces.jaxp.SAXParserFactoryImpl");
|
"org.apache.xerces.jaxp.SAXParserFactoryImpl");
|
||||||
PackInHandler handler = new PackInHandler();
|
PackInHandler handler = new PackInHandler();
|
||||||
handler.set_TrxName(trxName);
|
PIPOContext context = new PIPOContext();
|
||||||
handler.setCtx(ctx);
|
context.trx = Trx.get(trxName, true);
|
||||||
|
context.packIn = this;
|
||||||
|
context.ctx = ctx;
|
||||||
|
handler.setCtx(context);
|
||||||
handler.setProcess(this);
|
handler.setProcess(this);
|
||||||
SAXParserFactory factory = SAXParserFactory.newInstance();
|
SAXParserFactory factory = SAXParserFactory.newInstance();
|
||||||
SAXParser parser = factory.newSAXParser();
|
SAXParser parser = factory.newSAXParser();
|
||||||
String msg = "Start Parser";
|
String msg = "Start Parser";
|
||||||
log.info(msg);
|
log.info(msg);
|
||||||
parser.parse(input, handler);
|
parser.parse(input, handler);
|
||||||
|
for (PO importDetail : importDetails) {
|
||||||
|
importDetail.saveEx();
|
||||||
|
}
|
||||||
msg = "End Parser";
|
msg = "End Parser";
|
||||||
log.info(msg);
|
log.info(msg);
|
||||||
|
if (handler.getUnresolvedCount() > 0)
|
||||||
|
handler.dumpUnresolvedElements();
|
||||||
return "Processed="+handler.getElementsProcessed()+" Un-Resolved="+handler.getUnresolvedCount();
|
return "Processed="+handler.getElementsProcessed()+" Un-Resolved="+handler.getUnresolvedCount();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.log(Level.SEVERE, "importXML:", e);
|
log.log(Level.SEVERE, "importXML:", e);
|
||||||
|
@ -188,6 +208,7 @@ public class PackIn {
|
||||||
else
|
else
|
||||||
baos.write(b);
|
baos.write(b);
|
||||||
}
|
}
|
||||||
|
data = baos.toByteArray();
|
||||||
} finally {
|
} finally {
|
||||||
if (fis != null) {
|
if (fis != null) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -19,27 +19,14 @@
|
||||||
|
|
||||||
package org.adempiere.pipo2;
|
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.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Set;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
import java.util.logging.Level;
|
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.adempiere.pipo2.exception.DatabaseAccessException;
|
||||||
import org.compiere.model.X_AD_Package_Imp;
|
import org.compiere.model.X_AD_Package_Imp;
|
||||||
import org.compiere.model.X_AD_Package_Imp_Inst;
|
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_ID=0;
|
||||||
private int AD_Package_Imp_Inst_ID=0;
|
private int AD_Package_Imp_Inst_ID=0;
|
||||||
private CLogger log = CLogger.getCLogger(PackInHandler.class);
|
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 boolean isInit = false;
|
||||||
private String logDate = null;
|
|
||||||
private String packageStatus = "Installing";
|
private String packageStatus = "Installing";
|
||||||
// transaction name
|
private PIPOContext m_ctx = null;
|
||||||
private String m_trxName = null;
|
|
||||||
private Properties m_ctx = null;
|
|
||||||
|
|
||||||
private IHandlerRegistry handlerRegistry = null;
|
private IHandlerRegistry handlerRegistry = null;
|
||||||
private List<DeferEntry> defer = new ArrayList<DeferEntry>();
|
private List<DeferEntry> defer = new ArrayList<DeferEntry>();
|
||||||
|
@ -99,41 +78,11 @@ public class PackInHandler extends DefaultHandler {
|
||||||
|
|
||||||
packageDirectory = packIn.getPackageDirectory();
|
packageDirectory = packIn.getPackageDirectory();
|
||||||
m_updateDictionary = packIn.isUpdateDictionary();
|
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";
|
if (m_ctx == null)
|
||||||
log.info("packin log file="+logFileName);
|
m_ctx = new PIPOContext();
|
||||||
try {
|
if (m_ctx.trx == null)
|
||||||
logOutputStream = new FileOutputStream (logFileName, false);
|
m_ctx.trx = Trx.get("PackIn", true);
|
||||||
} 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");
|
|
||||||
|
|
||||||
isInit=true;
|
isInit=true;
|
||||||
}
|
}
|
||||||
|
@ -164,10 +113,17 @@ public class PackInHandler extends DefaultHandler {
|
||||||
{
|
{
|
||||||
log.info("adempiereAD updateMode="+m_updateDictionary);
|
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
|
// Update Summary Package History Table
|
||||||
|
|
||||||
int PK_preInstalled=0;
|
int PK_preInstalled=0;
|
||||||
|
|
||||||
String packageName = packIn.getPackageName();
|
String packageName = packIn.getPackageName();
|
||||||
|
@ -199,8 +155,8 @@ public class PackInHandler extends DefaultHandler {
|
||||||
DB.close(rs, pstmt);
|
DB.close(rs, pstmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx, 0, null);
|
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));
|
packageImp.setAD_Org_ID(Env.getAD_Org_ID(m_ctx.ctx));
|
||||||
packageImp.setReleaseNo(atts.getValue("CompVer"));
|
packageImp.setReleaseNo(atts.getValue("CompVer"));
|
||||||
packageImp.setPK_Version(packageVersion);
|
packageImp.setPK_Version(packageVersion);
|
||||||
packageImp.setVersion(atts.getValue("DataBase"));
|
packageImp.setVersion(atts.getValue("DataBase"));
|
||||||
|
@ -216,8 +172,8 @@ public class PackInHandler extends DefaultHandler {
|
||||||
if ( PK_preInstalled <= 0){
|
if ( PK_preInstalled <= 0){
|
||||||
//Insert Package into package install log
|
//Insert Package into package install log
|
||||||
|
|
||||||
X_AD_Package_Imp_Inst packageInst = new X_AD_Package_Imp_Inst(m_ctx, 0, null);
|
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));
|
packageInst.setAD_Org_ID(Env.getAD_Org_ID(m_ctx.ctx));
|
||||||
packageInst.setReleaseNo(atts.getValue("CompVer"));
|
packageInst.setReleaseNo(atts.getValue("CompVer"));
|
||||||
packageInst.setPK_Version(atts.getValue("Version"));
|
packageInst.setPK_Version(atts.getValue("Version"));
|
||||||
packageInst.setVersion(atts.getValue("DataBase"));
|
packageInst.setVersion(atts.getValue("DataBase"));
|
||||||
|
@ -232,17 +188,15 @@ public class PackInHandler extends DefaultHandler {
|
||||||
//Update package list with package status
|
//Update package list with package status
|
||||||
AD_Package_Imp_Inst_ID = PK_preInstalled;
|
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.setPK_Status(packageStatus);
|
||||||
packageInst.saveEx();
|
packageInst.saveEx();
|
||||||
}
|
}
|
||||||
|
|
||||||
Env.setContext(m_ctx, "AD_Package_Imp_ID", AD_Package_Imp_ID);
|
m_ctx.ctx.put("AD_Package_Imp_ID", AD_Package_Imp_ID);
|
||||||
Env.setContext(m_ctx, "UpdateMode", m_updateDictionary);
|
m_ctx.ctx.put("UpdateMode", m_updateDictionary);
|
||||||
Env.setContext(m_ctx, "TrxName", m_trxName);
|
m_ctx.ctx.put("PackageDirectory", packageDirectory);
|
||||||
Env.setContext(m_ctx, "PackageDirectory", packageDirectory);
|
m_ctx.packIn = packIn;
|
||||||
m_ctx.put("LogDocument", logDocument);
|
|
||||||
m_ctx.put(PACK_IN_PROCESS_CTX_KEY, packIn);
|
|
||||||
} else {
|
} else {
|
||||||
Element e = new Element(uri, localName, qName, new AttributesImpl(atts));
|
Element e = new Element(uri, localName, qName, new AttributesImpl(atts));
|
||||||
if (stack.size() > 0)
|
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)
|
* @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
|
||||||
*/
|
*/
|
||||||
|
@ -343,30 +281,38 @@ public class PackInHandler extends DefaultHandler {
|
||||||
packageStatus = "Completed successfully";
|
packageStatus = "Completed successfully";
|
||||||
|
|
||||||
//Update package history log with package status
|
//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.setPK_Status(packageStatus);
|
||||||
packageImp.saveEx();
|
packageImp.saveEx();
|
||||||
|
|
||||||
//Update package list with package status
|
//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.setPK_Status(packageStatus);
|
||||||
packageInst.saveEx();
|
packageInst.saveEx();
|
||||||
|
|
||||||
logDocument.endElement("","","adempiereDocument");
|
|
||||||
logDocument.endDocument();
|
|
||||||
try {
|
|
||||||
logOutputStream.close();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{}
|
|
||||||
|
|
||||||
//reset
|
//reset
|
||||||
setupHandlers();
|
setupHandlers();
|
||||||
} else {
|
} else {
|
||||||
Element e = stack.pop();
|
Element e = stack.pop();
|
||||||
if (stack.isEmpty())
|
if (stack.isEmpty())
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
processElement(e);
|
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
|
} // endElement
|
||||||
|
@ -391,7 +337,7 @@ public class PackInHandler extends DefaultHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (log.isLoggable(Level.INFO)) {
|
if (log.isLoggable(Level.INFO)) {
|
||||||
log.info("Processeing Element: " + d.element.getElementValue() + " - "
|
log.info("Processing Element: " + d.element.getElementValue() + " - "
|
||||||
+ d.element.attributes.getValue(0));
|
+ d.element.attributes.getValue(0));
|
||||||
}
|
}
|
||||||
ElementHandler handler = handlerRegistry.getHandler(d.element);
|
ElementHandler handler = handlerRegistry.getHandler(d.element);
|
||||||
|
@ -419,13 +365,7 @@ public class PackInHandler extends DefaultHandler {
|
||||||
} while (defer.size() > 0);
|
} while (defer.size() > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// globalqss - add support for trx in 3.1.2
|
public void setCtx(PIPOContext ctx) {
|
||||||
public void set_TrxName(String trxName) {
|
|
||||||
m_trxName = trxName;
|
|
||||||
}
|
|
||||||
|
|
||||||
// globalqss - add support for trx in 3.1.2
|
|
||||||
public void setCtx(Properties ctx) {
|
|
||||||
m_ctx = ctx;
|
m_ctx = ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,6 +397,35 @@ public class PackInHandler extends DefaultHandler {
|
||||||
return count;
|
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 {
|
class DeferEntry {
|
||||||
Element element;
|
Element element;
|
||||||
boolean startElement = false;
|
boolean startElement = false;
|
||||||
|
|
|
@ -18,8 +18,11 @@
|
||||||
package org.adempiere.pipo2;
|
package org.adempiere.pipo2;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
import org.compiere.Adempiere;
|
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.model.X_AD_Package_Imp_Proc;
|
||||||
import org.compiere.process.ProcessInfoParameter;
|
import org.compiere.process.ProcessInfoParameter;
|
||||||
import org.compiere.process.SvrProcess;
|
import org.compiere.process.SvrProcess;
|
||||||
|
@ -70,7 +73,7 @@ public class PackInProcess extends SvrProcess {
|
||||||
protected String doIt() throws Exception {
|
protected String doIt() throws Exception {
|
||||||
|
|
||||||
X_AD_Package_Imp_Proc adPackageImp = new X_AD_Package_Imp_Proc(getCtx(),
|
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
|
// Create Target directory if required
|
||||||
String packageDirectory = adPackageImp.getAD_Package_Dir();
|
String packageDirectory = adPackageImp.getAD_Package_Dir();
|
||||||
|
@ -78,7 +81,7 @@ public class PackInProcess extends SvrProcess {
|
||||||
packageDirectory = Adempiere.getAdempiereHome();
|
packageDirectory = Adempiere.getAdempiereHome();
|
||||||
}
|
}
|
||||||
|
|
||||||
String targetDirName = packageDirectory + File.separator + "packages";
|
String targetDirName = packageDirectory + File.separator + "packin";
|
||||||
File targetDir = new File(targetDirName);
|
File targetDir = new File(targetDirName);
|
||||||
|
|
||||||
if (!targetDir.exists()) {
|
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
|
// Unzip package
|
||||||
File zipFilepath = new File(adPackageImp.getAD_Package_Source());
|
File zipFilepath = entry.getFile();
|
||||||
log.info("zipFilepath->" + zipFilepath);
|
log.info("zipFilepath->" + zipFilepath);
|
||||||
String parentDir = Zipper.getParentDir(zipFilepath);
|
String parentDir = Zipper.getParentDir(zipFilepath);
|
||||||
Zipper.unpackFile(zipFilepath, targetDir);
|
Zipper.unpackFile(zipFilepath, targetDir);
|
||||||
|
|
||||||
String dict_file = packageDirectory + File.separator
|
String dict_file = packageDirectory + File.separator
|
||||||
+ "packages" + File.separator + parentDir + File.separator
|
+ "packin" + File.separator + parentDir + File.separator
|
||||||
+ "dict" + File.separator + "PackOut.xml";
|
+ "dict" + File.separator + "PackOut.xml";
|
||||||
|
|
||||||
log.info("dict file->" + dict_file);
|
log.info("dict file->" + dict_file);
|
||||||
|
@ -106,15 +119,23 @@ public class PackInProcess extends SvrProcess {
|
||||||
m_UpdateDictionary = false;
|
m_UpdateDictionary = false;
|
||||||
|
|
||||||
m_packageDirectory = packageDirectory + File.separator
|
m_packageDirectory = packageDirectory + File.separator
|
||||||
+ "packages" + File.separator + parentDir + File.separator;
|
+ "packin" + File.separator + parentDir + File.separator;
|
||||||
|
|
||||||
PackIn packIn = new PackIn();
|
PackIn packIn = new PackIn();
|
||||||
packIn.setPackageDirectory(m_packageDirectory);
|
packIn.setPackageDirectory(m_packageDirectory);
|
||||||
packIn.setPackageName(packageName);
|
packIn.setPackageName(packageName);
|
||||||
packIn.setPackageVersion(packageVersion);
|
packIn.setPackageVersion(packageVersion);
|
||||||
packIn.setUpdateDictionary(m_UpdateDictionary);
|
packIn.setUpdateDictionary(m_UpdateDictionary);
|
||||||
|
|
||||||
// call XML Handler
|
// call XML Handler
|
||||||
String msg = packIn.importXML(dict_file, getCtx(), get_TrxName());
|
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;
|
return msg;
|
||||||
} // doIt
|
} // doIt
|
||||||
|
|
|
@ -27,6 +27,7 @@ import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
@ -41,7 +42,7 @@ import javax.xml.transform.stream.StreamResult;
|
||||||
import org.compiere.model.MClient;
|
import org.compiere.model.MClient;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Trx;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.helpers.AttributesImpl;
|
import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
|
@ -66,10 +67,6 @@ public class PackOut
|
||||||
public final static String PackOutVersion = "100";
|
public final static String PackOutVersion = "100";
|
||||||
private final static CLogger log = CLogger.getCLogger(PackOut.class);
|
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 String packageDirectory;
|
||||||
private int blobCount = 0;
|
private int blobCount = 0;
|
||||||
|
|
||||||
|
@ -80,6 +77,8 @@ public class PackOut
|
||||||
private int processedCount;
|
private int processedCount;
|
||||||
private String exportFile;
|
private String exportFile;
|
||||||
private String packoutDirectory;
|
private String packoutDirectory;
|
||||||
|
private PIPOContext pipoContext;
|
||||||
|
private Timestamp fromDate;
|
||||||
|
|
||||||
public static final int MAX_OFFICIAL_ID = MTable.MAX_OFFICIAL_ID;
|
public static final int MAX_OFFICIAL_ID = MTable.MAX_OFFICIAL_ID;
|
||||||
|
|
||||||
|
@ -192,26 +191,33 @@ public class PackOut
|
||||||
OutputStream packoutStream) throws UnsupportedEncodingException, TransformerConfigurationException, SAXException {
|
OutputStream packoutStream) throws UnsupportedEncodingException, TransformerConfigurationException, SAXException {
|
||||||
StreamResult packoutStreamResult = new StreamResult(new OutputStreamWriter(packoutStream,"UTF-8"));
|
StreamResult packoutStreamResult = new StreamResult(new OutputStreamWriter(packoutStream,"UTF-8"));
|
||||||
SAXTransformerFactory packoutFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
|
SAXTransformerFactory packoutFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
|
||||||
|
//indent-number attribute support is not guarantee
|
||||||
|
try {
|
||||||
packoutFactory.setAttribute("indent-number", new Integer(4));
|
packoutFactory.setAttribute("indent-number", new Integer(4));
|
||||||
|
} catch (Exception e) {}
|
||||||
TransformerHandler packoutHandler = packoutFactory.newTransformerHandler();
|
TransformerHandler packoutHandler = packoutFactory.newTransformerHandler();
|
||||||
Transformer packoutTransformer = packoutHandler.getTransformer();
|
Transformer packoutTransformer = packoutHandler.getTransformer();
|
||||||
packoutTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
|
packoutTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
|
||||||
packoutTransformer.setOutputProperty(OutputKeys.INDENT,"yes");
|
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.setResult(packoutStreamResult);
|
||||||
packoutHandler.startDocument();
|
packoutHandler.startDocument();
|
||||||
AttributesImpl atts = new AttributesImpl();
|
AttributesImpl atts = new AttributesImpl();
|
||||||
atts.addAttribute("","","Name","CDATA",packoutDocument.getPackageName());
|
atts.addAttribute("","","Name","CDATA",packoutDocument.getPackageName());
|
||||||
atts.addAttribute("","","Version","CDATA",packoutDocument.getPackageVersion());
|
atts.addAttribute("","","Version","CDATA",packoutDocument.getPackageVersion());
|
||||||
atts.addAttribute("","","AdempiereVersion","CDATA",packoutDocument.getAdempiereVersion());
|
atts.addAttribute("","","AdempiereVersion","CDATA",emptyIfNull(packoutDocument.getAdempiereVersion()));
|
||||||
atts.addAttribute("","","DataBaseVersion","CDATA",packoutDocument.getDatabaseVersion());
|
atts.addAttribute("","","DataBaseVersion","CDATA",emptyIfNull(packoutDocument.getDatabaseVersion()));
|
||||||
atts.addAttribute("","","Description","CDATA",emptyIfNull(packoutDocument.getDescription()));
|
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("","","AuthorEmail","CDATA",emptyIfNull(packoutDocument.getAuthorEmail()));
|
||||||
atts.addAttribute("","","CreatedDate","CDATA",packoutDocument.getCreated().toString());
|
atts.addAttribute("","","CreatedDate","CDATA",packoutDocument.getCreated().toString());
|
||||||
atts.addAttribute("","","UpdatedDate","CDATA",packoutDocument.getUpdated().toString());
|
atts.addAttribute("","","UpdatedDate","CDATA",packoutDocument.getUpdated().toString());
|
||||||
atts.addAttribute("","","PackOutVersion","CDATA",PackOutVersion);
|
atts.addAttribute("","","PackOutVersion","CDATA",PackOutVersion);
|
||||||
|
|
||||||
MClient client = MClient.get(localContext);
|
MClient client = MClient.get(pipoContext.ctx);
|
||||||
StringBuffer sb = new StringBuffer ()
|
StringBuffer sb = new StringBuffer ()
|
||||||
.append(client.get_ID())
|
.append(client.get_ID())
|
||||||
.append("-")
|
.append("-")
|
||||||
|
@ -231,11 +237,18 @@ public class PackOut
|
||||||
private TransformerHandler createDocHandler(OutputStream docStream) throws UnsupportedEncodingException, TransformerConfigurationException, SAXException {
|
private TransformerHandler createDocHandler(OutputStream docStream) throws UnsupportedEncodingException, TransformerConfigurationException, SAXException {
|
||||||
StreamResult docStreamResult = new StreamResult(new OutputStreamWriter(docStream,"UTF-8"));
|
StreamResult docStreamResult = new StreamResult(new OutputStreamWriter(docStream,"UTF-8"));
|
||||||
SAXTransformerFactory transformerFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
|
SAXTransformerFactory transformerFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
|
||||||
|
//indent-number attribute support is not guarantee
|
||||||
|
try {
|
||||||
transformerFactory.setAttribute("indent-number", new Integer(4));
|
transformerFactory.setAttribute("indent-number", new Integer(4));
|
||||||
|
} catch (Exception e) {}
|
||||||
TransformerHandler docHandler = transformerFactory.newTransformerHandler();
|
TransformerHandler docHandler = transformerFactory.newTransformerHandler();
|
||||||
Transformer transformer = docHandler.getTransformer();
|
Transformer transformer = docHandler.getTransformer();
|
||||||
transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
|
transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
|
||||||
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
|
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.setResult(docStreamResult);
|
||||||
docHandler.startDocument();
|
docHandler.startDocument();
|
||||||
docHandler.processingInstruction("xml-stylesheet","type=\"text/css\" href=\"adempiereDocument.css\"");
|
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, "filedirectory", "Directory: \\dict\\", atts);
|
||||||
addTextElement(docHandler, "filenotes", "Notes: Contains all application/object settings for package", 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 ()
|
StringBuffer sb = new StringBuffer ()
|
||||||
.append(client.get_ID())
|
.append(client.get_ID())
|
||||||
.append("-")
|
.append("-")
|
||||||
|
@ -281,13 +294,7 @@ public class PackOut
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initContext() {
|
private void initContext() {
|
||||||
Properties tmp = new Properties();
|
pipoContext.trx = Trx.get(trxName, true);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -352,8 +359,8 @@ public class PackOut
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Properties getCtx() {
|
public PIPOContext getCtx() {
|
||||||
return localContext != null ? localContext : Env.getCtx();
|
return pipoContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -422,4 +429,25 @@ public class PackOut
|
||||||
public String getExportFile() {
|
public String getExportFile() {
|
||||||
return exportFile;
|
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
|
} // PackOut
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
package org.adempiere.pipo2;
|
package org.adempiere.pipo2;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.compiere.Adempiere;
|
||||||
import org.compiere.model.I_AD_Form;
|
import org.compiere.model.I_AD_Form;
|
||||||
import org.compiere.model.I_AD_ImpFormat;
|
import org.compiere.model.I_AD_ImpFormat;
|
||||||
import org.compiere.model.I_AD_Menu;
|
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){
|
if (packageExp.getAD_Package_Exp_ID() == p_PackOut_ID){
|
||||||
//Create the package documentation
|
//Create the package documentation
|
||||||
packoutDirectory = packageExp.getFile_Directory().trim();
|
packoutDirectory = packageExp.getFile_Directory();
|
||||||
|
if (packoutDirectory == null || packoutDirectory.trim().length() == 0) {
|
||||||
|
packoutDirectory = Adempiere.getAdempiereHome().trim();
|
||||||
if (!packoutDirectory.endsWith("/") && !packoutDirectory.endsWith("\\"))
|
if (!packoutDirectory.endsWith("/") && !packoutDirectory.endsWith("\\"))
|
||||||
packoutDirectory+= File.separator;
|
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(),
|
PackoutDocument packoutDocument = new PackoutDocument(packageExp.getName(), packageExp.getPK_Version(), packageExp.getReleaseNo(), packageExp.getVersion(),
|
||||||
packageExp.getDescription(), packageExp.getInstructions(), packageExp.getUserName(),
|
packageExp.getDescription(), packageExp.getInstructions(), packageExp.getUserName(),
|
||||||
packageExp.getEMail(), packageExp.getCreated(), packageExp.getUpdated());
|
packageExp.getEMail(), packageExp.getCreated(), packageExp.getUpdated());
|
||||||
|
@ -115,6 +135,12 @@ public class PackOutProcess extends SvrProcess
|
||||||
}
|
}
|
||||||
|
|
||||||
PackOut packOut = new PackOut();
|
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());
|
packOut.export(packoutDirectory, null, packoutDocument, packoutItems, get_TrxName());
|
||||||
processedCount = packOut.getExportCount();
|
processedCount = packOut.getExportCount();
|
||||||
exportFile = packOut.getExportFile();
|
exportFile = packOut.getExportFile();
|
||||||
|
|
|
@ -2,18 +2,17 @@ package org.adempiere.pipo2;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
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.MTable;
|
||||||
import org.compiere.model.PO;
|
import org.compiere.model.PO;
|
||||||
import org.compiere.model.POInfo;
|
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.CLogger;
|
||||||
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.DisplayType;
|
import org.compiere.util.DisplayType;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.helpers.AttributesImpl;
|
import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
@ -24,7 +23,7 @@ public class PoExporter {
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private CLogger log = CLogger.getCLogger(getClass());
|
private CLogger log = CLogger.getCLogger(getClass());
|
||||||
private Properties ctx;
|
private PIPOContext ctx;
|
||||||
|
|
||||||
private TransformerHandler transformerHandler;
|
private TransformerHandler transformerHandler;
|
||||||
|
|
||||||
|
@ -48,7 +47,7 @@ public class PoExporter {
|
||||||
* @param ctx
|
* @param ctx
|
||||||
* @param po
|
* @param po
|
||||||
*/
|
*/
|
||||||
public PoExporter(Properties ctx, TransformerHandler handler, PO po){
|
public PoExporter(PIPOContext ctx, TransformerHandler handler, PO po){
|
||||||
this.ctx = ctx;
|
this.ctx = ctx;
|
||||||
this.po = po;
|
this.po = po;
|
||||||
transformerHandler = handler;
|
transformerHandler = handler;
|
||||||
|
@ -180,9 +179,13 @@ public class PoExporter {
|
||||||
int AD_Client_ID = po.getAD_Client_ID();
|
int AD_Client_ID = po.getAD_Client_ID();
|
||||||
if (AD_Client_ID == 0)
|
if (AD_Client_ID == 0)
|
||||||
{
|
{
|
||||||
|
addString("AD_Client_ID", "0", new AttributesImpl());
|
||||||
|
if (excludes == null || !excludes.contains("AD_Org_ID"))
|
||||||
addString("AD_Org_ID", "0", new AttributesImpl());
|
addString("AD_Org_ID", "0", new AttributesImpl());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (excludes == null || !excludes.contains("AD_Org_ID"))
|
||||||
{
|
{
|
||||||
int AD_Org_ID = po.getAD_Org_ID();
|
int AD_Org_ID = po.getAD_Org_ID();
|
||||||
if (AD_Org_ID == 0)
|
if (AD_Org_ID == 0)
|
||||||
|
@ -194,8 +197,9 @@ public class PoExporter {
|
||||||
if (!preservedOrg)
|
if (!preservedOrg)
|
||||||
addString("AD_Org_ID", "@AD_Org_ID@", new AttributesImpl());
|
addString("AD_Org_ID", "@AD_Org_ID@", new AttributesImpl());
|
||||||
else {
|
else {
|
||||||
addTableReference(I_AD_Client.Table_Name, I_AD_Client.COLUMNNAME_Value, new AttributesImpl());
|
addTableReference(X_AD_Client.Table_Name, "Value", new AttributesImpl());
|
||||||
addTableReference(I_AD_Org.Table_Name, I_AD_Org.COLUMNNAME_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) {
|
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
|
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;
|
? (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";
|
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 {
|
} else {
|
||||||
//remove _ID
|
//remove _ID
|
||||||
searchColumn = columnName;
|
searchColumn = columnName;
|
||||||
|
@ -257,7 +271,7 @@ public class PoExporter {
|
||||||
if ("Record_ID".equalsIgnoreCase(columnName) && po.get_ColumnIndex("AD_Table_ID") >= 0) {
|
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
|
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;
|
? (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";
|
searchColumn = tableName + "_ID";
|
||||||
} else if (info.getColumnLookup(i) != null){
|
} else if (info.getColumnLookup(i) != null){
|
||||||
searchColumn = info.getColumnLookup(i).getColumnName();
|
searchColumn = info.getColumnLookup(i).getColumnName();
|
||||||
|
@ -286,6 +300,8 @@ public class PoExporter {
|
||||||
addTableReference(columnName, tableName, searchColumn, new AttributesImpl());
|
addTableReference(columnName, tableName, searchColumn, new AttributesImpl());
|
||||||
} else if (DisplayType.isLOB(displayType)) {
|
} else if (DisplayType.isLOB(displayType)) {
|
||||||
addBlob(columnName);
|
addBlob(columnName);
|
||||||
|
} else if (columnName.equals(po.getUUIDColumnName()) && po.get_Value(columnName) == null) {
|
||||||
|
continue;
|
||||||
} else {
|
} else {
|
||||||
add(columnName, "", new AttributesImpl());
|
add(columnName, "", new AttributesImpl());
|
||||||
}
|
}
|
||||||
|
@ -299,7 +315,7 @@ public class PoExporter {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PackOut packOut = (PackOut) ctx.get(PackOut.PACK_OUT_PROCESS_CTX_KEY);
|
PackOut packOut = ctx.packOut;
|
||||||
byte[] data = null;
|
byte[] data = null;
|
||||||
String dataType = null;
|
String dataType = null;
|
||||||
String fileName = null;
|
String fileName = null;
|
||||||
|
|
|
@ -5,7 +5,6 @@ import java.math.BigDecimal;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.compiere.model.PO;
|
import org.compiere.model.PO;
|
||||||
|
@ -16,8 +15,9 @@ import org.compiere.util.Env;
|
||||||
public class PoFiller{
|
public class PoFiller{
|
||||||
|
|
||||||
PO po = null;
|
PO po = null;
|
||||||
|
@SuppressWarnings("unused")
|
||||||
private AbstractElementHandler handler;
|
private AbstractElementHandler handler;
|
||||||
private Properties ctx;
|
private PIPOContext ctx;
|
||||||
private Element element;
|
private Element element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -26,7 +26,7 @@ public class PoFiller{
|
||||||
* @param atts
|
* @param atts
|
||||||
* @param handler
|
* @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.ctx = ctx;
|
||||||
this.po = po;
|
this.po = po;
|
||||||
|
@ -51,7 +51,7 @@ public class PoFiller{
|
||||||
else if (oldValue != null && oldValue.toString().equals(value))
|
else if (oldValue != null && oldValue.toString().equals(value))
|
||||||
return;
|
return;
|
||||||
else
|
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)
|
if (po.get_Value(columnName) != null && po.get_ValueAsBoolean(columnName) == bool)
|
||||||
return;
|
return;
|
||||||
else
|
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))
|
else if (oldValue != null && oldValue.equals(ts))
|
||||||
return;
|
return;
|
||||||
else
|
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))
|
else if (oldValue != null && oldValue.equals(i))
|
||||||
return;
|
return;
|
||||||
else
|
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))
|
else if (oldValue != null && oldValue.equals(bd))
|
||||||
return;
|
return;
|
||||||
else
|
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);
|
Element propertyElement = element.properties.get(qName);
|
||||||
if (propertyElement == null)
|
if (propertyElement == null)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -169,16 +169,16 @@ public class PoFiller{
|
||||||
String value = e.contents.toString();
|
String value = e.contents.toString();
|
||||||
String columnName = qName;
|
String columnName = qName;
|
||||||
if (value != null && value.trim().length() > 0) {
|
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 (columnName.equals("AD_Client_ID") && id > 0) {
|
||||||
if (id != Env.getAD_Client_ID(ctx)) {
|
if (id != Env.getAD_Client_ID(ctx.ctx)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (po.get_ColumnIndex(columnName) >= 0) {
|
if (po.get_ColumnIndex(columnName) >= 0) {
|
||||||
if (id > 0) {
|
if (id > 0) {
|
||||||
if (po.get_ValueAsInt(columnName) != id) {
|
if (po.get_ValueAsInt(columnName) != id) {
|
||||||
po.set_ValueOfColumn(columnName, id);
|
po.set_ValueNoCheck(columnName, id);
|
||||||
}
|
}
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
@ -199,17 +199,27 @@ public class PoFiller{
|
||||||
POInfo info = POInfo.getPOInfo(po.getCtx(), po.get_Table_ID());
|
POInfo info = POInfo.getPOInfo(po.getCtx(), po.get_Table_ID());
|
||||||
List<String>notFounds = new ArrayList<String>();
|
List<String>notFounds = new ArrayList<String>();
|
||||||
|
|
||||||
//special treatment for ad_org_id
|
//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
|
||||||
|
{
|
||||||
Element orgElement = element.properties.get("AD_Org_ID");
|
Element orgElement = element.properties.get("AD_Org_ID");
|
||||||
String sAD_Org_ID = orgElement != null ? orgElement.contents.toString() : null;
|
String sAD_Org_ID = orgElement != null ? orgElement.contents.toString() : null;
|
||||||
if (sAD_Org_ID != null && sAD_Org_ID.equals("0"))
|
if (sAD_Org_ID != null && sAD_Org_ID.equals("0"))
|
||||||
po.setAD_Org_ID(0);
|
po.setAD_Org_ID(0);
|
||||||
else if (sAD_Org_ID != null && sAD_Org_ID.equals("@AD_Org_ID@"))
|
else if (sAD_Org_ID != null && sAD_Org_ID.equals("@AD_Org_ID@"))
|
||||||
po.setAD_Org_ID(Env.getAD_Org_ID(ctx));
|
po.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx));
|
||||||
else {
|
else {
|
||||||
if (setTableReference("AD_Client_ID") >= 0)
|
if (setTableReference("AD_Client_ID") >= 0)
|
||||||
setTableReference("AD_Org_ID");
|
setTableReference("AD_Org_ID");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for(String qName : element.properties.keySet()) {
|
for(String qName : element.properties.keySet()) {
|
||||||
if (excludes != null ){
|
if (excludes != null ){
|
||||||
|
@ -262,7 +272,7 @@ public class PoFiller{
|
||||||
if (component.length == 2) {
|
if (component.length == 2) {
|
||||||
String fileName = component[0];
|
String fileName = component[0];
|
||||||
String dataType = component[1];
|
String dataType = component[1];
|
||||||
PackIn packIn = handler.getPackIn(ctx);
|
PackIn packIn = ctx.packIn;
|
||||||
try {
|
try {
|
||||||
byte[] bytes = packIn.readBlob(fileName);
|
byte[] bytes = packIn.readBlob(fileName);
|
||||||
if ("byte[]".equals(dataType)) {
|
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;
|
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 java.util.Properties;
|
||||||
|
|
||||||
|
import org.adempiere.exceptions.DBException;
|
||||||
|
import org.apache.commons.codec.binary.Hex;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
import org.compiere.model.PO;
|
import org.compiere.model.PO;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
@ -79,25 +85,29 @@ public class ReferenceUtils {
|
||||||
public static String getTableReference(String tableName, String searchColumn, int id, AttributesImpl atts)
|
public static String getTableReference(String tableName, String searchColumn, int id, AttributesImpl atts)
|
||||||
{
|
{
|
||||||
String keyColumn = tableName + "_ID";
|
String keyColumn = tableName + "_ID";
|
||||||
String sql = "SELECT " + searchColumn + " FROM "
|
|
||||||
+ tableName + " WHERE " + keyColumn + " = ?";
|
|
||||||
if (id > 0 && id <= PackOut.MAX_OFFICIAL_ID)
|
if (id > 0 && id <= PackOut.MAX_OFFICIAL_ID)
|
||||||
{
|
{
|
||||||
|
//official id
|
||||||
atts.addAttribute("", "", "reference", "CDATA", "id");
|
atts.addAttribute("", "", "reference", "CDATA", "id");
|
||||||
String value = Integer.toString(id);
|
String value = Integer.toString(id);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
else if (id == 0)
|
else if (id == 0)
|
||||||
{
|
{
|
||||||
|
//no id, should never happen
|
||||||
atts.addAttribute("", "", "reference", "CDATA", "id");
|
atts.addAttribute("", "", "reference", "CDATA", "id");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MTable table = MTable.get(Env.getCtx(), tableName);
|
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 + " = ?";
|
+ tableName + " WHERE " + keyColumn + " = ?";
|
||||||
String value = DB.getSQLValueString(null, sql, id);
|
String value = DB.getSQLValueString(null, sql, id);
|
||||||
if (value != null && value.trim().length() > 0)
|
if (value != null && value.trim().length() > 0)
|
||||||
|
@ -108,6 +118,46 @@ public class ReferenceUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//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);
|
String value = DB.getSQLValueString(null, sql, id);
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
buffer.append(tableName).append(".").append(searchColumn);
|
buffer.append(tableName).append(".").append(searchColumn);
|
||||||
|
@ -116,6 +166,7 @@ public class ReferenceUtils {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue