use of org.compiere.model.MTable in project adempiere by adempiere.
the class ModelADServiceImpl method readData.
// updateData
public WindowTabDataDocument readData(ModelCRUDRequestDocument req) throws XFireFault {
WindowTabDataDocument ret = WindowTabDataDocument.Factory.newInstance();
WindowTabData resp = ret.addNewWindowTabData();
ModelCRUD modelCRUD = req.getModelCRUDRequest().getModelCRUD();
String serviceType = modelCRUD.getServiceType();
int cnt = 0;
ADLoginRequest reqlogin = req.getModelCRUDRequest().getADLoginRequest();
String err = modelLogin(reqlogin, webServiceName, "readData", serviceType);
if (err != null && err.length() > 0) {
resp.setError(err);
return ret;
}
// Validate parameters vs service type
validateCRUD(modelCRUD);
Properties ctx = m_cs.getM_ctx();
String tableName = modelCRUD.getTableName();
int recordID = modelCRUD.getRecordID();
// get the PO for the tablename and record ID
MTable table = MTable.get(ctx, tableName);
if (table == null)
throw new XFireFault("Web service type " + m_webservicetype.getValue() + ": table " + tableName + " not found", new QName("readData"));
PO po = table.getPO(recordID, null);
if (po == null) {
resp.setSuccess(false);
resp.setRowCount(cnt);
resp.setNumRows(cnt);
resp.setTotalRows(cnt);
resp.setStartRow(0);
return ret;
}
cnt = 1;
POInfo poinfo = POInfo.getPOInfo(ctx, table.getAD_Table_ID());
DataSet ds = resp.addNewDataSet();
DataRow dr = ds.addNewDataRow();
for (int i = 0; i < poinfo.getColumnCount(); i++) {
String columnName = poinfo.getColumnName(i);
if (m_webservicetype.isOutputColumnNameAllowed(columnName)) {
DataField dfid = dr.addNewField();
dfid.setColumn(columnName);
if (po.get_Value(i) != null)
dfid.setVal(po.get_Value(i).toString());
else
dfid.setVal(null);
}
}
resp.setSuccess(true);
resp.setRowCount(cnt);
resp.setNumRows(cnt);
resp.setTotalRows(cnt);
resp.setStartRow(1);
return ret;
}
use of org.compiere.model.MTable in project adempiere by adempiere.
the class ModelADServiceImpl method queryData.
public WindowTabDataDocument queryData(ModelCRUDRequestDocument req) throws XFireFault {
WindowTabDataDocument ret = WindowTabDataDocument.Factory.newInstance();
WindowTabData resp = ret.addNewWindowTabData();
ModelCRUD modelCRUD = req.getModelCRUDRequest().getModelCRUD();
String serviceType = modelCRUD.getServiceType();
/** 2014-12-04 Carlos Parada Add Support for Paginate Records */
/** Current Page*/
int currentPage = req.getModelCRUDRequest().getModelCRUD().getPageNo();
/** Records per Page*/
int m_RecByPage = MSysConfig.getIntValue("WS_RECORDS_BY_PAGE", 1);
/** Quantity Pages*/
int qtyPages = 0;
log.info("Current Page " + currentPage);
/** 2014-12-04 Carlos Parada */
ADLoginRequest reqlogin = req.getModelCRUDRequest().getADLoginRequest();
String err = modelLogin(reqlogin, webServiceName, "queryData", serviceType);
if (err != null && err.length() > 0) {
resp.setError(err);
return ret;
}
// Validate parameters vs service type
validateCRUD(modelCRUD);
Properties ctx = m_cs.getM_ctx();
String tableName = modelCRUD.getTableName();
// get the PO for the tablename and record ID
MTable table = MTable.get(ctx, tableName);
if (table == null)
throw new XFireFault("Web service type " + m_webservicetype.getValue() + ": table " + tableName + " not found", new QName("queryData"));
int roleid = reqlogin.getRoleID();
MRole role = new MRole(ctx, roleid, null);
// 2014-12-04 Carlos Parada Replace ResultSet For Query
List<PO> records = null;
String key = m_cs.getM_AD_User_ID() + "_" + serviceType;
if (currentPage != 0)
records = (List<PO>) s_cache.get(key);
//"SELECT * FROM " + tableName;
String sqlWhere = "";
//sqlquery = role.addAccessSQL(sqlquery, tableName, true, true);
for (DataField field : modelCRUD.getDataRow().getFieldList()) {
if (m_webservicetype.isInputColumnNameAllowed(field.getColumn())) {
sqlWhere += (sqlWhere.equals("") ? "" : " AND ") + field.getColumn() + "=?";
} else {
throw new XFireFault("Web service type " + m_webservicetype.getValue() + ": input column " + field.getColumn() + " not allowed", new QName("queryData"));
}
}
if (modelCRUD.getFilter() != null && modelCRUD.getFilter().length() > 0)
sqlWhere += " AND " + modelCRUD.getFilter();
POInfo poinfo = POInfo.getPOInfo(ctx, table.getAD_Table_ID());
int cnt = 0;
try {
if (records == null) {
Query query = new Query(ctx, poinfo.getTableName(), sqlWhere, null);
Object[] parameters = new Object[modelCRUD.getDataRow().getFieldList().size()];
int p = 1;
int i = 0;
for (DataField field : modelCRUD.getDataRow().getFieldList()) {
parameters[i] = field.getVal();
i++;
}
if (parameters.length > 0)
query.setParameters(parameters);
records = query.setApplyAccessFilter(true).list();
}
// Angelo Dabala' (genied) must create just one DataSet, moved outside of the while loop
DataSet ds = resp.addNewDataSet();
// Set Quantity of Pages
if (records.size() != 0)
qtyPages = new BigDecimal(records.size()).divide(new BigDecimal(m_RecByPage)).setScale(0, BigDecimal.ROUND_UP).intValue();
int begin = 0, end = 0;
begin = currentPage * m_RecByPage;
end = (((currentPage + 1) * m_RecByPage) > records.size() ? records.size() : ((currentPage + 1) * m_RecByPage));
for (int j = begin; j < end; j++) {
PO record = records.get(j);
cnt++;
DataRow dr = ds.addNewDataRow();
for (int i = 0; i < poinfo.getColumnCount(); i++) {
String columnName = poinfo.getColumnName(i);
if (m_webservicetype.isOutputColumnNameAllowed(columnName)) {
DataField dfid = dr.addNewField();
dfid.setColumn(columnName);
dfid.setLval(record.get_ValueAsString(columnName));
}
}
}
} catch (Exception e) {
e.printStackTrace();
// ignore this exception
}
resp.setSuccess(true);
resp.setRowCount(cnt);
resp.setNumRows(cnt);
resp.setTotalRows(cnt);
resp.setStartRow(1);
resp.setQtyPages(qtyPages);
return ret;
}
use of org.compiere.model.MTable in project adempiere by adempiere.
the class Generator method genTable.
/**
* Creates the nodes for the request tables in the XML-tree.
*
* @param tableName
* @param whereClause
* @param completeXML
* @param ctx
* @param wi
*/
private void genTable(String tableName, String whereClause, boolean completeXML, Properties ctx, WebInfo wi) {
String l_szTrxName = null;
StringBuffer tmpCode = new StringBuffer();
String dataTableName = tableName;
String l_whereClause = replaceSessionElements(wi, whereClause);
tmpCode.append("<" + tableName + ">\n");
// For the different AD_Ref_List tables
if (whereClause.indexOf("AD_Reference") > -1) {
dataTableName = "AD_Ref_List";
}
int[] l_nIDs = PO.getAllIDs(dataTableName, l_whereClause, l_szTrxName);
int[] l_nTableIDs = MTable.getAllIDs("AD_Table", "TableName='" + dataTableName + "'", l_szTrxName);
if (l_nTableIDs.length > 0) {
MTable table = MTable.get(ctx, l_nTableIDs[0]);
PO l_Object = null;
// If the table should contain complete xml use the PO function get_xmlString
if (completeXML) {
for (int i = 0; i < l_nIDs.length; i++) {
l_Object = table.getPO(l_nIDs[i], l_szTrxName);
l_Object.get_xmlString(tmpCode);
}
// else only append ID and DisplayName
} else {
String sql = MLookupFactory.getLookup_TableDirEmbed(Language.getLanguage("en"), dataTableName + "_ID", dataTableName);
sql = sql.concat(" AND " + l_whereClause);
PreparedStatement pstm = DB.prepareStatement(sql, l_szTrxName);
ResultSet rs = null;
try {
rs = pstm.executeQuery();
} catch (Exception e) {
}
for (int i = 0; i < l_nIDs.length; i++) {
l_Object = table.getPO(l_nIDs[i], l_szTrxName);
tmpCode.append("<" + dataTableName + " AD_Table_ID=\"" + table.get_ID() + "\" Record_ID=\"" + l_Object.get_ID() + "\">\n");
tmpCode.append("<" + dataTableName + "_ID>");
tmpCode.append(l_Object.get_ID());
tmpCode.append("</" + dataTableName + "_ID>\n");
// Only AD_Ref_List works with value as reference
if (dataTableName.equals("AD_Ref_List")) {
tmpCode.append("<Value>");
tmpCode.append("<![CDATA[" + l_Object.get_Value("Value") + "]]>\n");
tmpCode.append("</Value>\n");
}
// for these two table the BPartner is needed
if (dataTableName.equals("AD_User") || dataTableName.equals("C_Project")) {
tmpCode.append("<C_BPartner_ID>");
tmpCode.append(l_Object.get_Value("C_BPartner_ID"));
tmpCode.append("</C_BPartner_ID>\n");
}
tmpCode.append("<DisplayName>\n");
try {
if (rs.next()) {
tmpCode.append("<![CDATA[" + rs.getString(1) + "]]>\n");
}
} catch (SQLException e) {
tmpCode.append("<![CDATA[" + e.getMessage() + "]]\n");
}
tmpCode.append("</DisplayName>\n");
tmpCode.append("</" + dataTableName + ">\n");
}
try {
rs.close();
pstm.close();
} catch (Exception e) {
}
}
}
tmpCode.append("</" + tableName + ">\n");
xmlCode.append(tmpCode);
}
use of org.compiere.model.MTable in project adempiere by adempiere.
the class FieldRecordInfo method dynInit.
// jbInit
/**
* Dynamic Init
* @param title title
* @return true if table initialized
*/
private boolean dynInit(String title) {
// Title
if (AD_Table_ID != 0) {
MTable table1 = MTable.get(Env.getCtx(), AD_Table_ID);
setTitle(title + " - " + table1.getName());
}
// Only Client Preference can view Change Log
if (!MRole.PREFERENCETYPE_Client.equals(MRole.getDefault().getPreferenceType()))
return false;
if (Record_ID == 0)
return false;
// Data
String sql = "SELECT AD_Column_ID, Updated, UpdatedBy, OldValue, NewValue " + "FROM AD_ChangeLog " + "WHERE AD_Table_ID=? AND Record_ID=? AND AD_Column_ID=?" + "ORDER BY Updated DESC";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, AD_Table_ID);
pstmt.setInt(2, Record_ID);
pstmt.setInt(3, AD_Column_ID);
rs = pstmt.executeQuery();
while (rs.next()) {
addLine(rs.getInt(1), rs.getTimestamp(2), rs.getInt(3), rs.getString(4), rs.getString(5));
}
} catch (Exception e) {
log.log(Level.SEVERE, sql, e);
} finally {
DB.close(rs, pstmt);
}
//
Vector<String> columnNames = new Vector<String>();
columnNames.add(Msg.translate(Env.getCtx(), "NewValue"));
columnNames.add(Msg.translate(Env.getCtx(), "OldValue"));
columnNames.add(Msg.translate(Env.getCtx(), "UpdatedBy"));
columnNames.add(Msg.translate(Env.getCtx(), "Updated"));
DefaultTableModel model = new DefaultTableModel(m_data, columnNames);
table.setModel(model);
table.autoSize(false);
return true;
}
use of org.compiere.model.MTable in project adempiere by adempiere.
the class QueryTest method testList.
public void testList() throws Exception {
List<MTable> list = new Query(getCtx(), "AD_Table", "TableName IN (?,?)", getTrxName()).setParameters(new Object[] { "C_Invoice", "M_InOut" }).setOrderBy("TableName").list();
assertEquals("Invalid list size", 2, list.size());
assertEquals("Invalid object 1", list.get(0).getTableName(), "C_Invoice");
assertEquals("Invalid object 2", list.get(1).getTableName(), "M_InOut");
}
Aggregations