Commit f6b0542f authored by kmandhre's avatar kmandhre

tracking master update -> from SUN


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@95574 ce508802-f39f-4f6c-b175-0d175dae99d5
parent fe355c26
/********************************************************
Title : TrackActivityMaster.java
Date : 24-JAN-2014
Developer : Manoj Sarode
Purpose : Define the activities for user for Tacking.
********************************************************/
package ibase.webitm.ejb.sys;
import ibase.system.config.ConnDriver;
import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.ejb.Stateless;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@Stateless
public class TrackActivityMaster extends ValidatorEJB implements TrackActivityMasterLocal,TrackActivityMasterRemote
{
GenericUtility genericUtility = GenericUtility.getInstance();
ITMDBAccessEJB itmDBAccessEJB = new ITMDBAccessEJB();
public String wfValData(String xmlString, String xmlString1, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException
{
String errString = "";
Document dom = null;
Document dom1 = null;
try
{
if (xmlString != null && xmlString.trim().length() > 0 )
{
dom = parseString(xmlString);
System.out.println("In wfValData Current xmlString="+xmlString);
}
if (xmlString1 != null && xmlString1.trim().length() > 0 )
{
dom1 = parseString(xmlString1);
System.out.println("In wfValData Header xmlString1="+xmlString1);
}
errString = wfValData(dom, dom1, objContext, editFlag, xtraParams);
}
catch(Exception e)
{
throw new ITMException(e);
}
return(errString);
}
public String wfValData(Document curDom, Document hdrDom, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException
{
String userId = "";
String errorType = "";
String childNodeName = null;
String errCode = "";
String actCode = "";
String actShDescr = "";
String actDescr = "";
String roleCode = "";
String trackType = "";
String trackLevel = "";
String trackResponse = "";
String errString = "";
int currentFormNo = 0;
int childNodeListLength;
int ctr=0;
int count = 0;
boolean flag = false;
NodeList parentNodeList = null;
NodeList childNodeList = null;
Node parentNode = null;
Node childNode = null;
ArrayList<String> errList = new ArrayList<String>();
ArrayList<String> errFields = new ArrayList<String>();
Connection conn = null;
PreparedStatement pstmt = null ;
ResultSet rs = null;
ConnDriver connDriver = new ConnDriver();
StringBuffer errStringXml = new StringBuffer("<?xml version = \"1.0\"?> \r\n <Root> <Errors>");
try
{
SimpleDateFormat sdf = new SimpleDateFormat(genericUtility.getApplDateFormat());
conn = connDriver.getConnectDB("DriverITM");
userId = getValueFromXTRA_PARAMS(xtraParams, "loginCode");
if(objContext != null && objContext.trim().length() > 0)
{
currentFormNo = Integer.parseInt(objContext);
}
System.out.println("Current Form No. :- "+currentFormNo);
switch(currentFormNo)
{
case 1 :
parentNodeList = curDom.getElementsByTagName("Detail1");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
childNodeListLength = childNodeList.getLength();
for(ctr = 0; ctr < childNodeListLength; ctr ++)
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
if(childNodeName.equalsIgnoreCase("act_code") && editFlag.equalsIgnoreCase("A") ) // Validation for activity code
{
actCode = checkNull(genericUtility.getColumnValue("act_code", curDom));
if(actCode == null || actCode.trim().length() == 0)
{
errCode = "VTBLNKACTV";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
flag = isRecordExist(conn," TRAN_TRACK_ACTS "," WHERE ACT_CODE ='"+actCode.trim()+"' ");
if(flag == true)
{
errCode = "VTACTCDEXT";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
} //act_code end
else if(childNodeName.equalsIgnoreCase("sh_descr")) // Validation for Activity Short Description
{
actShDescr = checkNull(genericUtility.getColumnValue("sh_descr", curDom));
/*if(actShDescr == null || actShDescr.trim().length() == 0)
{
errCode = "VTBLNKDSCR";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
*/
} // End of sh_descr
else if(childNodeName.equalsIgnoreCase("descr")) // Validation for Activity Description
{
actDescr = checkNull(genericUtility.getColumnValue("descr", curDom));
if(actDescr == null || actDescr.trim().length() == 0)
{
errCode = "VTBLNKDSCR";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
} // End of descr
else if(childNodeName.equalsIgnoreCase("role_code")) // Validation for role_code
{
roleCode = checkNull(genericUtility.getColumnValue("role_code", curDom));
if(roleCode == null || roleCode.trim().length() == 0)
{
errCode = "VTBLNKROLL";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
//flag = isRecordExist(conn," GENCODES "," WHERE FLD_NAME = 'ROLE_CODE' AND MOD_NAME='W_TRACK_ACTS' AND FLD_VALUE = '"+roleCode.trim()+"' ");
flag = isRecordExist(conn," WF_ROLE_USERS WRF,WF_ROLE WR "," WHERE WR.ROLE_CODE=WRF.ROLE_CODE AND WRF.ROLE_CODE = '"+roleCode.trim()+"' ");
if(flag == false)
{
errCode = "VTINVDROLL";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
} // End of role_code
else if(childNodeName.equalsIgnoreCase("track_type")) // Validation for track_type
{
trackType = checkNull(genericUtility.getColumnValue("track_type", curDom));
if(trackType == null || trackType.trim().length() == 0)
{
errCode = "VTBLKTRTYP";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}else
{
flag = isRecordExist(conn," GENCODES "," WHERE FLD_NAME = 'TRACK_TYPE' AND MOD_NAME='W_TRACK_ACTS' AND FLD_VALUE = '"+trackType.trim()+"' ");
if(flag == false)
{
errCode = "VTINVTRTYP";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
} // End of track_type
else if(childNodeName.equalsIgnoreCase("track_level")) // Validation for track_level
{
trackLevel = checkNull(genericUtility.getColumnValue("track_level", curDom));
if(trackLevel == null || trackLevel.trim().length() == 0)
{
errCode = "VTBLKTRLVL";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}else
{
flag = isRecordExist(conn," GENCODES "," WHERE FLD_NAME = 'TRACK_LEVEL' AND MOD_NAME='W_TRACK_ACTS' AND FLD_VALUE = '"+trackLevel.trim()+"' ");
if(flag == false)
{
errCode = "VTINVTRLVL";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
} // End of track_level
else if(childNodeName.equalsIgnoreCase("track_response")) // Validation for track_level
{
trackResponse = checkNull(genericUtility.getColumnValue("track_response", curDom));
if(trackResponse == null || trackResponse.trim().length() == 0)
{
errCode = "VTBLKTRRES";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}else
{
flag = isRecordExist(conn," GENCODES "," WHERE FLD_NAME = 'TRACK_RESPONSE' AND MOD_NAME='W_TRACK_ACTS' AND FLD_VALUE = '"+trackResponse.trim()+"' ");
if(flag == false)
{
errCode = "VTINVTRRES";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
} // End of track_level
/*else if(childNodeName.equalsIgnoreCase("exp_comp_days")) // Validation for track_level
{
actShDescr = checkNull(genericUtility.getColumnValue("exp_comp_days", curDom));
if(actCode == null || actCode.trim().length() == 0)
{
errCode = "VTBLNKACTV";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
} // End of track_level
*/
}
break;
}
int errListSize = errList.size();
count = 0;
String errFldName = null;
ITMDBAccessEJB itmDBAccessEJB = new ITMDBAccessEJB();
if(errList != null && errListSize > 0)
{
for(count = 0; count < errListSize; count ++)
{
errCode = errList.get(count);
errFldName = errFields.get(count);
System.out.println("errCode .........." + errCode);
// errString = getErrorString(errFldName, errCode, userId);
errString = itmDBAccessEJB.getErrorString(errFldName, errCode, userId);
System.out.println("errString........"+errString);
errString = itmDBAccessEJB.getErrorString("", errCode, userId);
System.out.println("errString........"+errString);
errorType = errorType(conn , errCode);
return errString;
}
errList.clear();
errList = null;
errFields.clear();
errFields = null;
errStringXml.append("</Errors> </Root> \r\n");
}
else
{
errStringXml = new StringBuffer("");
}
}//end try
catch(Exception e)
{
e.printStackTrace();
errString = e.getMessage();
throw new ITMException(e);
}
finally
{
try
{
if(conn != null)
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
conn.close();
}
conn = null;
}
catch(Exception d)
{
d.printStackTrace();
throw new ITMException(d);
}
}
errString = errStringXml.toString();
return errString;
}
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException, ITMException
{
Document dom = null;
Document dom1 = null;
String valueXmlString = "";
try
{
System.out.println("xmlString1="+xmlString);
System.out.println("xmlString2="+xmlString1);
if(xmlString != null && xmlString.trim().length() > 0)
{
dom = parseString(xmlString);
}
if(xmlString1 != null && xmlString1.trim().length() > 0)
{
dom1 = parseString(xmlString1);
}
valueXmlString = itemChanged(dom, dom1,objContext, currentColumn, editFlag, xtraParams);
}
catch(Exception e)
{
System.out.println("Exception : [DistributionRoute][itemChanged( String, String )] :==>\n" + e.getMessage());
}
return valueXmlString;
}
public String itemChanged(Document dom, Document dom1,String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException, ITMException
{
String childNodeName = null;
String sql = "";
String roleCode = "";
String roleCodeDescr = "";
String trackType = "";
String trackTypeDescr = "";
String trackLevel = "";
String trackLevelDescr = "";
String trackResponse = "";
String trackResonseDescr = "";
StringBuffer valueXmlString = new StringBuffer();
int ctr = 0;
int currentFormNo = 0;
int childNodeListLength = 0;
NodeList parentNodeList = null;
NodeList childNodeList = null;
Node parentNode = null;
Node childNode = null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null ;
GenericUtility genericUtility = GenericUtility.getInstance();
ConnDriver connDriver = new ConnDriver();
try
{
SimpleDateFormat sdf = new SimpleDateFormat(genericUtility.getApplDateFormat());
conn = connDriver.getConnectDB("DriverITM");
conn.setAutoCommit(false);
connDriver = null;
if(objContext != null && objContext.trim().length() > 0)
{
currentFormNo = Integer.parseInt(objContext);
}
valueXmlString = new StringBuffer("<?xml version = \"1.0\"?> <Root> <header> <editFlag>");
valueXmlString.append(editFlag).append("</editFlag> </header>");
switch(currentFormNo)
{
case 1 :
parentNodeList = dom.getElementsByTagName("Detail1");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
valueXmlString.append("<Detail1>");
childNodeListLength = childNodeList.getLength();
do
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
ctr ++;
}while(ctr < childNodeListLength && ! childNodeName.equals(currentColumn));
System.out.println("currentColumn = "+currentColumn);
if(currentColumn.trim().equalsIgnoreCase("itm_default") )
{
/*valueXmlString.append("<emp_code__hod>").append("<![CDATA[I99993]]>").append("</emp_code__hod>\r\n");*/
valueXmlString.append("<track_level>").append("<![CDATA[B]]>").append("</track_level>\r\n");
sql = " SELECT DESCR FROM GENCODES WHERE FLD_NAME = 'TRACK_LEVEL' AND MOD_NAME ='W_TRACK_ACTS' AND FLD_VALUE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,"B");
rs = pstmt.executeQuery();
if(rs.next())
{
trackLevelDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<track_level_descr>").append("<![CDATA[" + trackLevelDescr +"]]>").append("</track_level_descr>\r\n");
trackLevelDescr="";
valueXmlString.append("<track_type>").append("<![CDATA[POS]]>").append("</track_type>\r\n");
sql = " SELECT DESCR FROM GENCODES WHERE FLD_NAME = 'TRACK_TYPE' AND MOD_NAME ='W_TRACK_ACTS' AND FLD_VALUE = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,"POS");
rs = pstmt.executeQuery();
if(rs.next())
{
trackTypeDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<track_type_descr>").append("<![CDATA[" + trackTypeDescr +"]]>").append("</track_type_descr>\r\n");
trackTypeDescr="";
valueXmlString.append("<track_response>").append("<![CDATA[D]]>").append("</track_response>\r\n");
sql = " SELECT DESCR FROM GENCODES WHERE FLD_NAME = 'TRACK_RESPONSE' AND MOD_NAME ='W_TRACK_ACTS' AND FLD_VALUE = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,"D");
rs = pstmt.executeQuery();
if(rs.next())
{
trackResonseDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<track_response_descr>").append("<![CDATA[" + trackResonseDescr +"]]>").append("</track_response_descr>\r\n"); trackLevelDescr="";
}
else if(currentColumn.trim().equalsIgnoreCase("role_code")) //Item change for role_code
{
roleCode = checkNull(genericUtility.getColumnValue("role_code", dom));
if(roleCode != null && roleCode.trim().length() > 0)
{
//sql = " SELECT DESCR FROM GENCODES WHERE FLD_NAME = 'ROLE_CODE' AND MOD_NAME ='W_TRACK_ACTS' AND FLD_VALUE = ? ";
sql = " SELECT DESCR FROM WF_ROLE_USERS WRF,WF_ROLE WR WHERE WR.ROLE_CODE=WRF.ROLE_CODE AND WRF.ROLE_CODE = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,roleCode.trim());
rs = pstmt.executeQuery();
if(rs.next())
{
roleCodeDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
/*
*
* Change the tag name for itemchange of role code
* Changes by Manoj Sarode on 20-Mar-2014 Start
*
* */
valueXmlString.append("<wf_role_descr>").append("<![CDATA[" + roleCodeDescr +"]]>").append("</wf_role_descr>\r\n");
}
else
{
valueXmlString.append("<wf_role_descr>").append("<![CDATA[]]>").append("</wf_role_descr>\r\n");
/*
*
* Change the tag name for itemchange of role code
* Changes by Manoj Sarode on 20-Mar-2014 End
*
* */
}//end of role_code
}
else if(currentColumn.trim().equalsIgnoreCase("track_type")) //Item change for track_type
{
trackType = checkNull(genericUtility.getColumnValue("track_type", dom));
if(trackType != null && trackType.trim().length() > 0)
{
sql = " SELECT DESCR FROM GENCODES WHERE FLD_NAME = 'TRACK_TYPE' AND MOD_NAME ='W_TRACK_ACTS' AND FLD_VALUE = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,trackType.trim());
rs = pstmt.executeQuery();
if(rs.next())
{
trackTypeDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<track_type_descr>").append("<![CDATA[" + trackTypeDescr +"]]>").append("</track_type_descr>\r\n");
}
else
{
valueXmlString.append("<track_type_descr>").append("<![CDATA[]]>").append("</track_type_descr>\r\n");
}//end of track_type
}
else if(currentColumn.trim().equalsIgnoreCase("track_level")) //Item change for track_level
{
trackLevel = checkNull(genericUtility.getColumnValue("track_level", dom));
if(trackLevel != null && trackLevel.trim().length() > 0)
{
sql = " SELECT DESCR FROM GENCODES WHERE FLD_NAME = 'TRACK_LEVEL' AND MOD_NAME ='W_TRACK_ACTS' AND FLD_VALUE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,trackLevel.trim());
rs = pstmt.executeQuery();
if(rs.next())
{
trackLevelDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<track_level_descr>").append("<![CDATA[" + trackLevelDescr +"]]>").append("</track_level_descr>\r\n");
}
else
{
valueXmlString.append("<track_level_descr>").append("<![CDATA[]]>").append("</track_level_descr>\r\n");
}//end of track_level
}
else if(currentColumn.trim().equalsIgnoreCase("track_response")) //Item change for track_response
{
trackResponse = checkNull(genericUtility.getColumnValue("track_response", dom));
if(trackResponse != null && trackResponse.trim().length() > 0)
{
sql = " SELECT DESCR FROM GENCODES WHERE FLD_NAME = 'TRACK_RESPONSE' AND MOD_NAME ='W_TRACK_ACTS' AND FLD_VALUE = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,trackResponse.trim());
rs = pstmt.executeQuery();
if(rs.next())
{
trackResonseDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<track_response_descr>").append("<![CDATA[" + trackResonseDescr +"]]>").append("</track_response_descr>\r\n");
}
else
{
valueXmlString.append("<track_response_descr>").append("<![CDATA[]]>").append("</track_response_descr>\r\n");
}//end of track_response
}
valueXmlString.append("</Detail1>");
break;
}
valueXmlString.append("</Root>");
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("Exception ::"+ e.getMessage());
throw new ITMException(e);
}
finally
{
try
{
if(conn != null)
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
conn.close();
}
conn = null;
}
catch(Exception d)
{
d.printStackTrace();
}
}
return valueXmlString.toString();
}
private String checkNull(String input)
{
if(input == null)
{
input = "";
}
return input;
}
private String errorType(Connection conn , String errorCode)
{
String msgType = "";
PreparedStatement pstmt = null ;
ResultSet rs = null;
try
{
String sql = "SELECT MSG_TYPE FROM MESSAGES WHERE MSG_NO = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,errorCode);
rs = pstmt.executeQuery();
while(rs.next())
{
msgType = rs.getString("MSG_TYPE");
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
return msgType;
}
public boolean isRecordExist(Connection conn , String tableName, String condition)
{
PreparedStatement pstmt = null ;
ResultSet rs = null;
String sql="";
boolean isExist=false;
int recCount=0;
try
{
sql = " SELECT COUNT(*) FROM "+tableName +" "+condition;
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next())
{
recCount=rs.getInt(1);
}
if(recCount>0)
{
isExist=true;
}
else
{
isExist=false;
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
System.out.print("---------Final--isExist-------"+isExist);
return isExist;
}
}
\ No newline at end of file
/*
* PURPOSE : Local interface for TrackActivityMaster to lookup Localy Contain only Validation function.
* AUTHOR : Changed By Manoj Sarode On 24-Jan-2014.
*/
package ibase.webitm.ejb.sys;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.ITMException;
import javax.ejb.*;
@javax.ejb.Local
public interface TrackActivityMasterLocal extends ValidatorLocal
{
public String wfValData(String xmlString, String xmlString1, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String wfValData(Document dom, Document dom1, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(Document dom, Document dom1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
/*
* PURPOSE : Local interface for TrackActivityMaster to lookup Localy Contain only Validation function.
* AUTHOR : Changed By Manoj Sarode On 24-Jan-2014.
*/
package ibase.webitm.ejb.sys;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.ITMException;
@javax.ejb.Remote
public interface TrackActivityMasterRemote extends ValidatorRemote
{
public String wfValData(String xmlString, String xmlString1, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String wfValData(Document dom, Document dom1, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(Document dom, Document dom1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
/********************************************************
Title : TrackReqMaster.java
Date : 18-Feb-2014
Developer : Santosh Divekar
Purpose : Define the the tracking req with multiple activities.
********************************************************/
package ibase.webitm.ejb.sys;
import ibase.system.config.ConnDriver;
import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.ejb.Stateless;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@Stateless
public class TrackReqMaster extends ValidatorEJB implements TrackReqMasterLocal,TrackReqMasterRemote
{
GenericUtility genericUtility = GenericUtility.getInstance();
ITMDBAccessEJB itmDBAccessEJB = new ITMDBAccessEJB();
Hashtable<String, String> trackBasisValueMap = new Hashtable<String, String>();
ArrayList<String> duplicateRecordAdd = new ArrayList<String>();
public String wfValData(String xmlString, String xmlString1, String xmlString2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException
{
String errString = "";
Document dom = null;
Document dom1 = null;
Document dom2 = null;
try
{
if (xmlString != null && xmlString.trim().length() > 0 )
{
dom = parseString(xmlString);
System.out.println("In wfValData Current xmlString="+xmlString);
}
if (xmlString1 != null && xmlString1.trim().length() > 0 )
{
dom1 = parseString(xmlString1);
System.out.println("In wfValData Header xmlString1="+xmlString1);
}
if (xmlString2 != null && xmlString2.trim().length() > 0 )
{
dom2 = parseString(xmlString2);
System.out.println("In wfValData All xmlString2="+xmlString2);
}
errString = wfValData(dom, dom1, dom2, objContext, editFlag, xtraParams);
}
catch(Exception e)
{
throw new ITMException(e);
}
return(errString);
}
public String wfValData(Document curDom, Document hdrDom, Document allDom, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException
{
String userId = "";
String errorType = "";
String childNodeName = null;
String errCode = "";
String errString = "";
String refSer = "";
String trackReq = "";
String trackSet = "";
String trackBasisValue = "";
int currentFormNo = 0;
int childNodeListLength;
int childNodeListLengthLocal;
int childNodeLength;
int ctr=0;
int count = 0;
NodeList parentNodeList = null;
NodeList parentNodeListLocal = null;
NodeList parentNodeListCheck = null;
NodeList childNodeList = null;
NodeList childNodeListLocal = null;
Node parentNode = null;
Node parentNodeLocal = null;
Node childNode = null;
Node childNodeLocal = null;
String updateFlag="";
boolean flag = false;
ArrayList<String> errList = new ArrayList<String>();
ArrayList<String> errFields = new ArrayList<String>();
ArrayList<String> refSerMap=new ArrayList<String>();
Connection conn = null;
PreparedStatement pstmt = null ;
ResultSet rs = null;
ConnDriver connDriver = new ConnDriver();
StringBuffer errStringXml = new StringBuffer("<?xml version = \"1.0\"?> \r\n <Root> <Errors>");
try
{
SimpleDateFormat sdf = new SimpleDateFormat(genericUtility.getApplDateFormat());
conn = connDriver.getConnectDB("DriverITM");
userId = getValueFromXTRA_PARAMS(xtraParams, "loginCode");
if(objContext != null && objContext.trim().length() > 0)
{
currentFormNo = Integer.parseInt(objContext);
}
//duplicateRecordAdd.clear();
System.out.println("Current Form No. :- "+currentFormNo);
switch(currentFormNo)
{
case 1 :
parentNodeList = curDom.getElementsByTagName("Detail1");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
childNodeListLength = childNodeList.getLength();
for(ctr = 0; ctr < childNodeListLength; ctr ++)
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
if(childNodeName.equalsIgnoreCase("ref_ser") && editFlag.equalsIgnoreCase("A") ) // Validation for ref ser code
{
refSer = checkNull(genericUtility.getColumnValue("ref_ser", curDom));
refSer = refSer.trim();
if(refSer == null || refSer.trim().length() == 0)
{
errCode = "VTBLKREFSR";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
flag = isRecordExist(conn," REFSER "," WHERE REF_SER='"+refSer+"' ");
if(flag == false)
{
errCode = "VTINVREFSR";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
flag = isRecordExist(conn," obj_track_req "," WHERE REF_SER='"+refSer+"' ");
if(flag == true)
{
errCode = "VTEXTREFSR";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
// CHECK VALIDATION FOR REF_SER FROM BOTH HEADER AND DETAIL SCREEN ARE SAME
if (allDom != null )
{
parentNodeListCheck = allDom.getElementsByTagName("Detail2");
childNodeLength = parentNodeListCheck.getLength();
String tempRefSer = "";
refSerMap.clear();
for (int selectedRow = 0; selectedRow < childNodeLength; selectedRow++)
{
parentNode = parentNodeListCheck.item(selectedRow);
childNodeList = parentNode.getChildNodes();
childNodeListLength = childNodeList.getLength();
updateFlag = getAttribValue(parentNode,"attribute", "updateFlag");
if(!updateFlag.equalsIgnoreCase("D"))
{
for (int childRow = 0; childRow < childNodeListLength; childRow++)
{
childNode = childNodeList.item(childRow);
String childNodeNameLocal = childNode.getNodeName();
if(childNode.getFirstChild()!=null)
{
if (childNodeNameLocal.equals("ref_ser"))
{
tempRefSer = childNode.getFirstChild().getNodeValue();
}
}
}
System.out.println("BEFORE MAP RefSer : "+refSerMap);
if (refSerMap.contains(tempRefSer.trim()))
{
}
else
{
refSerMap.add(tempRefSer.trim());
System.out.println("AFTER ADD : "+refSerMap);
}
}
}
}
if(editFlag!=null && editFlag.equalsIgnoreCase("A"))
{
for (int i = 0; i < refSerMap.size(); i++)
{
if(refSerMap.get(i).equalsIgnoreCase(refSer))
{
}
else
{
// Reference Series on header and detail screen are not same,
errCode = "VTINVREFD2";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
break;
}
}
}
}
}
else if(childNodeName.equalsIgnoreCase("track_req") && editFlag.equalsIgnoreCase("A")) // Validation for Track Req Short Description
{
trackReq = checkNull(genericUtility.getColumnValue("track_req", curDom)) ;
trackReq = trackReq.trim();
if(trackReq == null || trackReq.trim().length() == 0)
{
errCode = "VTBLKTRREQ";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
refSer = checkNull(genericUtility.getColumnValue("ref_ser", curDom));
flag = isRecordExist(conn," obj_track_req "," where ref_ser='"+refSer+"' and track_req='"+trackReq+"'");
if(flag == true)
{
errCode = "VTEXTREFTR";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
}
else if(childNodeName.equalsIgnoreCase("track_basis_col_1")) // Validation for Tracking Criteria
{
String trackBasis1 = checkNull(genericUtility.getColumnValue("track_basis_col_1", curDom));
trackBasis1 = trackBasis1.trim();
if(trackBasis1 == null || trackBasis1.trim().length() == 0)
{
errCode = "VTBLKTRBC1";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
else if(childNodeName.equalsIgnoreCase("track_basis_col_2")) // Validation for Tracking Criteria
{
}
else if(childNodeName.equalsIgnoreCase("track_basis_col_3")) // Validation for Tracking Criteria
{
}
else if(childNodeName.equalsIgnoreCase("track_basis_col_4")) // Validation for Tracking Criteria
{
}
else if(childNodeName.equalsIgnoreCase("track_basis_col_5")) // Validation for Tracking Criteria
{
}
else if(childNodeName.equalsIgnoreCase("track_basis_col_6")) // Validation for Tracking Criteria
{
}
else if(childNodeName.equalsIgnoreCase("context_col_1")) // Validation for Tracking Criteria
{
String contextCol1 = checkNull(genericUtility.getColumnValue("context_col_1", curDom));
contextCol1 = contextCol1.trim();
if(contextCol1 == null || contextCol1.trim().length() == 0)
{
errCode = "VTBLKCONC1";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
}
break;
case 2 :
parentNodeList = curDom.getElementsByTagName("Detail2");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
childNodeListLength = childNodeList.getLength();
for(ctr = 0; ctr < childNodeListLength; ctr ++)
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
System.out.println("editFlag : "+editFlag);
if(childNodeName.equalsIgnoreCase("track_basis_value") ) // Validation for track_basis_value
{
trackBasisValue = checkNull(genericUtility.getColumnValue("track_basis_value", curDom)) ;
trackBasisValue = trackBasisValue.trim();
if(trackBasisValue == null || trackBasisValue.trim().length() == 0)
{
errCode = "VTBLKTBVAL";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
trackReq = checkNull(genericUtility.getColumnValue("track_req", curDom)) ;
trackReq = trackReq.trim();
refSer = checkNull(genericUtility.getColumnValue("ref_ser", curDom)) ;
refSer = refSer.trim();
parentNodeListLocal = allDom.getElementsByTagName("Detail2");
int parentNodeListLengthLocal = parentNodeListLocal.getLength();
System.out.println("parentNodeListLength +++++++++++++++++++"+ parentNodeListLengthLocal);
System.out.println("Edit flag +++++++++++++++++++"+editFlag);
duplicateRecordAdd.clear();
for (int selectedRow = 0; selectedRow < parentNodeListLengthLocal; selectedRow++)
{
String refSerLocal="",trackReqLocal="",trackBasisValueLocal="";
parentNodeLocal = parentNodeListLocal.item(selectedRow);
childNodeListLocal = parentNodeLocal.getChildNodes();
childNodeListLengthLocal = childNodeListLocal.getLength();
updateFlag = getAttribValue(parentNodeLocal,"attribute", "updateFlag");
System.out.println("childNodeListLength -- "+ childNodeListLengthLocal+" updateFlag-"+updateFlag);
if(!updateFlag.equalsIgnoreCase("D"))
{
for (int childRow = 0; childRow < childNodeListLengthLocal; childRow++)
{
childNodeLocal = childNodeListLocal.item(childRow);
String childNodeNameLocal = childNodeLocal.getNodeName();
System.out.println("childNodeNameLocal-+++++++++++++++++++"+ childNodeNameLocal+"--"+selectedRow);
if(childNodeLocal.getFirstChild()!=null)
{
if(childNodeNameLocal.equalsIgnoreCase("ref_ser"))
{
refSerLocal = childNodeLocal.getFirstChild().getNodeValue();
}
else if(childNodeNameLocal.equalsIgnoreCase("track_req"))
{
trackReqLocal = childNodeLocal.getFirstChild().getNodeValue();
}
else if(childNodeNameLocal.equalsIgnoreCase("track_basis_value"))
{
trackBasisValueLocal = childNodeLocal.getFirstChild().getNodeValue();
}
}
}
System.out.println("duplicateRecordAdd : "+duplicateRecordAdd);
if(duplicateRecordAdd.contains(refSerLocal+":"+trackReqLocal+":"+trackBasisValueLocal))
{
errCode = "VTEXTRTRBC";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
duplicateRecordAdd.add(refSerLocal+":"+trackReqLocal+":"+trackBasisValueLocal);
System.out.println("After Add duplicateRecordAdd : "+duplicateRecordAdd);
}
}
}
//duplicateRecordAdd.clear();
if(editFlag!=null && !editFlag.equalsIgnoreCase("E"))
{
flag = isRecordExist(conn," obj_track_req_det "," where ref_ser='"+refSer+"' and track_req='"+trackReq+"' and track_basis_value = '"+trackBasisValue+"'");
if(flag == true)
{
errCode = "VTEXTRTRBC";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
}
}
else if(childNodeName.equalsIgnoreCase("track_set") ) // Validation for seq_no
{
trackSet = checkNull(genericUtility.getColumnValue("track_set", curDom));
trackSet = trackSet.trim();
if(trackSet == null || trackSet.trim().length() == 0)
{
errCode = "VTBLKTRSET";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
flag = isRecordExist(conn," TRAN_TRACK_SET "," WHERE TRACK_SET='"+trackSet.trim()+"' ");
if(flag == false)
{
errCode = "VTINVTRSET";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
}
}
break;
}
int errListSize = errList.size();
count = 0;
String errFldName = null;
ITMDBAccessEJB itmDBAccessEJB = new ITMDBAccessEJB();
if(errList != null && errListSize > 0)
{
for(count = 0; count < errListSize; count++)
{
errCode = errList.get(count);
errFldName = errFields.get(count);
System.out.println("errCode .........." + errCode);
// errString = getErrorString(errFldName, errCode, userId);
errString = itmDBAccessEJB.getErrorString(errFldName, errCode, userId);
System.out.println("errString........"+errString);
errString = itmDBAccessEJB.getErrorString("", errCode, userId);
System.out.println("errString........"+errString);
errorType = errorType(conn , errCode);
return errString;
}
errList.clear();
errList = null;
errFields.clear();
errFields = null;
errStringXml.append("</Errors> </Root> \r\n");
}
else
{
errStringXml = new StringBuffer("");
}
}//end try
catch(Exception e)
{
e.printStackTrace();
errString = e.getMessage();
throw new ITMException(e);
}
finally
{
try
{
if(conn != null)
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
conn.close();
}
conn = null;
}
catch(Exception d)
{
d.printStackTrace();
throw new ITMException(d);
}
}
errString = errStringXml.toString();
return errString;
}
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException, ITMException
{
Document dom = null;
Document dom1 = null;
String valueXmlString = "";
try
{
System.out.println("xmlString1="+xmlString);
System.out.println("xmlString2="+xmlString1);
if(xmlString != null && xmlString.trim().length() > 0)
{
dom = parseString(xmlString);
}
if(xmlString1 != null && xmlString1.trim().length() > 0)
{
dom1 = parseString(xmlString1);
}
valueXmlString = itemChanged(dom, dom1, objContext, currentColumn, editFlag, xtraParams);
}
catch(Exception e)
{
System.out.println("Exception : [TrackSetMaster][itemChanged( String, String,... )] :==>\n" + e.getMessage());
}
return valueXmlString;
}
public String itemChanged(Document dom, Document dom1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException, ITMException
{
String childNodeName = null;
String sql = "";
String trackSet = "";
String trackSetDescr = "";
String refSer="";
String refSerDescr="";
StringBuffer valueXmlString = new StringBuffer();
int ctr = 0;
int currentFormNo = 0;
int childNodeListLength = 0;
NodeList parentNodeList = null;
NodeList childNodeList = null;
Node parentNode = null;
Node childNode = null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null ;
GenericUtility genericUtility = GenericUtility.getInstance();
ConnDriver connDriver = new ConnDriver();
try
{
SimpleDateFormat sdf = new SimpleDateFormat(genericUtility.getApplDateFormat());
conn = connDriver.getConnectDB("DriverITM");
conn.setAutoCommit(false);
connDriver = null;
if(objContext != null && objContext.trim().length() > 0)
{
currentFormNo = Integer.parseInt(objContext);
}
valueXmlString = new StringBuffer("<?xml version = \"1.0\"?> <Root> <header> <editFlag>");
valueXmlString.append(editFlag).append("</editFlag> </header>");
switch(currentFormNo)
{
case 1 :
parentNodeList = dom.getElementsByTagName("Detail1");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
valueXmlString.append("<Detail1>");
childNodeListLength = childNodeList.getLength();
do
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
ctr ++;
}while(ctr < childNodeListLength && ! childNodeName.equals(currentColumn));
// System.out.println("currentColumn = "+currentColumn);
if(currentColumn.trim().equalsIgnoreCase("ref_ser")) //Item change for ref_ser and show description
{
refSer = checkNull(genericUtility.getColumnValue("ref_ser", dom));
if(refSer != null && refSer.trim().length() > 0)
{
sql="SELECT DESCR FROM REFSER WHERE REF_SER= ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,refSer.trim());
rs = pstmt.executeQuery();
if(rs.next())
{
refSerDescr = rs.getString(1);
}
valueXmlString.append("<refser_descr>").append("<![CDATA[" + refSerDescr +"]]>").append("</refser_descr>\r\n");
}
else
{
valueXmlString.append("<refser_descr>").append("<![CDATA[" + "" +"]]>").append("</refser_descr>\r\n");
}
}
valueXmlString.append("</Detail1>");
break;
case 2 :
parentNodeList = dom.getElementsByTagName("Detail2");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
valueXmlString.append("<Detail2>");
childNodeListLength = childNodeList.getLength();
do
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
ctr ++;
}while(ctr < childNodeListLength && ! childNodeName.equals(currentColumn));
System.out.println("currentColumn="+currentColumn);
if ((currentColumn.trim().equalsIgnoreCase("itm_defaultedit")))
{
}
else if(currentColumn.trim().equalsIgnoreCase("track_set")) //Item change for track_set
{
trackSet = checkNull(genericUtility.getColumnValue("track_set", dom));
if(trackSet != null && trackSet.trim().length() > 0)
{
sql="SELECT DESCR FROM TRAN_TRACK_SET WHERE TRACK_SET= ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,trackSet.trim());
rs = pstmt.executeQuery();
if(rs.next())
{
trackSetDescr = rs.getString(1);
}
valueXmlString.append("<tran_track_set_descr>").append("<![CDATA[" + trackSetDescr +"]]>").append("</tran_track_set_descr>\r\n");
}
else
{
valueXmlString.append("<tran_track_set_descr>").append("<![CDATA[" + "" +"]]>").append("</tran_track_set_descr>\r\n");
}
}
valueXmlString.append("</Detail2>");
break ;
}
valueXmlString.append("</Root>");
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("Exception ::"+ e.getMessage());
throw new ITMException(e);
}
finally
{
try
{
if(conn != null)
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
conn.close();
}
conn = null;
}
catch(Exception d)
{
d.printStackTrace();
}
}
return valueXmlString.toString();
}
private String checkNull(String input)
{
if(input == null)
{
input = "";
}
return input;
}
private String errorType(Connection conn , String errorCode)
{
String msgType = "";
PreparedStatement pstmt = null ;
ResultSet rs = null;
try
{
String sql = "SELECT MSG_TYPE FROM MESSAGES WHERE MSG_NO = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,errorCode);
rs = pstmt.executeQuery();
while(rs.next())
{
msgType = rs.getString("MSG_TYPE");
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
return msgType;
}
public boolean isRecordExist(Connection conn , String tableName, String condition)
{
PreparedStatement pstmt = null ;
ResultSet rs = null;
String sql="";
boolean isExist=false;
int recCount=0;
try
{
sql = " SELECT COUNT(*) FROM "+tableName +" "+condition;
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next())
{
recCount=rs.getInt(1);
}
if(recCount>0)
{
isExist=true;
}
else
{
isExist=false;
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
System.out.print("---------Final--isExist-------"+isExist);
return isExist;
}
private String getAttribValue(Node detailNode, String nodeName, String attribStr)
{
String attribValue = "";
try
{
String domStr = GenericUtility.getInstance().serializeDom(detailNode);
Document dom = GenericUtility.getInstance().parseString(domStr);
if( dom != null /*&& dom.getAttributes() != null*/)
{
Node attributeNode = dom.getElementsByTagName( nodeName ).item(0);
attribValue = getAttribValue(attributeNode, attribStr);
}
}
catch(Exception e)
{
System.out.println("Exception : getAttribValue :" + e.getMessage());
}
return attribValue;
}
private String getAttribValue(Node detailNode, String attribStr)
{
String attribValue = "";
try
{
if( detailNode != null && detailNode.getAttributes() != null)
{
Node attribNode = detailNode.getAttributes().getNamedItem( attribStr );
if( attribNode != null )
{
attribValue = checkNull( attribNode.getNodeValue() );
}
}
}
catch(Exception e)
{
System.out.println("Exception : getAttribValue :" + e.getMessage());
}
return attribValue;
}
}
\ No newline at end of file
/*
* PURPOSE : Local interface for TrackReqMaster to lookup Localy Contain only Validation function.
* AUTHOR : Changed By Santosh Divekar On 18-FEB-2014.
*/
package ibase.webitm.ejb.sys;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.ITMException;
@javax.ejb.Local
public interface TrackReqMasterLocal extends ValidatorLocal
{
public String wfValData(String xmlString, String xmlString1, String xmlString2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String wfValData(Document dom, Document dom1, Document dom2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(Document dom, Document dom1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
/*
* PURPOSE : Local interface for TrackReqMaster to lookup Localy Contain only Validation function.
* AUTHOR : Changed By Santosh Divekar On 18-FEB-2014.
*/
package ibase.webitm.ejb.sys;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.ITMException;
@javax.ejb.Remote
public interface TrackReqMasterRemote extends ValidatorRemote
{
public String wfValData(String xmlString, String xmlString1, String xmlString2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String wfValData(Document dom, Document dom1, Document dom2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(Document dom, Document dom1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
/********************************************************
Title : TrackSetMaster.java
Date : 01-Feb-2014
Developer : Manoj Sarode
Purpose : Define the the tracking set with multiple activities.
********************************************************/
package ibase.webitm.ejb.sys;
import ibase.system.config.ConnDriver;
import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.ejb.Stateless;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@Stateless
public class TrackSetMaster extends ValidatorEJB implements TrackSetMasterLocal,TrackSetMasterRemote
{
GenericUtility genericUtility = GenericUtility.getInstance();
ITMDBAccessEJB itmDBAccessEJB = new ITMDBAccessEJB();
public String wfValData(String xmlString, String xmlString1, String xmlString2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException
{
String errString = "";
Document dom = null;
Document dom1 = null;
Document dom2 = null;
try
{
if (xmlString != null && xmlString.trim().length() > 0 )
{
dom = parseString(xmlString);
System.out.println("In wfValData Current xmlString="+xmlString);
}
if (xmlString1 != null && xmlString1.trim().length() > 0 )
{
dom1 = parseString(xmlString1);
System.out.println("In wfValData Header xmlString1="+xmlString1);
}
if (xmlString2 != null && xmlString2.trim().length() > 0 )
{
dom2 = parseString(xmlString2);
System.out.println("In wfValData All xmlString2="+xmlString2);
}
errString = wfValData(dom, dom1, dom2, objContext, editFlag, xtraParams);
}
catch(Exception e)
{
throw new ITMException(e);
}
return(errString);
}
public String wfValData(Document curDom, Document hdrDom, Document allDom, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException
{
String userId = "";
String errorType = "";
String childNodeName = null;
String errCode = "";
String trackSetCode = "";
String errString = "";
String actCode ="";
String seqNo ="";
String expCompDays ="";
String trackShDesc ="";
String trackDesc ="";
String updateFlag ="";
int currentFormNo = 0;
int childNodeListLength;
int childNodeLength;
int ctr=0;
int count = 0;
boolean flag = false;
NodeList parentNodeList = null;
NodeList parentNodeListCheck = null;
NodeList childNodeList = null;
Node parentNode = null;
Node childNode = null;
ArrayList<String> errList = new ArrayList<String>();
ArrayList<String> errFields = new ArrayList<String>();
//Map<String,String> actCodeList = new HashMap<String,String>();
ArrayList<String> actCodeList=new ArrayList<String>();
ArrayList<String> trackSetList=new ArrayList<String>();
Connection conn = null;
PreparedStatement pstmt = null ;
ResultSet rs = null;
ConnDriver connDriver = new ConnDriver();
StringBuffer errStringXml = new StringBuffer("<?xml version = \"1.0\"?> \r\n <Root> <Errors>");
try
{
SimpleDateFormat sdf = new SimpleDateFormat(genericUtility.getApplDateFormat());
conn = connDriver.getConnectDB("DriverITM");
userId = getValueFromXTRA_PARAMS(xtraParams, "loginCode");
if(objContext != null && objContext.trim().length() > 0)
{
currentFormNo = Integer.parseInt(objContext);
}
System.out.println("Current Form No. :- "+currentFormNo);
switch(currentFormNo)
{
case 1 :
parentNodeList = curDom.getElementsByTagName("Detail1");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
childNodeListLength = childNodeList.getLength();
for(ctr = 0; ctr < childNodeListLength; ctr ++)
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
if(childNodeName.equalsIgnoreCase("track_set") ) // Validation for track_set code
{
trackSetCode = checkNull(genericUtility.getColumnValue("track_set", curDom));
if(trackSetCode == null || trackSetCode.trim().length() == 0)
{
errCode = "VTBLKTRKST";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
flag = isRecordExist(conn," TRAN_TRACK_SET "," WHERE TRACK_SET ='"+trackSetCode.trim()+"' ");
if(flag == true && editFlag.equalsIgnoreCase("A"))
{
errCode = "VTTRKSTEXT";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
//@SANTOSH CHECK VALIDATION FOR TRACK SET CODE FROM BOTH HEADER AND DETAIL SCREEN ARE SAME
System.out.println("edit "+editFlag+" Update "+updateFlag);
if (allDom != null && editFlag.equalsIgnoreCase("A"))
{
NodeList childNodeListLocal = null;
Node parentNodeLocal = null;
Node childNodeLocal = null;
parentNodeListCheck = allDom.getElementsByTagName("Detail2");
childNodeLength = parentNodeListCheck.getLength();
String tempTrackSet = "";
trackSetList.clear();
for (int selectedRow = 0; selectedRow < childNodeLength; selectedRow++)
{
parentNodeLocal = parentNodeListCheck.item(selectedRow);
childNodeListLocal = parentNodeLocal.getChildNodes();
int childNodeListLengthLocal = childNodeListLocal.getLength();
updateFlag = getAttribValue(parentNodeLocal,"attribute", "updateFlag");
if(!updateFlag.equalsIgnoreCase("D"))
{
for (int childRow = 0; childRow < childNodeListLengthLocal; childRow++)
{
childNodeLocal = childNodeListLocal.item(childRow);
String childNodeNameLocal = childNodeLocal.getNodeName();
if(childNodeLocal.getFirstChild()!=null)
{
if (childNodeNameLocal.equals("track_set"))
{
tempTrackSet = childNodeLocal.getFirstChild().getNodeValue();
}
}
}
System.out.println("BEFORE MAP trackSetList : "+trackSetList);
if (trackSetList.contains(tempTrackSet.trim()))
{
}
else
{
trackSetList.add(tempTrackSet.trim());
System.out.println("AFTER ADD : "+trackSetList);
}
}
}
}
if(editFlag!=null && editFlag.equalsIgnoreCase("A"))
{
for (int i = 0; i < trackSetList.size(); i++)
{
if(trackSetList.get(i).equalsIgnoreCase(trackSetCode))
{
}
else
{
// track set on header and detail screen are not same,
errCode = "VTINVTRCD2";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
break;
}
}
}
}
} //track_set end
else if(childNodeName.equalsIgnoreCase("sh_descr")) // Validation for Track Set Short Description
{
trackShDesc = checkNull(genericUtility.getColumnValue("sh_descr", curDom));
/*if(actShDescr == null || actShDescr.trim().length() == 0)
{
errCode = "VTBLNKDSCR";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
*/
} // End of sh_descr
else if(childNodeName.equalsIgnoreCase("descr")) // Validation for Track Set Description
{
trackDesc = checkNull(genericUtility.getColumnValue("descr", curDom));
if(trackDesc == null || trackDesc.trim().length() == 0)
{
errCode = "VTBLNKDSCR";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
} // End of descr
}
break;
case 2 :
parentNodeList = curDom.getElementsByTagName("Detail2");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
childNodeListLength = childNodeList.getLength();
String actCodeCheck = "";
for(ctr = 0; ctr < childNodeListLength; ctr ++)
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
if(childNodeName.equalsIgnoreCase("act_code") ) // Validation for activity code
{
actCode = checkNull(genericUtility.getColumnValue("act_code", curDom));
if(actCode == null || actCode.trim().length() == 0)
{
errCode = "VTBLNKACTV";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
flag = isRecordExist(conn," TRAN_TRACK_ACTS "," WHERE ACT_CODE ='"+actCode.trim()+"' ");
if(flag == false )
{
errCode = "VTINVACVCD";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
/*
* Logic to check the repeat entry for Activity Code is exists or not.
*
* */
actCodeCheck = checkNull(genericUtility.getColumnValue("act_code", curDom));
if (allDom != null ) {
parentNodeListCheck = allDom.getElementsByTagName("Detail2");
childNodeLength = parentNodeListCheck.getLength();
String tempActCode = "";
actCodeList.clear();
for (int selectedRow = 0; selectedRow < childNodeLength; selectedRow++)
{
parentNode = parentNodeListCheck.item(selectedRow);
childNodeList = parentNode.getChildNodes();
childNodeListLength = childNodeList.getLength();
updateFlag = getAttribValue(parentNode,"attribute", "updateFlag");
if(!updateFlag.equalsIgnoreCase("D"))
{
for (int childRow = 0; childRow < childNodeListLength; childRow++)
{
childNode = childNodeList.item(childRow);
childNodeName = childNode.getNodeName();
if(childNode.getFirstChild()!=null)
{
if (childNodeName.equals("act_code"))
{
tempActCode = childNode.getFirstChild().getNodeValue().trim();
//actCodeList.put(tempActCode,tempActCode);
}
}
}
System.out.println("BEFORE actCodeList : "+actCodeList);
if (actCodeList.contains(tempActCode))
{
errCode = "VTENTRYEXT";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
actCodeList.add(tempActCode);
System.out.println("AFTER ADD : "+actCodeList);
}
}
}
}
} //act_code end
else if(childNodeName.equalsIgnoreCase("seq_no") ) // Validation for seq_no
{
seqNo = checkNull(genericUtility.getColumnValue("seq_no", curDom));
/*
*
* Add the condition for sequence no i.e it can not be zero or negetive.
* Changes by Manoj Sarode on 20-Mar-2014 as discussed with PPatro sir. Start
*
* */
if(seqNo == null || seqNo.trim().length() == 0)
{
errCode = "VTBLKSEQNO";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else {
int sno = Integer.parseInt(seqNo);
if( sno==0 ||sno< 0)
{
errCode = "VMINVSEQNO";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
/*
*
* Add the condition for sequence no i.e it can not be zero or negetive.
* Changes by Manoj Sarode on 20-Mar-2014 as discussed with PPatro sir. End
*
* */
} //seq_no end
else if(childNodeName.equalsIgnoreCase("exp_comp_days") ) // Validation for exp_comp_days
{
expCompDays = checkNull(genericUtility.getColumnValue("exp_comp_days", curDom));
if(expCompDays == null || expCompDays.trim().length() == 0)
{
errCode = "VTBLKEXPDY";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
else
{
double expComDaysDouble = Double.parseDouble(expCompDays) ;
if(expComDaysDouble <= 0)
{
errCode = "VMINVEXPDY";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
//exp_comp_days end
}
//Code commented by Santosh 14-03-2014 as per suggetsed by Hemant Sir -- Product code field removed from Metadata
/*else if(childNodeName.equalsIgnoreCase("product_code")) // Validation for product_code
{
String productCode = checkNull(genericUtility.getColumnValue("product_code", curDom));
if(productCode != null && productCode.trim().length() > 0)
{
flag = isRecordExist(conn," ITEM "," WHERE ITEM_CODE ='"+productCode.trim()+"' ");
if(flag == false)
{
errCode = "VTINVPDCOD";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
} */
}
break;
}
int errListSize = errList.size();
count = 0;
String errFldName = null;
ITMDBAccessEJB itmDBAccessEJB = new ITMDBAccessEJB();
if(errList != null && errListSize > 0)
{
for(count = 0; count < errListSize; count++)
{
errCode = errList.get(count);
errFldName = errFields.get(count);
System.out.println("errCode .........." + errCode);
// errString = getErrorString(errFldName, errCode, userId);
errString = itmDBAccessEJB.getErrorString(errFldName, errCode, userId);
System.out.println("errString........"+errString);
errString = itmDBAccessEJB.getErrorString("", errCode, userId);
System.out.println("errString........"+errString);
errorType = errorType(conn , errCode);
return errString;
}
errList.clear();
errList = null;
errFields.clear();
errFields = null;
errStringXml.append("</Errors> </Root> \r\n");
}
else
{
errStringXml = new StringBuffer("");
}
}//end try
catch(Exception e)
{
e.printStackTrace();
errString = e.getMessage();
throw new ITMException(e);
}
finally
{
try
{
if(conn != null)
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
conn.close();
}
conn = null;
}
catch(Exception d)
{
d.printStackTrace();
throw new ITMException(d);
}
}
errString = errStringXml.toString();
return errString;
}
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException, ITMException
{
Document dom = null;
Document dom1 = null;
String valueXmlString = "";
try
{
System.out.println("xmlString1="+xmlString);
System.out.println("xmlString2="+xmlString1);
if(xmlString != null && xmlString.trim().length() > 0)
{
dom = parseString(xmlString);
}
if(xmlString1 != null && xmlString1.trim().length() > 0)
{
dom1 = parseString(xmlString1);
}
valueXmlString = itemChanged(dom, dom1, objContext, currentColumn, editFlag, xtraParams);
}
catch(Exception e)
{
System.out.println("Exception : [TrackSetMaster][itemChanged( String, String,... )] :==>\n" + e.getMessage());
}
return valueXmlString;
}
public String itemChanged(Document dom, Document dom1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException, ITMException
{
String childNodeName = null;
String sql = "";
String actCode = "";
String actCodeDescr = "";
String itemCodeDescr="";
StringBuffer valueXmlString = new StringBuffer();
int ctr = 0;
int currentFormNo = 0;
int childNodeListLength = 0;
NodeList parentNodeList = null;
NodeList childNodeList = null;
Node parentNode = null;
Node childNode = null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null ;
GenericUtility genericUtility = GenericUtility.getInstance();
ConnDriver connDriver = new ConnDriver();
try
{
SimpleDateFormat sdf = new SimpleDateFormat(genericUtility.getApplDateFormat());
conn = connDriver.getConnectDB("DriverITM");
conn.setAutoCommit(false);
connDriver = null;
if(objContext != null && objContext.trim().length() > 0)
{
currentFormNo = Integer.parseInt(objContext);
}
valueXmlString = new StringBuffer("<?xml version = \"1.0\"?> <Root> <header> <editFlag>");
valueXmlString.append(editFlag).append("</editFlag> </header>");
switch(currentFormNo)
{
case 1 :
parentNodeList = dom.getElementsByTagName("Detail1");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
valueXmlString.append("<Detail1>");
childNodeListLength = childNodeList.getLength();
do
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
ctr ++;
}while(ctr < childNodeListLength && ! childNodeName.equals(currentColumn));
// System.out.println("currentColumn = "+currentColumn);
valueXmlString.append("</Detail1>");
break;
case 2 :
parentNodeList = dom.getElementsByTagName("Detail2");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
valueXmlString.append("<Detail2>");
childNodeListLength = childNodeList.getLength();
do
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
ctr ++;
}while(ctr < childNodeListLength && ! childNodeName.equals(currentColumn));
System.out.println("currentColumn="+currentColumn);
if(currentColumn.trim().equalsIgnoreCase("act_code")) //Item change for activity code
{
actCode = checkNull(genericUtility.getColumnValue("act_code", dom));
if(actCode != null && actCode.trim().length() > 0)
{
sql = " SELECT DESCR FROM TRAN_TRACK_ACTS WHERE ACT_CODE = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,actCode.trim());
rs = pstmt.executeQuery();
if(rs.next())
{
actCodeDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<tran_track_acts_descr>").append("<![CDATA[" + actCodeDescr +"]]>").append("</tran_track_acts_descr>\r\n");
}
else
{
valueXmlString.append("<tran_track_acts_descr>").append("<![CDATA[]]>").append("</tran_track_acts_descr>\r\n");
}//end of act_code
}
//Code commented by Santosh 14-03-2014 as per suggetsed by Hemant Sir -- Product code field removed from Metadata
/* else if(childNodeName.equalsIgnoreCase("product_code")) // Validation for product_code Description
{
String productCode = checkNull(genericUtility.getColumnValue("product_code", dom));
if(productCode != null && productCode.trim().length() > 0)
{
sql="SELECT DESCR FROM ITEM WHERE ITEM_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,productCode.trim());
rs = pstmt.executeQuery();
if(rs.next())
{
itemCodeDescr = rs.getString(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<item_descr>").append("<![CDATA[" + itemCodeDescr +"]]>").append("</item_descr>\r\n");
}
else
{
valueXmlString.append("<item_descr>").append("<![CDATA[]]>").append("</item_descr>\r\n");
}
}*/
valueXmlString.append("</Detail2>");
break ;
}
valueXmlString.append("</Root>");
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("Exception ::"+ e.getMessage());
throw new ITMException(e);
}
finally
{
try
{
if(conn != null)
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
conn.close();
}
conn = null;
}
catch(Exception d)
{
d.printStackTrace();
}
}
return valueXmlString.toString();
}
private String checkNull(String input)
{
if(input == null)
{
input = "";
}
return input;
}
private String errorType(Connection conn , String errorCode)
{
String msgType = "";
PreparedStatement pstmt = null ;
ResultSet rs = null;
try
{
String sql = "SELECT MSG_TYPE FROM MESSAGES WHERE MSG_NO = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,errorCode);
rs = pstmt.executeQuery();
while(rs.next())
{
msgType = rs.getString("MSG_TYPE");
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
return msgType;
}
public boolean isRecordExist(Connection conn , String tableName, String condition)
{
PreparedStatement pstmt = null ;
ResultSet rs = null;
String sql="";
boolean isExist=false;
int recCount=0;
try
{
sql = " SELECT COUNT(*) FROM "+tableName +" "+condition;
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next())
{
recCount=rs.getInt(1);
}
if(recCount>0)
{
isExist=true;
}
else
{
isExist=false;
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
System.out.print("---------Final--isExist-------"+isExist);
return isExist;
}
private String getAttribValue(Node detailNode, String nodeName, String attribStr)
{
String attribValue = "";
try
{
String domStr = GenericUtility.getInstance().serializeDom(detailNode);
Document dom = GenericUtility.getInstance().parseString(domStr);
if( dom != null /*&& dom.getAttributes() != null*/)
{
Node attributeNode = dom.getElementsByTagName( nodeName ).item(0);
attribValue = getAttribValue(attributeNode, attribStr);
}
}
catch(Exception e)
{
System.out.println("Exception : getAttribValue :" + e.getMessage());
}
return attribValue;
}
private String getAttribValue(Node detailNode, String attribStr)
{
String attribValue = "";
try
{
if( detailNode != null && detailNode.getAttributes() != null)
{
Node attribNode = detailNode.getAttributes().getNamedItem( attribStr );
if( attribNode != null )
{
attribValue = checkNull( attribNode.getNodeValue() );
}
}
}
catch(Exception e)
{
System.out.println("Exception : getAttribValue :" + e.getMessage());
}
return attribValue;
}
}
\ No newline at end of file
/*
* PURPOSE : Local interface for TrackSetMaster.java to lookup Localy Contain only Validation function.
* AUTHOR : Changed By Manoj Sarode On 24-Jan-2014.
*/
package ibase.webitm.ejb.sys;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.ITMException;
@javax.ejb.Local
public interface TrackSetMasterLocal extends ValidatorLocal
{
public String wfValData(String xmlString, String xmlString1, String xmlString2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String wfValData(Document dom, Document dom1, Document dom2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(Document dom, Document dom1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
/*
* PURPOSE : Local interface for TrackSetMaster.java to lookup Localy Contain only Validation function.
* AUTHOR : Changed By Manoj Sarode On 24-Jan-2014.
*/
package ibase.webitm.ejb.sys;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.ITMException;
@javax.ejb.Remote
public interface TrackSetMasterRemote extends ValidatorRemote
{
public String wfValData(String xmlString, String xmlString1, String xmlString2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String wfValData(Document dom, Document dom1, Document dom2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(String xmlString, String xmlString1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(Document dom, Document dom1, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment