Search in sources :

Example 41 with MTable

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;
}
Also used : DBException(org.adempiere.exceptions.DBException) MTable(org.compiere.model.MTable) SQLException(java.sql.SQLException) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement)

Example 42 with MTable

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;
    }
}
Also used : MColumn(org.compiere.model.MColumn) MTable(org.compiere.model.MTable) PackIn(org.adempiere.pipo.PackIn) Attributes(org.xml.sax.Attributes) POSaveFailedException(org.adempiere.pipo.exception.POSaveFailedException) X_AD_Element(org.compiere.model.X_AD_Element) BigDecimal(java.math.BigDecimal) DatabaseAccessException(org.adempiere.pipo.exception.DatabaseAccessException)

Example 43 with MTable

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");
    }
}
Also used : MTable(org.compiere.model.MTable) Attributes(org.xml.sax.Attributes) POSaveFailedException(org.adempiere.pipo.exception.POSaveFailedException) X_AD_PrintFormat(org.compiere.model.X_AD_PrintFormat)

Example 44 with MTable

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);
}
Also used : MTable(org.compiere.model.MTable) Query(org.compiere.model.Query) AdempiereException(org.adempiere.exceptions.AdempiereException) ArrayList(java.util.ArrayList) Properties(java.util.Properties) AdempiereException(org.adempiere.exceptions.AdempiereException)

Example 45 with MTable

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"));
        }
    }
}
Also used : MColumn(org.compiere.model.MColumn) MEXPFormat(org.compiere.model.MEXPFormat) SQLException(java.sql.SQLException) Element(org.w3c.dom.Element) Text(org.w3c.dom.Text) PreparedStatement(java.sql.PreparedStatement) SQLException(java.sql.SQLException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) MEXPFormatLine(org.compiere.model.MEXPFormatLine) MTable(org.compiere.model.MTable) ResultSet(java.sql.ResultSet) PO(org.compiere.model.PO)

Aggregations

MTable (org.compiere.model.MTable)67 PO (org.compiere.model.PO)18 ResultSet (java.sql.ResultSet)16 SQLException (java.sql.SQLException)16 PreparedStatement (java.sql.PreparedStatement)15 MColumn (org.compiere.model.MColumn)15 Query (org.compiere.model.Query)13 ArrayList (java.util.ArrayList)10 Properties (java.util.Properties)9 AdempiereException (org.adempiere.exceptions.AdempiereException)7 ADLoginRequest (pl.x3E.adInterface.ADLoginRequest)7 XFireFault (org.codehaus.xfire.fault.XFireFault)5 POInfo (org.compiere.model.POInfo)5 Trx (org.compiere.util.Trx)5 DataField (pl.x3E.adInterface.DataField)5 DataRow (pl.x3E.adInterface.DataRow)5 ModelCRUD (pl.x3E.adInterface.ModelCRUD)5 List (java.util.List)4 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)4 POSaveFailedException (org.adempiere.pipo.exception.POSaveFailedException)4