[Ils-source] r1416 - in trunk/webapp/api/ccure: . ccureuser ccureuser/get test updatescore.vws

scribe at crosswire.org scribe at crosswire.org
Thu Mar 24 02:50:15 MST 2016


Author: scribe
Date: 2016-03-24 02:50:15 -0700 (Thu, 24 Mar 2016)
New Revision: 1416

Added:
   trunk/webapp/api/ccure/ccureuser/
   trunk/webapp/api/ccure/ccureuser/get/
   trunk/webapp/api/ccure/ccureuser/get/index.jsp
   trunk/webapp/api/ccure/test/
   trunk/webapp/api/ccure/test/index.jsp
Modified:
   trunk/webapp/api/ccure/updatescore.vws/index.jsp
Log:
First mostly working updatescore service which uses Victor Web Services to update a Personnel record
Added ccure test which walks through all stages of updating a record on a CCURE system via VWS
Added ccureuser/get service to retrieve Personnel record from a CCURE system via VWS


Added: trunk/webapp/api/ccure/ccureuser/get/index.jsp
===================================================================
--- trunk/webapp/api/ccure/ccureuser/get/index.jsp	                        (rev 0)
+++ trunk/webapp/api/ccure/ccureuser/get/index.jsp	2016-03-24 09:50:15 UTC (rev 1416)
@@ -0,0 +1,171 @@
+<%@ page
+    language="java"
+    contentType="text/html;charset=utf-8"
+%>
+<%@ page trimDirectiveWhitespaces="true" %>
+<%@ page import="org.crosswire.utils.HTTPUtils" %>
+<%@ page import="org.crosswire.xml.XMLBlock" %>
+<%@ page import="org.crosswire.xml.XMLDataElement" %>
+<%@ page import="com.resolutions.ils.Utils" %>
+<%@ page import="com.resolutions.ils.ILSSession" %>
+<%@ page import="com.resolutions.ils.data.Company" %>
+<%@ page import="org.apache.log4j.Logger" %>
+<%@ page import="java.net.URLEncoder"%>
+<%@ page import="java.net.InetAddress"%>
+
+<%
+	// standard service header ---------------------------------------
+	response.setContentType("text/xml");
+	int errCode = 0;
+	Company company = Company.getCompany(request);
+    
+	boolean apiEnabled = "on".equals(Utils.getSysConfig(session.getServletContext(), company.getCompanyID()).getProperty("APIEnable", "off"));
+	++errCode;
+	if (!apiEnabled) {
+		out.print("<error code=\""+errCode+"\" message=\"API not enabled in system management settings.\"/>");
+		return;
+	}
+
+	String userID = request.getParameter("ILSUSER");
+	String userPw = request.getParameter("ILSPASSWD");
+	ILSSession ilsSession = (userID != null && userPw != null)
+			? ILSSession.login(company.getCompanyName(), userID, userPw)
+			: (ILSSession)session.getAttribute("ilsSession");
+	++errCode;
+/*
+	if (ilsSession == null) {
+		out.print("<error code=\""+errCode+"\" message=\"Your iLS sign in information is not valid.\"/>");
+		return;
+	}
+*/
+	String detail = request.getParameter("detail");
+	int detailLevel = org.crosswire.data.DataObject.DETAIL_COMPLETE;
+	if ("headeronly".equals(detail)) detailLevel = org.crosswire.data.DataObject.DETAIL_HEADERONLY;
+	else if ("brief".equals(detail)) detailLevel = org.crosswire.data.DataObject.DETAIL_BRIEF;
+	// end standard service header -----------------------------------
+	
+	Logger logger = Logger.getLogger(this.getClass());
+	Logger eventsLogger = Logger.getLogger("EVENTS");
+
+	boolean debug = "debug".equals(detail);
+
+	String userData = request.getParameter("objectID");
+
+	if (userData != null) {
+
+		eventsLogger.debug("CCURE ccureuser/get: objectID="+userData);
+
+		int personID = -1; try { personID = Integer.parseInt(userData); } catch (Exception e) {}
+
+		++errCode;
+		if (personID < 0) {
+			out.print("<error code=\""+errCode+"\" message=\"You must pass a valid personID as userProfileUserData.\"/>");
+			return;
+		}
+
+		if (debug) response.setContentType("text/html");
+
+		String apiRoot = Utils.getSysConfig(session).getProperty("CCUREVWSRoot", "https://161.243.232.7/victorwebservice/api");
+		if (!apiRoot.endsWith("/")) apiRoot+="/";
+
+		String ccureUser = Utils.getSysConfig(session).getProperty("CCUREUser", "JAA\\ccureappmgr");
+		String ccurePassword = Utils.getSysConfig(session).getProperty("CCUREPassword", "orangePark101");
+		String token = null;
+		String sessionID = null;
+
+		String url = apiRoot + "Authenticate/Login";
+		String params = "";
+		params += "userName="+URLEncoder.encode(ccureUser, "UTF-8");
+		params +="&password="+URLEncoder.encode(ccurePassword, "UTF-8");
+		params +="&clientName=SSI";
+		String headers[] = { "Access-Control-Expose-Headers", "session-id" };
+
+		StringBuffer result = new StringBuffer();
+		HTTPUtils.Response httpResponse = new HTTPUtils.Response();
+		InetAddress ip = InetAddress.getLocalHost();
+	// retrieved with: curl -s http://checkip.amazonaws.com/
+		if (debug) out.print("<h3>Sending from: "+ip.getHostName()+" (184.106.45.87) ...</h3>");
+		if (debug) out.print("<h3>Sending to: "+url+" ...</h3>");
+		try {
+			result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.GET, false, httpResponse);
+			token = result.toString().trim();
+			if (token.startsWith("\"")) token = token.substring(1);
+			if (token.endsWith("\"")) token = token.substring(0,token.length()-1);
+			sessionID = httpResponse.headers.get("session-id");
+		}
+		catch (Exception e) { e.printStackTrace(); }
+if (debug) {
+%>
+<p>HTTP Result Code: <%=httpResponse.resultCode%></p>
+<h3>Response:</h3>
+<code><pre>
+<%=token%>
+</pre></code>
+<h3>Headers:</h3>
+<code><pre><% for (String k : httpResponse.headers.keySet()) {
+		out.print(k + ": " + httpResponse.headers.get(k) + "\n");
+} %></pre></code>
+<br/>
+<table><tr><th>sessionID</th><td><%=sessionID%></td></tr>
+<tr><th>token</th><td><%=token%></td></tr>
+</table>
+<%
+}
+		params = "";
+		params += "type="+URLEncoder.encode("Personnel", "UTF-8");
+		params += "&id="+URLEncoder.encode(Integer.toString(personID), "UTF-8");
+		params += "&token="+URLEncoder.encode(token, "UTF-8");
+		headers = new String[] {
+			"Access-Control-Expose-Headers", "session-id",
+			"Accept", "application/xml",
+			"session-id", sessionID
+		};
+		url = apiRoot + "Objects/Get";
+		if (debug) out.print("<h3>Sending to: "+url+" ...</h3>");
+		try {
+			result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.GET, false, httpResponse);
+		}
+		catch (Exception e) { e.printStackTrace(); }
+if (debug) {
+%>
+<p>HTTP Result Code: <%=httpResponse.resultCode%></p>
+<h3>Response:</h3>
+<code><pre>
+<%=result%>
+</pre></code>
+<h3>Headers:</h3>
+<code><pre><% for (String k : httpResponse.headers.keySet()) {
+	out.print(k + ": " + httpResponse.headers.get(k) + "\n");
+} %></pre></code>
+<%
+}
+else {
+	XMLBlock person = new XMLBlock(result.toString());
+	// this is wrapped in some <string> microsoft serializer thingy
+//	result = new StringBuffer(person.getValue("string"));
+//	person = new XMLBlock(result);
+	out.print(new XMLDataElement(person).getText());
+//	out.print(person.getValue("string"));
+//	out.print(result);
+}
+
+		return;
+	}
+	response.setContentType("text/html");
+%>
+<html>
+<style>th { text-align:left; }</style>
+<body>
+<h1>ccureuser/get</h1>
+<p>Retrieve a Personnel record from CCURE</p>
+<h3>Parameters</h3>
+<table border="1">
+<tbody>
+<tr><th>objectID</th><td>the CCURE ObjectID for the Personnel Record to retrieve</td></tr>
+<tr><th>ILSUSER</th><td>ILS Login Credentials. Used to validate this API request.</td></tr>
+<tr><th>ILSPASSWD</th><td>ILS Login Credentials. Used to validate this API request.</td></tr>
+<tr><th>detail</th><td>debug - turn on debug info</td></tr>
+</tbody>
+<table>
+</body>
+</html>

