use of org.compiere.model.MTable in project adempiere by adempiere.
the class ModelInterfaceGenerator method getReferenceClassName.
public static String getReferenceClassName(int AD_Table_ID, String columnName, int displayType, int AD_Reference_ID) {
String referenceClassName = null;
//
if (displayType == DisplayType.TableDir || (displayType == DisplayType.Search && AD_Reference_ID == 0)) {
// teo_sarca: BF [ 1817768 ] Isolate hardcoded table direct columns
String refTableName = MQuery.getZoomTableName(columnName);
referenceClassName = "I_" + refTableName;
MTable table = MTable.get(Env.getCtx(), refTableName);
if (table != null) {
String entityType = table.getEntityType();
String modelpackage = getModelPackage(entityType);
if (modelpackage != null) {
referenceClassName = modelpackage + "." + referenceClassName;
}
if (!isGenerateModelGetterForEntity(AD_Table_ID, entityType)) {
referenceClassName = null;
}
} else {
throw new RuntimeException("No table found for " + refTableName);
}
} else if (displayType == DisplayType.Table || (displayType == DisplayType.Search && AD_Reference_ID > 0)) {
// TODO: HARDCODED: do not generate model getter for Fact_Acct.Account_ID
if (AD_Table_ID == 270 && columnName.equals("Account_ID"))
return null;
// TODO: HARDCODED: do not generate model getter for GL_DistributionLine.Account_ID
if (AD_Table_ID == 707 && columnName.equals("Account_ID"))
return null;
//
final String sql = "SELECT t.TableName, t.EntityType, ck.AD_Reference_ID" + " FROM AD_Ref_Table rt" + " INNER JOIN AD_Table t ON (t.AD_Table_ID=rt.AD_Table_ID)" + " INNER JOIN AD_Column ck ON (ck.AD_Table_ID=rt.AD_Table_ID AND ck.AD_Column_ID=rt.AD_Key)" + " WHERE rt.AD_Reference_ID=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, AD_Reference_ID);
rs = pstmt.executeQuery();
if (rs.next()) {
final String refTableName = rs.getString(1);
final String entityType = rs.getString(2);
final int refDisplayType = rs.getInt(3);
if (refDisplayType == DisplayType.ID) {
referenceClassName = "I_" + refTableName;
String modelpackage = getModelPackage(entityType);
if (modelpackage != null) {
referenceClassName = modelpackage + "." + referenceClassName;
}
if (!isGenerateModelGetterForEntity(AD_Table_ID, entityType)) {
referenceClassName = null;
}
}
}
} catch (SQLException e) {
throw new DBException(e, sql);
} finally {
DB.close(rs, pstmt);
rs = null;
pstmt = null;
}
} else if (displayType == DisplayType.Location) {
referenceClassName = "I_C_Location";
} else if (displayType == DisplayType.Locator) {
referenceClassName = "I_M_Locator";
} else if (displayType == DisplayType.Account) {
referenceClassName = "I_C_ValidCombination";
} else if (displayType == DisplayType.PAttribute) {
referenceClassName = "I_M_AttributeSetInstance";
} else {
// TODO - Handle other types
//sb.append("\tpublic I_"+columnName+" getI_").append(columnName).append("(){return null; };");
}
//
return referenceClassName;
}
use of org.compiere.model.MTable in project adempiere by adempiere.
the class ColumnElementHandler method startElement.
public void startElement(Properties ctx, Element element) throws SAXException {
PackIn packIn = (PackIn) ctx.get("PackInProcess");
String elementValue = element.getElementValue();
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("ColumnName"));
int success = 0;
String entitytype = atts.getValue("EntityType");
if (isProcessElement(ctx, entitytype)) {
if (element.parent != null && element.parent.getElementValue().equals("table") && element.parent.defer) {
element.defer = true;
return;
}
String columnName = atts.getValue("ColumnName");
String tableName = atts.getValue("ADTableNameID");
int tableid = 0;
if (element.parent != null && element.parent.getElementValue().equals("table") && element.parent.recordId > 0) {
tableid = element.parent.recordId;
} else {
tableid = packIn.getTableId(tableName);
}
if (tableid <= 0) {
tableid = get_IDWithColumn(ctx, "AD_Table", "TableName", tableName);
if (tableid > 0)
packIn.addTable(tableName, tableid);
}
int id = packIn.getColumnId(tableName, columnName);
if (id <= 0) {
id = get_IDWithMasterAndColumn(ctx, "AD_Column", "ColumnName", columnName, "AD_Table", tableid);
if (id > 0) {
packIn.addColumn(tableName, columnName, id);
}
}
MColumn m_Column = new MColumn(ctx, id, getTrxName(ctx));
if (id <= 0 && atts.getValue("AD_Column_ID") != null && Integer.parseInt(atts.getValue("AD_Column_ID")) <= PackOut.MAX_OFFICIAL_ID)
m_Column.setAD_Column_ID(Integer.parseInt(atts.getValue("AD_Column_ID")));
int AD_Backup_ID = -1;
String Object_Status = null;
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_Column", m_Column);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
m_Column.setColumnName(columnName);
// Process
String processName = atts.getValue("ADProcessNameID");
int AD_Process_ID = get_IDWithColumn(ctx, "AD_Process", "Value", processName);
if (AD_Process_ID <= 0) /** TODO PackOut version check 005 */
{
AD_Process_ID = get_IDWithColumn(ctx, "AD_Process", "Name", processName);
}
m_Column.setAD_Process_ID(AD_Process_ID);
//
String Name = atts.getValue("ADReferenceNameID");
int referenceId = get_IDWithColumn(ctx, "AD_Reference", "Name", Name);
m_Column.setAD_Reference_ID(referenceId);
// log.info("Column ID ->"+id);
Name = atts.getValue("ADTableNameID");
id = get_IDWithColumn(ctx, "AD_Table", "TableName", Name);
m_Column.setAD_Table_ID(id);
Name = atts.getValue("ADValRuleNameID");
id = get_IDWithColumn(ctx, "AD_Val_Rule", "Name", Name);
m_Column.setAD_Val_Rule_ID(id);
//Validate that reference id is for Table or List
if (DisplayType.Table == referenceId || DisplayType.List == referenceId || DisplayType.Search == referenceId) {
Name = atts.getValue("ADReferenceNameValueID");
id = get_IDWithColumn(ctx, "AD_Reference", "Name", Name);
m_Column.setAD_Reference_Value_ID(id);
}
m_Column.setCallout(getStringValue(atts, "Callout"));
m_Column.setColumnSQL(getStringValue(atts, "ColumnSQL"));
m_Column.setColumnName(atts.getValue("ColumnName"));
m_Column.setDefaultValue(getStringValue(atts, "DefaultValue"));
m_Column.setDescription(getStringValue(atts, "Description"));
m_Column.setEntityType(atts.getValue("EntityType"));
if (Integer.parseInt(atts.getValue("FieldLength")) > 0)
m_Column.setFieldLength(Integer.parseInt(atts.getValue("FieldLength")));
m_Column.setHelp(getStringValue(atts, "Help"));
m_Column.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue() : true);
m_Column.setIsAlwaysUpdateable((Boolean.valueOf(atts.getValue("isAlwaysUpdateable")).booleanValue()));
// m_Column.setIsEncrypted(atts.getValue("isEncrypted"));
m_Column.setIsIdentifier((Boolean.valueOf(atts.getValue("isIdentifier")).booleanValue()));
m_Column.setIsKey((Boolean.valueOf(atts.getValue("isKey")).booleanValue()));
m_Column.setIsMandatory((Boolean.valueOf(atts.getValue("isMandatory")).booleanValue()));
m_Column.setIsParent((Boolean.valueOf(atts.getValue("isParent")).booleanValue()));
m_Column.setIsSelectionColumn((Boolean.valueOf(atts.getValue("isSelectionColumn")).booleanValue()));
m_Column.setIsSyncDatabase(atts.getValue("getIsSyncDatabase"));
m_Column.setIsTranslated((Boolean.valueOf(atts.getValue("isTranslated")).booleanValue()));
m_Column.setIsUpdateable((Boolean.valueOf(atts.getValue("isUpdateable")).booleanValue()));
m_Column.setName(atts.getValue("Name"));
m_Column.setReadOnlyLogic(getStringValue(atts, "ReadOnlyLogic"));
if (Integer.parseInt(atts.getValue("SeqNo")) > 0)
m_Column.setSeqNo(Integer.parseInt(atts.getValue("SeqNo")));
m_Column.setVFormat(getStringValue(atts, "VFormat"));
if (getStringValue(atts, "ValueMax") != null)
m_Column.setValueMax(atts.getValue("ValueMax"));
if (getStringValue(atts, "ValueMin") != null)
m_Column.setValueMin(atts.getValue("ValueMin"));
if (getStringValue(atts, "Version") != null)
m_Column.setVersion(new BigDecimal(atts.getValue("Version")));
m_Column.setInfoFactoryClass(getStringValue(atts, "InfoFactoryClass"));
// Setup Element.
id = get_IDWithColumn(ctx, "AD_Element", "ColumnName", m_Column.getColumnName());
X_AD_Element adElement = new X_AD_Element(ctx, id, getTrxName(ctx));
String Object_Status_col = Object_Status;
if (adElement.getAD_Element_ID() == 0) {
// Object_Status = "New";
adElement.setColumnName(m_Column.getColumnName());
adElement.setEntityType(m_Column.getEntityType());
adElement.setPrintName(m_Column.getColumnName());
adElement.setName(m_Column.getColumnName());
if (adElement.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Column.getName(), "Element", adElement.getAD_Element_ID(), AD_Backup_ID, "New", "AD_Element", get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Element"));
} else {
record_log(ctx, 0, m_Column.getName(), "Element", adElement.getAD_Element_ID(), AD_Backup_ID, "New", "AD_Element", get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Element"));
}
}
Object_Status = Object_Status_col;
m_Column.setAD_Element_ID(adElement.getAD_Element_ID());
boolean recreateColumn = (m_Column.is_new() || m_Column.is_ValueChanged("AD_Reference_ID") || m_Column.is_ValueChanged("FieldLength") || m_Column.is_ValueChanged("ColumnName") || m_Column.is_ValueChanged("IsMandatory"));
//ignore fieldlength change for clob and lob
if (!m_Column.is_ValueChanged("AD_Reference_ID") && m_Column.is_ValueChanged("FieldLength")) {
if (DisplayType.isLOB(m_Column.getAD_Reference_ID())) {
recreateColumn = false;
}
}
// nulls
if (!recreateColumn) {
String oldDefault = (String) m_Column.get_ValueOld("DefaultValue");
String newDefault = m_Column.getDefaultValue();
if (oldDefault != null && oldDefault.length() == 0)
oldDefault = null;
if (newDefault != null && newDefault.length() == 0)
newDefault = null;
if ((oldDefault == null && newDefault != null) || (oldDefault != null && newDefault == null)) {
recreateColumn = true;
} else if (oldDefault != null && newDefault != null) {
if (!oldDefault.equals(newDefault))
recreateColumn = true;
}
}
// Don't create database column for virtual columns
boolean syncDatabase = "Y".equalsIgnoreCase(atts.getValue("getIsSyncDatabase"));
if (recreateColumn) {
if (m_Column.isVirtualColumn() || !syncDatabase)
recreateColumn = false;
}
if (m_Column.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Column.getName(), "Column", m_Column.get_ID(), AD_Backup_ID, Object_Status, "AD_Column", get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Column"));
element.recordId = m_Column.getAD_Column_ID();
} else {
record_log(ctx, 0, m_Column.getName(), "Column", m_Column.get_ID(), AD_Backup_ID, Object_Status, "AD_Column", get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Column"));
throw new POSaveFailedException("Failed to import column.");
}
if (recreateColumn || syncDatabase) {
MTable table = new MTable(ctx, m_Column.getAD_Table_ID(), getTrxName(ctx));
if (!table.isView() && !m_Column.isVirtualColumn()) {
success = createColumn(ctx, table, m_Column, recreateColumn);
if (success == 1) {
record_log(ctx, 1, m_Column.getColumnName(), "dbColumn", m_Column.get_ID(), 0, Object_Status, atts.getValue("ADTableNameID").toUpperCase(), get_IDWithColumn(ctx, "AD_Table", "TableName", atts.getValue("ADTableNameID").toUpperCase()));
} else {
record_log(ctx, 0, m_Column.getColumnName(), "dbColumn", m_Column.get_ID(), 0, Object_Status, atts.getValue("ADTableNameID").toUpperCase(), get_IDWithColumn(ctx, "AD_Table", "TableName", atts.getValue("ADTableNameID").toUpperCase()));
throw new DatabaseAccessException("Failed to create column or related constraint for " + m_Column.getColumnName());
}
}
}
} else {
element.skip = true;
}
}
use of org.compiere.model.MTable in project adempiere by adempiere.
the class PrintFormatElementHandler method startElement.
public void startElement(Properties ctx, Element element) throws SAXException {
String elementValue = element.getElementValue();
int AD_Backup_ID = -1;
String Object_Status = null;
Attributes atts = element.attributes;
log.info(elementValue + " " + atts.getValue("Name"));
String name = atts.getValue("Name");
int id = get_IDWithColumn(ctx, "AD_PrintFormat", "Name", name);
X_AD_PrintFormat m_PrintFormat = new X_AD_PrintFormat(ctx, id, getTrxName(ctx));
if (id <= 0 && atts.getValue("AD_PrintFormat_ID") != null && Integer.parseInt(atts.getValue("AD_PrintFormat_ID")) <= PackOut.MAX_OFFICIAL_ID)
m_PrintFormat.setAD_PrintFormat_ID(Integer.parseInt(atts.getValue("AD_PrintFormat_ID")));
if (id > 0) {
AD_Backup_ID = copyRecord(ctx, "AD_PrintFormat", m_PrintFormat);
Object_Status = "Update";
} else {
Object_Status = "New";
AD_Backup_ID = 0;
}
name = atts.getValue("ADReportviewnameID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_ReportView", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_ReportView_ID(id);
}
name = atts.getValue("ADTableNameID");
id = get_IDWithColumn(ctx, "AD_Table", "TableName", name);
if (id == 0) {
MTable m_Table = new MTable(ctx, 0, getTrxName(ctx));
m_Table.setAccessLevel("3");
m_Table.setName(name);
m_Table.setTableName(name);
if (m_Table.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_Table.getName(), "Table", m_Table.get_ID(), 0, "New", "AD_Table", get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Table"));
} else {
record_log(ctx, 0, m_Table.getName(), "Table", m_Table.get_ID(), 0, "New", "AD_Table", get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_Table"));
}
id = get_IDWithColumn(ctx, "AD_Table", "TableName", name);
}
m_PrintFormat.setAD_Table_ID(id);
name = atts.getValue("ADPrintTableFormatID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintTableFormat", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_PrintTableFormat_ID(id);
}
name = atts.getValue("ADPrintColorID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintColor", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_PrintColor_ID(id);
}
name = atts.getValue("ADPrintFontID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintFont", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_PrintFont_ID(id);
}
name = atts.getValue("ADPrintPaperID");
if (name != null && name.trim().length() > 0) {
id = get_IDWithColumn(ctx, "AD_PrintPaper", "Name", name);
if (id <= 0) {
element.defer = true;
return;
}
m_PrintFormat.setAD_PrintPaper_ID(id);
}
m_PrintFormat.setDescription(getStringValue(atts, "Description"));
m_PrintFormat.setName(atts.getValue("Name"));
m_PrintFormat.setPrinterName(getStringValue(atts, "PrinterName"));
m_PrintFormat.setFooterMargin(Integer.parseInt(atts.getValue("FooterMargin")));
m_PrintFormat.setHeaderMargin(Integer.parseInt(atts.getValue("HeaderMargin")));
m_PrintFormat.setCreateCopy(atts.getValue("CreateCopy"));
m_PrintFormat.setIsActive(atts.getValue("isActive") != null ? Boolean.valueOf(atts.getValue("isActive")).booleanValue() : true);
m_PrintFormat.setIsTableBased(Boolean.valueOf(atts.getValue("isTableBased")).booleanValue());
m_PrintFormat.setIsForm(Boolean.valueOf(atts.getValue("isForm")).booleanValue());
m_PrintFormat.setIsStandardHeaderFooter(Boolean.valueOf(atts.getValue("isStandardHeader")).booleanValue());
m_PrintFormat.setIsDefault(Boolean.valueOf(atts.getValue("isDefault")).booleanValue());
if (m_PrintFormat.save(getTrxName(ctx)) == true) {
record_log(ctx, 1, m_PrintFormat.getName(), "PrintFormat", m_PrintFormat.get_ID(), AD_Backup_ID, Object_Status, "AD_PrintFormat", get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_PrintFormat"));
element.recordId = m_PrintFormat.getAD_PrintFormat_ID();
} else {
record_log(ctx, 0, m_PrintFormat.getName(), "PrintFormat", m_PrintFormat.get_ID(), AD_Backup_ID, Object_Status, "AD_PrintFormat", get_IDWithColumn(ctx, "AD_Table", "TableName", "AD_PrintFormat"));
throw new POSaveFailedException("Failed to save Print Format");
}
}
use of org.compiere.model.MTable in project adempiere by adempiere.
the class CostDimension method toQuery.
public Query toQuery(Class<?> clazz, String whereClause, Object[] params, String trxName) {
String tableName;
// TODO: refactor
try {
tableName = (String) clazz.getField("Table_Name").get(null);
} catch (Exception e) {
throw new AdempiereException(e);
}
//
Properties ctx = Env.getCtx();
MTable table = MTable.get(ctx, tableName);
ArrayList<Object> finalParams = new ArrayList<Object>();
StringBuffer finalWhereClause = new StringBuffer();
finalWhereClause.append(I_AD_Client.COLUMNNAME_AD_Client_ID + "=? ");
finalParams.add(this.AD_Client_ID);
finalWhereClause.append(" AND " + I_C_AcctSchema.COLUMNNAME_C_AcctSchema_ID + "=?");
finalParams.add(this.C_AcctSchema_ID);
finalWhereClause.append(" AND " + I_AD_Org.COLUMNNAME_AD_Org_ID + "=?");
finalParams.add(this.AD_Org_ID);
finalWhereClause.append(" AND (").append(I_M_Warehouse.COLUMNNAME_M_Warehouse_ID).append(" IS NULL OR ").append(I_M_Warehouse.COLUMNNAME_M_Warehouse_ID + "=? )");
finalParams.add(this.M_Warehouse_ID);
finalWhereClause.append(" AND " + I_M_Product.COLUMNNAME_M_Product_ID + "=?");
finalParams.add(this.M_Product_ID);
finalWhereClause.append(" AND " + I_M_AttributeInstance.COLUMNNAME_M_AttributeSetInstance_ID + "=?");
finalParams.add(this.M_AttributeSetInstance_ID);
if (this.M_CostElement_ID != ANY) {
finalWhereClause.append(" AND " + I_M_CostElement.COLUMNNAME_M_CostElement_ID + "=?");
finalParams.add(this.M_CostElement_ID);
}
if (this.M_CostType_ID != ANY && table.getColumn(I_M_CostType.COLUMNNAME_M_CostType_ID) != null) {
finalWhereClause.append(" AND " + I_M_CostType.COLUMNNAME_M_CostType_ID + "=?");
finalParams.add(this.M_CostType_ID);
}
if (!Util.isEmpty(whereClause, true)) {
finalWhereClause.append(" AND (").append(whereClause).append(")");
if (params != null && params.length > 0) {
for (Object p : params) {
finalParams.add(p);
}
}
}
return new Query(ctx, tableName, finalWhereClause.toString(), trxName).setParameters(finalParams);
}
use of org.compiere.model.MTable in project adempiere by adempiere.
the class Export method generateExportFormat.
/*
* Trifon Generate Export Format process; RESULT =
* <C_Invoice>
* <DocumentNo>101</DocumentNo>
* </C_Invoice>
*/
private void generateExportFormat(Element rootElement, MEXPFormat exportFormat, ResultSet rs, PO masterPO, int masterID, HashMap<String, Integer> variableMap) throws SQLException, Exception {
Collection<MEXPFormatLine> formatLines = exportFormat.getFormatLines();
@SuppressWarnings("unused") boolean elementHasValue = false;
for (MEXPFormatLine formatLine : formatLines) {
if (formatLine.getType().equals(X_EXP_FormatLine.TYPE_XMLElement)) {
// process single XML Attribute
// Create new element
Element newElement = outDocument.createElement(formatLine.getValue());
if (formatLine.getAD_Column_ID() == 0) {
throw new Exception(Msg.getMsg(getCtx(), "EXPColumnMandatory"));
}
MColumn column = MColumn.get(getCtx(), formatLine.getAD_Column_ID());
if (column == null) {
throw new Exception(Msg.getMsg(getCtx(), "EXPColumnMandatory"));
}
if (column.isVirtualColumn()) {
log.info("This is Virtual Column!");
} else {
}
//log.info("["+column.getColumnName()+"]");
Object value = rs.getObject(column.getColumnName());
String valueString = null;
if (value != null) {
valueString = value.toString();
} else {
if (formatLine.isMandatory()) {
throw new Exception(Msg.getMsg(getCtx(), "EXPFieldMandatory"));
}
}
/* if (column.getAD_Reference_ID() == DisplayType.Date) {
if (valueString != null) {
if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
//Date date = m_customDateFormat.parse ( valueString );
valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
} else {
valueString = m_dateFormat.format (Timestamp.valueOf (valueString));
}
}
} else if (column.getAD_Reference_ID() == DisplayType.DateTime) {
if (valueString != null) {
if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
//Date date = m_customDateFormat.parse ( valueString );
valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
} else {
valueString = m_dateTimeFormat.format (Timestamp.valueOf (valueString));
}
}
}*/
log.info("EXP Field - column=[" + column.getColumnName() + "]; value=" + value);
if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) {
Text newText = outDocument.createTextNode(valueString);
newElement.appendChild(newText);
rootElement.appendChild(newElement);
elementHasValue = true;
//increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable
//increaseVariable(variableMap, TOTAL_SEGMENTS);
} else {
// Empty field.
}
} else if (formatLine.getType().equals(X_EXP_FormatLine.TYPE_XMLAttribute)) {
/* // Create new element
Element newElement = outDocument.createElement(formatLines[i].getValue());
if (hasContent) {
rootElement.appendChild(newElement);
}*/
if (formatLine.getAD_Column_ID() == 0) {
throw new Exception(Msg.getMsg(getCtx(), "EXPColumnMandatory"));
}
MColumn column = MColumn.get(getCtx(), formatLine.getAD_Column_ID());
if (column == null) {
throw new Exception(Msg.getMsg(getCtx(), "EXPColumnMandatory"));
}
if (column.isVirtualColumn()) {
log.info("This is Virtual Column!");
} else {
}
//log.info("["+column.getColumnName()+"]");
Object value = rs.getObject(column.getColumnName());
String valueString = null;
if (value != null) {
valueString = value.toString();
} else {
if (formatLine.isMandatory()) {
throw new Exception(Msg.getMsg(getCtx(), "EXPFieldMandatory"));
}
}
/* if (column.getAD_Reference_ID() == DisplayType.Date) {
if (valueString != null) {
if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
//Date date = m_customDateFormat.parse ( valueString );
valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
} else {
valueString = m_dateFormat.format (Timestamp.valueOf (valueString));
}
}
} else if (column.getAD_Reference_ID() == DisplayType.DateTime) {
if (valueString != null) {
if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
//Date date = m_customDateFormat.parse ( valueString );
valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
} else {
valueString = m_dateTimeFormat.format (Timestamp.valueOf (valueString));
}
}
}*/
log.info("EXP Field - column=[" + column.getColumnName() + "]; value=" + value);
if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) {
rootElement.setAttribute(formatLine.getValue(), valueString);
elementHasValue = true;
//increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable
//increaseVariable(variableMap, TOTAL_SEGMENTS);
} else {
// Empty field.
}
} else if (formatLine.getType().equals(X_EXP_FormatLine.TYPE_EmbeddedEXPFormat)) {
// process Embedded Export Format
int embeddedFormat_ID = formatLine.getEXP_EmbeddedFormat_ID();
MEXPFormat embeddedFormat = new MEXPFormat(getCtx(), embeddedFormat_ID, get_TrxName());
MTable tableEmbedded = MTable.get(getCtx(), embeddedFormat.getAD_Table_ID());
log.info("Table Embedded = " + tableEmbedded);
StringBuffer sql = new StringBuffer("SELECT * ").append("FROM ").append(tableEmbedded.getTableName()).append(" ").append("WHERE ").append(masterPO.get_KeyColumns()[0]).append("=?");
if (embeddedFormat.getWhereClause() != null & !"".equals(embeddedFormat.getWhereClause())) {
sql.append(" AND ").append(embeddedFormat.getWhereClause());
}
ResultSet rsEmbedded = null;
PreparedStatement pstmt = null;
try {
pstmt = DB.prepareStatement(sql.toString(), get_TrxName());
pstmt.setInt(1, masterID);
rsEmbedded = pstmt.executeQuery();
while (rsEmbedded.next()) {
//System.out.println("Trifon - tableEmbedded.getTableName()_ID = "+ tableEmbedded.getTableName() + "_ID");
int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID");
PO poEmbedded = tableEmbedded.getPO(embeddedID, get_TrxName());
Element embeddedElement = outDocument.createElement(formatLine.getValue());
embeddedElement.appendChild(outDocument.createComment(formatLine.getDescription()));
generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap);
rootElement.appendChild(embeddedElement);
}
} finally {
try {
if (rsEmbedded != null)
rsEmbedded.close();
if (pstmt != null)
pstmt.close();
} catch (SQLException ex) {
}
rsEmbedded = null;
pstmt = null;
}
} else {
throw new Exception(Msg.getMsg(getCtx(), "EXPUnknownLineType"));
}
}
}
Aggregations