Test Export Model in Export Format do not work

https://sourceforge.net/tracker/?func=detail&atid=879332&aid=2910176&group_id=176962
Test Import Model do not work ADempiere Client
https://sourceforge.net/tracker/?func=detail&atid=879332&aid=2910169&group_id=176962
finish the implementation of Export Format Generator
https://sourceforge.net/tracker/?func=detail&atid=879332&aid=2910179&group_id=176962
This commit is contained in:
vpj-cd 2009-12-07 21:27:03 +00:00
parent ffbdd8f3ee
commit 4481f00b5d
12 changed files with 550 additions and 241 deletions

View File

@ -32,6 +32,7 @@ package org.adempiere.process;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.logging.Level; import java.util.logging.Level;
@ -55,6 +56,7 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Text; import org.w3c.dom.Text;
/** /**
* *
* @author Trifon Trifonov * @author Trifon Trifonov
@ -214,20 +216,21 @@ public class Export extends SvrProcess
*/ */
private void generateExportFormat(Element rootElement, MEXPFormat exportFormat, ResultSet rs, PO masterPO, int masterID, HashMap<String, Integer> variableMap) throws SQLException, Exception private void generateExportFormat(Element rootElement, MEXPFormat exportFormat, ResultSet rs, PO masterPO, int masterID, HashMap<String, Integer> variableMap) throws SQLException, Exception
{ {
MEXPFormatLine[] formatLines = (MEXPFormatLine[]) exportFormat.getFormatLines(); Collection<MEXPFormatLine> formatLines = exportFormat.getFormatLines();
@SuppressWarnings("unused") @SuppressWarnings("unused")
boolean elementHasValue = false; boolean elementHasValue = false;
for (int i = 0; i < formatLines.length; i++) { for (MEXPFormatLine formatLine : formatLines)
if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_XMLElement) ) { {
if ( formatLine.getType().equals(X_EXP_FormatLine.TYPE_XMLElement) ) {
// process single XML Attribute // process single XML Attribute
// Create new element // Create new element
Element newElement = outDocument.createElement(formatLines[i].getValue()); Element newElement = outDocument.createElement(formatLine.getValue());
if (formatLines[i].getAD_Column_ID() == 0) { if (formatLine.getAD_Column_ID() == 0) {
throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory"));
} }
MColumn column = MColumn.get(getCtx(), formatLines[i].getAD_Column_ID()); MColumn column = MColumn.get(getCtx(), formatLine.getAD_Column_ID());
if (column == null) { if (column == null) {
throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory"));
} }
@ -241,7 +244,7 @@ public class Export extends SvrProcess
if (value != null) { if (value != null) {
valueString = value.toString(); valueString = value.toString();
} else { } else {
if (formatLines[i].isMandatory()) { if (formatLine.isMandatory()) {
throw new Exception(Msg.getMsg (getCtx(), "EXPFieldMandatory")); throw new Exception(Msg.getMsg (getCtx(), "EXPFieldMandatory"));
} }
} }
@ -278,17 +281,17 @@ public class Export extends SvrProcess
} else { } else {
// Empty field. // Empty field.
} }
} else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_XMLAttribute) ) { } else if ( formatLine.getType().equals(X_EXP_FormatLine.TYPE_XMLAttribute) ) {
// process single XML Attribute // process single XML Attribute
/* // Create new element /* // Create new element
Element newElement = outDocument.createElement(formatLines[i].getValue()); Element newElement = outDocument.createElement(formatLines[i].getValue());
if (hasContent) { if (hasContent) {
rootElement.appendChild(newElement); rootElement.appendChild(newElement);
}*/ }*/
if (formatLines[i].getAD_Column_ID() == 0) { if (formatLine.getAD_Column_ID() == 0) {
throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory"));
} }
MColumn column = MColumn.get(getCtx(), formatLines[i].getAD_Column_ID()); MColumn column = MColumn.get(getCtx(), formatLine.getAD_Column_ID());
if (column == null) { if (column == null) {
throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory"));
} }
@ -302,7 +305,7 @@ public class Export extends SvrProcess
if (value != null) { if (value != null) {
valueString = value.toString(); valueString = value.toString();
} else { } else {
if (formatLines[i].isMandatory()) { if (formatLine.isMandatory()) {
throw new Exception(Msg.getMsg (getCtx(), "EXPFieldMandatory")); throw new Exception(Msg.getMsg (getCtx(), "EXPFieldMandatory"));
} }
} }
@ -330,17 +333,17 @@ public class Export extends SvrProcess
}*/ }*/
log.info("EXP Field - column=["+column.getColumnName()+"]; value=" + value); log.info("EXP Field - column=["+column.getColumnName()+"]; value=" + value);
if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) { if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) {
rootElement.setAttribute(formatLines[i].getValue(), valueString); rootElement.setAttribute(formatLine.getValue(), valueString);
elementHasValue = true; elementHasValue = true;
//increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable //increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable
//increaseVariable(variableMap, TOTAL_SEGMENTS); //increaseVariable(variableMap, TOTAL_SEGMENTS);
} else { } else {
// Empty field. // Empty field.
} }
} else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_EmbeddedEXPFormat) ) { } else if ( formatLine.getType().equals(X_EXP_FormatLine.TYPE_EmbeddedEXPFormat) ) {
// process Embedded Export Format // process Embedded Export Format
int embeddedFormat_ID = formatLines[i].getEXP_EmbeddedFormat_ID(); int embeddedFormat_ID = formatLine.getEXP_EmbeddedFormat_ID();
MEXPFormat embeddedFormat = new MEXPFormat(getCtx(), embeddedFormat_ID, get_TrxName()); MEXPFormat embeddedFormat = new MEXPFormat(getCtx(), embeddedFormat_ID, get_TrxName());
MTable tableEmbedded = MTable.get(getCtx(), embeddedFormat.getAD_Table_ID()); MTable tableEmbedded = MTable.get(getCtx(), embeddedFormat.getAD_Table_ID());
@ -366,8 +369,8 @@ public class Export extends SvrProcess
int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID"); int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID");
PO poEmbedded = tableEmbedded.getPO (embeddedID, get_TrxName()); PO poEmbedded = tableEmbedded.getPO (embeddedID, get_TrxName());
Element embeddedElement = outDocument.createElement(formatLines[i].getValue()); Element embeddedElement = outDocument.createElement(formatLine.getValue());
embeddedElement.appendChild(outDocument.createComment(formatLines[i].getDescription())); embeddedElement.appendChild(outDocument.createComment(formatLine.getDescription()));
generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap); generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap);
rootElement.appendChild(embeddedElement); rootElement.appendChild(embeddedElement);
} }

View File