Added: trunk/webapp/api/ccure/test/index.jsp
===================================================================
--- trunk/webapp/api/ccure/test/index.jsp	                        (rev 0)
+++ trunk/webapp/api/ccure/test/index.jsp	2016-03-24 09:50:15 UTC (rev 1416)
@@ -0,0 +1,285 @@
+<%@ page
+    language="java"
+    contentType="text/html;charset=utf-8"
+%>
+<%@ page import="org.crosswire.utils.HTTPUtils" %>
+<%@ page import="com.resolutions.ils.Utils" %>
+<%@ page import="com.resolutions.ils.ILSSession" %>
+<%@ page import="com.resolutions.ils.data.UserProfile" %>
+<%@ page import="com.resolutions.ils.data.Company" %>
+<%@ page import="com.resolutions.ils.data.Group" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="java.util.Date" %>
+<%@ page import="java.io.File" %>
+<%@ page import="java.net.URL" %>
+<%@ page import="java.util.Properties" %>
+<%@ page import="java.text.SimpleDateFormat" %>
+<%@ page import="org.apache.log4j.Logger" %>
+<%@ page import="java.sql.DriverManager" %>
+<%@ page import="java.sql.Connection" %>
+<%@ page import="java.sql.DriverManager" %>
+<%@ page import="java.sql.PreparedStatement" %>
+<%@ page import="java.sql.ResultSet" %>
+<%@ page import="java.sql.ResultSetMetaData" %>
+<%@ page import="java.net.Authenticator"%>
+<%@ page import="java.net.PasswordAuthentication"%>
+<%@ page import="java.net.URL"%>
+<%@ page import="java.net.URLConnection"%>
+<%@ page import="java.net.URLEncoder"%>
+<%@ page import="java.io.DataOutputStream"%>
+<%@ page import="java.io.BufferedReader"%>
+<%@ page import="java.io.InputStreamReader"%>
+<%@ page import="java.util.Map"%>
+<%@ page import="java.util.HashMap"%>
+<%@ page import="java.net.InetAddress"%>
+
+<%
+	// standard service header ---------------------------------------
+	response.setContentType("text/xml");
+	int errCode = 0;
+	Company company = Company.getCompany(request);
+    
+	boolean apiEnabled = "on".equals(Utils.getSysConfig(session.getServletContext(), company.getCompanyID()).getProperty("APIEnable", "off"));
+	++errCode;
+	if (!apiEnabled) {
+		out.print("<error code=\""+errCode+"\" message=\"API not enabled in system management settings.\"/>");
+		return;
+	}
+
+	String userID = request.getParameter("ILSUSER");
+	String userPw = request.getParameter("ILSPASSWD");
+	ILSSession ilsSession = (userID != null && userPw != null)
+			? ILSSession.login(company.getCompanyName(), userID, userPw)
+			: (ILSSession)session.getAttribute("ilsSession");
+	++errCode;
+	if (ilsSession == null) {
+		out.print("<error code=\""+errCode+"\" message=\"Your iLS sign in information is not valid.\"/>");
+		return;
+	}
+	String detail = request.getParameter("detail");
+	int detailLevel = org.crosswire.data.DataObject.DETAIL_COMPLETE;
+	if ("headeronly".equals(detail)) detailLevel = org.crosswire.data.DataObject.DETAIL_HEADERONLY;
+	else if ("brief".equals(detail)) detailLevel = org.crosswire.data.DataObject.DETAIL_BRIEF;
+	// end standard service header -----------------------------------
+	
+
+	Logger logger = Logger.getLogger(this.getClass());
+	Logger eventsLogger = Logger.getLogger("EVENTS");
+
+	response.setContentType("text/html");
+
+	eventsLogger.debug("CCURE: entering updatescore api (events)");
+
+	String apiRoot = Utils.getSysConfig(session).getProperty("CCUREVWSRoot", "https://161.243.232.7/victorwebservice/api");
+	if (!apiRoot.endsWith("/")) apiRoot+="/";
+
+	String ccureUser = Utils.getSysConfig(session).getProperty("CCUREUser", "JAA\\ccureappmgr");
+	String ccurePassword = Utils.getSysConfig(session).getProperty("CCUREPassword", "orangePark101");
+	String token = null;
+	String sessionID = null;
+
+	String url = apiRoot + "Authenticate/Login";
+	String params = "";
+	params += "userName="+URLEncoder.encode(ccureUser, "UTF-8");
+	params +="&password="+URLEncoder.encode(ccurePassword, "UTF-8");
+	params +="&clientName=SSI";
+	String headers[] = { "Access-Control-Expose-Headers", "session-id" };
+
+	StringBuffer result = new StringBuffer();
+	HTTPUtils.Response httpResponse = new HTTPUtils.Response();
+	InetAddress ip = InetAddress.getLocalHost();
+// retrieved with: curl -s http://checkip.amazonaws.com/
+	out.print("<h3>Sending from: "+ip.getHostName()+" (184.106.45.87) ...</h3>");
+	out.print("<h3>Sending to: "+url+" ...</h3>");
+	try {
+		result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.GET, false, httpResponse);
+		token = result.toString().trim();
+		if (token.startsWith("\"")) token = token.substring(1);
+		if (token.endsWith("\"")) token = token.substring(0,token.length()-1);
+		sessionID = httpResponse.headers.get("session-id");
+	}
+	catch (Exception e) { e.printStackTrace(); }
+%>
+<p>HTTP Result Code: <%=httpResponse.resultCode%></p>
+<h3>Response:</h3>
+<code><pre>
+<%=token%>
+</pre></code>
+<h3>Headers:</h3>
+<code><pre>
+<% for (String k : httpResponse.headers.keySet()) {
+		out.print(k + ": " + httpResponse.headers.get(k) + "\n");
+	} %>
+</pre></code>
+<br/>
+<table><tr><th>sessionID</th><td><%=sessionID%></td></tr>
+<tr><th>token</th><td><%=token%></td></tr>
+</table>
+<%
+	params = "";
+	params += "type="+URLEncoder.encode("Personnel", "UTF-8");
+	params += "&token="+URLEncoder.encode(token, "UTF-8");
+	headers = new String[] {
+		"Access-Control-Expose-Headers", "session-id",
+		"session-id", sessionID
+	};
+	url = apiRoot + "Schema/Get";
+	out.print("<h3>Sending to: "+url+" ...</h3>");
+	try {
+		result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.GET, false, httpResponse);
+/*
+		token = result.toString().trim();
+		if (token.startsWith("\"")) token = token.substring(1);
+		if (token.endsWith("\"")) token = token.substring(0,token.length()-1);
+		sessionID = httpResponse.headers.get("session-id");
+*/
+	}
+	catch (Exception e) { e.printStackTrace(); }
+%>
+<p>HTTP Result Code: <%=httpResponse.resultCode%></p>
+<h3>Response:</h3>
+<code><pre>
+<%=result%>
+</pre></code>
+<h3>Headers:</h3>
+<code><pre>
+<% for (String k : httpResponse.headers.keySet()) {
+		out.print(k + ": " + httpResponse.headers.get(k) + "\n");
+	} %>
+</pre></code>
+<br/>
+<%
+	params = "";
+	params += "type="+URLEncoder.encode("Personnel", "UTF-8");
+	params += "&id="+URLEncoder.encode("6833", "UTF-8");
+	params += "&token="+URLEncoder.encode(token, "UTF-8");
+	headers = new String[] {
+		"Access-Control-Expose-Headers", "session-id",
+		"session-id", sessionID
+	};
+	url = apiRoot + "Objects/Get";
+	out.print("<h3>Sending to: "+url+" ...</h3>");
+	try {
+		result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.GET, false, httpResponse);
+/*
+		token = result.toString().trim();
+		if (token.startsWith("\"")) token = token.substring(1);
+		if (token.endsWith("\"")) token = token.substring(0,token.length()-1);
+		sessionID = httpResponse.headers.get("session-id");
+*/
+	}
+	catch (Exception e) { e.printStackTrace(); }
+%>
+<p>HTTP Result Code: <%=httpResponse.resultCode%></p>
+<h3>Response:</h3>
+<code><pre>
+<%=result%>
+</pre></code>
+<h3>Headers:</h3>
+<code><pre>
+<% for (String k : httpResponse.headers.keySet()) {
+		out.print(k + ": " + httpResponse.headers.get(k) + "\n");
+	} %>
+</pre></code>
+<br/>
+<%
+	params = "";
+	params += "PropertyNames="+URLEncoder.encode("UDF__TRAINING_COURSE_1_", "UTF-8");
+	params += "&PropertyValues="+URLEncoder.encode("SIDA", "UTF-8");
+	params += "&PropertyNames="+URLEncoder.encode("UDF__TRAINING_DATE_1_", "UTF-8");
+	params += "&PropertyValues="+URLEncoder.encode("2016-03-22", "UTF-8");
+	params += "&PropertyNames="+URLEncoder.encode("UDF__TRAINING_SCORE_1_", "UTF-8");
+	params += "&PropertyValues="+URLEncoder.encode("95", "UTF-8");
+	params += "&PropertyNames="+URLEncoder.encode("UDF__TRAINING_ACTIVE_1_", "UTF-8");
+	params += "&PropertyValues="+URLEncoder.encode("true", "UTF-8");
+	params += "&PropertyNames="+URLEncoder.encode("UDF__TRAINING_EXPIRES_1_", "UTF-8");
+	params += "&PropertyValues="+URLEncoder.encode("2017-03-22", "UTF-8");
+
+	headers = new String[] {
+		"Access-Control-Expose-Headers", "session-id",
+		"session-id", sessionID
+	};
+
+	url = apiRoot + "Objects/Put/Personnel/6833"+"?token="+URLEncoder.encode(token, "UTF-8");
+	out.print("<h3>Sending to: "+url+" ...</h3>");
+/*
+%>
+<p>Payload: <%=data%></p>
+<%
+*/
+	try {
+		result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.PUT, false, httpResponse);
+	}
+	catch (Exception e) { e.printStackTrace(); }
+%>
+<p>HTTP Result Code: <%=httpResponse.resultCode%></p>
+<h3>Response:</h3>
+<code><pre>
+<%=result%>
+</pre></code>
+<h3>Headers:</h3>
+<code><pre>
+<% for (String k : httpResponse.headers.keySet()) {
+		out.print(k + ": " + httpResponse.headers.get(k) + "\n");
+	} %>
+</pre></code>
+<br/>
+<%
+	params = "";
+	params += "type="+URLEncoder.encode("Personnel", "UTF-8");
+	params += "&id="+URLEncoder.encode("6833", "UTF-8");
+	params += "&token="+URLEncoder.encode(token, "UTF-8");
+	headers = new String[] {
+		"Access-Control-Expose-Headers", "session-id",
+		"session-id", sessionID
+	};
+	url = apiRoot + "Objects/Get";
+	out.print("<h3>Sending to: "+url+" ...</h3>");
+	try {
+		result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.GET, false, httpResponse);
+/*
+		token = result.toString().trim();
+		if (token.startsWith("\"")) token = token.substring(1);
+		if (token.endsWith("\"")) token = token.substring(0,token.length()-1);
+		sessionID = httpResponse.headers.get("session-id");
+*/
+	}
+	catch (Exception e) { e.printStackTrace(); }
+%>
+<p>HTTP Result Code: <%=httpResponse.resultCode%></p>
+<h3>Response:</h3>
+<code><pre>
+<%=result%>
+</pre></code>
+<h3>Headers:</h3>
+<code><pre>
+<% for (String k : httpResponse.headers.keySet()) {
+		out.print(k + ": " + httpResponse.headers.get(k) + "\n");
+	} %>
+</pre></code>
+<br/>
+<%
+/*
+				if (fieldData.equals(checkDBWrite(eventsLogger, jdbcURL, ccureDBUser, ccureDBPassword, personID, fieldName))) {
+	            	errorMsg = "OK";
+				}
+            }
+            else {
+				eventsLogger.debug("CCURE: Failed to write: " + fieldName + ": " + fieldData + "; Person_ID: " + personID);
+				errorMsg = "Couldn't update personID [" + personID + "] in the CCURE Database. No result rows modified on update.";
+		    }
+		}
+		catch (Exception e) {
+			errorMsg = "Failure to update personID [" + personID + "] from the CCURE Database: " + e + " SQL: " + sql + "; fieldData: " + fieldData;
+			eventsLogger.debug("CCURE: Exception, Failed to write: " + fieldName + ": " + fieldData + "; Person_ID: " + personID + "; exception: " + e);
+			e.printStackTrace();
+			errorMsg = "FAILED: " + e;
+		}
+		finally {
+			connection.close();
+		}
+    }
+eventsLogger.debug("CCURE: updatescore returning: " + errorMsg);
+   	%><%= errorMsg %><%
+*/
+%>

