<%@page contentType="text/html; charset=UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="com.csc.library.utilities.*"%>
<%@page import="java.io.*,java.util.*"%>
<html>
<head>
<title>Gen Rounting</title>
<script language="JavaScript"  type="text/javascript"src="../JS/jquery-1.11.1.min.js"></script>
<script>
$(function(){
	$("#Submit").click(function(){
		$("#cmd").val("connect");
		$("#db").val("");
		$("#export").val("");
		$("#f1").submit();
	});
	

	window.onload = function() {
		$(".chk").mouseover(function(){
			$(this).css("background-color","#FFFF00");
		});
		$(".chk").mouseout(function(){
			$(this).css("background-color","#FFFFFF");
		});
		$(".chk").click(function(){
			$("#db").val($(this).text());
			$("#export").val("");
			$("#f1").submit();
		});
	
		$(".clickexp").click(function(){
			$("#export").val($(this).val());
			$("#catid").val($(this).attr("catid"));
			$("#f1").submit();
		});
	};
	
	$.loadfile= function(file){
		//alert(file);
		window.open(file,file);
	}
	
	$.adddb= function(name){
		var td ="<tr><td><div class='chk'>"+name+"</div></td></tr>";
		$("#database").append(td);
	}
	
	$.addwd= function(wfid,catid,tname,transfer){
		var td ="<tr><td width='10%'><div class='ch'>"+wfid+"</div></td>"+
		"<td width='10%'><div class='ch'>"+catid+"</div></td>"+
		"<td width='35%'><div class='ch'>"+tname+"</div></td>"+
		"<td width='35%'><div class='ch'>"+transfer+"</div></td>"+
		"<td width='10%'><div class='ch'><button type='button' class='clickexp' value='"+wfid+"' catid='"+catid+"'>EXPORT</button></div></td></tr>";
		$("#workdef").append(td);
	}

});

</script>
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
.bd1 {
	border: thin solid #000000;
}
-->
</style>
</head>
<body>

