Validate order details when back office submits Learn about step to customize validate data with DAO.
Requirement
For all order items, summary of all "Order Unit" at module supplier list must equal to "Unit" of order item.
Procedure
1. From ONEWEB workspace, create java file name "com.manual.service.ManualJDBCServiceLocator " in MasterWeb with coding below.
Copy package com.manual.service;
import java.sql.Connection;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class ManualJDBCServiceLocator {
private final static transient Logger log = LogManager.getLogger(ManualJDBCServiceLocator.class);
public static ManualJDBCServiceLocator serviceLocator;
private final static String JAVA_ENV = "";
public final static int MASTER_DB = 0;
public final static int ONEWEB_DB = 1;
public final static String MASTER_DATA_SOURCE = "jdbc/master";
public final static String APPLICATION_DATA_SOURCE = "jdbc/application";
public static synchronized ManualJDBCServiceLocator getInstance() {
if (serviceLocator == null) {
serviceLocator = new ManualJDBCServiceLocator();
}
return serviceLocator;
}
private ManualJDBCServiceLocator() {
}
/**
*
* @param dbType
* @return DataSource.getConnection()
* @throws Exception
*/
public Connection getConnection(int dbType) throws Exception {
DataSource ds = null;
try{
InitialContext ctx = new InitialContext();
switch(dbType){
case MASTER_DB:
ds = (DataSource)ctx.lookup(JAVA_ENV+MASTER_DATA_SOURCE);
break;
case ONEWEB_DB:
ds = (DataSource)ctx.lookup(JAVA_ENV+APPLICATION_DATA_SOURCE);
break;
default:
return null;
}
return ds.getConnection();
} catch(Exception e){
e.printStackTrace();
throw new Exception(e.toString());
}
}
/**
*
* @param jndiName (For example, "jdbc/master")
* @return DataSource.getConnection()
* @throws Exception
*/
public Connection getConnection(String jndiName) throws Exception{
try{
DataSource ds = null;
InitialContext ctx = new InitialContext();
if(null != jndiName && !"".equalsIgnoreCase(jndiName)){
ds = (DataSource)ctx.lookup(JAVA_ENV+jndiName);
}else{
return null;
}
return ds.getConnection();
}catch(Exception e){
e.printStackTrace();
throw new Exception(e.toString());
}
}
public static String getPoolName(int dbType) {
switch (dbType) {
default:
return MASTER_DATA_SOURCE;
}
}
}
2. From ONEWEB workspace, create java file name "com.manual.doc.order.dao.ManualDocObjectDAO " in MasterWeb with coding below
Copy package com.manual.doc.order.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class ManualDocObjectDAO {
public void closeConnection(Connection conn, PreparedStatement ps, ResultSet rs ) {
if(conn != null){
try{
conn.commit();
}catch(Exception e){}
try{
conn.close();
}catch(Exception e){}
}
if(ps != null){
try{
ps.close();
}catch(Exception e){}
}
if(rs != null){
try{
rs.close();
}catch(Exception e){}
}
}
}
3. From ONEWEB workspace, create java file name "com.manual.doc.order.dao.ManualDocOrderDAO " at MasterWeb with coding below.
Copy package com.manual.doc.order.dao;
public interface ManualDocOrderDAO {
public int countInCompleteOrderUnit(String requestID) throws Exception;
}
4. From ONEWEB workspace, create java file name "com.manual.doc.order.dao.ManualDocOrderDAOImpl" at MasterWeb with coding below.
Copy package com.manual.doc.order.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.apache.log4j.Logger;
import com.manual.service.ManualJDBCServiceLocator;
public class ManualDocOrderDAOImpl extends ManualDocObjectDAO implements ManualDocOrderDAO {
private Logger logger = Logger.getLogger(ManualDocOrderDAOImpl.class);
@Override
public class ManualDocOrderDAOImpl extends ManualDocObjectDAO implements ManualDocOrderDAO {
private Logger logger = Logger.getLogger(ManualDocOrderDAOImpl.class);
@Override
public int countInCompleteOrderUnit(String requestID) throws Exception {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
int result = 0;
try{
conn = ManualJDBCServiceLocator.getInstance().getConnection(ManualJDBCServiceLocator.ONEWEB_DB);
StringBuilder sql = new StringBuilder("");
sql.append("SELECT COUNT(1) AS in_complete_amt ");
sql.append("FROM (SELECT ");
sql.append("oi.request_id, oi.unit, SUM(ois.unit_by_back_office) as order_unit ");
sql.append("FROM wf_order_req_item oi ");
sql.append("INNER JOIN wf_order_req_item_supplier ois ON oi.order_item_id = ois.order_item_id ");
sql.append("WHERE oi.request_id = ? ");
sql.append("GROUP BY oi.request_id, oi.unit) tmp ");
sql.append("WHERE tmp.unit - tmp.order_unit <> 0 ");
ps = conn.prepareStatement(sql.toString());
ps.setString(1, requestID);
logger.debug("@@@@@ countInCompleteOrderUnit sql :" + sql.toString());
logger.debug("@@@@@ countInCompleteOrderUnit requestID :" + requestID);
rs = ps.executeQuery();
if(rs.next()){
result = rs.getInt("in_complete_amt");
}
return result;
}catch(Exception e){
e.printStackTrace();
throw e;
}finally{
this.closeConnection(conn, ps, rs);
}
}
}
5. From ONEWEB workspace, create java file name "com.manual.service.ManualDAOFactory " at MasterWeb with coding below.
Copy package com.manual.service;
import com.manual.doc.order.dao.ManualDocOrderDAO;
import com.manual.doc.order.dao.ManualDocOrderDAOImpl;
public class ManualDAOFactory {
public static ManualDocOrderDAO getManualDocOrderDAO(){
return new ManualDocOrderDAOImpl();
}
}
6. From ONEWEB workspace, create java file name "com.manual.doc.order.java.OrderRequestBackOfficeUpdateMode " at MasterWeb with coding below.
Copy package com.manual.doc.order.java;
import java.util.HashMap;
import java.util.Vector;
import org.apache.log4j.Logger;
import com.manual.service.ManualDAOFactory;
import com.master.form.EntityFormHandler;
import com.master.util.EAFManualUtil;
import com.master.util.ProcessAction;
import com.master.util.ProcessHelper;
public class OrderRequestBackOfficeUpdateMode extends ProcessHelper implements ProcessAction {
private static Logger logger = Logger.getLogger(OrderRequestBackOfficeUpdateMode.class);
@Override
public boolean validateResult() {
String nextEntity = request.getParameter("goEntity");
logger.debug("@@@@@ nextEntity :" + nextEntity);
if(nextEntity == null || "".equals(nextEntity)) {
String entityID = (String)getRequest().getSession().getAttribute("entityID");
EntityFormHandler entityForm = (EntityFormHandler)getRequest().getSession().getAttribute(entityID +"_session");
Vector errorVect = entityForm.getFormErrors();
String moduleID = entityForm.getMainModuleID();
HashMap mainRequestData = EAFManualUtil.getDataHashMapFromSession(moduleID, request);
String requestID = (String)mainRequestData.get("REQUEST_ID");
try{
int inCompleteAmt = ManualDAOFactory.getManualDocOrderDAO().countInCompleteOrderUnit(requestID);
logger.debug("@@@@@ completeAmt :" + completeAmt);
if(completeAmt > 0){
errorVect.add("Please verify un-assign order unit.");
return false;
}
}catch(Exception e){
errorVect.add(e.getMessage());
return false;
}
}
return super.validateResult();
}
}
7. From ONEWEB workspace, export EafMasterEar.ear and deploy update to server. The class name from step 1-6 will update to server.
8. Test by logging in to FrontWeb.
8.1. Login with Back Office user.
8.2. Go to To Do List and claim job.
8.3. Click save or submit.
8.4. If found at least one record of order item that Unit not equal to summary of order unit, the system must show error message "Please verify un-assign order unit."