Modified: trunk/webapp/api/ccure/updatescore.vws/index.jsp
===================================================================
--- trunk/webapp/api/ccure/updatescore.vws/index.jsp	2016-03-22 15:01:28 UTC (rev 1415)
+++ trunk/webapp/api/ccure/updatescore.vws/index.jsp	2016-03-24 09:50:15 UTC (rev 1416)
@@ -2,220 +2,220 @@
     language="java"
     contentType="text/html;charset=utf-8"
 %>
+<%@ page trimDirectiveWhitespaces="true" %>
 <%@ page import="org.crosswire.utils.HTTPUtils" %>
 <%@ page import="com.resolutions.ils.Utils" %>
 <%@ page import="com.resolutions.ils.ILSSession" %>
-<%@ page import="com.resolutions.ils.data.UserProfile" %>
 <%@ page import="com.resolutions.ils.data.Company" %>
-<%@ page import="com.resolutions.ils.data.Group" %>
-<%@ page import="java.util.Vector" %>
 <%@ page import="java.util.Date" %>
-<%@ page import="java.io.File" %>
-<%@ page import="java.net.URL" %>
-<%@ page import="java.util.Properties" %>
 <%@ page import="java.text.SimpleDateFormat" %>
 <%@ page import="org.apache.log4j.Logger" %>