<p>
  <%
  
  		CheckNull chk = new CheckNull(); 
  		String cmd=chk.chkNullString(request.getParameter("cmd"),"");
  		String ip=chk.chkNullString(request.getParameter("ip"),"");
  		String user=chk.chkNullString(request.getParameter("user"),"");
  		String pass=chk.chkNullString(request.getParameter("pass"),"");
  		String db=chk.chkNullString(request.getParameter("db"),"");
  		String export=chk.chkNullString(request.getParameter("export"),"");
  		String catid=chk.chkNullString(request.getParameter("catid"),"");
  		String dbtype=chk.chkNullString(request.getParameter("dbtype"),"");
  		String dbname=chk.chkNullString(request.getParameter("dbname"),"").toUpperCase();
  	//	String url=dbtype+ip;
		String url = "";
		String driver = "";
		if(dbtype.equals("MSSQL")){
			url="jdbc:jtds:sqlserver://"+ip;
			driver = "net.sourceforge.jtds.jdbc.Driver";
		}else if(dbtype.equals("PGSQL")){
		//	url="jdbc:postgresql://";
			url="jdbc:postgresql://"+ip+":5432/"+dbname;
			driver = "org.postgresql.Driver";
		}
  	//	out.println("URL :: "+url);
  	//	out.println("dbtype :: "+dbtype);
  		Connection con;
  		ResultSet rs;
  		Statement s;
  		String step="1";
  		if(cmd != null && cmd.equals("connect")){
  		try{
		Class.forName(driver);
		con = DriverManager.getConnection(url,user,pass);
		rs=con.getMetaData().getCatalogs();
		while(rs.next()) {
		%>
		<script>
		$(function(){
			$.adddb('<%=rs.getString(1)%>');
		});
		</script> 
		<% 
		}
  		}catch(Exception e){
  			%>
			<script>
			$(function(){
			//	$("#error").text("Not Connect Database");
				$("#error").text("<%=e%>");
			});
		</script> 	
			<%
  		}
  		}
  		
  		if(db !="" && db != null){
			if(dbtype.equals("MSSQL")){
  				url=url+"/"+db;
			}
  			try{
  			con = DriverManager.getConnection(url,user,pass);
  			s=con.createStatement();
  			String sql="SELECT * FROM WORKFLOW_DEFINITION ORDER BY WF_ID";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  			%>
  		<script>
			$(function(){
				$.addwd('<%=rs.getString("WF_ID")%>','<%=rs.getString("CATEGORY_ID")%>','<%=rs.getString("TNAME")%>','<%=rs.getString("TRANSFER_FILE")%>');
			});
		</script> 	
  			<%
  			}
  			}catch(Exception e){
  				
			%>
			<script>
			$(function(){
				$("#error").text("No Data");
			});
		</script> 	
			<%
  			}
  		}
  		
  		if(export !="" && export != null){
  			Vector vt = new Vector();
  			vt.add("/*** DELETE CONFIG WF_ID "+export+" ***/");
  		//	vt.add("--DELETE FROM CATEGORY WHERE CATEGORY_ID = 8;");
  			vt.add("DELETE FROM STEP_DEFINITION WHERE WF_ID = "+export+";");
			vt.add("DELETE FROM CC_DEFINITION WHERE WF_ID = "+export+";");
  			vt.add("DELETE FROM STEP_TOOL WHERE WF_ID = "+export+";");
  			vt.add("DELETE FROM STEP_TOOL_IMPL WHERE WF_ID = "+export+";");
  			vt.add("DELETE FROM TRANSITION WHERE WF_ID = "+export+";");
  			vt.add("DELETE FROM WFVAR_DEFINITION WHERE WF_ID = "+export+";");
  			vt.add("DELETE FROM WORKFLOW_DEFINITION WHERE WF_ID = "+export+";");
  			vt.add("\n");
  			vt.add("/*** CATEGORY ***/");
  			
  			if(dbtype.equals("MSSQL")){
  				url=url+"/"+db;
			}
  			con = DriverManager.getConnection(url,user,pass);
  			s=con.createStatement();
  			String sql="SELECT COMPANYID,CATEGORY_ID,TNAME,ENAME,TDESC,EDESC,ACTIVE,DEL FROM CATEGORY WHERE CATEGORY_ID='"+catid+"'";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  				vt.add("--INSERT INTO CATEGORY (COMPANYID,CATEGORY_ID,TNAME,ENAME,TDESC,EDESC,ACTIVE,DEL) VALUES ('"+rs.getString("COMPANYID")+"','"+rs.getString("CATEGORY_ID")+"','"+rs.getString("TNAME")+"','"+rs.getString("ENAME")+"','"+rs.getString("TDESC")+"','"+rs.getString("EDESC")+"','"+rs.getString("ACTIVE")+"','"+rs.getString("DEL")+"');");	
  			}
  			
  			vt.add("\n");
  			vt.add("/*** STEP_DEFINITION ***/");
  			

			sql="SELECT COMPANYID,WF_ID,WF_VER,STEP_ID,TNAME,ENAME,TDESC,EDESC,STEP_TYPE,RECIPIENT_DEF,TASK_RATE,WEB_PAGE,AUTO_APPROVE,ATTACHED_STATUS,COMPLETION_DURATION,EXTENSION_DURATION,DELAY_DURATION,ONLATE_ACTION,INTIME_ACTION,PRE_CONDITION,POST_CONDITION,TAKEOVER_RIGHT,COMPLETE_CLASS,RETURN_CLASS,ABORT_CLASS,AUTOMATE_CLASS,PREINIT_CLASS,HIST_WEB_PAGE,TAKE_WEB_PAGE,COMMENT_WEB_PAGE,AUTOASSIGNABLE,PASSED_NORECP FROM STEP_DEFINITION WHERE WF_ID='"+export+"'";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  				vt.add("INSERT INTO STEP_DEFINITION (COMPANYID,WF_ID,WF_VER,STEP_ID,TNAME,ENAME,TDESC,EDESC,STEP_TYPE,RECIPIENT_DEF,TASK_RATE,WEB_PAGE,AUTO_APPROVE,ATTACHED_STATUS,COMPLETION_DURATION,EXTENSION_DURATION,DELAY_DURATION,ONLATE_ACTION,INTIME_ACTION,PRE_CONDITION,POST_CONDITION,TAKEOVER_RIGHT,COMPLETE_CLASS,RETURN_CLASS,ABORT_CLASS,AUTOMATE_CLASS,PREINIT_CLASS,HIST_WEB_PAGE,TAKE_WEB_PAGE,COMMENT_WEB_PAGE,AUTOASSIGNABLE,PASSED_NORECP) VALUES ('"+rs.getString("COMPANYID")+"','"+rs.getString("WF_ID")+"','"+rs.getString("WF_VER")+"','"+rs.getString("STEP_ID")+"','"+rs.getString("TNAME")+"','"+rs.getString("ENAME")+"','"+rs.getString("TDESC")+"','"+rs.getString("EDESC")+"','"+rs.getString("STEP_TYPE")+"','"+rs.getString("RECIPIENT_DEF")+"','"+rs.getString("TASK_RATE")+"','"+rs.getString("WEB_PAGE")+"','"+rs.getString("AUTO_APPROVE")+"','"+rs.getString("ATTACHED_STATUS")+"','"+rs.getString("COMPLETION_DURATION")+"','"+rs.getString("EXTENSION_DURATION")+"','"+rs.getString("DELAY_DURATION")+"','"+rs.getString("ONLATE_ACTION")+"','"+rs.getString("INTIME_ACTION")+"','"+rs.getString("PRE_CONDITION")+"','"+rs.getString("POST_CONDITION")+"','"+rs.getString("TAKEOVER_RIGHT")+"','"+rs.getString("COMPLETE_CLASS")+"','"+rs.getString("RETURN_CLASS")+"','"+rs.getString("ABORT_CLASS")+"','"+rs.getString("AUTOMATE_CLASS")+"','"+rs.getString("PREINIT_CLASS")+"','"+rs.getString("HIST_WEB_PAGE")+"','"+rs.getString("TAKE_WEB_PAGE")+"','"+rs.getString("COMMENT_WEB_PAGE")+"','"+rs.getString("AUTOASSIGNABLE")+"','"+rs.getString("PASSED_NORECP")+"');");	
  			}

			vt.add("\n");
  			vt.add("/*** CC_DEFINITION ***/");
  			

			sql="SELECT COMPANYID,WF_ID,WF_VER,STEP_ID,CC_NAME FROM CC_DEFINITION WHERE WF_ID='"+export+"'";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  				vt.add("INSERT INTO CC_DEFINITION (COMPANYID,WF_ID,WF_VER,STEP_ID,CC_NAME) VALUES ('"+rs.getString("COMPANYID")+"','"+rs.getString("WF_ID")+"','"+rs.getString("WF_VER")+"','"+rs.getString("STEP_ID")+"','"+rs.getString("CC_NAME")+"');");	
  			}
  			
  			vt.add("\n");
  			vt.add("/*** STEP_TOOL ***/");
  			vt.add("/*** STEP "+step+" ***/");
  			
  			sql="SELECT COMPANYID,WF_ID,WF_VER,STEP_TOOL_ID,STEP_ID,APP_ID,TOOL_TYPE,IMPL_TYPE,TDESC,EDESC,REF_IMPL FROM STEP_TOOL WHERE WF_ID='"+export+"' ORDER BY STEP_ID,STEP_TOOL_ID";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  				if(!step.equals(rs.getString("STEP_ID"))){
  				step=rs.getString("STEP_ID");
  				vt.add("/*** STEP "+step+" ***/");
  				}
  				vt.add("INSERT INTO STEP_TOOL (COMPANYID,WF_ID,WF_VER,STEP_TOOL_ID,STEP_ID,APP_ID,TOOL_TYPE,IMPL_TYPE,TDESC,EDESC,REF_IMPL) VALUES ('"+rs.getString("COMPANYID")+"','"+rs.getString("WF_ID")+"','"+rs.getString("WF_VER")+"','"+rs.getString("STEP_TOOL_ID")+"','"+rs.getString("STEP_ID")+"','"+rs.getString("APP_ID")+"','"+rs.getString("TOOL_TYPE")+"','"+rs.getString("IMPL_TYPE")+"','"+rs.getString("TDESC")+"','"+rs.getString("EDESC")+"','"+rs.getString("REF_IMPL")+"');");	
  			}
  			
  			step="1";
  			vt.add("\n");
  			vt.add("/*** STEP_TOOL_IMPL ***/");
  			vt.add("/*** STEP "+step+" ***/");	
  			
  			
  			
  			sql="SELECT COMPANYID,WF_ID,WF_VER,STEP_TOOL_IMPL_ID,STEP_ID,APP_ID,TOOL_TYPE,IMPL_TYPE,PARAM_NAME,PARAM_VALUE FROM STEP_TOOL_IMPL WHERE WF_ID='"+export+"' ORDER BY STEP_ID,IMPL_TYPE,STEP_TOOL_IMPL_ID";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  				if(!step.equals(rs.getString("STEP_ID"))){
  				step=rs.getString("STEP_ID");
  				vt.add("/*** STEP "+step+" ***/");
  				}
  				vt.add("INSERT INTO STEP_TOOL_IMPL (COMPANYID,WF_ID,WF_VER,STEP_TOOL_IMPL_ID,STEP_ID,APP_ID,TOOL_TYPE,IMPL_TYPE,PARAM_NAME,PARAM_VALUE) VALUES('"+rs.getString("COMPANYID")+"','"+rs.getString("WF_ID")+"','"+rs.getString("WF_VER")+"','"+rs.getString("STEP_TOOL_IMPL_ID")+"','"+rs.getString("STEP_ID")+"','"+rs.getString("APP_ID")+"','"+rs.getString("TOOL_TYPE")+"','"+rs.getString("IMPL_TYPE")+"','"+rs.getString("PARAM_NAME")+"','"+rs.getString("PARAM_VALUE")+"');");	
  			}
  			
  			vt.add("\n");
  			vt.add("/*** TRANSITION ***/");
  			
  			sql="SELECT COMPANYID,WF_ID,WF_VER,TRANSITION_ID,STEP_ID,NEXT_STEP_ID,CONDITION,TDESC,EDESC,TRAN_TYPE FROM TRANSITION WHERE WF_ID='"+export+"' ORDER BY STEP_ID, NEXT_STEP_ID DESC ";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  				vt.add("INSERT INTO TRANSITION (COMPANYID,WF_ID,WF_VER,TRANSITION_ID,STEP_ID,NEXT_STEP_ID,CONDITION,TDESC,EDESC,TRAN_TYPE) VALUES('"+rs.getString("COMPANYID")+"','"+rs.getString("WF_ID")+"','"+rs.getString("WF_VER")+"','"+rs.getString("TRANSITION_ID")+"','"+rs.getString("STEP_ID")+"','"+rs.getString("NEXT_STEP_ID")+"','"+rs.getString("CONDITION")+"','"+rs.getString("TDESC")+"','"+rs.getString("EDESC")+"','"+rs.getString("TRAN_TYPE")+"');");	
  			}
  			
  			vt.add("\n");
  			vt.add("/*** WFVAR_DEFINITION ***/");
  			
  			sql="SELECT COMPANYID,WF_ID,WF_VER,VAR_ID,VAR_NAME,VAR_TYPE,TDESC,EDESC,HINT,INIT_VALUE,VALIDATE_CLASS,NULLABLE,ENCRYPT,PROTABLE_XML FROM WFVAR_DEFINITION WHERE WF_ID='"+export+"'";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  				vt.add("INSERT INTO WFVAR_DEFINITION (COMPANYID,WF_ID,WF_VER,VAR_ID,VAR_NAME,VAR_TYPE,TDESC,EDESC,HINT,INIT_VALUE,VALIDATE_CLASS,NULLABLE,ENCRYPT,PROTABLE_XML) VALUES('"+rs.getString("COMPANYID")+"','"+rs.getString("WF_ID")+"','"+rs.getString("WF_VER")+"','"+rs.getString("VAR_ID")+"','"+rs.getString("VAR_NAME")+"','"+rs.getString("VAR_TYPE")+"','"+rs.getString("TDESC")+"','"+rs.getString("EDESC")+"','"+rs.getString("HINT")+"','"+rs.getString("INIT_VALUE")+"','"+rs.getString("VALIDATE_CLASS")+"','"+rs.getString("NULLABLE")+"','"+rs.getString("ENCRYPT")+"','"+rs.getString("PROTABLE_XML")+"');");	
  			}
  			
  			vt.add("\n");
  			vt.add("/*** WORKFLOW_DEFINITION ***/");
  			
  			sql="SELECT COMPANYID,WF_ID,WF_VER,CATEGORY_ID,TNAME,ENAME,TDESC,EDESC,LAST_SEQ,WF_SHORT_CODE,WF_OBJECTIVE,WF_RULE,INITIATOR_DEF,PRIORITY,AUTOASSIGNABLE,SCHEDULE,COMPLETION_DURATION,EXTENSION_DURATION,START_INITIATE_TIME,END_INITIATE_TIME,START_TIME,END_TIME,INITIATE_CLASS,COMPLETE_CLASS,ABORT_CLASS,SCHEDULE_CLASS,PUBLICATION_STATUS,XPDL_PATH,IMAGE_PATH,TRANSFER_FILE,MODIFYDATE,CREATED,ACTIVE,DEL FROM  WORKFLOW_DEFINITION WHERE WF_ID='"+export+"'";
  			rs=s.executeQuery(sql);
  			while(rs.next()){
  				vt.add("INSERT INTO WORKFLOW_DEFINITION (COMPANYID,WF_ID,WF_VER,CATEGORY_ID,TNAME,ENAME,TDESC,EDESC,LAST_SEQ,WF_SHORT_CODE,WF_OBJECTIVE,WF_RULE,INITIATOR_DEF,PRIORITY,AUTOASSIGNABLE,SCHEDULE,COMPLETION_DURATION,EXTENSION_DURATION,START_INITIATE_TIME,END_INITIATE_TIME,START_TIME,END_TIME,INITIATE_CLASS,COMPLETE_CLASS,ABORT_CLASS,SCHEDULE_CLASS,PUBLICATION_STATUS,XPDL_PATH,IMAGE_PATH,TRANSFER_FILE,MODIFYDATE,CREATED,ACTIVE,DEL) VALUES('"+rs.getString("COMPANYID")+"','"+rs.getString("WF_ID")+"','"+rs.getString("WF_VER")+"','"+rs.getString("CATEGORY_ID")+"','"+rs.getString("TNAME")+"','"+rs.getString("ENAME")+"','"+rs.getString("TDESC")+"','"+rs.getString("EDESC")+"','0','"+rs.getString("WF_SHORT_CODE")+"','"+rs.getString("WF_OBJECTIVE")+"','"+rs.getString("WF_RULE")+"','"+rs.getString("INITIATOR_DEF")+"','"+rs.getString("PRIORITY")+"','"+rs.getString("AUTOASSIGNABLE")+"','"+rs.getString("SCHEDULE")+"','"+rs.getString("COMPLETION_DURATION")+"','"+rs.getString("EXTENSION_DURATION")+"','"+rs.getString("START_INITIATE_TIME")+"','"+rs.getString("END_INITIATE_TIME")+"','"+rs.getString("START_TIME")+"','"+rs.getString("END_TIME")+"','"+rs.getString("INITIATE_CLASS")+"','"+rs.getString("COMPLETE_CLASS")+"','"+rs.getString("ABORT_CLASS")+"','"+rs.getString("SCHEDULE_CLASS")+"','"+rs.getString("PUBLICATION_STATUS")+"','"+rs.getString("XPDL_PATH")+"','"+rs.getString("IMAGE_PATH")+"','"+rs.getString("TRANSFER_FILE")+"','"+rs.getString("MODIFYDATE")+"','"+rs.getString("CREATED")+"','"+rs.getString("ACTIVE")+"','"+rs.getString("DEL")+"');");	
  			}
  			
  			
  	  		con.close();
  	  		rs.close();
  	  		s.close();
  			
  	  		
  	  		//File file=null;
  	  		String path=application.getRealPath("/").replace('\\', '/')+"Genrouting/"+"GEN/";
  	  		File filefolder = new File(path);
  	  		if(!filefolder.exists()){
  	  		filefolder.mkdirs();
  	  		}
  	  		
  	  		String  fullpath="GEN/WF_"+export+".txt";
  	  		
  			File file = new File(path+"WF_"+export+".txt");
  			if (!file.exists()) {
  				file.createNewFile();
  			}

  		/*	FileWriter fw = new FileWriter(file.getAbsoluteFile());
  			BufferedWriter bw = new BufferedWriter(fw);	*/
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path+"WF_"+export+".txt"), "UTF-8"));

  			Iterator it = vt.iterator(); 
  			while(it.hasNext()){
  				bw.write(it.next().toString());
  				bw.newLine();
  			}
  			bw.close();
  			
  			%>
  			<script>
  			$(function(){
  				$.loadfile('<%=fullpath%>');
  			});
  			</script>
  			
  			<%
  		}
