/********************************************************
	Title : CopyPayParamPrcLocal
	Date  : 19/07/12
	Developer: Kunal Mandhre

 ********************************************************/


// cpatil start

///*  added and modify by chandrakant patil on 06/06/2012  */


package ibase.webitm.ejb.adm;

import ibase.webitm.utility.*;
//import ibase.utility.CommonConstants;
import ibase.system.config.*;
//import java.text.*;
import java.util.*;
//import javax.xml.parsers.*;
import javax.ejb.*;
//import javax.naming.InitialContext;
import java.io.*;

import java.util.Calendar;
import java.util.Date;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.utility.ITMException;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.ejb.*;

import javax.ejb.Stateless; // added for ejb3


//public class SReturnPrsEJB extends ValidatorEJB implements SessionBean
@Stateless // added for ejb3
public class CopyPayParamPrs extends ValidatorEJB implements CopyPayParamPrsLocal, CopyPayParamPrsRemote
{
	/*
	public void ejbCreate() throws RemoteException, CreateException
	{
	}
	public void ejbRemove()
	{
	}
	public void ejbActivate()
	{
	}
	public void ejbPassivate()
	{
	}*/
	
	public String preSaveRec() throws RemoteException, ITMException
	{
		return "";
	}
	
	public String preSaveRec(String xmlString1, String domId, String objContext, String editFlag, String xtraParams, Connection conn) throws RemoteException, ITMException
	{
		System.out.println("@@@@@@@@********* CopyPayParamPrs Called *******@@@@@@@@");
		Document dom = null;
		String errString = "";
		//ITMDBAccessEJB itmDBAccessLocal = new ITMDBAccessEJB();

		
		try
		{
			System.out.println("CopyPayParamPrs xmlString1 [" + xmlString1 + "]");
			if (xmlString1 != null && xmlString1.trim().length() > 0)
			{
				dom = GenericUtility.getInstance().parseString(xmlString1);
				errString = executepreSaveRec(dom,domId,objContext,editFlag,xtraParams,conn);
				if (errString == null || errString.trim().length() == 0)
				{
					System.out.println("@@@@@ CopyPayParamPrs transaction insert succesfully........");
					//errString = itmDBAccessLocal.getErrorString("","VTMCONF2","");
				}
				else
				{
					conn.rollback();
					System.out.println("@@@@@ insertion failed........");
					//errString = itmDBAccessLocal.getErrorString("","VMPROCUSG","");
				}
			}
		}
		catch(Exception e)
		{
			System.out.println("Exception :CopyPayParamPrs :preSaveRec(): " + e.getMessage()+ ":");
			e.printStackTrace();
			throw new ITMException(e);
		}
		return errString;
	}
	private String executepreSaveRec(Document dom, String domID, String ObjContext, String editFlag, String xtraParams, Connection conn) throws RemoteException, ITMException
	{
		

		//Connection conn = null;
		PreparedStatement pstmt = null,pstmt1 = null,pstmtInser = null;
		ResultSet rs = null ,rs1 = null;
		String periodCode = "",newPeriodCode="";
		String sql = "",sql1 = "",sqlInser;
		String varName = "",varType = "",varValue = "",chgUser = "",chgTerm = "",descr = "";
		double varSubs = 0.0;
		int cnt = 0,updCnt = 0;
		Date chgdate = null; 
		ITMDBAccessEJB itmDBAccessEJB = new ITMDBAccessEJB();
		//ITMDBAccessEJB itmDBAccess = new ITMDBAccessEJB();
		GenericUtility genericUtility = GenericUtility.getInstance();		
		ITMDBAccessEJB itmDBAccessLocal = new ITMDBAccessEJB();
		String errString = "";
		
		try
		{	
			ConnDriver connDriver = new ConnDriver();			
			conn = connDriver.getConnectDB("DriverITM");
			conn.setAutoCommit(false);
			periodCode = genericUtility.getColumnValue("prd_code",dom);
			//varName = genericUtility.getColumnValue("var_name",dom);
			newPeriodCode = genericUtility.getColumnValue("new_prd_code",dom);
			String currAppdate ="";
			java.sql.Timestamp currDate = null;
			Object date = null;
			currDate =new java.sql.Timestamp(System.currentTimeMillis()) ;
			System.out.println(genericUtility.getDBDateFormat());
			SimpleDateFormat sdf = new SimpleDateFormat(genericUtility.getDBDateFormat());
			date = sdf.parse(currDate.toString());
			currDate =	java.sql.Timestamp.valueOf(sdf.format(date).toString() + " 00:00:00.0");
			System.out.println("@@@@ currDate [[[[[["+currDate+"]]]]]]]");
			currAppdate = new SimpleDateFormat(genericUtility.getApplDateFormat()).format(currDate).toString();
			
			chgUser = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"chg_user");
			System.out.println("chg_user ...... :"+chgUser);
			chgTerm = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"chg_term");
			System.out.println("chg_term ...... :"+chgTerm);
			
