Search in sources :

Example 16 with MTable

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

the class MView method getSQLFromView.

//	beforeDelete
/**
	 * get SQL from View
	 * 
	 * @param AD_View_ID
	 * @param trxName
	 * @return SQL string
	 */
public static String getSQLFromView(int AD_View_ID, String trxName) {
    StringBuffer sql = new StringBuffer();
    StringBuffer joins = new StringBuffer();
    StringBuffer cols = new StringBuffer();
    String from = "";
    MView view = new MView(Env.getCtx(), AD_View_ID, null);
    sql.append("SELECT ");
    boolean co = false;
    for (MViewDefinition def : view.getViewDefinitions()) {
        List<MViewColumn> columns = new Query(Env.getCtx(), MViewColumn.Table_Name, MViewDefinition.COLUMNNAME_AD_View_Definition_ID + "=?", trxName).setParameters(def.get_ID()).setOnlyActiveRecords(true).list();
        for (MViewColumn col : columns) {
            if (co)
                cols.append(",");
            if (col.getColumnSQL() != null && col.getColumnSQL().length() > 0) {
                cols.append(col.getColumnSQL() + " as " + col.getName());
                co = true;
            } else if (col.getColumnName() != null && col.getColumnName().length() > 0) {
                cols.append(def.getTableAlias() + "." + col.getColumnName() + " as " + col.getName());
                co = true;
            }
        }
        MTable table = new MTable(Env.getCtx(), def.getAD_Table_ID(), null);
        if (def.getJoinClause() != null && def.getJoinClause().length() > 0) {
            String jc = def.getJoinClause();
            joins.append(" ").append(jc).append(" ");
        } else
            from = table.getTableName() + " " + def.getTableAlias();
    }
    sql.append(cols).append(" from ").append(from).append(" ").append(joins);
    return sql.toString();
}
Also used : MTable(org.compiere.model.MTable) Query(org.compiere.model.Query)

Example 17 with MTable

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

the class LayoutEngine method layout.

//	getPaper
/**************************************************************************
	 * 	Create Layout
	 */
private void layout() {
    //	Header/Footer
    m_headerFooter = new HeaderFooter(m_printCtx);
    if (!m_format.isForm() && m_format.isStandardHeaderFooter())
        createStandardHeaderFooter();
    //
    m_pageNo = 0;
    m_pages.clear();
    m_tableElement = null;
    //	initialize
    newPage(true, false);
    //
    if (m_format.isForm())
        layoutForm();
    else {
        //	Parameter
        PrintElement element = layoutParameter();
        if (element != null) {
            m_currPage.addElement(element);
            element.setLocation(m_position[AREA_CONTENT]);
            //	GAP
            m_position[AREA_CONTENT].y += element.getHeight() + 5;
        }
        // Process Instance Log (if any):
        element = layoutPInstanceLogs();
        if (element != null) {
            m_currPage.addElement(element);
            element.setLocation(m_position[AREA_CONTENT]);
            //	GAP
            m_position[AREA_CONTENT].y += element.getHeight() + 5;
        }
        //	Table
        if (m_data != null) {
            element = layoutTable(m_format, m_data, 0);
            element.setLocation(m_content.getLocation());
            for (int p = 1; p <= element.getPageCount(); p++) {
                if (p != 1)
                    newPage(true, false);
                m_currPage.addElement(element);
            }
        }
    }
    //
    String pageInfo = String.valueOf(m_pages.size()) + getPageInfo(m_pages.size());
    Env.setContext(m_printCtx, Page.CONTEXT_PAGECOUNT, pageInfo);
    Timestamp now = new Timestamp(System.currentTimeMillis());
    Env.setContext(m_printCtx, Page.CONTEXT_DATE, DisplayType.getDateFormat(DisplayType.Date, m_format.getLanguage()).format(now));
    Env.setContext(m_printCtx, Page.CONTEXT_TIME, DisplayType.getDateFormat(DisplayType.DateTime, m_format.getLanguage()).format(now));
    //
    // Page Background Image
    Image image = null;
    MPrintTableFormat tf = m_format.getTableFormat();
    MTable table = MTable.get(getCtx(), getPrintInfo().getAD_Table_ID());
    if (table.getColumn("IsPrinted") != null && !table.isView()) {
        String tableName = table.getTableName();
        final String sql = "SELECT IsPrinted FROM " + tableName + " WHERE " + tableName + "_ID=?";
        boolean isPrinted = "Y".equals(DB.getSQLValueStringEx(m_TrxName, sql, getPrintInfo().getRecord_ID()));
        if (isPrinted) {
            image = tf.getImageWaterMark();
        }
    } else {
        image = tf.getImage();
    }
    //	Update Page Info
    int pages = m_pages.size();
    for (int i = 0; i < pages; i++) {
        Page page = m_pages.get(i);
        int pageNo = page.getPageNo();
        pageInfo = String.valueOf(pageNo) + getPageInfo(pageNo);
        page.setPageInfo(pageInfo);
        page.setPageCount(pages);
        page.setBackgroundImage(image);
    }
    m_hasLayout = true;
}
Also used : MTable(org.compiere.model.MTable) MPrintTableFormat(org.compiere.print.MPrintTableFormat) Image(java.awt.Image) Timestamp(java.sql.Timestamp) Point(java.awt.Point)