-<%@ page import="java.sql.DriverManager" %>
-<%@ page import="java.sql.Connection" %>
-<%@ page import="java.sql.DriverManager" %>
-<%@ page import="java.sql.PreparedStatement" %>
-<%@ page import="java.sql.ResultSet" %>
-<%@ page import="java.sql.ResultSetMetaData" %>
-<%@ page import="java.net.Authenticator"%>
-<%@ page import="java.net.PasswordAuthentication"%>
-<%@ page import="java.net.URL"%>
-<%@ page import="java.net.URLConnection"%>
 <%@ page import="java.net.URLEncoder"%>
-<%@ page import="java.io.DataOutputStream"%>
-<%@ page import="java.io.BufferedReader"%>
-<%@ page import="java.io.InputStreamReader"%>
 <%@ page import="java.util.Map"%>
 <%@ page import="java.util.HashMap"%>
 
 <%
-	Logger eventsLogger = Logger.getLogger(this.getClass());
-//	Logger eventsLogger = Logger.getLogger("EVENTS");
+	// standard service header ---------------------------------------
+	response.setContentType("text/xml");
+	int errCode = 0;
+	Company company = Company.getCompany(request);
+    
+	boolean apiEnabled = "on".equals(Utils.getSysConfig(session.getServletContext(), company.getCompanyID()).getProperty("APIEnable", "off"));
+	++errCode;
+	if (!apiEnabled) {
+		out.print("<error code=\""+errCode+"\" message=\"API not enabled in system management settings.\"/>");
+		return;
+	}
 