@ -26,7 +26,7 @@
* Sponsors: * * Sponsors: *
* - E-evolution (http://www.e-evolution.com) * * - E-evolution (http://www.e-evolution.com) *
**********************************************************************/ **********************************************************************/
package org.adempiere.server.rpl; package org.adempiere.process.rpl;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;

View File

@ -34,6 +34,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Properties; import java.util.Properties;
@ -63,6 +64,7 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Text; import org.w3c.dom.Text;
/** /**
* @author Trifon N. Trifonov * @author Trifon N. Trifonov
* @author Antonio Cañaveral, e-Evolution * @author Antonio Cañaveral, e-Evolution
@ -232,7 +234,7 @@ public class ExportHelper {
for (int id : ids) for (int id : ids)
{ {
PO po = table.getPO(id, null); PO po = table.getPO(id, exportFormat.get_TrxName());
log.info("Client = " + client.toString()); log.info("Client = " + client.toString());
log.finest("po.getAD_Org_ID() = " + po.getAD_Org_ID()); log.finest("po.getAD_Org_ID() = " + po.getAD_Org_ID());
log.finest("po.get_TrxName() = " + po.get_TrxName()); log.finest("po.get_TrxName() = " + po.get_TrxName());
@ -302,20 +304,22 @@ public class ExportHelper {
*/ */
private void generateExportFormat(Element rootElement, MEXPFormat exportFormat, ResultSet rs, PO masterPO, int masterID, HashMap<String, Integer> variableMap) throws SQLException, Exception private void generateExportFormat(Element rootElement, MEXPFormat exportFormat, ResultSet rs, PO masterPO, int masterID, HashMap<String, Integer> variableMap) throws SQLException, Exception
{ {
MEXPFormatLine[] formatLines = (MEXPFormatLine[]) exportFormat.getFormatLines(); Collection<MEXPFormatLine> formatLines = exportFormat.getFormatLines();
@SuppressWarnings("unused") @SuppressWarnings("unused")
boolean elementHasValue = false; boolean elementHasValue = false;
for (int i = 0; i < formatLines.length; i++) { //for (int i = 0; i < formatLines.length; i++) {
if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_XMLElement) ) { for (MEXPFormatLine formatLine : formatLines)
{
if ( formatLine.getType().equals(X_EXP_FormatLine.TYPE_XMLElement) ) {
// process single XML Attribute // process single XML Attribute
// Create new element // Create new element
Element newElement = outDocument.createElement(formatLines[i].getValue()); Element newElement = outDocument.createElement(formatLine.getValue());
if (formatLines[i].getAD_Column_ID() == 0) { if (formatLine.getAD_Column_ID() == 0) {
throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
} }
MColumn column = MColumn.get(masterPO.getCtx(), formatLines[i].getAD_Column_ID()); MColumn column = MColumn.get(masterPO.getCtx(), formatLine.getAD_Column_ID());
if (column == null) { if (column == null) {
throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
} }
@ -330,14 +334,14 @@ public class ExportHelper {
valueString = value.toString(); valueString = value.toString();
} else { } else {
// Could remove this exception and create empty XML Element when column do not have value. // Could remove this exception and create empty XML Element when column do not have value.
if (formatLines[i].isMandatory()) { if (formatLine.isMandatory()) {
//throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPFieldMandatory")); //throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPFieldMandatory"));
} }
} }
if (column.getAD_Reference_ID() == DisplayType.Date) { if (column.getAD_Reference_ID() == DisplayType.Date) {
if (valueString != null) { if (valueString != null) {
if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) { if (formatLine.getDateFormat() != null && !"".equals(formatLine.getDateFormat())) {
m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy" m_customDateFormat = new SimpleDateFormat( formatLine.getDateFormat() ); // "MM/dd/yyyy"
//Date date = m_customDateFormat.parse ( valueString ); //Date date = m_customDateFormat.parse ( valueString );
valueString = m_customDateFormat.format(Timestamp.valueOf (valueString)); valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
newElement.setAttribute("DateFormat", m_customDateFormat.toPattern()); // Add "DateForamt attribute" newElement.setAttribute("DateFormat", m_customDateFormat.toPattern()); // Add "DateForamt attribute"
@ -351,8 +355,8 @@ public class ExportHelper {
} }
} else if (column.getAD_Reference_ID() == DisplayType.DateTime) { } else if (column.getAD_Reference_ID() == DisplayType.DateTime) {
if (valueString != null) { if (valueString != null) {
if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) { if (formatLine.getDateFormat() != null && !"".equals(formatLine.getDateFormat())) {
m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy" m_customDateFormat = new SimpleDateFormat( formatLine.getDateFormat() ); // "MM/dd/yyyy"
//Date date = m_customDateFormat.parse ( valueString ); //Date date = m_customDateFormat.parse ( valueString );
valueString = m_customDateFormat.format(Timestamp.valueOf (valueString)); valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
newElement.setAttribute("DateFormat", m_customDateFormat.toPattern()); // Add "DateForamt attribute" newElement.setAttribute("DateFormat", m_customDateFormat.toPattern()); // Add "DateForamt attribute"
@ -374,19 +378,19 @@ public class ExportHelper {
//increaseVariable(variableMap, TOTAL_SEGMENTS); //increaseVariable(variableMap, TOTAL_SEGMENTS);
} else { } else {
// Empty field. // Empty field.
if (formatLines[i].isMandatory()) { if (formatLine.isMandatory()) {
Text newText = outDocument.createTextNode(""); Text newText = outDocument.createTextNode("");
newElement.appendChild(newText); newElement.appendChild(newText);
rootElement.appendChild(newElement); rootElement.appendChild(newElement);
elementHasValue = true; elementHasValue = true;
} }
} }
} else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_XMLAttribute) ) { } else if ( formatLine.getType().equals(X_EXP_FormatLine.TYPE_XMLAttribute) ) {
// process single XML Attribute // process single XML Attribute
if (formatLines[i].getAD_Column_ID() == 0) { if (formatLine.getAD_Column_ID() == 0) {
throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
} }
MColumn column = MColumn.get(masterPO.getCtx(), formatLines[i].getAD_Column_ID()); MColumn column = MColumn.get(masterPO.getCtx(), formatLine.getAD_Column_ID());
if (column == null) { if (column == null) {
throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
} }
@ -400,7 +404,7 @@ public class ExportHelper {
if (value != null) { if (value != null) {
valueString = value.toString(); valueString = value.toString();
} else { } else {
if (formatLines[i].isMandatory()) { if (formatLine.isMandatory()) {
throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPFieldMandatory")); throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPFieldMandatory"));
} }
} }
@ -428,17 +432,19 @@ public class ExportHelper {
}*/ }*/
log.info("EXP Field - column=["+column.getColumnName()+"]; value=" + value); log.info("EXP Field - column=["+column.getColumnName()+"]; value=" + value);
if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) { if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) {
rootElement.setAttribute(formatLines[i].getValue(), valueString); rootElement.setAttribute(formatLine.getValue(), valueString);
elementHasValue = true; elementHasValue = true;
//increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable //increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable
//increaseVariable(variableMap, TOTAL_SEGMENTS); //increaseVariable(variableMap, TOTAL_SEGMENTS);
} else { } else {
// Empty field. // Empty field.
} }
} else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_EmbeddedEXPFormat) ) { }
else if ( formatLine.getType().equals(X_EXP_FormatLine.TYPE_EmbeddedEXPFormat) )
{
// process Embedded Export Format // process Embedded Export Format
int embeddedFormat_ID = formatLines[i].getEXP_EmbeddedFormat_ID(); int embeddedFormat_ID = formatLine.getEXP_EmbeddedFormat_ID();
MEXPFormat embeddedFormat = new MEXPFormat(masterPO.getCtx(), embeddedFormat_ID, masterPO.get_TrxName()); MEXPFormat embeddedFormat = new MEXPFormat(masterPO.getCtx(), embeddedFormat_ID, masterPO.get_TrxName());
MTable tableEmbedded = MTable.get(masterPO.getCtx(), embeddedFormat.getAD_Table_ID()); MTable tableEmbedded = MTable.get(masterPO.getCtx(), embeddedFormat.getAD_Table_ID());
@ -465,9 +471,9 @@ public class ExportHelper {
int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID"); int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID");
PO poEmbedded = tableEmbedded.getPO (embeddedID, masterPO.get_TrxName()); PO poEmbedded = tableEmbedded.getPO (embeddedID, masterPO.get_TrxName());
Element embeddedElement = outDocument.createElement(formatLines[i].getValue()); Element embeddedElement = outDocument.createElement(formatLine.getValue());
if (formatLines[i].getDescription() != null && !"".equals(formatLines[i].getDescription())) { if (formatLine.getDescription() != null && !"".equals(formatLine.getDescription())) {
embeddedElement.appendChild(outDocument.createComment(formatLines[i].getDescription())); embeddedElement.appendChild(outDocument.createComment(formatLine.getDescription()));
} }
generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap); generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap);
rootElement.appendChild(embeddedElement); rootElement.appendChild(embeddedElement);
@ -482,10 +488,12 @@ public class ExportHelper {
pstmt = null; pstmt = null;
} }
} else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_ReferencedEXPFormat) ) { }
else if ( formatLine.getType().equals(X_EXP_FormatLine.TYPE_ReferencedEXPFormat) )
{
// process Referenced Export Format // process Referenced Export Format
int embeddedFormat_ID = formatLines[i].getEXP_EmbeddedFormat_ID(); int embeddedFormat_ID = formatLine.getEXP_EmbeddedFormat_ID();
MEXPFormat embeddedFormat = new MEXPFormat(masterPO.getCtx(), embeddedFormat_ID, masterPO.get_TrxName()); MEXPFormat embeddedFormat = new MEXPFormat(masterPO.getCtx(), embeddedFormat_ID, masterPO.get_TrxName());
MTable tableEmbedded = MTable.get(masterPO.getCtx(), embeddedFormat.getAD_Table_ID()); MTable tableEmbedded = MTable.get(masterPO.getCtx(), embeddedFormat.getAD_Table_ID());
@ -499,10 +507,10 @@ public class ExportHelper {
sql.append(" AND ").append(embeddedFormat.getWhereClause()); sql.append(" AND ").append(embeddedFormat.getWhereClause());
} }
log.info(sql.toString()); log.info(sql.toString());
if (formatLines[i].getAD_Column_ID() == 0) { if (formatLine.getAD_Column_ID() == 0) {
throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
} }
MColumn column = MColumn.get(masterPO.getCtx(), formatLines[i].getAD_Column_ID()); MColumn column = MColumn.get(masterPO.getCtx(), formatLine.getAD_Column_ID());
if (column == null) { if (column == null) {
throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory")); throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
} }
@ -532,9 +540,9 @@ public class ExportHelper {
int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID"); int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID");
PO poEmbedded = tableEmbedded.getPO (embeddedID, masterPO.get_TrxName()); PO poEmbedded = tableEmbedded.getPO (embeddedID, masterPO.get_TrxName());
Element embeddedElement = outDocument.createElement(formatLines[i].getValue()); Element embeddedElement = outDocument.createElement(formatLine.getValue());
if (formatLines[i].getDescription() != null && !"".equals(formatLines[i].getDescription())) { if (formatLine.getDescription() != null && !"".equals(formatLine.getDescription())) {
embeddedElement.appendChild(outDocument.createComment(formatLines[i].getDescription())); embeddedElement.appendChild(outDocument.createComment(formatLine.getDescription()));
} }
generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap); generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap);
rootElement.appendChild(embeddedElement); rootElement.appendChild(embeddedElement);