Example 18 with MTable

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

the class MWorkflow method lock.

/**
	 * Lock the entity data based on field processing set on for this document
	 * @param tableId
	 * @param recordId
	 */
private void lock(int tableId, int recordId) {
    MTable domain = MTable.get(getCtx(), tableId);
    String update = "UPDATE " + domain.getTableName() + " SET Processing='Y' WHERE (Processing='N' OR Processing IS NULL) AND " + domain.getKeyColumns()[0] + "=?";
    DB.executeUpdateEx(update, new Object[] { recordId }, null);
}
Also used : MTable(org.compiere.model.MTable)

Example 19 with MTable

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

the class Browser method getAxisSQLWhere.

/**
	 * Get SQL where for axis
	 * @param viewColumn
	 * @return
	 */
public String getAxisSQLWhere(I_AD_View_Column viewColumn) {
    MViewDefinition viewDefinition = (MViewDefinition) viewColumn.getAD_View_Definition();
    MTable tableBaseName = (MTable) viewDefinition.getAD_Table();
    StringBuilder whereAxis = new StringBuilder();
    boolean onRange = false;
    setParameters();
    for (int i = 0; i < m_parameters_field.size(); i++) {
        String fieldName = "";
        MColumn column = tableBaseName.getColumn(m_parameters_field.get(i).ColumnName);
        if (column != null)
            fieldName = tableBaseName.getTableName() + "." + column.getColumnName();
        else
            continue;
        if (!onRange) {
            if (parametersValues.get(i) != null && !parametersValues.get(i).toString().isEmpty() && !m_parameters_field.get(i).IsRange) {
                whereAxis.append(" AND ");
                whereAxis.append(fieldName).append("=").append(parametersValues.get(i).toString());
            } else if (parametersValues.get(i) != null && !parametersValues.get(i).toString().isEmpty() && m_parameters_field.get(i).IsRange) {
                whereAxis.append(" AND ");
                whereAxis.append(fieldName).append(" >= ? ");
                axisParameters.add(m_parameters_field.get(i));
                axisParametersValues.add(parametersValues.get(i));
                onRange = true;
            } else
                continue;
        } else if (parametersValues.get(i) != null && !parametersValues.get(i).toString().isEmpty()) {
            whereAxis.append(" AND ");
            whereAxis.append(fieldName).append(" <= ? ");
            axisParameters.add(m_parameters_field.get(i));
            axisParametersValues.add(parametersValues.get(i));
            onRange = false;
        }
    }
    return whereAxis.toString();
}
Also used : MColumn(org.compiere.model.MColumn) MTable(org.compiere.model.MTable) MViewDefinition(org.adempiere.model.MViewDefinition)

Example 20 with MTable

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

the class Browser method getInfoColumnForAxisField.

/**
	 * Get Info_Column for Axis Field
	 * @param field defined as Axis
	 * @return Info_Column with Axis Field
	 */
