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();
}
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;
}
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);
}
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();
}
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;
}
Aggregations