%>
</p>
<form id="f1" action="index.jsp">
<input name="cmd" type="hidden" id="cmd" value="<%=chk.chkNullString(request.getParameter("cmd"),"")%>">
<input name="db" type="hidden" id="db" value="<%=chk.chkNullString(request.getParameter("db"),"")%>">
<input name="export" type="hidden" id="export" value="<%=chk.chkNullString(request.getParameter("export"),"")%>">
<input name="catid" type="hidden" id="catid" value="<%=chk.chkNullString(request.getParameter("catid"),"")%>">
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="2" bgcolor="#666666" class="bd1"> <span class="style1">Gen Rounting </span></td>
  </tr>
  <tr>
	<td width="200" valign="top" class="bd1"><table width="200" border="0" cellspacing="0" cellpadding="0" id="login">
		<tr>
			<td>Host[IP/Server name]:&nbsp;</td>
			<td><input name="ip" type="text" id="ip" value="<%=chk.chkNullString(request.getParameter("ip"),"")%>" size="15"></td>
		</tr>
		<tr>
			<td rowspan="2">DB Type&nbsp;</td>
			<td>
				<div><input type="radio" id="dbtype" name="dbtype" value="MSSQL" <%=dbtype.equals("MSSQL")?"checked":""%> >MSSQL</div>
			</td>
		</tr>
		<tr>
			<td nowrap>
				<div><input type="radio" id="dbtype" name="dbtype" value="PGSQL" <%=dbtype.equals("PGSQL")?"checked":""%>>PGSQL&nbsp;<input type="text" name="dbname" value="<%=dbname%>" size="10"></div>
			</td>
		</tr>
		<tr>
			<td>username:&nbsp;</td>
			<td><input name="user" type="text" id="user" value="<%=chk.chkNullString(request.getParameter("user"),"myhradmin")%>" size="15"></td>
		</tr>
		<tr>
			<td>password:&nbsp;</td>
			<td><input name="pass" type="password" id="pass" value="<%=chk.chkNullString(request.getParameter("pass"),"systemadmin")%>" size="15"></td>
		</tr>
		<tr>
			<td align="center"><input type="submit" id="Submit" name="Submit" value="Connect"></td>
		</tr>
		<tr>
			<td align="center">&nbsp;</td>
		</tr>
    </table>
	
	<table width="200" border="0" cellspacing="0" cellpadding="0" id="database">
  <tr>
    <td bgcolor="#666666" class="style1">DataBase</td>
  </tr>
</table>
	</td>
    <td width="700" valign="top" bgcolor="#CCCCCC" >
    <table width="700" align="center" border="1" id="workdef">
    <tr>
    <td width="10%">WF_ID</td>
    <td width="10%">CATID</td>
    <td width="35%">TNAME</td>
    <td width="35%">TRANSFER_FILE</td>
    <td width="10%">EXPORT</td>
    </tr>
    </table>
    <div id="error" align="center"></div>
    </td>
  </tr>
</table>
<p>&nbsp;</p>
</form>

</body>
</html>