-	eventsLogger.debug("CCURE: entering updatescore api (events)");
+/*
+	String userID = request.getParameter("ILSUSER");
+	String userPw = request.getParameter("ILSPASSWD");
+	ILSSession ilsSession = (userID != null && userPw != null)
+			? ILSSession.login(company.getCompanyName(), userID, userPw)
+			: (ILSSession)session.getAttribute("ilsSession");
+	++errCode;
+	if (ilsSession == null) {
+		out.print("<error code=\""+errCode+"\" message=\"Your iLS sign in information is not valid.\"/>");
+		return;
+	}
+*/
+	String detail = request.getParameter("detail");
+	int detailLevel = org.crosswire.data.DataObject.DETAIL_COMPLETE;
+	if ("headeronly".equals(detail)) detailLevel = org.crosswire.data.DataObject.DETAIL_HEADERONLY;
+	else if ("brief".equals(detail)) detailLevel = org.crosswire.data.DataObject.DETAIL_BRIEF;
+	// end standard service header -----------------------------------
+	
 
-//	String apiRoot = Utils.getSysConfig(session).getProperty("CCUREVWSRoot", "https://161.243.232.7/victorwebservice");
-	String apiRoot = Utils.getSysConfig(session).getProperty("CCUREVWSRoot", "http://labs.crosswire.org/victorwebservice");
-	if (!apiRoot.endsWith("/")) apiRoot+="/";
+	Logger logger = Logger.getLogger(this.getClass());
+	Logger eventsLogger = Logger.getLogger("EVENTS");
 
-	String ccureUser = Utils.getSysConfig(session).getProperty("CCUREUser", "ccureappmgr");
-	String ccurePassword = Utils.getSysConfig(session).getProperty("CCUREPassword", "orangePark101");
-	String loginURL = apiRoot + "api/Authenticate/Login";
-	String loginParams = "userName="+URLEncoder.encode(ccureUser, "UTF-8")+"&password="+URLEncoder.encode(ccurePassword, "UTF-8")+"&clientName=SSI_iLS";
-	String loginHeaders[] = { "Access-Control-Expose-Headers: session-id" };
 
