use of org.adempiere.process.rpl.IExportProcessor in project adempiere by adempiere.
the class ExportHelper method exportRecord.
/**
*
* Process - Generate Export Format
* @param po
* @param replicationMode
* @param replicationType
* @param replicationEvent
* @return info
* @throws Exception
*/
public String exportRecord(PO po, Integer replicationMode, String replicationType, Integer replicationEvent) throws Exception {
MClient client = MClient.get(po.getCtx(), clientId);
log.info("Client = " + client.toString());
log.info("po.getAD_Org_ID() = " + po.getAD_Org_ID());
log.info("po.get_TrxName() = " + po.get_TrxName());
if (po.get_TrxName() == null || po.get_TrxName().equals("")) {
po.set_TrxName("exportRecord");
}
log.info("Table = " + po.get_TableName());
if (po.get_KeyColumns().length < 1) {
//TODO: Create Mesagge.
throw new Exception(Msg.getMsg(po.getCtx(), "ExportNoneColumnKeyNotSupported"));
}
// TODO - get proper Export Format!
String version = "3.8.2";
//int EXP_Format_ID = 1000006;
MEXPFormat exportFormat = null;
//exportFormat = new MFormat(po.getCtx(), EXP_Format_ID, po.get_TrxName());
exportFormat = MEXPFormat.getFormatByAD_Client_IDAD_Table_IDAndVersion(po.getCtx(), clientId, po.get_Table_ID(), version, po.get_TrxName());
log.fine("exportFormat = " + exportFormat);
if (exportFormat == null || exportFormat.getEXP_Format_ID() == 0) {
// Fall back to System Client
MClient systemClient = MClient.get(po.getCtx(), 0);
log.info(systemClient.toString());
exportFormat = MEXPFormat.getFormatByAD_Client_IDAD_Table_IDAndVersion(po.getCtx(), 0, po.get_Table_ID(), version, po.get_TrxName());
if (exportFormat == null || exportFormat.getEXP_Format_ID() == 0) {
throw new Exception(Msg.getMsg(po.getCtx(), "EXPFormatNotFound"));
}
}
outDocument = createNewDocument();
HashMap<String, Integer> variableMap = new HashMap<String, Integer>();
Element rootElement = outDocument.createElement(exportFormat.getValue());
if (exportFormat.getDescription() != null && !"".equals(exportFormat.getDescription())) {
rootElement.appendChild(outDocument.createComment(exportFormat.getDescription()));
}
rootElement.setAttribute("AD_Client_Value", client.getValue());
rootElement.setAttribute("Version", exportFormat.getVersion());
rootElement.setAttribute("ReplicationMode", replicationMode.toString());
rootElement.setAttribute("ReplicationType", replicationType);
rootElement.setAttribute("ReplicationEvent", replicationEvent.toString());
outDocument.appendChild(rootElement);
generateExportFormat(rootElement, exportFormat, po, po.get_ID(), variableMap);
MEXPProcessor mExportProcessor = null;
mExportProcessor = new MEXPProcessor(po.getCtx(), replicationStrategy.getEXP_Processor_ID(), po.get_TrxName());
log.fine("ExportProcessor = " + mExportProcessor);
int EXP_ProcessorType_ID = 0;
EXP_ProcessorType_ID = mExportProcessor.getEXP_Processor_Type_ID();
MEXPProcessorType expProcessor_Type = new MEXPProcessorType(po.getCtx(), EXP_ProcessorType_ID, po.get_TrxName());
String javaClass = expProcessor_Type.getJavaClass();
try {
Class clazz = Class.forName(javaClass);
IExportProcessor exportProcessor = (IExportProcessor) clazz.newInstance();
exportProcessor.process(po.getCtx(), mExportProcessor, outDocument, Trx.get(po.get_TrxName(), false));
} catch (Exception e) {
log.severe(e.toString());
throw e;
}
return outDocument.toString();
}
Aggregations