View File

@ -0,0 +1,165 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* 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. *
* For the text or an alternative of this public license, you may reach us *
* Contributor(s): Victor Perez www.e-evolution.com *
* Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
*****************************************************************************/
package org.adempiere.process.rpl.exp;
import java.io.File;
import java.io.StringWriter;
import java.io.Writer;
import java.util.logging.Level;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.compiere.Adempiere;
import org.compiere.model.MEXPFormat;
import org.compiere.model.MReplicationStrategy;
import org.compiere.model.ModelValidator;
import org.compiere.model.X_AD_ReplicationTable;
import org.compiere.process.ProcessInfo;
import org.compiere.process.ProcessInfoParameter;
import org.compiere.process.SvrProcess;
import org.compiere.util.CLogMgt;
import org.compiere.util.Env;
import org.w3c.dom.Document;
/**
*
* @author victor.perez@e-evolution.com
* FB [1963487 ] Is necessary new process to export and import with an Export
* @see http://sourceforge.net/tracker/?func=detail&atid=879335&aid=1963487&group_id=176962
* @version $Id:$
*/
public class ModelExporter extends SvrProcess {
/** Client Parameter */
protected int p_AD_Client_ID = 0;
/** Document Type Parameter */
protected int p_C_DocType_ID = 0;
/** Record ID */
protected int p_Record_ID = 0;
/** EXP_Format_ID */
protected int p_EXP_Format_ID = 0;
/** File Name **/
protected String p_FileName = "";
/** Table ID */
int AD_Table_ID = 0;
/**
* Get Parameters
*/
protected void prepare() {
p_Record_ID = getRecord_ID();
if (p_AD_Client_ID == 0)
p_AD_Client_ID = Env.getAD_Client_ID(getCtx());
AD_Table_ID = getTable_ID();
StringBuffer sb = new StringBuffer("AD_Table_ID=").append(AD_Table_ID);
sb.append("; Record_ID=").append(getRecord_ID());
// Parameter
ProcessInfoParameter[] paras = getParameter();
for (ProcessInfoParameter para : paras)
{
String name = para.getParameterName();
if (para.getParameter() == null)
;
else if (name.equals("EXP_Format_ID"))
p_EXP_Format_ID = para.getParameterAsInt();
else if (name.equals("FileName"))
p_FileName = (String)para.getParameter();
else
log.log(Level.SEVERE, "Unknown Parameter: " + name);
}
if(p_EXP_Format_ID == 0)
p_EXP_Format_ID = p_Record_ID;
if(p_FileName == null)
{
// Load XML file and parse it
String fileNameOr = org.compiere.util.Ini.findAdempiereHome()
+ System.getProperty("file.separator")
+ "data"
+ System.getProperty("file.separator")
+ "ExportFile.xml";
p_FileName = fileNameOr;
}
log.info(sb.toString());
}
/**
* Process
*
* @return info
*/
protected String doIt() throws Exception
{
ExportHelper expHelper = new ExportHelper(getCtx(),p_AD_Client_ID);
MEXPFormat exportFormat = new MEXPFormat (getCtx(), p_EXP_Format_ID, get_TrxName() );
File file = new File(p_FileName);
Document doc = expHelper.exportRecord(exportFormat,"", MReplicationStrategy.REPLICATION_TABLE, X_AD_ReplicationTable.REPLICATIONTYPE_Merge,ModelValidator.TYPE_AFTER_CHANGE);
// Save the document to the disk file
TransformerFactory tranFactory = TransformerFactory.newInstance();
tranFactory.setAttribute("indent-number", 4);
Transformer aTransformer = tranFactory.newTransformer();
aTransformer.setOutputProperty(OutputKeys.METHOD, "xml");
aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
Source src = new DOMSource(doc);
// =================================== Write to String
Writer writer = new StringWriter();
Result dest2 = new StreamResult(writer);
aTransformer.transform(src, dest2);
// =================================== Write to Disk
try {
Result dest = new StreamResult(file);
aTransformer.transform(src, dest);
writer.flush();
writer.close();
} catch (TransformerException ex) {
ex.printStackTrace();
throw ex;
}
return "Exported";
}
public static void main(String[] args)
{
CLogMgt.setLoggerLevel(Level.INFO, null);
CLogMgt.setLevel(Level.INFO);
Adempiere.startupEnvironment(true);
ProcessInfo pi = new ProcessInfo("Test Import Model", 1000000);
pi.setAD_Client_ID(11);
pi.setAD_User_ID(100);
ModelExporter modelExporter = new ModelExporter();
modelExporter.startProcess(Env.getCtx(), pi, null);
}
}