public List<MBrowseField> getInfoColumnForAxisField(MBrowseField field) {
    List<MBrowseField> list = new ArrayList<MBrowseField>();
    axisParameters = new ArrayList<>();
    axisParametersValues = new ArrayList<>();
    try {
        I_AD_View_Column xcol, pcol, ycol;
        xcol = field.getAD_View_Column();
        pcol = field.getAxis_Parent_Column();
        ycol = field.getAxis_Column();
        String columnName = xcol.getAD_Column().getColumnName();
        MBrowseField fieldKey = ((MBrowse) field.getAD_Browse()).getFieldKey();
        if (fieldKey == null)
            throw new AdempiereException("@NotFound@ @IsKey@");
        MTable xTable = (MTable) ycol.getAD_View_Definition().getAD_Table();
        String xTableName = xTable.getTableName();
        String keyColumn = MQuery.getZoomColumnName(columnName);
        String tableName = MQuery.getZoomTableName(columnName);
        String whereClause = "";
        if (pcol != null && pcol.getAD_View_Column_ID() > 0) {
            MTable parentTable = MTable.get(field.getCtx(), tableName);
            MColumn parentColumn = getParentColumn(parentTable.getAD_Table_ID());
            if (parentColumn == null)
                throw new AdempiereException("@NotFound@ @IsParent@");
            //	BR [ 242 ]
            if (field.getAD_Val_Rule_ID() > 0)
                whereClause = Env.parseContext(Env.getCtx(), getWindowNo(), field.getAD_Val_Rule().getCode(), false);
        }
        MLookup lookup = MLookupFactory.get(Env.getCtx(), 0, xcol.getAD_Column_ID(), field.getAD_Reference_ID(), m_language, keyColumn, field.getAD_Reference_Value_ID(), false, whereClause);
        int cols = 0;
        StringBuilder axisSql = new StringBuilder("(SELECT ");
        axisSql.append("SUM(").append(ycol.getAD_Column().getColumnName()).append(") FROM  ").append(ycol.getAD_View_Definition().getAD_Table().getTableName()).append(" WHERE ").append(xTableName).append(".").append(fieldKey.getAD_View_Column().getAD_Column().getColumnName()).append("=").append(fieldKey.getAD_View_Column().getColumnSQL());
        for (int id : getAxisRecordIds(tableName, whereClause)) {
            cols++;
            String display = lookup.getDisplay(id).trim();
            display = display.length() > 12 ? display.substring(1, 12) + "_" + cols : display;
            String joinColumn = Msg.translate(m_language, ycol.getAD_Column().getColumnName());
            joinColumn = joinColumn.length() > 15 ? joinColumn.substring(1, 15) : joinColumn;
            String sqlColName = display + "/" + joinColumn;
            String colName = lookup.getDisplay(id).trim() + "/" + Msg.translate(m_language, ycol.getAD_Column().getColumnName());
            StringBuilder axisWhere = new StringBuilder(" ");
            axisWhere.append(getAxisSQLWhere(ycol)).append(" AND ").append(xcol.getAD_View_Definition().getTableAlias()).append(".").append(xcol.getAD_Column().getColumnName());
            StringBuffer select = new StringBuffer();
            select.append(axisSql).append(axisWhere);
            select.append("=").append(id).append(")");
            MViewColumn viewColumn = new MViewColumn(field.getCtx(), 0, field.get_TrxName());
            MViewColumn.copyValues((MViewColumn) ycol, viewColumn);
            viewColumn.setAD_View_Column_ID(ycol.getAD_View_Column_ID());
            viewColumn.setAD_Column_ID(ycol.getAD_Column_ID());
            viewColumn.setColumnSQL(select.toString());
            viewColumn.setColumnName("\"" + sqlColName + "\"");
            MBrowseField browseField = new MBrowseField((MBrowse) field.getAD_Browse(), viewColumn);
            browseField.setAD_Browse_ID(field.getAD_Browse_ID());
            browseField.setAD_Element_ID(field.getAD_Element_ID());
            browseField.setName(colName);
            browseField.setDescription(viewColumn.getDescription());
            browseField.setHelp(viewColumn.getHelp());
            if (viewColumn.get_ID() > 0)
                browseField.setAD_View_Column_ID(viewColumn.getAD_View_Column_ID());
            browseField.setIsActive(true);
            browseField.setIsIdentifier(viewColumn.isIdentifier());
            browseField.setIsRange(false);
            browseField.setIsQueryCriteria(false);
            browseField.setAD_Reference_ID(ycol.getAD_Column().getAD_Reference_ID());
            browseField.setAD_Reference_Value_ID(ycol.getAD_Column().getAD_Reference_Value_ID());
            browseField.setIsKey(false);
            browseField.setIsDisplayed(true);
            browseField.setAxis_Column_ID(field.getAxis_Column_ID());
            browseField.setAxis_Parent_Column_ID(field.getAxis_Parent_Column_ID());
            browseField.setIsReadOnly(field.isReadOnly());
            browseField.setAD_Element_ID(field.getAD_Element_ID());
            list.add(browseField);
            log.finest("Added Column=" + sqlColName + " SQL = " + select);
        }
    } catch (Exception e) {
        throw new AdempiereException(e);
    }
    return list;
}
Also used : MColumn(org.compiere.model.MColumn) MBrowseField(org.adempiere.model.MBrowseField) MLookup(org.compiere.model.MLookup) ArrayList(java.util.ArrayList) I_AD_View_Column(org.adempiere.model.I_AD_View_Column) MBrowse(org.adempiere.model.MBrowse) SQLException(java.sql.SQLException) IOException(java.io.IOException) DBException(org.adempiere.exceptions.DBException) AdempiereException(org.adempiere.exceptions.AdempiereException) MViewColumn(org.adempiere.model.MViewColumn) MTable(org.compiere.model.MTable) AdempiereException(org.adempiere.exceptions.AdempiereException)

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