hg merge release-1.0c (merge release1 into release2)

This commit is contained in:
Carlos Ruiz 2013-11-21 21:27:42 -05:00
commit 47a9526d03
1 changed files with 37 additions and 2 deletions

View File

@ -18,6 +18,7 @@ package org.adempiere.pipo2.handler;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
@ -28,13 +29,14 @@ 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.Element;
import org.adempiere.pipo2.ElementHandler; import org.adempiere.pipo2.ElementHandler;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
import org.adempiere.pipo2.PackOut;
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.PackOut;
import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.PoFiller;
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;
import org.compiere.model.PO; import org.compiere.model.PO;
@ -88,6 +90,7 @@ public class GenericPOElementHandler extends AbstractElementHandler {
return; return;
} }
po.saveEx(); po.saveEx();
element.recordId = po.get_ID();
} }
public void endElement(PIPOContext ctx, Element element) throws SAXException { public void endElement(PIPOContext ctx, Element element) throws SAXException {
@ -108,6 +111,7 @@ public class GenericPOElementHandler extends AbstractElementHandler {
int tableId = Env.getContextAsInt(ctx.ctx, DataElementParameters.AD_TABLE_ID); int tableId = Env.getContextAsInt(ctx.ctx, DataElementParameters.AD_TABLE_ID);
String tableName = MTable.getTableName(ctx.ctx, tableId); String tableName = MTable.getTableName(ctx.ctx, tableId);
List<String> excludes = defaultExcludeList(tableName); List<String> excludes = defaultExcludeList(tableName);
boolean checkExcluded = ! sql.toLowerCase().startsWith("select *");
Statement stmt = null; Statement stmt = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
@ -122,6 +126,31 @@ public class GenericPOElementHandler extends AbstractElementHandler {
boolean createElement = isPackOutElement(ctx, po); boolean createElement = isPackOutElement(ctx, po);
if (checkExcluded) { // IDEMPIERE-1563
MTable table = MTable.get(ctx.ctx, tableId);
for (MColumn column : table.getColumns(false)) {
try {
rs.findColumn(column.getColumnName());
} catch (SQLException e) {
if (column.getColumnName().equals("AD_Client_ID") || column.getColumnName().equals("AD_Org_ID")) {
throw new Exception("SQL Statement must include AD_Client_ID and AD_Org_ID");
}
if (!excludes.contains(column.getColumnName().toLowerCase())) {
excludes.add(column.getColumnName().toLowerCase());
}
}
}
for (String keycol : po.get_KeyColumns()) {
if (excludes.contains(keycol.toLowerCase())) {
throw new Exception("SQL Statement must include key columns");
}
}
if (excludes.contains(po.getUUIDColumnName().toLowerCase())) {
throw new Exception("SQL Statement must include UUID column");
}
checkExcluded = false;
}
if (createElement) { if (createElement) {
if (po.get_ID() > 0) { if (po.get_ID() > 0) {
ElementHandler handler = ctx.packOut.getHandler(po.get_TableName()); ElementHandler handler = ctx.packOut.getHandler(po.get_TableName());
@ -136,6 +165,12 @@ public class GenericPOElementHandler extends AbstractElementHandler {
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);
ctx.packOut.getCtx().ctx.put("Table_Name",tableName);
try {
new CommonTranslationHandler().packOut(ctx.packOut,document,null,po.get_ID());
} catch(Exception e) {
if (log.isLoggable(Level.INFO)) log.info(e.toString());
}
} }
} }