View File

@ -26,20 +26,22 @@
* Sponsors: * * Sponsors: *
* - E-evolution (http://www.e-evolution.com/) * * - E-evolution (http://www.e-evolution.com/) *
**********************************************************************/ **********************************************************************/
package org.adempiere.server.rpl.imp; package org.adempiere.process.rpl.imp;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathExpressionException;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.process.rpl.exp.ExportHelper; import org.adempiere.process.rpl.exp.ExportHelper;
import org.adempiere.server.rpl.XMLHelper; import org.adempiere.process.rpl.XMLHelper;
import org.compiere.model.I_AD_Client; import org.compiere.model.I_AD_Client;
import org.compiere.model.MClient; import org.compiere.model.MClient;
import org.compiere.model.MColumn; import org.compiere.model.MColumn;
@ -266,8 +268,8 @@ public class ImportHelper {
StringBuffer orderBy = new StringBuffer(MEXPFormatLine.COLUMNNAME_IsMandatory).append(" DESC ") StringBuffer orderBy = new StringBuffer(MEXPFormatLine.COLUMNNAME_IsMandatory).append(" DESC ")
.append(", ").append(MEXPFormatLine.COLUMNNAME_Position); .append(", ").append(MEXPFormatLine.COLUMNNAME_Position);
MEXPFormatLine[] formatLines = expFormat.getFormatLinesOrderedBy(orderBy.toString()); Collection<MEXPFormatLine> formatLines = expFormat.getFormatLinesOrderedBy(orderBy.toString());
if (formatLines == null || formatLines.length < 1) if (formatLines == null || formatLines.size() < 1)
{ {
throw new Exception(Msg.getMsg(ctx, "EXPFormatNoLines")); throw new Exception(Msg.getMsg(ctx, "EXPFormatNoLines"));
} }
@ -472,8 +474,7 @@ public class ImportHelper {
// //
if (!Util.isEmpty(value.toString())) if (!Util.isEmpty(value.toString()))
{ {
double doubleValue = Double.parseDouble(value.toString()); value = new Integer(value.toString());
value = new BigDecimal(doubleValue);
} }
else else
{ {
@ -567,22 +568,25 @@ public class ImportHelper {
} }
// Get list with all Unique columns! // Get list with all Unique columns!
MEXPFormatLine[] uniqueFormatLines = expFormat.getUniqueColumns(); Collection<MEXPFormatLine> uniqueFormatLines = expFormat.getUniqueColumns();
if (uniqueFormatLines == null || uniqueFormatLines.length < 1) if (uniqueFormatLines == null || uniqueFormatLines.size() < 1)
{ {
throw new Exception(Msg.getMsg(ctx, "EXPFormatLineNoUniqueColumns")); throw new AdempiereException(Msg.getMsg(ctx, "EXPFormatLineNoUniqueColumns"));
} }
Object[] cols = new Object[uniqueFormatLines.length]; Object[] cols = new Object[uniqueFormatLines.size()];
Object[] params = new Object[uniqueFormatLines.length]; Object[] params = new Object[uniqueFormatLines.size()];
StringBuffer whereClause= new StringBuffer(""); StringBuffer whereClause= new StringBuffer("");
int col = 0; int col = 0;
String formatLines = "";
for (MEXPFormatLine uniqueFormatLine : uniqueFormatLines) for (MEXPFormatLine uniqueFormatLine : uniqueFormatLines)
{ {
MColumn column = MColumn.get(ctx, uniqueFormatLine.getAD_Column_ID()); MColumn column = MColumn.get(ctx, uniqueFormatLine.getAD_Column_ID());
log.info("column = ["+column+"]"); log.info("column = ["+column+"]");
String valuecol=column.getColumnName(); String valuecol=column.getColumnName();
formatLines = formatLines + "|"+ valuecol;
if (MEXPFormatLine.TYPE_XMLElement.equals(uniqueFormatLine.getType())) if (MEXPFormatLine.TYPE_XMLElement.equals(uniqueFormatLine.getType()))
{ {
// XML Element // XML Element
@ -626,10 +630,23 @@ public class ImportHelper {
{ {
params[col] = (String)cols[col]; params[col] = (String)cols[col];
} }
else if( DisplayType.Amount == column.getAD_Reference_ID() else if ( DisplayType.isID(column.getAD_Reference_ID())
|| DisplayType.Number == column.getAD_Reference_ID() || DisplayType.Integer == column.getAD_Reference_ID())
|| DisplayType.CostPrice == column.getAD_Reference_ID() {
|| DisplayType.Quantity == column.getAD_Reference_ID()) Object value = cols[col];
if (!Util.isEmpty(value.toString()))
{
//double doubleValue = Double.parseDouble(value.toString());
value = new Integer(value.toString());
}
else
{
value=null;
}
params[col] = value;
}
else if( DisplayType.isNumeric(column.getAD_Reference_ID()))
{ {
valuecol="Round("+valuecol+",2)"; valuecol="Round("+valuecol+",2)";
params[col] = new BigDecimal((String)cols[col]).setScale(2, BigDecimal.ROUND_HALF_UP); params[col] = new BigDecimal((String)cols[col]).setScale(2, BigDecimal.ROUND_HALF_UP);
@ -653,7 +670,7 @@ public class ImportHelper {
if(values.size()>1)//The Return Object must be always one if(values.size()>1)//The Return Object must be always one
{ {
throw new Exception(Msg.getMsg(ctx, "EXPFormatIncorrectFormatDefinition")); throw new AdempiereException(Msg.getMsg(ctx, "EXPFormatLineNoUniqueColumns") + " : " +expFormat.getName() + "(" +formatLines+")");
} }
if(values.size()<=0)//Means that is a new record if(values.size()<=0)//Means that is a new record

View File

@ -26,11 +26,11 @@
* Sponsors: * * Sponsors: *
* - E-evolution (http://www.e-evolution.com/) * * - E-evolution (http://www.e-evolution.com/) *
**********************************************************************/ **********************************************************************/
package org.adempiere.server.rpl.imp; package org.adempiere.process.rpl.imp;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.server.rpl.XMLHelper; import org.adempiere.process.rpl.XMLHelper;
import org.compiere.Adempiere; import org.compiere.Adempiere;
import org.compiere.process.ProcessInfo; import org.compiere.process.ProcessInfo;
import org.compiere.process.ProcessInfoParameter; import org.compiere.process.ProcessInfoParameter;

View File

@ -30,19 +30,13 @@
package org.compiere.model; package org.compiere.model;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.Collection;
import java.util.List;
import java.util.Properties; import java.util.Properties;
import java.util.logging.Level;
import org.compiere.model.MTable;
import org.compiere.model.Query;
import org.compiere.util.CCache; import org.compiere.util.CCache;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DB;
/** /**
* @author Trifon N. Trifonov * @author Trifon N. Trifonov
@ -51,10 +45,11 @@ import org.compiere.util.DB;
* <li>http://sourceforge.net/tracker/index.php?func=detail&aid=2195090&group_id=176962&atid=879335 * <li>http://sourceforge.net/tracker/index.php?func=detail&aid=2195090&group_id=176962&atid=879335
*/ */
public class MEXPFormat extends X_EXP_Format { public class MEXPFormat extends X_EXP_Format {
/** /**
* *
*/ */
private static final long serialVersionUID = 1070027055056912752L; private static final long serialVersionUID = 1455411275338766608L;
/** Static Logger */ /** Static Logger */
private static CLogger s_log = CLogger.getCLogger (MEXPFormat.class); private static CLogger s_log = CLogger.getCLogger (MEXPFormat.class);
@ -69,87 +64,30 @@ public class MEXPFormat extends X_EXP_Format {
super (ctx, rs, trxName); super (ctx, rs, trxName);
} }
public MEXPFormatLine[] getFormatLines() { public Collection<MEXPFormatLine> getFormatLines() {
return getFormatLinesOrderedBy(X_EXP_FormatLine.COLUMNNAME_Position); return getFormatLinesOrderedBy(X_EXP_FormatLine.COLUMNNAME_Position);
} }
public MEXPFormatLine[] getFormatLinesOrderedBy(String orderBy) { public Collection<MEXPFormatLine> getFormatLinesOrderedBy(String orderBy)
List<MEXPFormatLine> resultList = new ArrayList<MEXPFormatLine>(); {
final String clauseWhere = X_EXP_FormatLine.COLUMNNAME_EXP_Format_ID + "=?";
StringBuffer sql = new StringBuffer("SELECT * ") return new Query(getCtx() , I_EXP_FormatLine.Table_Name, clauseWhere , get_TrxName())
.append(" FROM ").append(X_EXP_FormatLine.Table_Name) .setOnlyActiveRecords(true)
.append(" WHERE ").append(X_EXP_FormatLine.COLUMNNAME_EXP_Format_ID).append("=?") .setParameters(new Object[]{getEXP_Format_ID()})
.append(" AND IsActive = ?") .setOrderBy(orderBy)
.append(" ORDER BY ").append(orderBy); .list();
PreparedStatement pstmt = null;
MEXPFormatLine exportLine = null;
try {
pstmt = DB.prepareStatement (sql.toString(), get_TrxName());
pstmt.setInt(1, getEXP_Format_ID());
pstmt.setString(2, "Y");
ResultSet rs = pstmt.executeQuery ();
while ( rs.next() ) {
exportLine = new MEXPFormatLine (getCtx(), rs, get_TrxName());
resultList.add(exportLine);
}
rs.close ();
pstmt.close ();
pstmt = null;
} catch (SQLException e) {
s_log.log(Level.SEVERE, sql.toString(), e);
} finally {
try {
if (pstmt != null) pstmt.close ();
pstmt = null;
} catch (Exception e) { pstmt = null; }
}
MEXPFormatLine[] result = (MEXPFormatLine[])resultList.toArray( new MEXPFormatLine[0]);
return result;
} }
public MEXPFormatLine[] getUniqueColumns() throws SQLException { public Collection<MEXPFormatLine> getUniqueColumns() throws SQLException {
List<MEXPFormatLine> resultList = new ArrayList<MEXPFormatLine>(); final String clauseWhere = X_EXP_FormatLine.COLUMNNAME_EXP_Format_ID+"= ?"
+ " AND " + X_EXP_FormatLine.COLUMNNAME_IsPartUniqueIndex +"= ?";
StringBuffer sql = new StringBuffer("SELECT * ") return new Query(getCtx(), I_EXP_FormatLine.Table_Name, clauseWhere, get_TrxName())
.append(" FROM ").append(X_EXP_FormatLine.Table_Name) .setOnlyActiveRecords(true)
.append(" WHERE ").append(X_EXP_FormatLine.COLUMNNAME_EXP_Format_ID).append("= ?") .setParameters(new Object[]{getEXP_Format_ID(), "Y"})
.append(" AND IsActive = ?") .setOrderBy(X_EXP_FormatLine.COLUMNNAME_Position)
.append(" AND ").append(X_EXP_FormatLine.COLUMNNAME_IsPartUniqueIndex).append("= ?") .list();
.append(" ORDER BY ").append(X_EXP_FormatLine.COLUMNNAME_Position);
PreparedStatement pstmt = null;
MEXPFormatLine exportLine = null;
log.info(sql.toString());
log.info("pstmt.setInt(1, getEXP_Format_ID() = " + getEXP_Format_ID());
try {
pstmt = DB.prepareStatement (sql.toString(), get_TrxName());
pstmt.setInt(1, getEXP_Format_ID());
pstmt.setString(2, "Y");
pstmt.setString(3, "Y");
ResultSet rs = pstmt.executeQuery ();
while ( rs.next() ) {
exportLine = new MEXPFormatLine (getCtx(), rs, get_TrxName());
resultList.add(exportLine);
}
rs.close ();
pstmt.close ();
pstmt = null;
} catch (SQLException e) {
s_log.log(Level.SEVERE, sql.toString(), e);
throw e;
} finally {
try {
if (pstmt != null) pstmt.close ();
pstmt = null;
} catch (Exception e) { pstmt = null; }
}
MEXPFormatLine[] result = (MEXPFormatLine[])resultList.toArray( new MEXPFormatLine[0]);
return result;
} }
public static MEXPFormat getFormatByValueAD_Client_IDAndVersion(Properties ctx, String value, int AD_Client_ID, String version, String trxName) public static MEXPFormat getFormatByValueAD_Client_IDAndVersion(Properties ctx, String value, int AD_Client_ID, String version, String trxName)
throws SQLException throws SQLException
{ {

View File

@ -15,9 +15,11 @@
*****************************************************************************/ *****************************************************************************/
package org.eevolution.process; package org.eevolution.process;
import java.sql.SQLException;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.exceptions.AdempiereException;
import org.compiere.model.MColumn; import org.compiere.model.MColumn;
import org.compiere.model.MEXPFormat; import org.compiere.model.MEXPFormat;
import org.compiere.model.MEXPFormatLine; import org.compiere.model.MEXPFormatLine;
@ -45,30 +47,33 @@ public class ExportFormatGenerator extends SvrProcess
private boolean p_IsMandatory = false; private boolean p_IsMandatory = false;
private boolean p_IsInsertRecord= false; private boolean p_IsInsertRecord= false;
private Hashtable m_formats = new Hashtable(); private Hashtable m_formats = new Hashtable();
private String version = "3.2.0";
private String m_parent_table = null; private String m_parent_table = null;
private String m_format_value = null; private String m_format_value = null;
private int m_level = -1; private int m_level = -1;
private MTab currentTab = null;
private MWindow window = null;
/** /**
* Prepare - e.g., get Parameters. * Prepare - e.g., get Parameters.
*/ */
protected void prepare() protected void prepare()
{ {
ProcessInfoParameter[] para = getParameter(); ProcessInfoParameter[] paras = getParameter();
for (int i = 0; i < para.length; i++) for (ProcessInfoParameter para : paras)
{ {
String name = para[i].getParameterName(); String name = para.getParameterName();
if (para[i].getParameter() == null) if (para.getParameter() == null)
; ;
else if (name.equals("AD_Window_ID")) else if (name.equals("AD_Window_ID"))
p_AD_Window_ID = para[i].getParameterAsInt(); p_AD_Window_ID = para.getParameterAsInt();
else if (name.equals("IsMandatory")) else if (name.equals("IsMandatory"))
{ {
p_IsMandatory = "Y".equals(para[i].getParameter()); p_IsMandatory = "Y".equals(para.getParameter());
} }
else if (name.equals("IsInsertRecord")) else if (name.equals("IsInsertRecord"))
{ {
p_IsInsertRecord = "Y".equals(para[i].getParameter()); p_IsInsertRecord = "Y".equals(para.getParameter());
} }
else else
log.log(Level.SEVERE, "Unknown Parameter: " + name); log.log(Level.SEVERE, "Unknown Parameter: " + name);
@ -82,7 +87,7 @@ public class ExportFormatGenerator extends SvrProcess
*/ */
protected String doIt () throws Exception protected String doIt () throws Exception
{ {
MWindow window = new MWindow(getCtx(),p_AD_Window_ID, get_TrxName()); window = new MWindow(getCtx(),p_AD_Window_ID, get_TrxName());
MTab[] tabs = window.getTabs(true, get_TrxName()); MTab[] tabs = window.getTabs(true, get_TrxName());
@ -144,7 +149,7 @@ public class ExportFormatGenerator extends SvrProcess
return format.getValue(); return format.getValue();
String where=" value = ? "; String where=" value = ? ";
Query sql = new Query(getCtx(),MEXPFormat.Table_Name,where,null).setParameters(new Object[]{formatValue}); Query sql = new Query(getCtx(),MEXPFormat.Table_Name,where,get_TrxName()).setParameters(new Object[]{formatValue});
if(sql.match()) if(sql.match())
{ {
format = (MEXPFormat) sql.first(); format = (MEXPFormat) sql.first();
@ -152,17 +157,17 @@ public class ExportFormatGenerator extends SvrProcess
return format.getValue(); return format.getValue();
} }
format = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(getCtx(), formatValue, getAD_Client_ID(), "1", get_TrxName()); format = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(getCtx(), formatValue, getAD_Client_ID(), version, get_TrxName());
if(format == null) if(format == null)
format = new MEXPFormat(getCtx(), 0 , get_TrxName()); format = new MEXPFormat(getCtx(), 0 , get_TrxName());
format.setAD_Org_ID(0);
format.setValue(formatValue); format.setValue(formatValue);
format.setName(table.getName()); format.setName(table.getName());
format.setAD_Table_ID(table.getAD_Table_ID()); format.setAD_Table_ID(table.getAD_Table_ID());
format.setDescription(table.getDescription()); format.setDescription(table.getDescription());
format.setHelp(table.getHelp()); format.setHelp(table.getHelp());
format.setVersion("1"); format.setVersion(version);
format.save(); format.saveEx();
if (format != null) if (format != null)
m_formats.put(format.getValue(), format); m_formats.put(format.getValue(), format);
@ -184,41 +189,54 @@ public class ExportFormatGenerator extends SvrProcess
private int createFormatLine(MEXPFormat format, MTable table, MColumn col, int position,boolean force) throws Exception private int createFormatLine(MEXPFormat format, MTable table, MColumn col, int position,boolean force) throws Exception
{ {
MEXPFormatLine format_line =null; MEXPFormatLine formatLine =null;
String formatlinevalue= col.getColumnName(); String formatlinevalue= col.getColumnName();
format_line = MEXPFormatLine.getFormatLineByValue(getCtx(),formatlinevalue ,format.getEXP_Format_ID(),get_TrxName()); formatLine = MEXPFormatLine.getFormatLineByValue(getCtx(),formatlinevalue ,format.getEXP_Format_ID(),get_TrxName());
if(format_line==null) if(formatLine==null)
format_line = new MEXPFormatLine(getCtx(),0,get_TrxName()); formatLine = new MEXPFormatLine(getCtx(),0,get_TrxName());
format_line.setEXP_Format_ID(format.getEXP_Format_ID());
format_line.setValue(formatlinevalue); formatLine.setAD_Org_ID(0);
format_line.setName(col.getName()); formatLine.setEXP_Format_ID(format.getEXP_Format_ID());
format_line.setDescription(col.getDescription()); formatLine.setValue(formatlinevalue);
format_line.setHelp(col.getHelp()); formatLine.setName(col.getName());
format_line.setPosition(position); formatLine.setDescription(col.getDescription());
format_line.setIsMandatory(col.isMandatory()); formatLine.setHelp(col.getHelp());
if(force||col.isIdentifier()) formatLine.setPosition(position);
formatLine.setIsMandatory(col.isMandatory());
if(force
|| (col.isIdentifier()
&& !col.isKey()))
{ {
format_line.setIsPartUniqueIndex(true); formatLine.setIsPartUniqueIndex(true);
format_line.setIsActive(true); formatLine.setIsActive(true);
} }
else else
format_line.setIsActive(false); {
formatLine.setIsActive(false);
}
MTable tabledir = null; MTable tabledir = null;
if(col.getColumnName().equals(m_parent_table+"_ID")&(col.getAD_Reference_ID()==DisplayType.Search|col.getAD_Reference_ID()==DisplayType.TableDir)) if(col.getColumnName().equals(m_parent_table+"_ID")
&& DisplayType.isID(col.getAD_Reference_ID()))
{ {
MEXPFormat referenceFormat = null; MEXPFormat referenceFormat = null;
referenceFormat = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(getCtx(), m_parent_table+"_Key", getAD_Client_ID(), "1", get_TrxName()); referenceFormat = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(getCtx(), m_parent_table+"_Key", getAD_Client_ID(), version, get_TrxName());
if(referenceFormat == null) if(referenceFormat == null)
{
referenceFormat = new MEXPFormat(getCtx(), 0 , get_TrxName()); referenceFormat = new MEXPFormat(getCtx(), 0 , get_TrxName());
}
referenceFormat.setAD_Org_ID(0);
referenceFormat.setValue(m_parent_table+"_Key"); referenceFormat.setValue(m_parent_table+"_Key");
referenceFormat.setName(m_parent_table+"_Key"); referenceFormat.setName(m_parent_table+"_Key");
referenceFormat.setAD_Table_ID(table.getAD_Table_ID()); referenceFormat.setAD_Table_ID(MTable.getTable_ID(m_parent_table));
referenceFormat.setDescription(table.getDescription()); referenceFormat.setDescription(table.getDescription());
referenceFormat.setHelp(table.getHelp()); referenceFormat.setHelp(table.getHelp());
referenceFormat.setVersion("1"); referenceFormat.setVersion(version);
referenceFormat.save(); referenceFormat.saveEx();
int AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='DOCUMENTNO'",m_parent_table); int AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='DOCUMENTNO'",m_parent_table);
if(AD_Column_ID>0) if(AD_Column_ID>0)
@ -229,57 +247,86 @@ public class ExportFormatGenerator extends SvrProcess
AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='C_DOCTYPE_ID'",m_parent_table); AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='C_DOCTYPE_ID'",m_parent_table);
if(AD_Column_ID>0) if(AD_Column_ID>0)
createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 20,true); createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 20,true);
formatLine.setValue(m_parent_table+"_Key");
formatLine.setName("Key DocumentNo_C_DocType");
formatLine.setAD_Column_ID(col.getAD_Column_ID());
formatLine.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
formatLine.setEXP_EmbeddedFormat_ID(referenceFormat.getEXP_Format_ID());
formatLine.saveEx();
format_line.setValue(m_parent_table+"_DocumentNo_C_DocType_Key"); if(m_parent_table != null)
format_line.setName("Key DocumentNo_C_DocType"); {
format_line.setAD_Column_ID(col.getAD_Column_ID()); if (col.isParent() && col.getColumnName().contains(m_parent_table))
format_line.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat); {
format_line.setEXP_EmbeddedFormat_ID(referenceFormat.getEXP_Format_ID());
format_line.save(); int reference = ((MEXPFormat)m_formats.get(m_format_value)).getEXP_Format_ID();
return format_line.getEXP_FormatLine_ID(); MEXPFormatLine embededformatLine = new MEXPFormatLine(getCtx(), 0 , get_TrxName());
}else embededformatLine.setAD_Org_ID(0);
embededformatLine.setValue(format.getValue()+"_Embedded");
embededformatLine.setName("Embedded "+ format.getName());
embededformatLine.setEXP_EmbeddedFormat_ID(formatLine.getEXP_Format_ID());
embededformatLine.setEXP_Format_ID(reference);
embededformatLine.setType(MEXPFormatLine.TYPE_EmbeddedEXPFormat);
embededformatLine.setAD_Column_ID(col.getAD_Column_ID());
embededformatLine.saveEx();
}
}
log.info("Export Format Line:"+formatLine.getName());
return formatLine.getEXP_FormatLine_ID();
}
else
{ {
AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='NAME'",m_parent_table); AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='NAME'",m_parent_table);
if(AD_Column_ID>0) if(AD_Column_ID>0)
{
createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 10,true); createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 10,true);
}
else else
{ {
AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='VALUE'",m_parent_table); AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='VALUE'",m_parent_table);
if(AD_Column_ID>0) if(AD_Column_ID>0)
{
createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 10,true); createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 10,true);
}
else else
throw new Exception("Table without name or value column"); {
throw new AdempiereException("Table without name or value column");
}
} }
format_line.setValue(m_parent_table+"_Key"); formatLine.setValue(m_parent_table+"_Key");
format_line.setName("Key "+ col.getColumnName()); formatLine.setName("Key "+ col.getColumnName());
format_line.setAD_Column_ID(col.getAD_Column_ID()); formatLine.setAD_Column_ID(col.getAD_Column_ID());
format_line.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat); formatLine.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
format_line.setEXP_EmbeddedFormat_ID(referenceFormat.getEXP_Format_ID()); formatLine.setEXP_EmbeddedFormat_ID(referenceFormat.getEXP_Format_ID());
format_line.save(); formatLine.saveEx();
return format_line.getEXP_FormatLine_ID(); return formatLine.getEXP_FormatLine_ID();
} }
} }
if((col.getAD_Reference_ID()==DisplayType.Table||col.getAD_Reference_ID()==DisplayType.Search)&col.getAD_Reference_Value_ID()>0) if(DisplayType.isID(col.getAD_Reference_ID()) && col.getAD_Reference_Value_ID()>0)
{ {
int AD_Table_ID = DB.getSQLValue(get_TrxName(), "SELECT rt.AD_Table_ID FROM AD_Reference r INNER JOIN AD_Ref_Table rt ON (r.AD_Reference_ID=rt.AD_Reference_ID) WHERE r.AD_Reference_ID=?", col.getAD_Reference_Value_ID()); int AD_Table_ID = DB.getSQLValue(get_TrxName(), "SELECT rt.AD_Table_ID FROM AD_Reference r INNER JOIN AD_Ref_Table rt ON (r.AD_Reference_ID=rt.AD_Reference_ID) WHERE r.AD_Reference_ID=?", col.getAD_Reference_Value_ID());
if (AD_Table_ID > 0) if (AD_Table_ID > 0)
{ {
tabledir = MTable.get(getCtx(), AD_Table_ID); tabledir = MTable.get(getCtx(), AD_Table_ID);
format_line.setValue(col.getColumnName()+"_Reference"); formatLine.setValue(col.getColumnName()+"_Reference");
format_line.setName("Referenced "+ tabledir.getTableName()); formatLine.setName("Referenced "+ tabledir.getTableName());
format_line.setAD_Column_ID(col.getAD_Column_ID()); formatLine.setAD_Column_ID(col.getAD_Column_ID());
String format_value = createFormat(tabledir); String format_value = createFormat(tabledir);
int embedded = ((MEXPFormat)m_formats.get(format_value)).getEXP_Format_ID(); int embedded = ((MEXPFormat)m_formats.get(format_value)).getEXP_Format_ID();
format_line.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat); formatLine.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
format_line.setEXP_EmbeddedFormat_ID(embedded); formatLine.setEXP_EmbeddedFormat_ID(embedded);
format_line.save(); formatLine.saveEx();
return format_line.getEXP_FormatLine_ID(); return formatLine.getEXP_FormatLine_ID();
} }
} }
if(DisplayType.isID(col.getAD_Reference_ID())
if((col.getAD_Reference_ID()==DisplayType.TableDir & col.isKey()== false) || (col.getAD_Reference_ID()==DisplayType.TableDir & col.isParent() == true)) && col.isKey() == false
&& DisplayType.ID
!= col.getAD_Reference_ID()
&& DisplayType.Image
!= col.getAD_Reference_ID())
{ {
String tableName = col.getColumnName().substring(0, col.getColumnName().lastIndexOf("_ID")); String tableName = col.getColumnName().substring(0, col.getColumnName().lastIndexOf("_ID"));
@ -292,42 +339,51 @@ public class ExportFormatGenerator extends SvrProcess
if(tabledir==null) if(tabledir==null)
throw new Exception ("Ilegal Table Name"); throw new Exception ("Ilegal Table Name");
format_line.setValue(tabledir.getTableName()+"_Reference"); formatLine.setValue(tabledir.getTableName()+"_Reference");
format_line.setName("Referenced "+ tabledir.getTableName()); formatLine.setName("Referenced "+ tabledir.getTableName());
//formatLine.setType(MEXPFormatLine.TYPE_XMLElement);
if (tabledir!=null) if (tabledir!=null)
{ {
if(m_parent_table != null) String format_value = createFormat(tabledir);
{ int embedded = ((MEXPFormat)m_formats.get(format_value)).getEXP_Format_ID();
if (col.isParent() && col.getColumnName().contains(m_parent_table)) formatLine.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
{ formatLine.setEXP_EmbeddedFormat_ID(embedded);
int embedded = ((MEXPFormat)m_formats.get(m_format_value)).getEXP_Format_ID();
format_line.setValue(format.getValue()+"_Embedded");
format_line.setName("Embedded "+ format.getName());
format_line.setEXP_EmbeddedFormat_ID(format_line.getEXP_Format_ID());
format_line.setEXP_Format_ID(embedded);
format_line.setType(MEXPFormatLine.TYPE_EmbeddedEXPFormat);
format_line.setAD_Column_ID(col.getAD_Column_ID());
format_line.save();
log.info("Export Format Line:"+format_line.getName());
return format_line.getEXP_FormatLine_ID();
}
}
String format_value = createFormat(tabledir);
int embedded = ((MEXPFormat)m_formats.get(format_value)).getEXP_Format_ID();
format_line.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
format_line.setEXP_EmbeddedFormat_ID(embedded);
} }
else else
format_line.setType(MEXPFormatLine.TYPE_XMLElement); formatLine.setType(MEXPFormatLine.TYPE_XMLElement);
} }
formatLine.setAD_Column_ID(col.getAD_Column_ID());
format_line.setAD_Column_ID(col.getAD_Column_ID()); formatLine.saveEx();
format_line.save(); log.info("Export Format Line:"+formatLine.getName());
log.info("Export Format Line:"+format_line.getName()); return formatLine.getEXP_FormatLine_ID();
return format_line.getEXP_FormatLine_ID();
} }
private void createEmbededFormat(MTable table, MColumn col,boolean force) throws Exception
{
if(col.isParent() && getTab().getTabLevel() > 0)
{
String tableName = col.getColumnName().substring(0, col.getColumnName().lastIndexOf("_ID"));
MEXPFormat format = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(getCtx(), tableName, getAD_Client_ID(), version, get_TrxName());
if (format != null)
{
createFormatLine(format, MTable.get(col.getCtx(), tableName), col, 0 , force);
return;
}
}
}
private MTab getTab()
{
return currentTab;
}
private MWindow getWindow()
{
return window;
}
private void setTab(MTab tab)
{
currentTab = tab;
}
} // Generate Export Format } // Generate Export Format

View File

@ -0,0 +1,60 @@
-- Dec 1, 2009 10:41:32 PM CST
-- Replication Stabilization
UPDATE AD_Process SET IsActive='Y', IsBetaFunctionality='N',Updated=TO_DATE('2009-12-01 22:41:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_ID=53085
;
-- Dec 1, 2009 10:41:33 PM CST
-- Replication Stabilization
UPDATE AD_Menu SET Description='Create multiple Export Format based in a Window', IsActive='Y', Name='Export Format Generator',Updated=TO_DATE('2009-12-01 22:41:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Menu_ID=53125
;
-- Dec 1, 2009 10:42:43 PM CST
-- Replication Stabilization
UPDATE AD_Menu SET IsActive='Y',Updated=TO_DATE('2009-12-01 22:42:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Menu_ID=53130
;
-- Dec 1, 2009 10:43:39 PM CST
-- Replication Stabilization
UPDATE AD_Process SET IsActive='Y',Updated=TO_DATE('2009-12-01 22:43:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_ID=53089
;
-- Dec 1, 2009 10:44:32 PM CST
-- Replication Stabilization
UPDATE AD_Process SET Classname='org.adempiere.process.rpl.imp.ModelImporter',Updated=TO_DATE('2009-12-01 22:44:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_ID=53074
;
-- Dec 1, 2009 10:44:50 PM CST
-- Replication Stabilization
UPDATE AD_Window SET IsBetaFunctionality='N',Updated=TO_DATE('2009-12-01 22:44:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Window_ID=53025
;
-- Dec 1, 2009 10:44:58 PM CST
-- Replication Stabilization
UPDATE AD_Window SET IsSOTrx='N',Updated=TO_DATE('2009-12-01 22:44:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Window_ID=53025
;
-- Dec 1, 2009 10:45:26 PM CST
-- Replication Stabilization
UPDATE AD_Field SET IsActive='Y',Updated=TO_DATE('2009-12-01 22:45:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=55417
;
-- Dec 1, 2009 10:58:44 PM CST
-- Replication Stabilization
UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=55417
;
-- Dec 1, 2009 10:58:44 PM CST
-- Replication Stabilization
UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=54570
;
-- Dec 1, 2009 10:58:51 PM CST
-- Replication Stabilization
UPDATE AD_Field SET Included_Tab_ID=53086,Updated=TO_DATE('2009-12-01 22:58:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=54570
;
-- Dec 1, 2009 10:59:21 PM CST
-- Replication Stabilization
UPDATE AD_Tab SET IsSingleRow='N',Updated=TO_DATE('2009-12-01 22:59:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Tab_ID=53086
;

View File

@ -0,0 +1,60 @@
-- Dec 1, 2009 10:41:32 PM CST
-- Replication Stabilization
UPDATE AD_Process SET IsActive='Y', IsBetaFunctionality='N',Updated=TO_TIMESTAMP('2009-12-01 22:41:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_ID=53085
;
-- Dec 1, 2009 10:41:33 PM CST
-- Replication Stabilization
UPDATE AD_Menu SET Description='Create multiple Export Format based in a Window', IsActive='Y', Name='Export Format Generator',Updated=TO_TIMESTAMP('2009-12-01 22:41:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Menu_ID=53125
;
-- Dec 1, 2009 10:42:43 PM CST
-- Replication Stabilization
UPDATE AD_Menu SET IsActive='Y',Updated=TO_TIMESTAMP('2009-12-01 22:42:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Menu_ID=53130
;
-- Dec 1, 2009 10:43:39 PM CST
-- Replication Stabilization
UPDATE AD_Process SET IsActive='Y',Updated=TO_TIMESTAMP('2009-12-01 22:43:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_ID=53089
;
-- Dec 1, 2009 10:44:32 PM CST
-- Replication Stabilization
UPDATE AD_Process SET Classname='org.adempiere.process.rpl.imp.ModelImporter',Updated=TO_TIMESTAMP('2009-12-01 22:44:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_ID=53074
;
-- Dec 1, 2009 10:44:50 PM CST
-- Replication Stabilization
UPDATE AD_Window SET IsBetaFunctionality='N',Updated=TO_TIMESTAMP('2009-12-01 22:44:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Window_ID=53025
;
-- Dec 1, 2009 10:44:58 PM CST
-- Replication Stabilization
UPDATE AD_Window SET IsSOTrx='N',Updated=TO_TIMESTAMP('2009-12-01 22:44:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Window_ID=53025
;
-- Dec 1, 2009 10:45:26 PM CST
-- Replication Stabilization
UPDATE AD_Field SET IsActive='Y',Updated=TO_TIMESTAMP('2009-12-01 22:45:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=55417
;
-- Dec 1, 2009 10:58:44 PM CST
-- Replication Stabilization
UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=55417
;
-- Dec 1, 2009 10:58:44 PM CST
-- Replication Stabilization
UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=54570
;
-- Dec 1, 2009 10:58:51 PM CST
-- Replication Stabilization
UPDATE AD_Field SET Included_Tab_ID=53086,Updated=TO_TIMESTAMP('2009-12-01 22:58:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=54570
;
-- Dec 1, 2009 10:59:21 PM CST
-- Replication Stabilization
UPDATE AD_Tab SET IsSingleRow='N',Updated=TO_TIMESTAMP('2009-12-01 22:59:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Tab_ID=53086
;

View File

@ -30,8 +30,9 @@ package org.adempiere.server.rpl.imp;
import java.util.Properties; import java.util.Properties;
import org.adempiere.process.rpl.imp.ImportHelper;
import org.adempiere.process.rpl.XMLHelper;
import org.adempiere.server.rpl.IImportProcessor; import org.adempiere.server.rpl.IImportProcessor;
import org.adempiere.server.rpl.XMLHelper;
import org.compiere.model.MIMPProcessor; import org.compiere.model.MIMPProcessor;
import org.compiere.model.X_IMP_ProcessorParameter; import org.compiere.model.X_IMP_ProcessorParameter;
import org.compiere.server.ReplicationProcessor; import org.compiere.server.ReplicationProcessor;

View File

@ -41,7 +41,8 @@ import javax.jms.Session;
import javax.jms.TextMessage; import javax.jms.TextMessage;
import javax.jms.Topic; import javax.jms.Topic;
import org.adempiere.server.rpl.XMLHelper; import org.adempiere.process.rpl.imp.ImportHelper;
import org.adempiere.process.rpl.XMLHelper;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;
import org.compiere.server.ReplicationProcessor; import org.compiere.server.ReplicationProcessor;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;