use of org.codehaus.xfire.fault.XFireFault 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.codehaus.xfire.fault.XFireFault 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.codehaus.xfire.fault.XFireFault in project adempiere by adempiere.
the class ExternalSalesImpl method authenticate.
public static void authenticate(String username, String password, String webServiceName, String method) throws XFireFault {
// and ad_client_id in (0,?)
String dbpwd = DB.getSQLValueString(null, "SELECT Password FROM AD_User WHERE Name=? AND Password IS NOT NULL", username);
if (dbpwd == null || dbpwd.length() <= 0)
throw new XFireFault("Invalid user/password", new QName("username"));
String isencr = DB.getSQLValueString(null, "SELECT IsEncrypted FROM AD_Column WHERE AD_Column_ID=417");
if ("Y".equals(isencr))
dbpwd = SecureEngine.decrypt(dbpwd);
String hashPassword = null;
try {
hashPassword = new String(Base64.encodeBase64(MessageDigest.getInstance("SHA-1").digest(dbpwd.getBytes("UTF-8"))), "ASCII");
} catch (UnsupportedEncodingException e1) {
throw new XFireFault("Error hashing db password", e1, new QName("username"));
} catch (NoSuchAlgorithmException e1) {
throw new XFireFault("Error hashing db password", e1, new QName("username"));
}
if (!hashPassword.equals(password))
/* Invalid password */
throw new XFireFault("Invalid user/password", new QName("password"));
throw new XFireFault("Security not implemented yet", new QName("webServiceName"));
// TODO: authenticate web service and method
// TODO: Search for a service type for client and role access with the same value as the method
}
Aggregations