diff --git a/org.adempiere.pipo.handlers/plugin.xml b/org.adempiere.pipo.handlers/plugin.xml
index 818b89e3dc..2cefbfbe30 100644
--- a/org.adempiere.pipo.handlers/plugin.xml
+++ b/org.adempiere.pipo.handlers/plugin.xml
@@ -136,6 +136,10 @@
class="org.adempiere.pipo2.handler.ReportViewColElementHandler"
id="AD_ReportView_Col">
+
+
diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColumnElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColumnElementHandler.java
new file mode 100644
index 0000000000..4dc9fddd40
--- /dev/null
+++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColumnElementHandler.java
@@ -0,0 +1,150 @@
+/***********************************************************************
+ * This file is part of iDempiere ERP Open Source *
+ * http://www.idempiere.org *
+ * *
+ * Copyright (C) Contributors *
+ * *
+ * This program is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU General Public License *
+ * as published by the Free Software Foundation; either version 2 *
+ * of the License, or (at your option) any later version. *
+ * *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301, USA. *
+ * *
+ * Contributors: *
+ * - Nicolas Micoud (TGI) *
+ **********************************************************************/
+package org.adempiere.pipo2.handler;
+
+import java.util.List;
+
+import javax.xml.transform.sax.TransformerHandler;
+
+import org.adempiere.exceptions.AdempiereException;
+import org.adempiere.pipo2.AbstractElementHandler;
+import org.adempiere.pipo2.Element;
+import org.adempiere.pipo2.PIPOContext;
+import org.adempiere.pipo2.PackOut;
+import org.adempiere.pipo2.PoExporter;
+import org.adempiere.pipo2.PoFiller;
+import org.adempiere.pipo2.exception.POSaveFailedException;
+import org.compiere.model.Query;
+import org.compiere.model.X_AD_Package_Imp_Detail;
+import org.compiere.model.X_AD_ReportView_Column;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+/**
+ * Report View Column (AD_ReportView_Column) element handler
+ * @author Nicolas Micoud (TGI)
+ */
+public class ReportViewColumnElementHandler extends AbstractElementHandler {
+
+ public void startElement(PIPOContext ctx, Element element)
+ throws SAXException {
+ List excludes = defaultExcludeList(X_AD_ReportView_Column.Table_Name);
+
+ String entitytype = getStringValue(element,"EntityType");
+ if (isProcessElement(ctx.ctx, entitytype)) {
+ excludes.add("AD_Table_ID");
+ X_AD_ReportView_Column mReportviewColumn = findPO(ctx, element);
+ if (mReportviewColumn == null) {
+ mReportviewColumn = new X_AD_ReportView_Column(ctx.ctx, 0, getTrxName(ctx));
+ }
+
+ PoFiller filler = new PoFiller(ctx, mReportviewColumn, element, this);
+ List notfounds = filler.autoFill(excludes);
+ if (notfounds.size() > 0) {
+ element.defer = true;
+ element.unresolved = notfounds.toString();
+ return;
+ }
+
+ if (mReportviewColumn.is_new() || mReportviewColumn.is_Changed()) {
+ X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_ReportView_Column.Table_Name,
+ X_AD_ReportView_Column.Table_ID);
+ String action = null;
+ if (!mReportviewColumn.is_new()) {
+ backupRecord(ctx, impDetail.getAD_Package_Imp_Detail_ID(), X_AD_ReportView_Column.Table_Name,
+ mReportviewColumn);
+ action = "Update";
+ } else {
+ action = "New";
+ }
+ if (mReportviewColumn.save(getTrxName(ctx)) == true) {
+ logImportDetail(ctx, impDetail, 1, "" + mReportviewColumn.getAD_ReportView_ID(),
+ mReportviewColumn.get_ID(), action);
+ } else {
+ logImportDetail(ctx, impDetail, 0, "" + mReportviewColumn.getAD_ReportView_ID(),
+ mReportviewColumn.get_ID(),action);
+ throw new POSaveFailedException("Failed to save ReportViewColumn");
+ }
+ }
+ } else {
+ element.skip = true;
+ }
+ }
+
+ public void endElement(PIPOContext ctx, Element element) throws SAXException {
+ }
+
+ public void create(PIPOContext ctx, TransformerHandler document)
+ throws SAXException {
+
+ X_AD_ReportView_Column po = (X_AD_ReportView_Column) ctx.ctx.get("po");
+
+ if (po != null) {
+
+ if (!isPackOutElement(ctx, po))
+ return;
+
+ verifyPackOutRequirement(po);
+
+ AttributesImpl atts = new AttributesImpl();
+ addTypeName(atts, "table");
+ document.startElement("", "", X_AD_ReportView_Column.Table_Name, atts);
+ createReportViewColumnBinding(ctx, document, po);
+ document.endElement("", "", X_AD_ReportView_Column.Table_Name);
+ }
+ }
+
+ private void createReportViewColumnBinding(PIPOContext ctx, TransformerHandler document,
+ X_AD_ReportView_Column m_Reportview_Column) {
+
+ PoExporter filler = new PoExporter(ctx, document, m_Reportview_Column);
+ List excludes = defaultExcludeList(X_AD_ReportView_Column.Table_Name);
+ filler.add("AD_ReportView_Column_UU", new AttributesImpl());
+ filler.export(excludes);
+ }
+
+ @Override
+ public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
+ throws Exception {
+ throw new AdempiereException("X_AD_ReportView_Column doesn't have ID, use method with UUID");
+ }
+
+ @Override
+ public void packOut(PackOut packout, TransformerHandler packoutHandler,
+ TransformerHandler docHandler,
+ int recordId, String uuid) throws Exception {
+ X_AD_ReportView_Column po = new Query(packout.getCtx().ctx, X_AD_ReportView_Column.Table_Name, "X_AD_ReportView_Column_UU=?", getTrxName(packout.getCtx()))
+ .setParameters(uuid)
+ .first();
+
+ if (po != null) {
+ packout.getCtx().ctx.put("po", po);
+ this.create(packout.getCtx(), packoutHandler);
+ packout.getCtx().ctx.remove("po", po);
+ } else {
+ throw new AdempiereException("AD_Process_Access_UU not found = " + uuid);
+ }
+ }
+}
diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewElementHandler.java
index f8fd05866a..0cb5261224 100644
--- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewElementHandler.java
+++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewElementHandler.java
@@ -34,10 +34,12 @@ import org.adempiere.pipo2.exception.POSaveFailedException;
import org.compiere.model.I_AD_PrintFormat;
import org.compiere.model.I_AD_ReportView;
import org.compiere.model.I_AD_Table;
+import org.compiere.model.MReportView;
+import org.compiere.model.Query;
import org.compiere.model.X_AD_Package_Exp_Detail;
import org.compiere.model.X_AD_Package_Imp_Detail;
-import org.compiere.model.MReportView;
import org.compiere.model.X_AD_ReportView_Col;
+import org.compiere.model.X_AD_ReportView_Column;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.xml.sax.SAXException;
@@ -46,6 +48,7 @@ import org.xml.sax.helpers.AttributesImpl;
public class ReportViewElementHandler extends AbstractElementHandler {
private ReportViewColElementHandler columnHandler = new ReportViewColElementHandler();
+ private ReportViewColumnElementHandler columnSelHandler = new ReportViewColumnElementHandler();
public void startElement(PIPOContext ctx, Element element)
throws SAXException {
@@ -132,6 +135,22 @@ public class ReportViewElementHandler extends AbstractElementHandler {
DB.close(rs, pstmt);
}
+ sql = "SELECT AD_Column_ID FROM AD_ReportView_Column WHERE AD_Reportview_ID= "
+ + AD_ReportView_ID;
+ pstmt = null;
+ rs = null;
+ try {
+ pstmt = DB.prepareStatement(sql, getTrxName(ctx));
+ rs = pstmt.executeQuery();
+ while (rs.next()) {
+ createReportViewColumn(ctx, document, AD_ReportView_ID, rs.getInt("AD_Column_ID"));
+ }
+ } catch (Exception e) {
+ throw new AdempiereException(e);
+ } finally {
+ DB.close(rs, pstmt);
+ }
+
if (createElement) {
document.endElement("", "", MReportView.Table_Name);
}
@@ -164,6 +183,18 @@ public class ReportViewElementHandler extends AbstractElementHandler {
ctx.ctx.remove(X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID);
}
+ private void createReportViewColumn(PIPOContext ctx,
+ TransformerHandler document, int AD_ReportView_ID, int AD_Column_ID)
+ throws SAXException {
+
+ Query query = new Query(ctx.ctx, "AD_ReportView_Column", "AD_ReportView_ID=? AND AD_Column_ID=?", getTrxName(ctx));
+ X_AD_ReportView_Column po = query.setParameters(new Object[]{AD_ReportView_ID, AD_Column_ID}).first();
+
+ ctx.ctx.put("po", po);
+ columnSelHandler.create(ctx, document);
+ ctx.ctx.remove("po");
+ }
+
private void createReportViewBinding(PIPOContext ctx, TransformerHandler document,
MReportView m_Reportview) {