/**
 DEVELOPED BY RITESH TIWARI ON 24/03/14 
 PURPUSE : GENERATE WO ISSUE PARTIALLY (DI3LSUP001)
 */
package ibase.webitm.ejb.mfg;

import ibase.system.config.ConnDriver;
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.ArrayList;
import java.util.Calendar;

import javax.ejb.Stateless;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

// added for ejb3
@Stateless
public class WoIssPartialIC extends ValidatorEJB implements WoIssPartialICLocal,WoIssPartialICRemote
{
	public String itemChanged(String xmlString, String xmlString1,String xmlString2, String objContext, String currentColumn,String editFlag, String xtraParams) throws RemoteException,ITMException
	{
		System.out.println("@@@@@@@ itemChanged called");
		Document dom = null;
		Document dom1 = null;
		Document dom2 = null;
		String valueXmlString = "";
		try
		{
			if (xmlString != null && xmlString.trim().length() > 0)
			{
				dom = parseString(xmlString);
			}
			if (xmlString1 != null && xmlString1.trim().length() > 0)
			{
				dom1 = parseString(xmlString1);
			}
			if (xmlString2 != null && xmlString2.trim().length() > 0)
			{
				dom2 = parseString(xmlString2);
			}
			valueXmlString = itemChanged(dom, dom1, dom2, objContext,
					currentColumn, editFlag, xtraParams);
		} catch (Exception e)
		{
			System.out.println(" Exception :[itemChanged( String, String )] :==>\n"+ e.getMessage());
		}
		return valueXmlString;

	}

	public String itemChanged(Document dom, Document dom1, Document dom2,String objContext, String currentColumn, String editFlag,String xtraParams) throws RemoteException, ITMException
	{
		System.out.println("@@@@@@@ itemChanged called");
		StringBuffer valueXmlString = new StringBuffer();
		NodeList parentNodeList = null;
		NodeList childNodeList = null;
		Node parentNode = null;
		Node childNode = null;
		Node parentNode1 = null;
		String childNodeName = null;
		String sql = "";
		String deptCode = "",worder="",descr="";
		double batchQuantity=0.0;
		int currentFormNo = 0;
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		GenericUtility genericUtility = null;
		ConnDriver connDriver = null;
		try
		{
			genericUtility = GenericUtility.getInstance();
			connDriver =  new ConnDriver();
			conn = connDriver.getConnectDB("DriverITM");
			conn.setAutoCommit(false);
			connDriver = null;
			if (objContext != null && objContext.trim().length() > 0)
			{
				currentFormNo = Integer.parseInt(objContext.trim());
			}
			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>");
				int childNodeListLength = childNodeList.getLength();
				if (currentColumn.trim().equalsIgnoreCase("work_order"))
				{
					worder = genericUtility.getColumnValue("work_order", dom);
					System.out.println("::worder::received -" + worder);
					sql = " select quantity from workorder where work_order = ? "; 
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, worder);
					rs = pstmt.executeQuery();
					if(rs.next())
					{
						batchQuantity = rs.getDouble("quantity");
						//deptCode = rs.getString("dept_code")==null?" ": rs.getString("dept_code");
					}
					if (pstmt != null)
						pstmt.close();
					pstmt = null;
					if (rs != null)
						rs.close();
					rs = null;
					
					
					sql = " select dept_code from worder_route where work_order = ? "; 
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, worder);
					rs = pstmt.executeQuery();
					if(rs.next())
					{
						//batchQuantity = rs.getDouble("quantity");
						deptCode = rs.getString("dept_code")==null?" ": rs.getString("dept_code");
					}
					if (pstmt != null)
						pstmt.close();
					pstmt = null;
					if (rs != null)
						rs.close();
					rs = null;
					
					sql = " select descr from department where dept_code =  ? "; 
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, deptCode);
					rs = pstmt.executeQuery();
					if(rs.next())
					{
						descr = rs.getString("descr")==null?" ": rs.getString("descr");
					}
					if (pstmt != null)
						pstmt.close();
					pstmt = null;
					if (rs != null)
						rs.close();
					rs = null;
					
					valueXmlString.append("<quantity>").append("<![CDATA["+ batchQuantity +"]]>").append("</quantity>");
					valueXmlString.append("<dept_code>").append("<![CDATA["+ deptCode.trim() +"]]>").append("</dept_code>");
					valueXmlString.append("<descr>").append("<![CDATA["+ descr +"]]>").append("</descr>");//removed unwanted code****vishakha 10-12-2014

				}
				if (currentColumn.trim().equalsIgnoreCase("dept_code"))
				{
					deptCode = genericUtility.getColumnValue("dept_code", dom);
					System.out.println("::dept_code::received -" + deptCode);
					
					sql = " select descr from department where dept_code =  ? "; 
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, deptCode);
					rs = pstmt.executeQuery();
					if(rs.next())
					{
						descr = rs.getString("descr")==null?" ": rs.getString("descr");
					}
					if (pstmt != null)
						pstmt.close();
					pstmt = null;
					if (rs != null)
						rs.close();
					rs = null;
					valueXmlString.append("<descr>").append("<![CDATA["+ descr +"]]>").append("</descr>");

				}
				valueXmlString.append("</Detail1>");
		    }
			valueXmlString.append("</Root>");

		} catch (Exception e)
		{
			e.printStackTrace();
			System.out.println("Exception ::" + e.getMessage());
			throw new ITMException(e);
		} finally
		{
			try
			{
				if (conn != null)
				{
					if (pstmt != null)
						pstmt.close();
					pstmt = null;
					if (rs != null)
						rs.close();
					rs = null;
					conn.close();
					conn = null;
				}
			} catch (Exception d)
			{
				d.printStackTrace();
			}
		}
		return valueXmlString.toString();
	}
}
