Search in sources :

Example 1 with POInfo

use of org.compiere.model.POInfo in project adempiere by adempiere.

the class PropertiesWrapper method initPO.

/** Load Meta Data */
protected POInfo initPO(Properties ctx) {
    PropertiesWrapper wrapper = (PropertiesWrapper) ctx;
    p_ctx = wrapper.source;
    tableName = wrapper.tableName;
    tableID = MTable.getTable_ID(tableName);
    // log.info("Table_ID: "+Table_ID);
    POInfo poi = POInfo.getPOInfo(ctx, tableID, this.get_TrxName());
    return poi;
}
Also used : POInfo(org.compiere.model.POInfo)

Example 2 with POInfo

use of org.compiere.model.POInfo in project adempiere by adempiere.

the class ModelADServiceImpl method updateData.

public StandardResponseDocument updateData(ModelCRUDRequestDocument req) throws XFireFault {
    StandardResponseDocument ret = StandardResponseDocument.Factory.newInstance();
    StandardResponse resp = ret.addNewStandardResponse();
    ModelCRUD modelCRUD = req.getModelCRUDRequest().getModelCRUD();
    String serviceType = modelCRUD.getServiceType();
    ADLoginRequest reqlogin = req.getModelCRUDRequest().getADLoginRequest();
    String err = modelLogin(reqlogin, webServiceName, "updateData", serviceType);
    if (err != null && err.length() > 0) {
        resp.setError(err);
        resp.setIsError(true);
        return ret;
    }
    // Validate parameters vs service type
    validateCRUD(modelCRUD);
    String tableName = modelCRUD.getTableName();
    int recordID = modelCRUD.getRecordID();
    resp.setRecordID(recordID);
    Properties ctx = m_cs.getM_ctx();
    // start a trx
    String trxName = Trx.createTrxName("ws_modelUpdateData");
    Trx trx = Trx.get(trxName, false);
    // get the PO for the tablename and record ID
    MTable table = MTable.get(ctx, tableName);
    if (table == null)
        return rollbackAndSetError(trx, resp, ret, true, "No table " + tableName);
    PO po = table.getPO(recordID, trxName);
    if (po == null)
        return rollbackAndSetError(trx, resp, ret, true, "No Record " + recordID + " in " + tableName);
    POInfo poinfo = POInfo.getPOInfo(ctx, table.getAD_Table_ID());
    DataRow dr = modelCRUD.getDataRow();
    for (DataField field : dr.getFieldList()) {
        // TODO: Implement lookup
        if (m_webservicetype.isInputColumnNameAllowed(field.getColumn())) {
            int idxcol = po.get_ColumnIndex(field.getColumn());
            if (idxcol < 0) {
                // The column doesn't exist - it must exist as it's defined in security
                return rollbackAndSetError(trx, resp, ret, true, "Web service type " + m_webservicetype.getValue() + ": input column " + field.getColumn() + " does not exist");
            } else {
                try {
                    setValueAccordingToClass(po, poinfo, field, idxcol);
                } catch (XFireFault e) {
                    log.log(Level.WARNING, "Error setting value", e);
                    return rollbackAndSetError(trx, resp, ret, true, "Web service type " + m_webservicetype.getValue() + ": input column " + field.getColumn() + " value could not be set: " + e.getLocalizedMessage());
                }
            }
        } else {
            return rollbackAndSetError(trx, resp, ret, true, "Web service type " + m_webservicetype.getValue() + ": input column " + field.getColumn() + " not allowed");
        }
    }
    if (!po.save())
        return rollbackAndSetError(trx, resp, ret, true, "Cannot save record in " + tableName + ": " + CLogger.retrieveErrorString("no log message"));
    // close the trx
    if (!trx.commit())
        return rollbackAndSetError(trx, resp, ret, true, "Cannot commit transaction after delete record " + recordID + " in " + tableName);
    trx.close();
    return ret;
}
Also used : ADLoginRequest(pl.x3E.adInterface.ADLoginRequest) StandardResponse(pl.x3E.adInterface.StandardResponse) Properties(java.util.Properties) XFireFault(org.codehaus.xfire.fault.XFireFault) DataRow(pl.x3E.adInterface.DataRow) StandardResponseDocument(pl.x3E.adInterface.StandardResponseDocument) POInfo(org.compiere.model.POInfo) MTable(org.compiere.model.MTable) DataField(pl.x3E.adInterface.DataField) ModelCRUD(pl.x3E.adInterface.ModelCRUD) Trx(org.compiere.util.Trx) PO(org.compiere.model.PO)

Example 3 with POInfo

use of org.compiere.model.POInfo in project adempiere by adempiere.

the class ModelADServiceImpl method createData.

