[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