-	StringBuffer result = HTTPUtils.postURL(loginURL, loginParams, null, null, loginHeaders, HTTPUtils.GET);
-%>
-<%=result%>
-<%
-if (true) return;
-/*
-url:
-
-dataType: JSON, // JSON or XML
-crossDomain: true,
-headers: {
-},
-cache: false,
-success: function (msg, status, jqXHR) {
-var result = msg;
-sessionID = jqXHR.getResponseHeader("session-id");
-token = result;
-}
-});
-
 	Map<String, String> courses = new HashMap<String, String>();
 	int i = 1;
 	while (true) {
 		String courseName = Utils.getSysConfig(session).getProperty("CCURECourse."+i);
-		String courseField = Utils.getSysConfig(session).getProperty("CCUREFieldCourseResult."+i);
-		if (courseName != null && courseField != null)
-			courses.put(courseName, courseField);
+//		String courseField = Utils.getSysConfig(session).getProperty("CCUREFieldCourseResult."+i);
+		if (courseName != null) {
+			courses.put(courseName, Integer.toString(i));
+		}
 		else break;
 		i++;
 	}
 	// if our configuration isn't specifying course names and fields, then populate with defaults
 	if (courses.size() == 0) {
-		courses.put("Security Awareness", "Text15");
-		courses.put("SIDA", "Text16");
-		courses.put("Authorized Signer", "Text17");
-		courses.put("Non-Movement Area Drivers Training", "Text18");
-		courses.put("Movement Area Drivers Training", "Text19");
+		courses.put("Ramp Driving", "1");
+		courses.put("Airfield Driving", "2");
+		courses.put("SIDA", "4");
+		courses.put("Sterile", "5");
 	}
 	
-	
-	
+	String userData = request.getParameter("userProfileUserData");
+	String caCompleteDateString = request.getParameter("completeDate");
+	String caStatusDescription = request.getParameter("statusDescription");
+	String courseName = request.getParameter("courseName");
+	String caScore = request.getParameter("score");
 
-    boolean apiEnabled = "on".equals(Utils.getSysConfig(session).getProperty("APIEnable", "off"));
-	if (!apiEnabled) {
-		out.print("API not enabled in system management settings.");
-		return;
-	}
-	String errorMsg = "";
-	//-- Company logic from login.jsp -------
-	// TODO: consolidate this somewhere
-    String requestURL = request.getRequestURL().toString() + "?" + request.getQueryString();
-    String co = com.resolutions.ils.Utils.getCompanyFromConfig(session, requestURL);
-    if (co == null) co = com.resolutions.ils.Utils.getSysConfig(session).getProperty("Company", null);
-    if (co == null) co = request.getParameter("co");
-    if (co != null) session.setAttribute("co", co);
-    co = (String) session.getAttribute("co");
-    Company company = Company.getCompany((co != null) ? Integer.parseInt(co):1);
-    //-----------------------
-    
-    
-    
-    String userData = request.getParameter("USERDATA");
-    String caCompleteDateString = request.getParameter("CACOMPLETEDATE");
-    String caStatusDescription = request.getParameter("CASTATUSDESC");
-    String courseName = request.getParameter("COURSNAME");
+	if (userData != null) {
 
-    eventsLogger.debug("CCURE: userData="+userData+"; caCompleteDate="+caCompleteDateString+"; caStatusDesc="+caStatusDescription+"; courseName="+courseName);
+		eventsLogger.debug("CCURE: userData="+userData+"; caCompleteDate="+caCompleteDateString+"; caStatusDesc="+caStatusDescription+"; courseName="+courseName+"; caScore="+caScore);
 
-    String statusMsg = "";
-    SimpleDateFormat df  = new SimpleDateFormat("MM/dd/yyyy");
-    
-    int personID = -1; try { personID = Integer.parseInt(userData); } catch (Exception e) {}
-    Date caCompleteDate = new Date(); try { caCompleteDate = new SimpleDateFormat().parse(caCompleteDateString); } catch (Exception e) {}
-    String fieldName = null;
-    String fieldData = null;
-    
-    fieldName = courses.get(courseName);
-    
-    if (personID < 0) {
-    	errorMsg = "You must pass a valid personID as USERDATA";
-    }
-    else if (caCompleteDate == null) {
-    	errorMsg = "You must pass a valid Course Completion Date as CACOMPLETEDATE";
-    }
-    else if (!"PASSED".equals(caStatusDescription) && !"FAILED".equals(caStatusDescription)) {
-    	errorMsg = "You must pass a valid Course Completion Status as CASTATUSDESC. Valid values: \n";
-    	errorMsg += "PASSED \n";
-    	errorMsg += "FAILED \n";
-    }
-    else if (fieldName == null) {
-    	errorMsg = "You must pass a valid Course CCURE Course Name as COURSNAME. Valid course Names: \n";
-    	for (String cName : courses.keySet()) {
-    		errorMsg += cName + " \n";
-    	}
-    }
-    else {
-	   	
-		Class.forName("com.ddtek.jdbc.openedge.OpenEdgeDriver").newInstance();
-		Connection connection = DriverManager.getConnection(jdbcURL, ccureDBUser, ccureDBPassword);
-		
-	    String sql = "UPDATE Pub.Person SET " + fieldName + "=? WHERE Person_ID=?";
-//	   	fieldData = courseName + " " + df.format(caCompleteDate);
-	   	fieldData = ("PASSED".equals(caStatusDescription)) ? "Passed" : "Failed";
-	   	fieldData += " " + df.format(caCompleteDate);
+		String statusMsg = "";
+		SimpleDateFormat df  = new SimpleDateFormat("yyyy-MM-dd");
+
+		int personID = -1; try { personID = Integer.parseInt(userData); } catch (Exception e) {}
+		Date caCompleteDate = new Date(); try { caCompleteDate = new SimpleDateFormat().parse(caCompleteDateString); } catch (Exception e) {}
+		String fieldName = null;
+		String fieldData = null;
+
+		fieldName = courses.get(courseName);
+
+		++errCode;
+		if (personID < 0) {
+			out.print("<error code=\""+errCode+"\" message=\"You must pass a valid personID as userProfileUserData.\"/>");
+			return;
+		}
+		++errCode;
+		if (caCompleteDate == null) {
+			out.print("<error code=\""+errCode+"\" message=\"You must pass a valid Course Completion Date as completeDate.\"/>");
+			return;
+		}
+		++errCode;
+		if (caScore == null) {
+			out.print("<error code=\""+errCode+"\" message=\"You must pass a valid Course Completion Score as score.\"/>");
+			return;
+		}
+		++errCode;
+		if (!"PASSED".equals(caStatusDescription) && !"FAILED".equals(caStatusDescription)) {
+			out.print("<error code=\""+errCode+"\" message=\"You must pass a valid Course Completion Status as statusDescription. Valid values: [PASSED,FAILED]\"/>");
+			return;
+		}
+		++errCode;
+		if (fieldName == null) {
+			out.print("<error code=\""+errCode+"\" message=\"You must pass a valid Course CCURE Course Name as courseName. Valid course Names: [");
+			boolean first = true;
+			for (String cName : courses.keySet()) {
+				out.print((first?"":",") + HTTPUtils.canonize(cName));
+				first = false;
+			}
+			out.print("\"/>");
+			return;
+		}
+
+		eventsLogger.debug("CCURE: entering updatescore api (events)");
+
+		String errorMsg = "FAILED";
+
+		String apiRoot = Utils.getSysConfig(session).getProperty("CCUREVWSRoot", "https://161.243.232.7/victorwebservice/api");
+		if (!apiRoot.endsWith("/")) apiRoot+="/";
+
+		String ccureUser = Utils.getSysConfig(session).getProperty("CCUREUser", "JAA\\ccureappmgr");
+		String ccurePassword = Utils.getSysConfig(session).getProperty("CCUREPassword", "orangePark101");
+		String token = null;
+		String sessionID = null;
+
+		String url = apiRoot + "Authenticate/Login";
+		String params = "";
+		params += "userName="+URLEncoder.encode(ccureUser, "UTF-8");
+		params +="&password="+URLEncoder.encode(ccurePassword, "UTF-8");
+		params +="&clientName=SSI";
+		String headers[] = { "Access-Control-Expose-Headers", "session-id" };
+
+		StringBuffer result = new StringBuffer();
+		HTTPUtils.Response httpResponse = new HTTPUtils.Response();
+		++errCode;
 		try {
-		    PreparedStatement stmt = connection.prepareStatement(sql);
-		    stmt.setString(1, fieldData);
-		    stmt.setInt(2, personID);
-		    int count = stmt.executeUpdate();
-            if (count == 1) {
-				eventsLogger.debug("CCURE: Successfully wrote: " + fieldName + ": " + fieldData + "; Person_ID: " + personID);
-				if (fieldData.equals(checkDBWrite(eventsLogger, jdbcURL, ccureDBUser, ccureDBPassword, personID, fieldName))) {
-	            	errorMsg = "OK";
-				}
-            }
-            else {
-				eventsLogger.debug("CCURE: Failed to write: " + fieldName + ": " + fieldData + "; Person_ID: " + personID);
-				errorMsg = "Couldn't update personID [" + personID + "] in the CCURE Database. No result rows modified on update.";
-		    }
+			result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.GET, false, httpResponse);
+			token = result.toString().trim();
+			if (token.startsWith("\"")) token = token.substring(1);
+			if (token.endsWith("\"")) token = token.substring(0,token.length()-1);
+			sessionID = httpResponse.headers.get("session-id");
+logger.debug("token: " + token + "; sessionID: " + sessionID);
 		}
 		catch (Exception e) {
-			errorMsg = "Failure to update personID [" + personID + "] from the CCURE Database: " + e + " SQL: " + sql + "; fieldData: " + fieldData;
-			eventsLogger.debug("CCURE: Exception, Failed to write: " + fieldName + ": " + fieldData + "; Person_ID: " + personID + "; exception: " + e);
 			e.printStackTrace();
-			errorMsg = "FAILED: " + e;
+			out.print("<error code=\""+errCode+"\" message=\""+e+"\"/>");
+			return;
 		}
-		finally {
-			connection.close();
+
+		params = "";
+		params += "PropertyNames="+URLEncoder.encode("UDF__TRAINING_COURSE_"+fieldName+"_", "UTF-8");
+		params += "&PropertyValues="+URLEncoder.encode(courseName, "UTF-8");
+		params += "&PropertyNames="+URLEncoder.encode("UDF__TRAINING_DATE_"+fieldName+"_", "UTF-8");
+		params += "&PropertyValues="+URLEncoder.encode(df.format(caCompleteDate), "UTF-8");
+		params += "&PropertyNames="+URLEncoder.encode("UDF__TRAINING_SCORE_"+fieldName+"_", "UTF-8");
+		params += "&PropertyValues="+URLEncoder.encode(caScore, "UTF-8");
+		params += "&PropertyNames="+URLEncoder.encode("UDF__TRAINING_ACTIVE_"+fieldName+"_", "UTF-8");
+		params += "&PropertyValues="+URLEncoder.encode("PASSED".equals(caStatusDescription)?"true":"false", "UTF-8");
+//		params += "&PropertyNames="+URLEncoder.encode("UDF__TRAINING_EXPIRES_"+fieldName+"_", "UTF-8");
+//		params += "&PropertyValues="+URLEncoder.encode(df.format(caCompleteDate), "UTF-8");
+//
+		headers = new String[] {
+			"Access-Control-Expose-Headers", "session-id",
+			"session-id", sessionID
+		};
+
+		url = apiRoot + "Objects/Put/Personnel/"+Integer.toString(personID)+"?token="+URLEncoder.encode(token, "UTF-8");
+
+		try {
+			result = HTTPUtils.postURL(url, params, null, null, headers, HTTPUtils.PUT, false, httpResponse);
+			if (httpResponse.resultCode < 200 || httpResponse.resultCode > 299) {
+				out.print("<error code=\""+errCode+"\" message=\"CCURE error response: ("+httpResponse.resultCode+") " + HTTPUtils.canonize(result.toString())+"\"/>");
+				return;
+			}
+			errorMsg = "OK";
 		}
-    }
-eventsLogger.debug("CCURE: updatescore returning: " + errorMsg);
-   	%><%= errorMsg %><%
-*/
-%>
-<%!
-public static String checkDBWrite(Logger eventsLogger, String jdbcURL, String ccureDBUser, String ccureDBPassword, int personID, String fieldName) {
-	eventsLogger.debug("CCURE: Attempting to verify write to ccure database: " + fieldName + "; Person_ID: " + personID);
+		catch (Exception e) { e.printStackTrace(); }
 
-	Connection connection = null;
-	String retVal = null;
-		
-	String sql = "SELECT " + fieldName + " FROM Pub.Person WHERE Person_ID=?";
-	try {
-		connection = DriverManager.getConnection(jdbcURL, ccureDBUser, ccureDBPassword);
-		PreparedStatement stmt = connection.prepareStatement(sql);
-		stmt.setInt(1, personID);
-	    ResultSet rs = stmt.executeQuery();
-        while (rs.next()) {
-	        ResultSetMetaData meta = rs.getMetaData();
-	        int colCount = meta.getColumnCount();
-        	for (int i = 0; i < colCount; i++) {
-	            String colName = meta.getColumnName(i + 1);
-	            Object o = rs.getObject(i + 1);
-				eventsLogger.debug("CCURE: checkDBWrite: " + colName + ": " + o);
-				retVal = o.toString();
-           	}
+
+		if (!"OK".equals(errorMsg)) {
+			eventsLogger.debug("CCURE: Failed to write results for: courseName=["+courseName+"] to CCURE Personnel ObjectID: ["+personID+"]");
+			errorMsg = "Couldn't update personID [" + personID + "] in the CCURE Database. No result rows modified on update.";
 		}
+		eventsLogger.debug("CCURE: updatescore returning: " + errorMsg);
+
+		response.setContentType("text/plain");
+		out.print(errorMsg);
+
+		return;
 	}
-	catch (Exception e) {
-		eventsLogger.debug("CCURE: ccure database read failed: " + fieldName + "; Person_ID: " + personID + "; exception: " + e);
-			e.printStackTrace();
-	}
-	finally {
-		try {
-			if (connection != null) connection.close();
-		}
-		catch (Exception e) {}
-	}
-	return retVal;
-}
+	response.setContentType("text/html");
 %>
+<html>
+<style>th { text-align:left; }</style>
+<body>
+<h1>ccure/updatescore.vws</h1>
+<p>Update a CCURE Personnel record with a training course result</p>
+<h3>Parameters</h3>
+<table border="1">
+<tbody>
+<tr><th>userProfileUserData</th><td>the CCURE ObjectID for the Personnel Record to update</td></tr>
+<tr><th>completeDate</th><td>course completion date</td></tr>
+<tr><th>statusDescription</th><td>result status of the course attempt: PASSED or FAILED</td></tr>
+<tr><th>courseName</th><td>course name</td></tr>
+<tr><th>score</th><td>result score</td></tr>
+<tr><th>ILSUSER</th><td>ILS Login Credentials. Used to validate this API request.</td></tr>
+<tr><th>ILSPASSWD</th><td>ILS Login Credentials. Used to validate this API request.</td></tr>
+</tbody>
+<table>
+</body>
+</html>




More information about the Ils-source mailing list