public StandardResponseDocument createData(ModelCRUDRequestDocument req) throws XFireFault {
    StandardResponseDocument ret = StandardResponseDocument.Factory.newInstance();
    StandardResponse resp = ret.addNewStandardResponse();
    ModelCRUD modelCRUD = req.getModelCRUDRequest().getModelCRUD();
    String serviceType = modelCRUD.getServiceType();
    ADLoginRequest reqlogin = req.getModelCRUDRequest().getADLoginRequest();
    String err = modelLogin(reqlogin, webServiceName, "createData", serviceType);
    if (err != null && err.length() > 0) {
        resp.setError(err);
        resp.setIsError(true);
        return ret;
    }
    // Validate parameters vs service type
    validateCRUD(modelCRUD);
    String tableName = modelCRUD.getTableName();
    Properties ctx = m_cs.getM_ctx();
    // start a trx
    String trxName = Trx.createTrxName("ws_modelCreateData");
    Trx trx = Trx.get(trxName, false);
    // get the PO for the tablename and record ID
    MTable table = MTable.get(ctx, tableName);
    if (table == null)
        return rollbackAndSetError(trx, resp, ret, true, "No table " + tableName);
    PO po = table.getPO(0, trxName);
    if (po == null)
        return rollbackAndSetError(trx, resp, ret, true, "Cannot create PO for " + tableName);
    POInfo poinfo = POInfo.getPOInfo(ctx, table.getAD_Table_ID());
    DataRow dr = modelCRUD.getDataRow();
    for (DataField field : dr.getFieldList()) {
        // TODO: Implement lookup
        if (m_webservicetype.isInputColumnNameAllowed(field.getColumn())) {
            int idxcol = po.get_ColumnIndex(field.getColumn());
            if (idxcol < 0) {
                // The column doesn't exist - it must exist as it's defined in security
                return rollbackAndSetError(trx, resp, ret, true, "Web service type " + m_webservicetype.getValue() + ": input column " + field.getColumn() + " does not exist");
            } else {
                try {
                    setValueAccordingToClass(po, poinfo, field, idxcol);
                } catch (XFireFault e) {
                    log.log(Level.WARNING, "Error setting value", e);
                    return rollbackAndSetError(trx, resp, ret, true, "Web service type " + m_webservicetype.getValue() + ": input column " + field.getColumn() + " value could not be set: " + e.getLocalizedMessage());
                }
            }
        } else {
            return rollbackAndSetError(trx, resp, ret, true, "Web service type " + m_webservicetype.getValue() + ": input column " + field.getColumn() + " not allowed");
        }
    }
    if (!po.save())
        return rollbackAndSetError(trx, resp, ret, true, "Cannot save record in " + tableName + ": " + CLogger.retrieveErrorString("no log message"));
    int recordID = po.get_ID();
    resp.setRecordID(recordID);
    // close the trx
    if (!trx.commit())
        return rollbackAndSetError(trx, resp, ret, true, "Cannot commit transaction after create record " + recordID + " in " + tableName);
    trx.close();
    return ret;
}
Also used : ADLoginRequest(pl.x3E.adInterface.ADLoginRequest) StandardResponse(pl.x3E.adInterface.StandardResponse) Properties(java.util.Properties) XFireFault(org.codehaus.xfire.fault.XFireFault) DataRow(pl.x3E.adInterface.DataRow) StandardResponseDocument(pl.x3E.adInterface.StandardResponseDocument) POInfo(org.compiere.model.POInfo) MTable(org.compiere.model.MTable) DataField(pl.x3E.adInterface.DataField) ModelCRUD(pl.x3E.adInterface.ModelCRUD) Trx(org.compiere.util.Trx) PO(org.compiere.model.PO)

Example 4 with POInfo

use of org.compiere.model.POInfo in project adempiere by adempiere.

the class POTest method testTruncatedStrings.

/**
	 * <li>BF [ 1990856 ] PO.set_Value* : truncate string more than needed
	 */
public void testTruncatedStrings() {
    //
    // Creating a huge string for testing:
    StringBuffer sb = new StringBuffer();
    for (int i = 1; i <= 1000; i++) {
        sb.append("0123456789");
    }
    String bigString = sb.toString();
    //
    // Create the test PO:
    MTest testPO = new MTest(getCtx(), getClass().getName(), 1);
    testPO.set_TrxName(getTrxName());
    //
    // Getting Max Length:
    POInfo info = POInfo.getPOInfo(getCtx(), MTest.Table_ID);
    int maxLength = info.getFieldLength(info.getColumnIndex(MTest.COLUMNNAME_Name));
    //
    // Test with a string that has less then maxLength
    {
        testPO.set_ValueOfColumn(MTest.COLUMNNAME_Name, bigString.substring(0, maxLength - 1));
        String resultString = (String) testPO.get_Value(MTest.COLUMNNAME_Name);
        assertEquals("String was not truncated correctly (1)", maxLength - 1, resultString.length());
        //
        testPO.setName(bigString.substring(0, maxLength - 1));
        assertEquals("String was not truncated correctly (2)", maxLength - 1, testPO.getName().length());
    }
    //
    // Test with a string that has maxLength
    {
        testPO.set_ValueOfColumn(MTest.COLUMNNAME_Name, bigString.substring(0, maxLength));
        String resultString = (String) testPO.get_Value(MTest.COLUMNNAME_Name);
        assertEquals("String was not truncated correctly (3)", maxLength, resultString.length());
        //
        testPO.setName(bigString.substring(0, maxLength));
        assertEquals("String was not truncated correctly (4)", maxLength, testPO.getName().length());
    }
    //
    // Test with a string that has more than maxLength 
    {
        testPO.set_ValueOfColumn(MTest.COLUMNNAME_Name, bigString);
        String resultString = (String) testPO.get_Value(MTest.COLUMNNAME_Name);
        assertEquals("String was not truncated correctly (5)", maxLength, resultString.length());
        //
        testPO.setName(bigString);
        assertEquals("String was not truncated correctly (6)", maxLength, testPO.getName().length());
    }
}
Also used : POInfo(org.compiere.model.POInfo) MTest(org.compiere.model.MTest)