			System.out.println("@@@@@ :periodCode:["+periodCode+"]:::::newPeriodCode:["+ newPeriodCode+"]");
			if( periodCode == null || periodCode.trim().length() ==0 )
			{
				errString = itmDBAccessEJB.getErrorString("","PRDCODNULL","");
				return errString;
			}
			else if( newPeriodCode == null || newPeriodCode.trim().length() == 0 )
			{
				errString = itmDBAccessEJB.getErrorString("","NEWPRCONUL","");
				return errString;
			}
			else if( newPeriodCode != null && newPeriodCode.trim().length() > 0 )
			{
				if( newPeriodCode.trim().length() == 6 )
				{
					for (int i = 0; i < newPeriodCode.length(); i++) 
					{
			            if (!Character.isDigit(newPeriodCode.charAt(i)))
			                {
			            		errString = itmDBAccessEJB.getErrorString("","NEWPRCOINV","");
			            		return errString;
			                }
			        }
				}
				else
				{
					errString = itmDBAccessEJB.getErrorString("","NEWPRCOINV","");
					return errString;
				}
			}
			//else if( varName == null || varName.trim().length() ==0 )
			//{
			//	errString = itmDBAccessEJB.getErrorString("","VARNAMNULL","");
			//}
			//else
			if( newPeriodCode != null && periodCode != null && newPeriodCode.trim().length() > 0 && periodCode.trim().length() > 0)
			{	
			sql = " SELECT var_name,var_type,var_value,descr,var_subs FROM payrparm WHERE prd_code = ? ";   // and var_name = ?";
			pstmt =  conn.prepareStatement(sql);
			pstmt.setString(1,periodCode);
			//pstmt.setString(2,varName);
			rs = pstmt.executeQuery();
			while(rs.next())
			{
				varName = rs.getString("var_name");
				varType = rs.getString("var_type");
				varValue = rs.getString("var_value");
				descr = rs.getString("descr");
				varSubs =  rs.getDouble("var_subs");
				
				sql1 = "SELECT count(*) FROM payrparm WHERE prd_code = ? and var_name = ? ";
				pstmt1 =  conn.prepareStatement(sql1);
				pstmt1.setString(1,newPeriodCode);
				pstmt1.setString(2,varName);
				rs1 = pstmt1.executeQuery();
				if(rs1.next())
				{
					cnt =  rs1.getInt(1);

				}
				rs1.close();
				rs1 = null;
				pstmt1.close();
				pstmt1 = null;
				System.out.println("@@@@@:::cnt:["+cnt+"]");
				if(cnt == 0)
				{
					sqlInser = "INSERT INTO payrparm  ( prd_code,var_name,var_type,var_value,chg_date,chg_user,chg_term,descr,var_subs ) "
						       +" VALUES (?,?,?,?,?,?,?,?,?)  ";
					pstmtInser	= conn.prepareStatement(sqlInser);
					pstmtInser.setString(1,newPeriodCode);
					pstmtInser.setString(2,varName);
					pstmtInser.setString(3,varType);
					pstmtInser.setString(4,varValue);
					pstmtInser.setTimestamp(5, currDate );  ///currAppdate
					//pstmtInser.setDate(5,new java.sql.Date(chgdate.getTime()));
					pstmtInser.setString(6,chgUser);
					pstmtInser.setString(7,chgTerm);
					pstmtInser.setString(8,descr);
					pstmtInser.setDouble(9,varSubs);
					updCnt = pstmtInser.executeUpdate();
					pstmtInser.close();
					pstmtInser=null;
					if(updCnt > 0 )
					{
						conn.commit();
						System.out.println("@@@@@ Record inserted for PeriodCode["+newPeriodCode +"]::varName["+ varName +"]  :::::: @@@@@");
					}
				}
				else
				{
					System.out.println("@@@@@ :::::Record already exist for PeriodCode["+newPeriodCode +"]::varName["+ varName +"]  :::::: @@@@@");
					//errString = itmDBAccessLocal.getErrorString("","VMDUPREC1","");
				}

			}
			if(rs != null)
			{
				rs.close();
				rs = null;
			}
			if(pstmt != null)
			{
				pstmt.close();
				pstmt = null;
			}
			}		
			//valueXmlString.append("</Root>\r\n");
		} // end of try 
		catch(Exception e)
		{
			try
			{
				conn.rollback();
			}
			catch(Exception ex)
			{
				throw new ITMException(ex);

			}
			throw new ITMException(e);

		}
		finally
		{
			try
			{
				conn.close();
				conn = null;
			}
			catch(Exception e)
			{
				throw new ITMException(e);
			}
		}
		return errString ;
	}
}

// cpatil end