Example 5 with POInfo

use of org.compiere.model.POInfo in project adempiere by adempiere.

the class AbstractElementHandler method copyRecord.

/**
     *	Make backup copy of record.
     *
     *      @param tablename
     *  	
     *  	
     *       	
     */
public int copyRecord(Properties ctx, String tableName, PO from) {
    // Create new record
    int idBackup = 0;
    String colValue = null;
    int tableID = get_IDWithColumn(ctx, "AD_Table", "TableName", tableName);
    POInfo poInfo = POInfo.getPOInfo(ctx, tableID, getTrxName(ctx));
    for (int i = 0; i < poInfo.getColumnCount(); i++) {
        colValue = null;
        int columnID = get_IDWithMasterAndColumn(ctx, "AD_Column", "ColumnName", poInfo.getColumnName(i), "AD_Table", tableID);
        StringBuffer sqlD = new StringBuffer("SELECT AD_Reference_ID FROM AD_COLUMN WHERE AD_Column_ID = '" + columnID + "'");
        int referenceID = DB.getSQLValue(getTrxName(ctx), sqlD.toString());
        idBackup = DB.getNextID(getClientId(ctx), "AD_Package_Imp_Backup", getTrxName(ctx));
        sqlD = new StringBuffer("SELECT MAX(AD_PACKAGE_IMP_DETAIL_ID) FROM AD_PACKAGE_IMP_DETAIL");
        int idDetail = DB.getSQLValue(getTrxName(ctx), sqlD.toString()) + 1;
        if (referenceID == 10 || referenceID == 14 || referenceID == 34 || referenceID == 17)
            if (from != null && from.get_Value(i) != null)
                colValue = from.get_Value(i).toString().replaceAll("'", "''");
            else if (referenceID == 20 || referenceID == 28)
                if (from != null && from.get_Value(i) != null)
                    colValue = from.get_Value(i).toString().replaceAll("'", "''");
                else
                    //Ignore
                    ;
        StringBuffer sqlB = new StringBuffer("INSERT INTO AD_Package_Imp_Backup").append("(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, ").append("AD_PACKAGE_IMP_BACKUP_ID, AD_PACKAGE_IMP_DETAIL_ID, AD_PACKAGE_IMP_ID,").append(" AD_TABLE_ID, AD_COLUMN_ID, AD_REFERENCE_ID, COLVALUE)").append("VALUES(").append(" " + Env.getAD_Client_ID(ctx)).append(", " + Env.getAD_Org_ID(ctx)).append(", " + Env.getAD_User_ID(ctx)).append(", " + Env.getAD_User_ID(ctx)).append(", " + idBackup).append(", " + idDetail).append(", " + getPackageImpId(ctx)).append(", " + tableID).append(", " + (columnID == -1 ? "null" : columnID)).append(", " + (referenceID == -1 ? "null" : referenceID)).append(", '" + (colValue != null ? colValue : (from != null ? from.get_Value(i) : "null"))).append("')");
        int no = DB.executeUpdate(sqlB.toString(), getTrxName(ctx));
        if (no == -1)
            log.info("Insert to import backup failed");
    //}
    }
    return idBackup;
}
Also used : POInfo(org.compiere.model.POInfo)

Aggregations

POInfo (org.compiere.model.POInfo)9 MTable (org.compiere.model.MTable)5 PO (org.compiere.model.PO)5 Properties (java.util.Properties)4 XFireFault (org.codehaus.xfire.fault.XFireFault)4 ADLoginRequest (pl.x3E.adInterface.ADLoginRequest)4 DataField (pl.x3E.adInterface.DataField)4 DataRow (pl.x3E.adInterface.DataRow)4 ModelCRUD (pl.x3E.adInterface.ModelCRUD)4 BigDecimal (java.math.BigDecimal)2 QName (javax.xml.namespace.QName)2 Trx (org.compiere.util.Trx)2 DataSet (pl.x3E.adInterface.DataSet)2 StandardResponse (pl.x3E.adInterface.StandardResponse)2 StandardResponseDocument (pl.x3E.adInterface.StandardResponseDocument)2 WindowTabData (pl.x3E.adInterface.WindowTabData)2 WindowTabDataDocument (pl.x3E.adInterface.WindowTabDataDocument)2 SQLException (java.sql.SQLException)1 Timestamp (java.sql.Timestamp)1 ArrayList (java.util.ArrayList)1