[Ils-source] r1420 - in branches/1.6: . db/mssql src/com/resolutions/ils/data webapp/WEB-INF/lib webapp/api/ccure webapp/api/ccure/ccureuser webapp/api/ccure/ccureuser/get webapp/api/ccure/test webapp/api/ccure/updatescore.db webapp/api/ccure/updatescore.vws webapp/api/ccure/user webapp/api/ccure/user/put
scribe at crosswire.org
scribe at crosswire.org
Sun Apr 3 18:09:58 MST 2016
Author: scribe
Date: 2016-04-03 18:09:58 -0700 (Sun, 03 Apr 2016)
New Revision: 1420
Added:
branches/1.6/db/mssql/upgrade1.80.5-2.sql
branches/1.6/webapp/WEB-INF/lib/commons-codec-1.9.jar
branches/1.6/webapp/WEB-INF/lib/commons-io-1.3.1.jar
branches/1.6/webapp/WEB-INF/lib/commons-logging-1.2.jar
branches/1.6/webapp/WEB-INF/lib/httpclient-4.5.2.jar
branches/1.6/webapp/WEB-INF/lib/httpclient-cache-4.5.2.jar
branches/1.6/webapp/WEB-INF/lib/httpcore-4.4.4.jar
branches/1.6/webapp/WEB-INF/lib/httpmime-4.5.2.jar
branches/1.6/webapp/api/ccure/ccureuser/
branches/1.6/webapp/api/ccure/ccureuser/get/
branches/1.6/webapp/api/ccure/ccureuser/get/index.jsp
branches/1.6/webapp/api/ccure/test/
branches/1.6/webapp/api/ccure/test/index.jsp
branches/1.6/webapp/api/ccure/updatescore.db/
branches/1.6/webapp/api/ccure/updatescore.db/index.jsp
branches/1.6/webapp/api/ccure/updatescore.vws/
branches/1.6/webapp/api/ccure/updatescore.vws/index.jsp
branches/1.6/webapp/api/ccure/user/
branches/1.6/webapp/api/ccure/user/put/
branches/1.6/webapp/api/ccure/user/put/index.jsp
Removed:
branches/1.6/webapp/WEB-INF/lib/commons-codec-1.4.jar
branches/1.6/webapp/WEB-INF/lib/commons-io-1.1.jar
branches/1.6/webapp/WEB-INF/lib/commons-logging-1.1.1.jar
branches/1.6/webapp/WEB-INF/lib/httpclient-4.1.2.jar
branches/1.6/webapp/WEB-INF/lib/httpclient-cache-4.1.2.jar
branches/1.6/webapp/WEB-INF/lib/httpcore-4.1.2.jar
branches/1.6/webapp/WEB-INF/lib/httpmime-4.1.2.jar
branches/1.6/webapp/api/ccure/ccureuser/get/
branches/1.6/webapp/api/ccure/ccureuser/get/index.jsp
branches/1.6/webapp/api/ccure/test/index.jsp
branches/1.6/webapp/api/ccure/updatescore.db/index.jsp
branches/1.6/webapp/api/ccure/updatescore.vws/index.jsp
branches/1.6/webapp/api/ccure/updatescore/
branches/1.6/webapp/api/ccure/user/put/
branches/1.6/webapp/api/ccure/user/put/index.jsp
Modified:
branches/1.6/
branches/1.6/db/mssql/ilsdb.sql
branches/1.6/src/com/resolutions/ils/data/Course.java
branches/1.6/src/com/resolutions/ils/data/Group.java
branches/1.6/webapp/WEB-INF/lib/crosswire.jar
branches/1.6/webapp/WEB-INF/lib/ils.jar
branches/1.6/webapp/WEB-INF/lib/mail.jar
Log:
Merged in new CCURE integration module for JAX
Updated crosswire.jar to latest + newest dependencies
Included missing *WITHGROUPS VIEW which should have been included with 1.80.5 release
Property changes on: branches/1.6
___________________________________________________________________
Modified: svn:mergeinfo
- /trunk:796-1303,1306-1307,1309-1311,1319-1320,1322-1323,1325,1328-1330,1332,1334-1335,1337,1339,1349-1356,1359-1365,1369,1373-1374,1380-1383,1391,1393,1402-1404,1409
+ /trunk:796-1303,1306-1307,1309-1311,1319-1320,1322-1323,1325,1328-1330,1332,1334-1335,1337,1339,1349-1356,1359-1365,1369,1373-1374,1380-1383,1391,1393,1401-1404,1407,1409,1412,1416-1419
Modified: branches/1.6/db/mssql/ilsdb.sql
===================================================================
--- branches/1.6/db/mssql/ilsdb.sql 2016-04-04 00:35:18 UTC (rev 1419)
+++ branches/1.6/db/mssql/ilsdb.sql 2016-04-04 01:09:58 UTC (rev 1420)
@@ -1,46 +1,50 @@
-CREATE TABLE ILSGROUP (COMPANYID INTEGER NOT NULL, ILSGROUPID INTEGER IDENTITY(1,1) NOT NULL, GROUPNAME VARCHAR(75) NOT NULL, GROUPDESC VARCHAR(255), GROUPTYPEID INTEGER, USERDATA VARCHAR(80), CONSTRAINT ILSGROUPPK1 PRIMARY KEY (COMPANYID, ILSGROUPID))
-CREATE TABLE COURSE (COMPANYID INTEGER NOT NULL, COURSID INTEGER IDENTITY(1,1) NOT NULL, COURSNUM VARCHAR(20) NOT NULL, COURSNAME VARCHAR(100), COURSDESC VARCHAR(500), COURSTYPEID INTEGER, COURSPASS INTEGER, COURSPASSEXPDAYS INTEGER, COURSREASBEFDAYS INTEGER, COURSURL VARCHAR(255), COURSCKLISTURL VARCHAR(255), COURSCOST FLOAT, COURSSEATMINS INTEGER, COURSISCURRICULUM CHAR(1), COURSISQUICKVIEW CHAR(1), COURSPOSTDATE DATETIME, COURSISACTIVE CHAR(1), COURSISIPRESTRICTED char(1), COURSREQMGRAPPRVL CHAR(1), USERDATA VARCHAR(80), COURSISCURRICCERT char(1) DEFAULT 'F', CONSTRAINT COURSEPK1 PRIMARY KEY (COMPANYID, COURSID))
-
-CREATE TABLE USERPROFILE (COMPANYID INTEGER NOT NULL, USERPRID INTEGER IDENTITY(1,1) NOT NULL, USERPRNUM VARCHAR(50) NOT NULL, USERPRPASSWD VARCHAR(20), USERPRMNAME VARCHAR(40), USERPRSNAME VARCHAR(40), USERPRFNAME VARCHAR(40), USERPRLNAME VARCHAR(40), USERPRSTATUSID INTEGER, USERPRADDR1 VARCHAR(60),USERPRADDR2 VARCHAR(60),USERPRCITY VARCHAR(30),USERPRSTATE VARCHAR(2),USERPRZIP VARCHAR(12),USERPRCOUNTRY VARCHAR(50),USERPREMAIL VARCHAR(50), USERPRPHONE VARCHAR(50), USERPREMPTITLEID INTEGER, USERPRLASTLOGIN TIMESTAMP, USERPRACCESSLEVEL INTEGER, USERPRACCESSMOD INTEGER, USERPRINACTDATE DATETIME, USERPRHIREDATE DATETIME, USERPRTERMDATE DATETIME, USERPRIPRESTRICTOVERRIDE char(1), USERDATA VARCHAR(80), USERPRSECONDLOGINOVERRIDE char(1) DEFAULT 'F', USERPMGRRECUREMAILSOVERRIDE char(1) DEFAULT 'F', CONSTRAINT USERPROFILEPK1 PRIMARY KEY (COMPANYID, USERPRID))
-CREATE TABLE ANNOUNCEMENT (COMPANYID INTEGER NOT NULL, ANNOUNCID INTEGER IDENTITY(1,1) NOT NULL, ANNOUNCTITLE VARCHAR(100), ANNOUNCMESSAGE VARCHAR(255), ANNOUNCEXP DATETIME, ANNOUNCURL VARCHAR(255), ANNOUNCPOSTDATE DATETIME, USERDATA VARCHAR(80), CONSTRAINT ANNOUNCEMENTPK1 PRIMARY KEY (COMPANYID, ANNOUNCID))
-CREATE TABLE RESOURCE (COMPANYID INTEGER NOT NULL, RESOURCID INTEGER IDENTITY(1,1) NOT NULL, RESOURCTITLE VARCHAR(100), RESOURCMESSAGE VARCHAR(255), RESOURCEXP DATETIME, RESOURCURL VARCHAR(255), RESOURCPOSTDATE DATETIME, RESOURCTYPE INTEGER, USERDATA VARCHAR(80), CONSTRAINT RESOURCEPK1 PRIMARY KEY (COMPANYID, RESOURCID))
-CREATE TABLE USERGROUP (COMPANYID INTEGER NOT NULL, USERPRID INTEGER NOT NULL, ILSGROUPID INTEGER NOT NULL, CONSTRAINT USERGROUPPK1 PRIMARY KEY (COMPANYID, USERPRID, ILSGROUPID))
-CREATE TABLE COURSEATTEMPT (COMPANYID INTEGER NOT NULL, COURSATTID INTEGER IDENTITY(1,1) NOT NULL, USERPRID INTEGER NOT NULL, COURSID INTEGER NOT NULL, CASTARTDATE DATETIME, CACOMPLETEDATE DATETIME, CASCORE INTEGER, CASTATUSID INTEGER, CASTAGE TEXT, CAISMGRAPPRVL CHAR(1), CAWARNEDON1 DATETIME, CAWARNEDON2 DATETIME, CAWARNEDON3 DATETIME, CAWARNEDON4 DATETIME, CAEXPIREDON DATETIME, CAEXPREASON NVARCHAR(80), CAFORCEPASSON DATETIME, CAFORCEPASSREASON NVARCHAR(80), CACALLBACKSTATUS VARCHAR(50), CONSTRAINT COURSEATTEMPTPK1 PRIMARY KEY (COMPANYID, COURSATTID))
-CREATE TABLE COMPLIANCE (COMPANYID INTEGER NOT NULL, COMPLCID INTEGER IDENTITY(1,1) NOT NULL, COMPLCNAME VARCHAR(40), CONSTRAINT COMPLIANCEPK1 PRIMARY KEY (COMPANYID, COMPLCID))
-CREATE TABLE COURSECOMPLC (COMPANYID INTEGER NOT NULL, COURSID INTEGER NOT NULL, COMPLCID INTEGER NOT NULL, CONSTRAINT COURSECOMPLCPK1 PRIMARY KEY (COMPANYID, COURSID, COMPLCID))
-CREATE TABLE COURSEGROUP (COMPANYID INTEGER NOT NULL, COURSID INTEGER NOT NULL, ILSGROUPID INTEGER NOT NULL, SORTORDER INTEGER, CONSTRAINT COURSEGROUPPK1 PRIMARY KEY (COMPANYID, COURSID, ILSGROUPID))
-CREATE TABLE MANAGERGROUP (COMPANYID INTEGER NOT NULL, USERPRID INTEGER NOT NULL, ILSGROUPID INTEGER NOT NULL, CONSTRAINT MANAGERGROUPPK1 PRIMARY KEY (COMPANYID, USERPRID, ILSGROUPID))
-CREATE TABLE COURSEATTSTATUS (COMPANYID INTEGER NOT NULL, CASTATUSID INTEGER NOT NULL, CASTATUSDESC VARCHAR(40), CONSTRAINT COURSATTSTATUSPK1 PRIMARY KEY (COMPANYID, CASTATUSID))
-CREATE TABLE COMPANY (COMPANYID INTEGER IDENTITY(1,1) NOT NULL, CONAME VARCHAR(40), COFUNDSAVAIL FLOAT, COPERSEATCOST FLOAT, COADMINCONTACTNM VARCHAR(127), COADMINCONTACTEM VARCHAR(127), COADMINCONTACTPH VARCHAR(127), COLOGOURL VARCHAR(127), COCOPYRIGHT VARCHAR(253), CONSTRAINT COMPANYPK1 PRIMARY KEY (COMPANYID))
-CREATE TABLE SYSCONF (COMPANYID INTEGER NOT NULL, SYSCFCOLLABURL VARCHAR(253), SYSCFEMAILSRV VARCHAR(126), CONSTRAINT SYSCONFPK1 PRIMARY KEY (COMPANYID))
-CREATE TABLE CURRICULUMCOURSE (COMPANYID INTEGER NOT NULL, CURRICULUMID INTEGER NOT NULL, COURSID INTEGER NOT NULL, SORTORDER INTEGER, CONSTRAINT CURRICULUMCOURSEPK1 PRIMARY KEY (COMPANYID, CURRICULUMID, COURSID))
-CREATE TABLE EMPTITLE (COMPANYID INTEGER NOT NULL, EMPTITLEID INTEGER IDENTITY(1,1) NOT NULL, EMPTITLENAME VARCHAR(40), EMPTITLEDESC VARCHAR(80), USERDATA VARCHAR(80), CONSTRAINT EMPTITLEPK1 PRIMARY KEY (COMPANYID, EMPTITLEID))
-CREATE TABLE GROUPTYPE (COMPANYID INTEGER NOT NULL, GROUPTYPEID INTEGER NOT NULL, GROUPTYPENAME VARCHAR(40), GROUPTYPEDESC VARCHAR(80), CONSTRAINT GROUPTYPEPK1 PRIMARY KEY (COMPANYID, GROUPTYPEID))
-CREATE TABLE COURSETYPE (COMPANYID INTEGER NOT NULL, COURSETYPEID INTEGER NOT NULL, COURSETYPENAME VARCHAR(40), COURSETYPEDESC VARCHAR(80), CONSTRAINT COURSETYPEPK1 PRIMARY KEY (COMPANYID, COURSETYPEID))
-CREATE TABLE SECURITYMODE (COMPANYID INTEGER NOT NULL, SECMODDESC VARCHAR(75) NOT NULL, SECMODVAL INTEGER NOT NULL, CONSTRAINT SECURITYMODEPK1 PRIMARY KEY (COMPANYID, SECMODDESC))
-INSERT INTO COMPANY (CONAME, COFUNDSAVAIL, COPERSEATCOST, COLOGOURL, COCOPYRIGHT) VALUES ('ILS', 0.00, 0.00, 'images/logo.gif', 'Copyright (C) 2006 ILS')
-INSERT INTO SYSCONF (COMPANYID, SYSCFCOLLABURL, SYSCFEMAILSRV) VALUES (1, 'http://crosswire.org/forums', 'mail.crosswire.org')
-INSERT INTO COURSEATTSTATUS (COMPANYID, CASTATUSID, CASTATUSDESC) VALUES (1, 0, 'NEW')
-INSERT INTO COURSEATTSTATUS (COMPANYID, CASTATUSID, CASTATUSDESC) VALUES (1, 1, 'PASSED')
-INSERT INTO COURSEATTSTATUS (COMPANYID, CASTATUSID, CASTATUSDESC) VALUES (1, 2, 'FAILED')
-INSERT INTO COURSEATTSTATUS (COMPANYID, CASTATUSID, CASTATUSDESC) VALUES (1, 3, 'IN PROGRESS')
-INSERT INTO GROUPTYPE (COMPANYID, GROUPTYPEID, GROUPTYPENAME, GROUPTYPEDESC) VALUES (1, 1, 'Role', 'Groups of Roles')
-INSERT INTO GROUPTYPE (COMPANYID, GROUPTYPEID, GROUPTYPENAME, GROUPTYPEDESC) VALUES (1, 2, 'Location', 'Groups of Locations')
-INSERT INTO COURSETYPE (COMPANYID, COURSETYPEID, COURSETYPENAME, COURSETYPEDESC) VALUES (1, 1, 'AICC / HACP', 'AICC / HACP')
-INSERT INTO COURSETYPE (COMPANYID, COURSETYPEID, COURSETYPENAME, COURSETYPEDESC) VALUES (1, 2, 'eXpress course', 'eXpress course')
-INSERT INTO USERPROFILE (COMPANYID, USERPRNUM, USERPRPASSWD, USERPRFNAME, USERPRLNAME, USERPRSTATUSID, USERPRACCESSLEVEL) VALUES (1, 'admin', 'Administrator1', 'Admin', 'Admin', 1, 3)
-INSERT INTO SECURITYMODE (COMPANYID, SECMODDESC, SECMODVAL) VALUES (1, 'Default Manager', 8)
-INSERT INTO SECURITYMODE (COMPANYID, SECMODDESC, SECMODVAL) VALUES (1, 'Badging Officer', 520)
-INSERT INTO SECURITYMODE (COMPANYID, SECMODDESC, SECMODVAL) VALUES (1, 'Course Developer', 9)
-
-
-
--- run separately
-
-CREATE VIEW USERCOURSEASSIGNMENTS WITH SCHEMABINDING AS SELECT DISTINCT T2.COMPANYID, T2.USERPRID, COALESCE (T9.COURSID, T1.COURSID) AS COURSID FROM dbo.USERGROUP AS T2 INNER JOIN dbo.COURSEGROUP AS T3 ON T3.COMPANYID = T2.COMPANYID AND T3.ILSGROUPID = T2.ILSGROUPID INNER JOIN dbo.COURSE AS T1 ON T1.COMPANYID = T3.COMPANYID AND T1.COURSID = T3.COURSID LEFT OUTER JOIN dbo.CURRICULUMCOURSE AS T5 ON T5.COMPANYID = T1.COMPANYID AND T5.CURRICULUMID = T1.COURSID AND T1.COURSISCURRICULUM = 'T' LEFT OUTER JOIN dbo.COURSE AS T9 ON T5.COMPANYID IS NOT NULL AND T9.COMPANYID = T5.COMPANYID AND T9.COURSID = T5.COURSID WHERE (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM IS NULL) AND (T9.COURSID IS NULL) AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM IS NULL) AND (T9.COURSID IS NOT NULL) AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM <> 'T') AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NOT NULL) AND (T1.COURSISCURRICULUM <> 'T') AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') AND (T1.COURSID <> T9.COURSID) OR (T9.COURSID IS NOT NULL) AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') AND (T1.COURSID <> T9.COURSID);
-
-
-CREATE VIEW COURSEATTEMPTSTATUS WITH SCHEMABINDING AS SELECT CA.COMPANYID, CA.USERPRID, CA.COURSID, CA.COURSATTID, CA.CACOMPLETEDATE, CA.CAEXPIREDON, COALESCE(CA.CASTATUSID, 0) AS CASTATUSID, CASE COALESCE(CA.CASTATUSID, 0) WHEN 3 THEN 1 WHEN 0 THEN 1 ELSE 0 END AS CRS_OPEN, CASE COALESCE(CA.CASTATUSID, 0) WHEN 1 THEN 1 ELSE 0 END AS CRS_COMPLETED, CASE COALESCE(CA.CASTATUSID, 0) WHEN 2 THEN 1 ELSE 0 END AS CRS_FAILED FROM DBO.COURSEATTEMPT CA;
-
-
-CREATE NONCLUSTERED INDEX CAEXPIREDONINDEX ON COURSEATTEMPT (COMPANYID,CAEXPIREDON) INCLUDE (USERPRID,COURSID,CACOMPLETEDATE,CASTATUSID);
+CREATE TABLE ILSGROUP (COMPANYID INTEGER NOT NULL, ILSGROUPID INTEGER IDENTITY(1,1) NOT NULL, GROUPNAME VARCHAR(75) NOT NULL, GROUPDESC VARCHAR(255), GROUPTYPEID INTEGER, USERDATA VARCHAR(80), CONSTRAINT ILSGROUPPK1 PRIMARY KEY (COMPANYID, ILSGROUPID))
+CREATE TABLE COURSE (COMPANYID INTEGER NOT NULL, COURSID INTEGER IDENTITY(1,1) NOT NULL, COURSNUM VARCHAR(20) NOT NULL, COURSNAME VARCHAR(100), COURSDESC VARCHAR(500), COURSTYPEID INTEGER, COURSPASS INTEGER, COURSPASSEXPDAYS INTEGER, COURSREASBEFDAYS INTEGER, COURSURL VARCHAR(255), COURSCKLISTURL VARCHAR(255), COURSCOST FLOAT, COURSSEATMINS INTEGER, COURSISCURRICULUM CHAR(1), COURSISQUICKVIEW CHAR(1), COURSPOSTDATE DATETIME, COURSISACTIVE CHAR(1), COURSISIPRESTRICTED char(1), COURSREQMGRAPPRVL CHAR(1), USERDATA VARCHAR(80), COURSISCURRICCERT char(1) DEFAULT 'F', COURSCERTGEN VARCHAR(60) DEFAULT null, CONSTRAINT COURSEPK1 PRIMARY KEY (COMPANYID, COURSID))
+
+CREATE TABLE USERPROFILE (COMPANYID INTEGER NOT NULL, USERPRID INTEGER IDENTITY(1,1) NOT NULL, USERPRNUM VARCHAR(50) NOT NULL, USERPRPASSWD VARCHAR(20), USERPRMNAME VARCHAR(40), USERPRSNAME VARCHAR(40), USERPRFNAME VARCHAR(40), USERPRLNAME VARCHAR(40), USERPRSTATUSID INTEGER, USERPRADDR1 VARCHAR(60),USERPRADDR2 VARCHAR(60),USERPRCITY VARCHAR(30),USERPRSTATE VARCHAR(2),USERPRZIP VARCHAR(12),USERPRCOUNTRY VARCHAR(50),USERPREMAIL VARCHAR(50), USERPRPHONE VARCHAR(50), USERPREMPTITLEID INTEGER, USERPRLASTLOGIN TIMESTAMP, USERPRACCESSLEVEL INTEGER, USERPRACCESSMOD INTEGER, USERPRINACTDATE DATETIME, USERPRHIREDATE DATETIME, USERPRTERMDATE DATETIME, USERPRIPRESTRICTOVERRIDE char(1), USERDATA VARCHAR(80), USERPRSECONDLOGINOVERRIDE char(1) DEFAULT 'F', USERPMGRRECUREMAILSOVERRIDE char(1) DEFAULT 'F', CONSTRAINT USERPROFILEPK1 PRIMARY KEY (COMPANYID, USERPRID))
+CREATE TABLE ANNOUNCEMENT (COMPANYID INTEGER NOT NULL, ANNOUNCID INTEGER IDENTITY(1,1) NOT NULL, ANNOUNCTITLE VARCHAR(100), ANNOUNCMESSAGE VARCHAR(255), ANNOUNCEXP DATETIME, ANNOUNCURL VARCHAR(255), ANNOUNCPOSTDATE DATETIME, USERDATA VARCHAR(80), CONSTRAINT ANNOUNCEMENTPK1 PRIMARY KEY (COMPANYID, ANNOUNCID))
+CREATE TABLE RESOURCE (COMPANYID INTEGER NOT NULL, RESOURCID INTEGER IDENTITY(1,1) NOT NULL, RESOURCTITLE VARCHAR(100), RESOURCMESSAGE VARCHAR(255), RESOURCEXP DATETIME, RESOURCURL VARCHAR(255), RESOURCPOSTDATE DATETIME, RESOURCTYPE INTEGER, USERDATA VARCHAR(80), CONSTRAINT RESOURCEPK1 PRIMARY KEY (COMPANYID, RESOURCID))
+CREATE TABLE USERGROUP (COMPANYID INTEGER NOT NULL, USERPRID INTEGER NOT NULL, ILSGROUPID INTEGER NOT NULL, CONSTRAINT USERGROUPPK1 PRIMARY KEY (COMPANYID, USERPRID, ILSGROUPID))
+CREATE TABLE COURSEATTEMPT (COMPANYID INTEGER NOT NULL, COURSATTID INTEGER IDENTITY(1,1) NOT NULL, USERPRID INTEGER NOT NULL, COURSID INTEGER NOT NULL, CASTARTDATE DATETIME, CACOMPLETEDATE DATETIME, CASCORE INTEGER, CASTATUSID INTEGER, CASTAGE TEXT, CAISMGRAPPRVL CHAR(1), CAWARNEDON1 DATETIME, CAWARNEDON2 DATETIME, CAWARNEDON3 DATETIME, CAWARNEDON4 DATETIME, CAEXPIREDON DATETIME, CAEXPREASON NVARCHAR(80), CAFORCEPASSON DATETIME, CAFORCEPASSREASON NVARCHAR(80), CACALLBACKSTATUS VARCHAR(50), CONSTRAINT COURSEATTEMPTPK1 PRIMARY KEY (COMPANYID, COURSATTID))
+CREATE TABLE COMPLIANCE (COMPANYID INTEGER NOT NULL, COMPLCID INTEGER IDENTITY(1,1) NOT NULL, COMPLCNAME VARCHAR(40), CONSTRAINT COMPLIANCEPK1 PRIMARY KEY (COMPANYID, COMPLCID))
+CREATE TABLE COURSECOMPLC (COMPANYID INTEGER NOT NULL, COURSID INTEGER NOT NULL, COMPLCID INTEGER NOT NULL, CONSTRAINT COURSECOMPLCPK1 PRIMARY KEY (COMPANYID, COURSID, COMPLCID))
+CREATE TABLE COURSEGROUP (COMPANYID INTEGER NOT NULL, COURSID INTEGER NOT NULL, ILSGROUPID INTEGER NOT NULL, SORTORDER INTEGER, CONSTRAINT COURSEGROUPPK1 PRIMARY KEY (COMPANYID, COURSID, ILSGROUPID))
+CREATE TABLE MANAGERGROUP (COMPANYID INTEGER NOT NULL, USERPRID INTEGER NOT NULL, ILSGROUPID INTEGER NOT NULL, CONSTRAINT MANAGERGROUPPK1 PRIMARY KEY (COMPANYID, USERPRID, ILSGROUPID))
+CREATE TABLE COURSEATTSTATUS (COMPANYID INTEGER NOT NULL, CASTATUSID INTEGER NOT NULL, CASTATUSDESC VARCHAR(40), CONSTRAINT COURSATTSTATUSPK1 PRIMARY KEY (COMPANYID, CASTATUSID))
+CREATE TABLE COMPANY (COMPANYID INTEGER IDENTITY(1,1) NOT NULL, CONAME VARCHAR(40), COFUNDSAVAIL FLOAT, COPERSEATCOST FLOAT, COADMINCONTACTNM VARCHAR(127), COADMINCONTACTEM VARCHAR(127), COADMINCONTACTPH VARCHAR(127), COLOGOURL VARCHAR(127), COCOPYRIGHT VARCHAR(253), CONSTRAINT COMPANYPK1 PRIMARY KEY (COMPANYID))
+CREATE TABLE SYSCONF (COMPANYID INTEGER NOT NULL, SYSCFCOLLABURL VARCHAR(253), SYSCFEMAILSRV VARCHAR(126), CONSTRAINT SYSCONFPK1 PRIMARY KEY (COMPANYID))
+CREATE TABLE CURRICULUMCOURSE (COMPANYID INTEGER NOT NULL, CURRICULUMID INTEGER NOT NULL, COURSID INTEGER NOT NULL, SORTORDER INTEGER, CONSTRAINT CURRICULUMCOURSEPK1 PRIMARY KEY (COMPANYID, CURRICULUMID, COURSID))
+CREATE TABLE EMPTITLE (COMPANYID INTEGER NOT NULL, EMPTITLEID INTEGER IDENTITY(1,1) NOT NULL, EMPTITLENAME VARCHAR(40), EMPTITLEDESC VARCHAR(80), USERDATA VARCHAR(80), CONSTRAINT EMPTITLEPK1 PRIMARY KEY (COMPANYID, EMPTITLEID))
+CREATE TABLE GROUPTYPE (COMPANYID INTEGER NOT NULL, GROUPTYPEID INTEGER NOT NULL, GROUPTYPENAME VARCHAR(40), GROUPTYPEDESC VARCHAR(80), CONSTRAINT GROUPTYPEPK1 PRIMARY KEY (COMPANYID, GROUPTYPEID))
+CREATE TABLE COURSETYPE (COMPANYID INTEGER NOT NULL, COURSETYPEID INTEGER NOT NULL, COURSETYPENAME VARCHAR(40), COURSETYPEDESC VARCHAR(80), CONSTRAINT COURSETYPEPK1 PRIMARY KEY (COMPANYID, COURSETYPEID))
+CREATE TABLE SECURITYMODE (COMPANYID INTEGER NOT NULL, SECMODDESC VARCHAR(75) NOT NULL, SECMODVAL INTEGER NOT NULL, CONSTRAINT SECURITYMODEPK1 PRIMARY KEY (COMPANYID, SECMODDESC))
+
+-- Add a company (1)
+
+INSERT INTO COMPANY (CONAME, COFUNDSAVAIL, COPERSEATCOST, COLOGOURL, COCOPYRIGHT) VALUES ('ILS', 0.00, 0.00, 'images/logo.gif', 'Copyright (C) 2006 ILS')
+INSERT INTO SYSCONF (COMPANYID, SYSCFCOLLABURL, SYSCFEMAILSRV) VALUES (1, 'http://crosswire.org/forums', 'mail.crosswire.org')
+INSERT INTO COURSEATTSTATUS (COMPANYID, CASTATUSID, CASTATUSDESC) VALUES (1, 0, 'NEW')
+INSERT INTO COURSEATTSTATUS (COMPANYID, CASTATUSID, CASTATUSDESC) VALUES (1, 1, 'PASSED')
+INSERT INTO COURSEATTSTATUS (COMPANYID, CASTATUSID, CASTATUSDESC) VALUES (1, 2, 'FAILED')
+INSERT INTO COURSEATTSTATUS (COMPANYID, CASTATUSID, CASTATUSDESC) VALUES (1, 3, 'IN PROGRESS')
+INSERT INTO GROUPTYPE (COMPANYID, GROUPTYPEID, GROUPTYPENAME, GROUPTYPEDESC) VALUES (1, 1, 'Role', 'Groups of Roles')
+INSERT INTO GROUPTYPE (COMPANYID, GROUPTYPEID, GROUPTYPENAME, GROUPTYPEDESC) VALUES (1, 2, 'Location', 'Groups of Locations')
+INSERT INTO COURSETYPE (COMPANYID, COURSETYPEID, COURSETYPENAME, COURSETYPEDESC) VALUES (1, 1, 'AICC / HACP', 'AICC / HACP')
+INSERT INTO COURSETYPE (COMPANYID, COURSETYPEID, COURSETYPENAME, COURSETYPEDESC) VALUES (1, 2, 'eXpress course', 'eXpress course')
+INSERT INTO USERPROFILE (COMPANYID, USERPRNUM, USERPRPASSWD, USERPRFNAME, USERPRLNAME, USERPRSTATUSID, USERPRACCESSLEVEL) VALUES (1, 'admin', 'Administrator1', 'Admin', 'Admin', 1, 3)
+INSERT INTO SECURITYMODE (COMPANYID, SECMODDESC, SECMODVAL) VALUES (1, 'Default Manager', 8)
+INSERT INTO SECURITYMODE (COMPANYID, SECMODDESC, SECMODVAL) VALUES (1, 'Badging Officer', 520)
+INSERT INTO SECURITYMODE (COMPANYID, SECMODDESC, SECMODVAL) VALUES (1, 'Course Developer', 9)
+
+
+
+-- run separately
+
+CREATE VIEW USERCOURSEASSIGNMENTS WITH SCHEMABINDING AS SELECT DISTINCT T2.COMPANYID, T2.USERPRID, COALESCE (T9.COURSID, T1.COURSID) AS COURSID FROM dbo.USERGROUP AS T2 INNER JOIN dbo.COURSEGROUP AS T3 ON T3.COMPANYID = T2.COMPANYID AND T3.ILSGROUPID = T2.ILSGROUPID INNER JOIN dbo.COURSE AS T1 ON T1.COMPANYID = T3.COMPANYID AND T1.COURSID = T3.COURSID LEFT OUTER JOIN dbo.CURRICULUMCOURSE AS T5 ON T5.COMPANYID = T1.COMPANYID AND T5.CURRICULUMID = T1.COURSID AND T1.COURSISCURRICULUM = 'T' LEFT OUTER JOIN dbo.COURSE AS T9 ON T5.COMPANYID IS NOT NULL AND T9.COMPANYID = T5.COMPANYID AND T9.COURSID = T5.COURSID WHERE (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM IS NULL) AND (T9.COURSID IS NULL) AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM IS NULL) AND (T9.COURSID IS NOT NULL) AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM <> 'T') AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NOT NULL) AND (T1.COURSISCURRICULUM <> 'T') AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') AND (T1.COURSID <> T9.COURSID) OR (T9.COURSID IS NOT NULL) AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') AND (T1.COURSID <> T9.COURSID);
+
+CREATE VIEW USERCOURSEASSIGNMENTSWITHGROUPS WITH SCHEMABINDING AS SELECT DISTINCT T2.COMPANYID, T2.USERPRID, COALESCE (T9.COURSID, T1.COURSID) AS COURSID, G.ILSGROUPID, G.GROUPTYPEID FROM dbo.USERGROUP AS T2 INNER JOIN dbo.COURSEGROUP AS T3 ON T3.COMPANYID = T2.COMPANYID AND T3.ILSGROUPID = T2.ILSGROUPID INNER JOIN dbo.COURSE AS T1 ON T1.COMPANYID = T3.COMPANYID AND T1.COURSID = T3.COURSID LEFT OUTER JOIN dbo.CURRICULUMCOURSE AS T5 ON T5.COMPANYID = T1.COMPANYID AND T5.CURRICULUMID = T1.COURSID AND T1.COURSISCURRICULUM = 'T' LEFT OUTER JOIN dbo.COURSE AS T9 ON T5.COMPANYID IS NOT NULL AND T9.COMPANYID = T5.COMPANYID AND T9.COURSID = T5.COURSID LEFT OUTER JOIN dbo.ILSGROUP G ON G.ILSGROUPID=T2.ILSGROUPID WHERE (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM IS NULL) AND (T9.COURSID IS NULL) AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM IS NULL) AND (T9.COURSID IS NOT NULL) AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM <> 'T') AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NOT NULL) AND (T1.COURSISCURRICULUM <> 'T') AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') AND (T1.COURSID <> T9.COURSID) OR (T9.COURSID IS NOT NULL) AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') AND (T1.COURSID <> T9.COURSID);
+
+CREATE VIEW COURSEATTEMPTSTATUS WITH SCHEMABINDING AS SELECT CA.COMPANYID, CA.USERPRID, CA.COURSID, CA.COURSATTID, CA.CACOMPLETEDATE, CA.CAEXPIREDON, COALESCE(CA.CASTATUSID, 0) AS CASTATUSID, CASE COALESCE(CA.CASTATUSID, 0) WHEN 3 THEN 1 WHEN 0 THEN 1 ELSE 0 END AS CRS_OPEN, CASE COALESCE(CA.CASTATUSID, 0) WHEN 1 THEN 1 ELSE 0 END AS CRS_COMPLETED, CASE COALESCE(CA.CASTATUSID, 0) WHEN 2 THEN 1 ELSE 0 END AS CRS_FAILED FROM DBO.COURSEATTEMPT CA;
+
+
+CREATE NONCLUSTERED INDEX CAEXPIREDONINDEX ON COURSEATTEMPT (COMPANYID,CAEXPIREDON) INCLUDE (USERPRID,COURSID,CACOMPLETEDATE,CASTATUSID);
Copied: branches/1.6/db/mssql/upgrade1.80.5-2.sql (from rev 1419, trunk/db/mssql/upgrade1.80.5-2.sql)
===================================================================
--- branches/1.6/db/mssql/upgrade1.80.5-2.sql (rev 0)
+++ branches/1.6/db/mssql/upgrade1.80.5-2.sql 2016-04-04 01:09:58 UTC (rev 1420)
@@ -0,0 +1,2 @@
+CREATE VIEW USERCOURSEASSIGNMENTSWITHGROUPS WITH SCHEMABINDING AS SELECT DISTINCT T2.COMPANYID, T2.USERPRID, COALESCE (T9.COURSID, T1.COURSID) AS COURSID, G.ILSGROUPID, G.GROUPTYPEID FROM dbo.USERGROUP AS T2 INNER JOIN dbo.COURSEGROUP AS T3 ON T3.COMPANYID = T2.COMPANYID AND T3.ILSGROUPID = T2.ILSGROUPID INNER JOIN dbo.COURSE AS T1 ON T1.COMPANYID = T3.COMPANYID AND T1.COURSID = T3.COURSID LEFT OUTER JOIN dbo.CURRICULUMCOURSE AS T5 ON T5.COMPANYID = T1.COMPANYID AND T5.CURRICULUMID = T1.COURSID AND T1.COURSISCURRICULUM = 'T' LEFT OUTER JOIN dbo.COURSE AS T9 ON T5.COMPANYID IS NOT NULL AND T9.COMPANYID = T5.COMPANYID AND T9.COURSID = T5.COURSID LEFT OUTER JOIN dbo.ILSGROUP G ON G.ILSGROUPID=T2.ILSGROUPID WHERE (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM IS NULL) AND (T9.COURSID IS NULL) AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM IS NULL) AND (T9.COURSID IS NOT NULL) AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISCURRICULUM <> 'T') AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NOT NULL) AND (T1.COURSISCURRICULUM <> 'T') AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') OR (T9.COURSID IS NULL) AND (T1.COURSISQUICKVIEW IS NULL OR T1.COURSISQUICKVIEW <> 'T') AND (T1.COURSID <> T9.COURSID) OR (T9.COURSID IS NOT NULL) AND (T9.COURSISQUICKVIEW IS NULL OR T9.COURSISQUICKVIEW <> 'T') AND (T1.COURSID <> T9.COURSID);
+
Modified: branches/1.6/src/com/resolutions/ils/data/Course.java
===================================================================
--- branches/1.6/src/com/resolutions/ils/data/Course.java 2016-04-04 00:35:18 UTC (rev 1419)
+++ branches/1.6/src/com/resolutions/ils/data/Course.java 2016-04-04 01:09:58 UTC (rev 1420)
@@ -100,13 +100,19 @@
}
- static public Vector getGroupCourses(ILSSession session, int groupID) {
+ static public Vector getGroupCourses(ILSSession session, int groupID) {
+ return getGroupCourses(session.getCompanyID(), groupID);
+ }
+
+
+ static public Vector getGroupCourses(int companyID, int groupID) {
Course query = new Course();
- query.setCompanyID(session.getCompanyID());
+ query.setCompanyID(companyID);
query.setValue("ILSGROUPID", new Integer(groupID));
return query.getDataSet(LOOKUPGROUPCOURSES);
}
+
static public Course getCourseByNum(ILSSession session, String courseNum) {
Course query = new Course();
String sql = LOOKUP + " AND COURSNUM={COURSNUM}";
Modified: branches/1.6/src/com/resolutions/ils/data/Group.java
===================================================================
--- branches/1.6/src/com/resolutions/ils/data/Group.java 2016-04-04 00:35:18 UTC (rev 1419)
+++ branches/1.6/src/com/resolutions/ils/data/Group.java 2016-04-04 01:09:58 UTC (rev 1420)
@@ -95,6 +95,9 @@
query.setValue("ILSGROUPID", getGroupID());
return (Vector<UserProfile>)query.getDataSet(LOOKUPGROUPMANAGERS);
}
+ public Vector<Course> getGroupCourses() {
+ return Course.getGroupCourses(getCompanyID(), getGroupID());
+ }
static public Vector getUserGroups(ILSSession session, int groupTypeID, int userID) {
return getUserGroups(session.getCompanyID(), groupTypeID, userID);
@@ -294,6 +297,12 @@
xml.append(u.toXML(DETAIL_HEADERONLY));
}
xml.append("</userProfiles>");
+ Vector<Course> courses = getGroupCourses();
+ xml.append("<courses count=\""+courses.size()+"\">");
+ for (Course c: courses) {
+ xml.append(c.toXML(DETAIL_HEADERONLY));
+ }
+ xml.append("</courses>");
}
xml.append("</group>\n");
}
Deleted: branches/1.6/webapp/WEB-INF/lib/commons-codec-1.4.jar
===================================================================
(Binary files differ)
Copied: branches/1.6/webapp/WEB-INF/lib/commons-codec-1.9.jar (from rev 1418, trunk/webapp/WEB-INF/lib/commons-codec-1.9.jar)
===================================================================
(Binary files differ)
Deleted: branches/1.6/webapp/WEB-INF/lib/commons-io-1.1.jar
===================================================================
(Binary files differ)
Copied: branches/1.6/webapp/WEB-INF/lib/commons-io-1.3.1.jar (from rev 1418, trunk/webapp/WEB-INF/lib/commons-io-1.3.1.jar)
===================================================================
(Binary files differ)
Deleted: branches/1.6/webapp/WEB-INF/lib/commons-logging-1.1.1.jar
===================================================================
(Binary files differ)
Copied: branches/1.6/webapp/WEB-INF/lib/commons-logging-1.2.jar (from rev 1418, trunk/webapp/WEB-INF/lib/commons-logging-1.2.jar)
===================================================================
(Binary files differ)
Modified: branches/1.6/webapp/WEB-INF/lib/crosswire.jar
===================================================================
(Binary files differ)
Deleted: branches/1.6/webapp/WEB-INF/lib/httpclient-4.1.2.jar
===================================================================
(Binary files differ)
Copied: branches/1.6/webapp/WEB-INF/lib/httpclient-4.5.2.jar (from rev 1418, trunk/webapp/WEB-INF/lib/httpclient-4.5.2.jar)
===================================================================
(Binary files differ)
Deleted: branches/1.6/webapp/WEB-INF/lib/httpclient-cache-4.1.2.jar
===================================================================
(Binary files differ)
Copied: branches/1.6/webapp/WEB-INF/lib/httpclient-cache-4.5.2.jar (from rev 1418, trunk/webapp/WEB-INF/lib/httpclient-cache-4.5.2.jar)
===================================================================
(Binary files differ)
Deleted: branches/1.6/webapp/WEB-INF/lib/httpcore-4.1.2.jar
===================================================================
(Binary files differ)
Copied: branches/1.6/webapp/WEB-INF/lib/httpcore-4.4.4.jar (from rev 1418, trunk/webapp/WEB-INF/lib/httpcore-4.4.4.jar)
===================================================================
(Binary files differ)
Deleted: branches/1.6/webapp/WEB-INF/lib/httpmime-4.1.2.jar
===================================================================
(Binary files differ)
Copied: branches/1.6/webapp/WEB-INF/lib/httpmime-4.5.2.jar (from rev 1418, trunk/webapp/WEB-INF/lib/httpmime-4.5.2.jar)
===================================================================
(Binary files differ)
Modified: branches/1.6/webapp/WEB-INF/lib/ils.jar
===================================================================
(Binary files differ)
Modified: branches/1.6/webapp/WEB-INF/lib/mail.jar
===================================================================
(Binary files differ)
Deleted: branches/1.6/webapp/api/ccure/ccureuser/get/index.jsp
===================================================================
--- trunk/webapp/api/ccure/ccureuser/get/index.jsp 2016-03-24 09:50:15 UTC (rev 1416)
+++ branches/1.6/webapp/api/ccure/ccureuser/get/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -1,171 +0,0 @@
-<%@ 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>
Copied: branches/1.6/webapp/api/ccure/ccureuser/get/index.jsp (from rev 1416, trunk/webapp/api/ccure/ccureuser/get/index.jsp)
===================================================================
--- branches/1.6/webapp/api/ccure/ccureuser/get/index.jsp (rev 0)
+++ branches/1.6/webapp/api/ccure/ccureuser/get/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -0,0 +1,207 @@
+<%@ 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="com.resolutions.ils.data.UserProfile" %>
+<%@ 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;
+
+ // since we need to lookup an employee record to map GUID to ObjectID (addr2), even if an ilsSession isn't established, let's use anon
+ if (ilsSession == null) ilsSession = ILSSession.getAnonymous(company.getCompanyID());
+
+ 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 objectID = request.getParameter("objectID");
+ String guid = request.getParameter("guid");
+ String userProfileID = request.getParameter("userProfileID");
+
+ ++errCode;
+ if (objectID == null && userProfileID != null) {
+ UserProfile up = UserProfile.getUserProfile(ilsSession, Integer.parseInt(userProfileID));
+ if (up != null) {
+ objectID = up.getUserProfileAddr2();
+ }
+ else {
+ out.print("<error code=\""+errCode+"\" message=\"Couldn't find user in ILS with userProfileID: "+HTTPUtils.canonize(userProfileID)+"\"/>");
+ return;
+ }
+ }
+ ++errCode;
+ if (guid != null) {
+ UserProfile up = UserProfile.getUserProfileByUserData(ilsSession, guid);
+ if (up != null) {
+ objectID = up.getUserProfileAddr2();
+ }
+ else {
+ out.print("<error code=\""+errCode+"\" message=\"Couldn't find user in ILS with GUID: "+HTTPUtils.canonize(guid)+"\"/>");
+ return;
+ }
+ }
+
+ if (objectID != null) {
+
+
+ int personID = -1; try { personID = Integer.parseInt(objectID); } catch (Exception e) {}
+
+ eventsLogger.debug("CCURE ccureuser/get: "+(personID == -1?"objectID=":"guid=")+(personID == -1?guid:objectID));
+
+ ++errCode;
+ if (personID < 0 && guid == null) {
+ out.print("<error code=\""+errCode+"\" message=\"You must pass a valid objectID or guid 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");
+ if (personID != -1) {
+ params += "&id="+URLEncoder.encode(Integer.toString(personID), "UTF-8");
+ }
+ else {
+ params += "&GUID="+URLEncoder.encode(guid, "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>guid</th><td>the CCURE GUID 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>
Deleted: branches/1.6/webapp/api/ccure/test/index.jsp
===================================================================
--- trunk/webapp/api/ccure/test/index.jsp 2016-03-24 09:50:15 UTC (rev 1416)
+++ branches/1.6/webapp/api/ccure/test/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -1,285 +0,0 @@
-<%@ 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 %><%
-*/
-%>
Copied: branches/1.6/webapp/api/ccure/test/index.jsp (from rev 1416, trunk/webapp/api/ccure/test/index.jsp)
===================================================================
--- branches/1.6/webapp/api/ccure/test/index.jsp (rev 0)
+++ branches/1.6/webapp/api/ccure/test/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -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 %><%
+*/
+%>
Deleted: branches/1.6/webapp/api/ccure/updatescore.db/index.jsp
===================================================================
--- trunk/webapp/api/ccure/updatescore.db/index.jsp 2016-03-16 23:51:13 UTC (rev 1412)
+++ branches/1.6/webapp/api/ccure/updatescore.db/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -1,195 +0,0 @@
-<%@ 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"%>
-
-<%
- Logger eventsLogger = Logger.getLogger(this.getClass());
-// Logger eventsLogger = Logger.getLogger("EVENTS");
-
- eventsLogger.debug("CCURE: entering updatescore api (events)");
-
- String ccureHost = Utils.getSysConfig(session).getProperty("CCUREHost", "216.119.104.185:2500");
- String ccureDBUser = Utils.getSysConfig(session).getProperty("CCUREDBUser", "sysprogress");
- String ccureDBPassword = Utils.getSysConfig(session).getProperty("CCUREDBPassword", "manager");
- String jdbcURL = "jdbc:datadirect:openedge://"+ccureHost+";databaseName=cf;User="+ccureDBUser+";password="+ccureDBPassword;
-
- 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);
- 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");
- }
-
-
-
-
- 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");
-
- eventsLogger.debug("CCURE: userData="+userData+"; caCompleteDate="+caCompleteDateString+"; caStatusDesc="+caStatusDescription+"; courseName="+courseName);
-
- 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);
- 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.";
- }
- }
- 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 %><%
-%>
-<%!
-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);
-
- 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();
- }
- }
- }
- 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;
-}
-%>
Copied: branches/1.6/webapp/api/ccure/updatescore.db/index.jsp (from rev 1412, trunk/webapp/api/ccure/updatescore.db/index.jsp)
===================================================================
--- branches/1.6/webapp/api/ccure/updatescore.db/index.jsp (rev 0)
+++ branches/1.6/webapp/api/ccure/updatescore.db/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -0,0 +1,195 @@
+<%@ 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"%>
+
+<%
+ Logger eventsLogger = Logger.getLogger(this.getClass());
+// Logger eventsLogger = Logger.getLogger("EVENTS");
+
+ eventsLogger.debug("CCURE: entering updatescore api (events)");
+
+ String ccureHost = Utils.getSysConfig(session).getProperty("CCUREHost", "216.119.104.185:2500");
+ String ccureDBUser = Utils.getSysConfig(session).getProperty("CCUREDBUser", "sysprogress");
+ String ccureDBPassword = Utils.getSysConfig(session).getProperty("CCUREDBPassword", "manager");
+ String jdbcURL = "jdbc:datadirect:openedge://"+ccureHost+";databaseName=cf;User="+ccureDBUser+";password="+ccureDBPassword;
+
+ 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);
+ 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");
+ }
+
+
+
+
+ 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");
+
+ eventsLogger.debug("CCURE: userData="+userData+"; caCompleteDate="+caCompleteDateString+"; caStatusDesc="+caStatusDescription+"; courseName="+courseName);
+
+ 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);
+ 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.";
+ }
+ }
+ 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 %><%
+%>
+<%!
+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);
+
+ 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();
+ }
+ }
+ }
+ 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;
+}
+%>
Deleted: branches/1.6/webapp/api/ccure/updatescore.vws/index.jsp
===================================================================
--- trunk/webapp/api/ccure/updatescore.vws/index.jsp 2016-03-16 23:51:13 UTC (rev 1412)
+++ branches/1.6/webapp/api/ccure/updatescore.vws/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -1,221 +0,0 @@
-<%@ 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"%>
-
-<%
- Logger eventsLogger = Logger.getLogger(this.getClass());
-// Logger eventsLogger = Logger.getLogger("EVENTS");
-
- eventsLogger.debug("CCURE: entering updatescore api (events)");
-
-// 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+="/";
-
- 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);
- 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");
- }
-
-
-
-
- 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");
-
- eventsLogger.debug("CCURE: userData="+userData+"; caCompleteDate="+caCompleteDateString+"; caStatusDesc="+caStatusDescription+"; courseName="+courseName);
-
- 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);
- 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.";
- }
- }
- 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 %><%
-*/
-%>
-<%!
-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);
-
- 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();
- }
- }
- }
- 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;
-}
-%>
Copied: branches/1.6/webapp/api/ccure/updatescore.vws/index.jsp (from rev 1412, trunk/webapp/api/ccure/updatescore.vws/index.jsp)
===================================================================
--- branches/1.6/webapp/api/ccure/updatescore.vws/index.jsp (rev 0)
+++ branches/1.6/webapp/api/ccure/updatescore.vws/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -0,0 +1,268 @@
+<%@ page
+ 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.Company" %>
+<%@ page import="com.resolutions.ils.data.UserProfile" %>
+<%@ page import="java.util.Date" %>
+<%@ page import="java.text.SimpleDateFormat" %>
+<%@ page import="org.apache.log4j.Logger" %>
+<%@ page import="java.net.URLEncoder"%>
+<%@ page import="java.util.Map"%>
+<%@ page import="java.util.HashMap"%>
+
+<%
+ // 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");
+
+ // since we need to lookup an employee record to map GUID to ObjectID (addr2), even if an ilsSession isn't established, let's use anon
+ if (ilsSession == null) ilsSession = ILSSession.getAnonymous(company.getCompanyID());
+
+ ++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");
+
+
+ Map<String, String> courses = new HashMap<String, String>();
+ Map<String, String> courseEnums = new HashMap<String, String>();
+ int i = 1;
+ while (true) {
+ String courseName = Utils.getSysConfig(session).getProperty("CCURECourse."+i);
+ String courseEnum = Utils.getSysConfig(session).getProperty("CCURECourseEnum."+i);
+ if (courseName != null && courseEnum != null) {
+ courses.put(courseName, Integer.toString(i));
+ courseEnums.put(courseName, courseEnum);
+ }
+ else break;
+ i++;
+ }
+ // if our configuration isn't specifying course names and fields, then populate with defaults
+ if (courses.size() == 0) {
+ courses.put("Ramp Driving", "1");
+ courseEnums.put("Ramp Driving", "RAMPDRIVING");
+
+ courses.put("Airfield Driving", "2");
+ courseEnums.put("Airfield Driving", "AIRFIELDDRIVING");
+
+ courses.put("SIDA", "3");
+ courseEnums.put("SIDA", "SIDA");
+
+ courses.put("Sterile", "4");
+ courseEnums.put("Sterile", "STERILE");
+ }
+
+ String guid = request.getParameter("userProfileUserData");
+ String userProfileID = request.getParameter("userProfileID");
+ String companyID = request.getParameter("companyID");
+ if (companyID != null) ilsSession.setValue("COMPANYID", Integer.parseInt(companyID));
+
+ String caCompleteDateString = request.getParameter("completeDate");
+ String caStatusDescription = request.getParameter("statusDescription");
+ String courseName = request.getParameter("courseName");
+ String caScore = request.getParameter("score");
+
+ String objectID = request.getParameter("objectID");
+
+ ++errCode;
+ if (objectID == null && userProfileID != null) {
+ UserProfile up = UserProfile.getUserProfile(ilsSession, Integer.parseInt(userProfileID));
+ if (up != null) {
+ objectID = up.getUserProfileAddr2();
+ }
+ else {
+ out.print("<error code=\""+errCode+"\" message=\"Couldn't find user in ILS with userProfileID: "+HTTPUtils.canonize(userProfileID)+"\"/>");
+ return;
+ }
+ }
+
+ ++errCode;
+ if (objectID == null && guid != null) {
+ UserProfile up = UserProfile.getUserProfileByUserData(ilsSession, guid);
+ if (up != null) {
+ objectID = up.getUserProfileAddr2();
+ }
+ else {
+ out.print("<error code=\""+errCode+"\" message=\"Couldn't find user in ILS with GUID: "+HTTPUtils.canonize(guid)+"\"/>");
+ return;
+ }
+ }
+
+ if (objectID != null) {
+
+ eventsLogger.debug("CCURE: objectID="+objectID+"; caCompleteDate="+caCompleteDateString+"; caStatusDesc="+caStatusDescription+"; courseName="+courseName+"; caScore="+caScore);
+
+ String statusMsg = "";
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+
+ int personID = -1; try { personID = Integer.parseInt(objectID); } catch (Exception e) {}
+ Date caCompleteDate = new Date(); try { caCompleteDate = new SimpleDateFormat().parse(caCompleteDateString); } catch (Exception e) {}
+ String fieldName = request.getParameter("fieldSet");
+ String courseEnum = null;
+
+ if (fieldName == null) fieldName = courses.get(courseName);
+ courseEnum = courseEnums.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 {
+ 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) {
+ e.printStackTrace();
+ out.print("<error code=\""+errCode+"\" message=\""+e+"\"/>");
+ return;
+ }
+
+ 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_RESULT_"+fieldName+"_", "UTF-8");
+ params += "&PropertyValues="+URLEncoder.encode("PASSED".equals(caStatusDescription)?"PASSED":"FAILED", "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";
+ }
+ catch (Exception e) { e.printStackTrace(); }
+
+
+ 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;
+ }
+ 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>(objectID</th><td>the CCURE ObjectID for the Personnel Record to update. one of the first 3 parameters needs to be provided.</td></tr>
+<tr><th>|userProfileUserData</th><td>the CCURE GUID for the Personnel Record to update</td></tr>
+<tr><th>|userProfileID)</th><td>the ILS user associated with the CCURE 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>
Deleted: branches/1.6/webapp/api/ccure/user/put/index.jsp
===================================================================
--- trunk/webapp/api/ccure/user/put/index.jsp 2016-02-29 23:30:08 UTC (rev 1401)
+++ branches/1.6/webapp/api/ccure/user/put/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -1,437 +0,0 @@
-<%@ page language="java" contentType="text/xml;charset=utf-8" %>
-<%@ page trimDirectiveWhitespaces="true" %>
-<%@ 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.Date" %>
-<%@ page import="java.text.SimpleDateFormat" %>
-<%@ page import="org.apache.log4j.Logger" %>
-<%@ page import="org.crosswire.xml.XMLBlock" %>
-
-<%
- Logger logger = Logger.getLogger(this.getClass());
- // 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;
- }
- // end standard service header -----------------------------------
-
- String data = request.getParameter("data");
- if (data != null) {
- data = data.trim();
-
-/*
-logger.debug("char 0: " + (int)data.charAt(0));
-logger.debug("char 1: " + (int)data.charAt(1));
-logger.debug("char 2: " + (int)data.charAt(2));
-logger.debug("char 3: " + (int)data.charAt(3));
-logger.debug("char 0: " + data.charAt(0));
-logger.debug("char 1: " + data.charAt(1));
-logger.debug("char 2: " + data.charAt(2));
-logger.debug("char 3: " + data.charAt(3));
-*/
- String UTF8_BOM = "";
- UTF8_BOM += (char)239;
- UTF8_BOM += (char)187;
- UTF8_BOM += (char)191;
- if (data.startsWith(UTF8_BOM)) {
- data = data.substring(3);
- }
- data = data.trim();
-
- if (data.startsWith("<?xml")) {
- data = data.substring(data.indexOf("?>")+2);
- data = data.trim();
- }
-/*
-logger.debug("char 0: " + (int)data.charAt(0));
-logger.debug("char 1: " + (int)data.charAt(1));
-logger.debug("char 2: " + (int)data.charAt(2));
-logger.debug("char 0: " + data.charAt(0));
-logger.debug("char 1: " + data.charAt(1));
-logger.debug("char 2: " + data.charAt(2));
-*/
-
- XMLBlock record = null;
- ++errCode;
- try {
- record = new XMLBlock(data);
- record = record.getBlock("SoftwareHouse.NextGen.Common.SecurityObjects.Personnel");
- }
- catch (Exception e) {
- out.print("<error code=\""+errCode+"\" message=\"Error parsing XML: "+e+"\"/>");
- return;
- }
-
- ++errCode;
- if (record == null) {
- out.print("<error code=\""+errCode+"\" message=\"No CCURE Personnel record found in XML data.\"/>");
- return;
- }
-
- int userProfileID = -1;
- String loginID = record.getValue("EmailAddress");
- String userData = record.getValue("ObjectID");
-
-
-// one of these must be supplied; otherwise, show usage info
-if (userProfileID != -1 || loginID != null || userData != null) {
- String errMsg = "";
-
- UserProfile adminUser = ilsSession.getCurrentUserProfile();
-
- Logger eventsLogger = Logger.getLogger("EVENTS");
- String statusMsg = "";
- SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
- UserProfile current = new UserProfile();
- current.defaultAll();
- // default access level is employee
- current.setUserProfileAccessLevel(1);
- current.setUserProfileHireDate(new Date());
- int currentRoleID = -1;
- int currentLocationID = -1;
- String roleName = null;
- String roleUserData = null;
- String workgroupName = null;
- String workgroupUserData = null;
- boolean createMode = "create".equals(request.getParameter("action"));
-
- ++errCode;
- if ((adminUser.getUserProfileAccessLevel() > UserProfile.ACCESS_MANAGER) || (adminUser.hasAccess(UserProfile.ACCESS_MODE_USERPR_SEARCH_VIEW))) {
- if (!createMode) {
- UserProfile lookup = null;
- if (userProfileID != -1) {
- lookup = UserProfile.getUserProfile(ilsSession, userProfileID);
- if (lookup == null) {
- out.print("<error code=\""+errCode+"\" message=\"Permission denied.\"/>");
- return;
- }
- }
- if (lookup == null && loginID != null) {
- lookup = UserProfile.getUserProfile(ilsSession, loginID);
- }
- if (lookup == null && userData != null) {
- lookup = UserProfile.getUserProfileByUserData(ilsSession, userData);
- }
- if (lookup != null) {
- current = lookup;
- }
- else {
- if (!"update".equals(request.getParameter("action"))) createMode = true;
- else current = null;
- }
- }
- }
- else {
- ++errCode;
- out.print("<error code=\""+errCode+"\" message=\"Permission denied.\"/>");
- return;
- }
-
- errCode += 2;
- if (current == null) {
- out.print("<error code=\""+errCode+"\" message=\"User Profile not found.\"/>");
- return;
- }
- ++errCode;
- if (createMode && current.getUserProfileID() > 0) {
- out.print("<error code=\""+errCode+"\" message=\"User Profile exists.\"/>");
- return;
- }
- if (current.getUserProfileID() > 0 && adminUser.getUserProfileAccessLevel() <= UserProfile.ACCESS_MANAGER && !adminUser.hasAccess(UserProfile.ACCESS_MODE_USERPR_MODIFY_USER)) {
- out.print("<error code=\""+errCode+"\" message=\"Permission denied to edit user profile.\"/>");
- return;
- }
-
- boolean createGroupOnDemand = true; //false; try { createGroupOnDemand = "true".equals(request.getParameter("createGroupOnDemand")); } catch (Exception e) {}
- String val = record.getValue("UDF__ROLE_");
- String val2 = request.getParameter("roleUserData");
- int requestedRole = -1;
-
- ++errCode;
- if ((val != null && val.trim().length() > 0) || (val2 != null && val2.trim().length() > 0)) {
- for (int i = 0; i < 2; ++i) {
- Group g = (val2 != null) ? Group.getGroupByUserData(ilsSession, Group.GROUPTYPE_ROLE, val2) : Group.getGroupByName(ilsSession, Group.GROUPTYPE_ROLE, val);
- if (g != null) {
- requestedRole = g.getGroupID();
- roleName = g.getGroupName();
- break;
- }
- else {
- if (i < 1 && createGroupOnDemand) {
- Group grp = new Group();
- grp.defaultAll();
- grp.setGroupTypeID(Group.GROUPTYPE_ROLE);
- grp.setGroupName(val != null ? val : val2);
- roleName = grp.getGroupName();
- grp.setGroupDesc(roleName);
- if (val2 != null) grp.setValue("USERDATA", val2);
- grp.saveNew(ilsSession);
- }
- else {
- out.print("<error code=\""+errCode+"\" message=\"" + ((val2 != null) ? "roleUserData" : "roleName") + " was submitted but was not found in the database. You must specify an existing Role or createGroupOnDemand must be passed as true.\"/>");
- return;
- }
- }
- }
- }
-
- ++errCode;
- val = record.getValue("UDF__COMPANY_");
- val2 = request.getParameter("locationUserData");
- int requestedLocation = -1;
- if ((val != null && val.trim().length() > 0) || (val2 != null && val2.trim().length() > 0)) {
- for (int i = 0; i < 2; ++i) {
- Group g = (val2 != null) ? Group.getGroupByUserData(ilsSession, Group.GROUPTYPE_LOCATION, val2) : Group.getGroupByName(ilsSession, Group.GROUPTYPE_LOCATION, val);
- if (g != null) {
- requestedLocation = g.getGroupID();
- workgroupName = g.getGroupName();
- break;
- }
- else {
- if (i < 1 && createGroupOnDemand) {
- Group grp = new Group();
- grp.defaultAll();
- grp.setGroupTypeID(Group.GROUPTYPE_LOCATION);
- grp.setGroupName(val != null ? val : val2);
- workgroupName = grp.getGroupName();
- grp.setGroupDesc(workgroupName);
- if (val2 != null) grp.setValue("USERDATA", val2);
- grp.saveNew(ilsSession);
- }
- else {
- out.print("<error code=\""+errCode+"\" message=\""+((val2 != null) ? "locationUserData" : "locationName") + " was submitted but was not found in the database. You must specify an existing Location or createGroupOnDemand must be passed as true.\"/>");
- return;
- }
- }
- }
- }
-
- UserProfile orig = (UserProfile)current.clone();
-
- ++errCode;
- val = loginID;
- if (val != null && val.trim().length() > 0) {
- UserProfile up = UserProfile.getUserProfile(ilsSession, val);
- if ((up != null) && (up.getUserProfileID() != current.getUserProfileID())) {
- errMsg = "The Employee ID already exists.";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
- else {
- current.setUserProfileNum(val);
- }
- }
-
- // set associated external data, typically used for API client to map this user back to their system
- if (userData != null && userData.length() > 0) current.setValue("USERDATA", userData);
-
- val = request.getParameter("passwd");
- if (val != null && val.trim().length() > 0) current.setUserProfilePasswd(val);
- val = request.getParameter("statusID");
- if (val != null && val.trim().length() > 0) current.setUserProfileStatusID(Integer.parseInt(val));
-
- val = request.getParameter("accessLevel");
- if (val != null && val.trim().length() > 0) current.setUserProfileAccessLevel(Integer.parseInt(val));
-
- val = request.getParameter("accessMode");
- if (val != null && val.trim().length() > 0) current.setUserProfileAccessMode(Integer.parseInt(val));
-
- val = record.getValue("Name");
- String lname = val.substring(0,val.indexOf(","));
- String fname = val.substring(val.indexOf(",")+1);
- fname = fname.trim();
- String mname = null;
- if (fname.lastIndexOf(" ") != -1) {
- mname = fname.substring(fname.lastIndexOf(" ")+1);
- fname = fname.substring(0, fname.lastIndexOf(" "));
- }
-
- val = fname;
- if (val != null && val.trim().length() > 0) current.setUserProfileFirstName(val);
- val = mname;
- if (val != null && val.trim().length() > 0) current.setUserProfileMiddleName(val);
- val = request.getParameter("suffixName");
- if (val != null && val.trim().length() > 0) current.setUserProfileSuffixName(val);
- val = lname;
- if (val != null && val.trim().length() > 0) current.setUserProfileLastName(val);
- val = request.getParameter("employeeTitle");
- if (val != null && val.trim().length() > 0) current.setUserProfileEmployeeTitleID(Integer.parseInt(val));
- val = request.getParameter("addr1");
- if (val != null && val.trim().length() > 0) current.setUserProfileAddr1(val);
- val = request.getParameter("addr2");
- if (val != null && val.trim().length() > 0) current.setUserProfileAddr2(val);
- val = request.getParameter("city");
- if (val != null && val.trim().length() > 0) current.setUserProfileCity(val);
- val = request.getParameter("state");
- if (val != null && val.trim().length() > 0) current.setUserProfileState(val);
- val = request.getParameter("zip");
- if (val != null && val.trim().length() > 0) current.setUserProfileZip(val);
- val = request.getParameter("country");
- if (val != null && val.trim().length() > 0) current.setUserProfileCountry(val);
- val = record.getValue("EmailAddress");
- if (val != null && val.trim().length() > 0) current.setUserProfileEMail(val);
- val = request.getParameter("phone");
- if (val != null && val.trim().length() > 0) current.setUserProfilePhone(val);
- val = request.getParameter("hireDate");
- ++errCode;
- if ((val != null) && (!val.startsWith("m"))) {
- Date v = Utils.parseDate(val, 150 * 365, 10 * 365);
- if (v != null) {
- current.setUserProfileHireDate(v);
- }
- else {
- errMsg = "Invalid Hire Date, please enter a reasonable date using the format MM/DD/YYYY";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
- }
-
- ++errCode;
- val = request.getParameter("termDate");
- if ((val != null) && (!val.startsWith("m"))) {
- Date v = Utils.parseDate(val, 150 * 365, 10 * 365);
- if (v != null) {
- current.setUserProfileTermDate(v);
- }
- else {
- errMsg = "Invalid Termination Date, please enter a reasonable date using the format MM/DD/YYYY";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
- }
-
- if ((current.getUserProfilePasswd() == null) || (current.getUserProfilePasswd().trim().length() < 1)) {
- current.setUserProfilePasswd("changeme");
- }
-
- ++errCode;
- if ((current.getUserProfileFirstName() == null) || (current.getUserProfileFirstName().length() < 1)) {
- errMsg = "You must supply a First Name (firstName)";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
- ++errCode;
- if ((current.getUserProfileLastName() == null) || (current.getUserProfileLastName().length() < 1)) {
- errMsg = "You must supply a Last Name (lastName)";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
- ++errCode;
- if ((current.getUserProfileNum() == null) || (current.getUserProfileNum().length() < 1)) {
- errMsg = "You must supply an Login ID (loginID)";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
-
- ++errCode;
- /*
- if (currentRoleID < 0 && requestedRole < 0) {
- errMsg = "You must choose a Role for this employee";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
- */
- ++errCode;
- /*
- if (currentLocationID < 0 && requestedLocation < 0) {
- errMsg = "You must choose a Workgroup for this employee";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
- */
- ++errCode;
- /*
- if (current.getUserProfileEmployeeTitleID() < 1) {
- errMsg = "You must supply an Employee Title";
- out.print("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
- return;
- }
- */
-
- if (orig.getUserProfileID() > 0) {
- boolean emailNotice = "on".equals(Utils.getSysConfig(session).getProperty("EmailEnableChangePassword", "off"));
- HttpSession sendEmail = (emailNotice) ? session : null;
- current.save(ilsSession, orig, sendEmail);
- }
- else {
- current = current.saveNew(ilsSession, session, workgroupName, roleName);
- }
- if ((requestedRole != currentRoleID) && (requestedRole > -1)) {
- Group.deleteUserGroups(ilsSession, Group.GROUPTYPE_ROLE, current.getUserProfileID());
- Group.addUserGroup(ilsSession, requestedRole, current.getUserProfileID());
- // modifying an existing user
- if (orig.getUserProfileID() > 0) {
- eventsLogger.info("User " + current.getUserProfileNum() + " ROLE changed from " + currentRoleID + " to " + requestedRole + " by user: " + adminUser.getUserProfileNum());
- }
- }
- if ((requestedLocation != currentLocationID) && (requestedLocation > -1)) {
- Group.deleteUserGroups(ilsSession, Group.GROUPTYPE_LOCATION, current.getUserProfileID());
- Group.addUserGroup(ilsSession, requestedLocation, current.getUserProfileID());
- if (orig.getUserProfileID() > 0) {
- eventsLogger.info("User " + current.getUserProfileNum() + " WORKGROUP changed from " + currentLocationID + " to " + requestedLocation + " by user: " + adminUser.getUserProfileNum());
- }
- }
-%>
-<success userProfileID="<%=current.getUserProfileID()%>"<%=requestedRole > -1 ? " updatedRoleID=\"" + requestedRole + "\"" : ""%><%=requestedLocation > -1 ? " updatedLocationID=\"" + requestedLocation + "\"" : ""%>/>
-<%
- return;
-
-}
-}
-response.setContentType("text/html");
-%>
-<html>
-<style>th { text-align:left; }</style>
-<body>
-<h1>user/put</h1>
-<p>Create or modify a user profile record</p>
-<h3>Parameters</h3>
-<table border="1">
-<tbody>
-<tr><th>data</th><td>CCURE Personnel XML. Extra parameters below are still accepted</td></tr>
-<tr><th>action</th><td>(optional) [update|create] If not supplied, action is determined by: <ul><li>if userProfileID is supplied, action is update.</li><li>if a record is found by using loginID or userData, action is update.</li><li>otherwise, action is create.</li></ul></td></tr>
-<tr><th>passwd</th><td>User Password</td></tr>
-<tr><th>suffixName</th><td>Name Suffix (e.g., Jr.)</td></tr>
-<tr><th>employeeTitle</th><td>Employee Title ID {unfinished, will lookup by title string in the future}</td></tr>
-<tr><th>addr1</th><td>Address, Line 1</td></tr>
-<tr><th>addr2</th><td>Address, Line 2</td></tr>
-<tr><th>city</th><td>City</td></tr>
-<tr><th>state</th><td>State</td></tr>
-<tr><th>zip</th><td>Postal Code</td></tr>
-<tr><th>country</th><td>Country</td></tr>
-<tr><th>email</th><td>EMail Address</td></tr>
-<tr><th>phone</th><td>Phone Number</td></tr>
-<tr><th>hireDate</th><td>Date Hired</td></tr>
-<tr><th>termDate</th><td>Date Terminated</td></tr>
-<tr><th>accessLevel</th><td>User Access Level</td></tr>
-<tr><th>accessMode</th><td>User Access Mode</td></tr>
-<tr><th>roleUserData</th><td>Assign this user only to this group type 1 {ROLE}. Any other group type 1's are unassigned.</td></tr>
-<tr><th>locationUserData</th><td>Assign this user only to this group type 2 {WORKGROUP}. Any other group type 2's are unassigned.</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>
-
Copied: branches/1.6/webapp/api/ccure/user/put/index.jsp (from rev 1401, trunk/webapp/api/ccure/user/put/index.jsp)
===================================================================
--- branches/1.6/webapp/api/ccure/user/put/index.jsp (rev 0)
+++ branches/1.6/webapp/api/ccure/user/put/index.jsp 2016-04-04 01:09:58 UTC (rev 1420)
@@ -0,0 +1,497 @@
+<%@ page language="java" contentType="text/xml;charset=utf-8" %>
+<%@ page trimDirectiveWhitespaces="true" %>
+<%@ 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.Date" %>
+<%@ page import="java.io.StringWriter" %>
+<%@ page import="java.text.SimpleDateFormat" %>
+<%@ page import="org.apache.log4j.Logger" %>
+<%@ page import="org.crosswire.xml.XMLBlock" %>
+
+<%
+ Logger logger = Logger.getLogger(this.getClass());
+ // 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;
+ }
+ // end standard service header -----------------------------------
+
+ String data = request.getParameter("data");
+ if (data != null) {
+ data = data.trim();
+
+/*
+logger.debug("char 0: " + (int)data.charAt(0));
+logger.debug("char 1: " + (int)data.charAt(1));
+logger.debug("char 2: " + (int)data.charAt(2));
+logger.debug("char 3: " + (int)data.charAt(3));
+logger.debug("char 0: " + data.charAt(0));
+logger.debug("char 1: " + data.charAt(1));
+logger.debug("char 2: " + data.charAt(2));
+logger.debug("char 3: " + data.charAt(3));
+*/
+ String UTF8_BOM = "";
+ UTF8_BOM += (char)239;
+ UTF8_BOM += (char)187;
+ UTF8_BOM += (char)191;
+ if (data.startsWith(UTF8_BOM)) {
+ data = data.substring(3);
+ }
+ data = data.trim();
+
+ if (data.startsWith("<?xml")) {
+ data = data.substring(data.indexOf("?>")+2);
+ data = data.trim();
+ }
+/*
+logger.debug("char 0: " + (int)data.charAt(0));
+logger.debug("char 1: " + (int)data.charAt(1));
+logger.debug("char 2: " + (int)data.charAt(2));
+logger.debug("char 0: " + data.charAt(0));
+logger.debug("char 1: " + data.charAt(1));
+logger.debug("char 2: " + data.charAt(2));
+*/
+
+ XMLBlock doc = null;
+ XMLBlock records[] = null;
+ ++errCode;
+ try {
+ doc = new XMLBlock(data);
+ records = doc.getBlocks("SoftwareHouse.NextGen.Common.SecurityObjects.Personnel");
+ }
+ catch (Exception e) {
+ out.print("<error code=\""+errCode+"\" message=\"Error parsing XML: "+e+"\"/>");
+ return;
+ }
+
+ ++errCode;
+ if (records == null || records.length < 1) {
+ out.print("<error code=\""+errCode+"\" message=\"No CCURE Personnel record found in XML data.\"/>");
+ return;
+ }
+
+ StringWriter result = new StringWriter();
+ int loopStartErrCode = errCode;
+ int success = 0;
+ int total = 0;
+ for (XMLBlock record : records) {
+ ++total;
+ errCode = loopStartErrCode;
+
+ int partition = "$$Default$$".equals(record.getValue("PartitionKey")) || "1".equals(record.getValue("PartitionID")) ? 1 : 2;
+ ilsSession.setValue("COMPANYID", partition);
+
+ int userProfileID = -1;
+ String userData = record.getValue("GUID");
+
+ String lname = record.getValue("LastName");
+ String fname = record.getValue("FirstName");
+ String mname = record.getValue("MiddleName");
+ String val = record.getValue("Name");
+ String objectID = record.getValue("ObjectID");
+ if (lname == null || lname.length() == 0) {
+ lname = val.substring(0,val.indexOf(","));
+ fname = val.substring(val.indexOf(",")+1);
+ fname = fname.trim();
+ if (fname.lastIndexOf(" ") != -1) {
+ mname = fname.substring(fname.lastIndexOf(" ")+1);
+ fname = fname.substring(0, fname.lastIndexOf(" "));
+ }
+ }
+
+ String loginID = record.getValue("EmailAddress");
+ if (partition == 1 || loginID == null || loginID.length() == 0) loginID = lname + "-" + objectID;
+
+ result.write("<result guid=\"" + userData + "\" objectID=\"" + objectID + "\" loginID=\"" + loginID + "\">");
+
+ // one of these must be supplied; otherwise, show usage info
+ ++errCode;
+ if (userProfileID != -1 || loginID != null || userData != null) {
+ String errMsg = "";
+
+ UserProfile adminUser = ilsSession.getCurrentUserProfile();
+
+ Logger eventsLogger = Logger.getLogger("EVENTS");
+ String statusMsg = "";
+ SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
+ UserProfile current = new UserProfile();
+ current.defaultAll();
+ // default access level is employee
+ current.setUserProfileAccessLevel(1);
+ current.setUserProfileHireDate(new Date());
+ int currentRoleID = -1;
+ int currentLocationID = -1;
+ String roleName = null;
+ String roleUserData = null;
+ String workgroupName = null;
+ String workgroupUserData = null;
+ boolean createMode = "create".equals(request.getParameter("action"));
+
+ ++errCode;
+ if ((adminUser.getUserProfileAccessLevel() > UserProfile.ACCESS_MANAGER) || (adminUser.hasAccess(UserProfile.ACCESS_MODE_USERPR_SEARCH_VIEW))) {
+ if (!createMode) {
+ UserProfile lookup = null;
+ if (userProfileID != -1) {
+ lookup = UserProfile.getUserProfile(ilsSession, userProfileID);
+ if (lookup == null) {
+ result.write("<error code=\""+errCode+"\" message=\"Permission denied.\"/>");
+ result.write("</result>");
+ continue;
+ }
+ }
+ if (lookup == null && loginID != null) {
+ lookup = UserProfile.getUserProfile(ilsSession, loginID);
+ }
+ if (lookup == null && userData != null) {
+ lookup = UserProfile.getUserProfileByUserData(ilsSession, userData);
+ }
+ if (lookup != null) {
+ current = lookup;
+ }
+ else {
+ if (!"update".equals(request.getParameter("action"))) createMode = true;
+ else current = null;
+ }
+ }
+ }
+ else {
+ ++errCode;
+ result.write("<error code=\""+errCode+"\" message=\"Permission denied.\"/>");
+ result.write("</result>");
+ continue;
+ }
+
+ errCode += 2;
+ if (current == null) {
+ result.write("<error code=\""+errCode+"\" message=\"User Profile not found.\"/>");
+ result.write("</result>");
+ continue;
+ }
+ ++errCode;
+ if (createMode && current.getUserProfileID() > 0) {
+ result.write("<error code=\""+errCode+"\" message=\"User Profile exists.\"/>");
+ result.write("</result>");
+ continue;
+ }
+ if (current.getUserProfileID() > 0 && adminUser.getUserProfileAccessLevel() <= UserProfile.ACCESS_MANAGER && !adminUser.hasAccess(UserProfile.ACCESS_MODE_USERPR_MODIFY_USER)) {
+ result.write("<error code=\""+errCode+"\" message=\"Permission denied to edit user profile.\"/>");
+ result.write("</result>");
+ continue;
+ }
+
+ boolean createGroupOnDemand = true; //false; try { createGroupOnDemand = "true".equals(request.getParameter("createGroupOnDemand")); } catch (Exception e) {}
+ val = record.getValue("UDF__ROLE_");
+ String val2 = request.getParameter("roleUserData");
+ int requestedRole = -1;
+
+ ++errCode;
+ if ((val != null && val.trim().length() > 0) || (val2 != null && val2.trim().length() > 0)) {
+ boolean err = false;
+ for (int i = 0; i < 2; ++i) {
+ Group g = (val2 != null) ? Group.getGroupByUserData(ilsSession, Group.GROUPTYPE_ROLE, val2) : Group.getGroupByName(ilsSession, Group.GROUPTYPE_ROLE, val);
+ if (g != null) {
+ requestedRole = g.getGroupID();
+ roleName = g.getGroupName();
+ break;
+ }
+ else {
+ if (i < 1 && createGroupOnDemand) {
+ Group grp = new Group();
+ grp.defaultAll();
+ grp.setGroupTypeID(Group.GROUPTYPE_ROLE);
+ grp.setGroupName(val != null ? val : val2);
+ roleName = grp.getGroupName();
+ grp.setGroupDesc(roleName);
+ if (val2 != null) grp.setValue("USERDATA", val2);
+ grp.saveNew(ilsSession);
+ }
+ else {
+ result.write("<error code=\""+errCode+"\" message=\"" + ((val2 != null) ? "roleUserData" : "roleName") + " was submitted but was not found in the database. You must specify an existing Role or createGroupOnDemand must be passed as true.\"/>");
+ result.write("</result>");
+ err = true;
+ break;
+ }
+ }
+ }
+ if (err) continue;
+ }
+
+ ++errCode;
+ val = record.getValue("UDF__COMPANY_");
+ val2 = request.getParameter("locationUserData");
+ int requestedLocation = -1;
+ if ((val != null && val.trim().length() > 0) || (val2 != null && val2.trim().length() > 0)) {
+ boolean err = false;
+ for (int i = 0; i < 2; ++i) {
+ Group g = (val2 != null) ? Group.getGroupByUserData(ilsSession, Group.GROUPTYPE_LOCATION, val2) : Group.getGroupByName(ilsSession, Group.GROUPTYPE_LOCATION, val);
+ if (g != null) {
+ requestedLocation = g.getGroupID();
+ workgroupName = g.getGroupName();
+ break;
+ }
+ else {
+ if (i < 1 && createGroupOnDemand) {
+ Group grp = new Group();
+ grp.defaultAll();
+ grp.setGroupTypeID(Group.GROUPTYPE_LOCATION);
+ grp.setGroupName(val != null ? val : val2);
+ workgroupName = grp.getGroupName();
+ grp.setGroupDesc(workgroupName);
+ if (val2 != null) grp.setValue("USERDATA", val2);
+ grp.saveNew(ilsSession);
+ }
+ else {
+ result.write("<error code=\""+errCode+"\" message=\""+((val2 != null) ? "locationUserData" : "locationName") + " was submitted but was not found in the database. You must specify an existing Location or createGroupOnDemand must be passed as true.\"/>");
+ result.write("</result>");
+ err = true;
+ break;
+ }
+ }
+ }
+ if (err) continue;
+ }
+
+ UserProfile orig = (UserProfile)current.clone();
+
+ ++errCode;
+ val = loginID;
+ if (val != null && val.trim().length() > 0) {
+ UserProfile up = UserProfile.getUserProfile(ilsSession, val);
+ if ((up != null) && (up.getUserProfileID() != current.getUserProfileID())) {
+ errMsg = "The Employee ID already exists.";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+ else {
+ current.setUserProfileNum(val);
+ }
+ }
+
+ // set associated external data, typically used for API client to map this user back to their system
+ if (userData != null && userData.length() > 0) current.setValue("USERDATA", userData);
+
+ val = request.getParameter("passwd");
+ if (val != null && val.trim().length() > 0) current.setUserProfilePasswd(val);
+ val = request.getParameter("statusID");
+ if (val != null && val.trim().length() > 0) current.setUserProfileStatusID(Integer.parseInt(val));
+
+ val = request.getParameter("accessLevel");
+ if (val != null && val.trim().length() > 0) current.setUserProfileAccessLevel(Integer.parseInt(val));
+
+ val = request.getParameter("accessMode");
+ if (val != null && val.trim().length() > 0) current.setUserProfileAccessMode(Integer.parseInt(val));
+
+ val = fname;
+ if (val != null && val.trim().length() > 0) current.setUserProfileFirstName(val);
+ val = mname;
+ if (val != null && val.trim().length() > 0) current.setUserProfileMiddleName(val);
+ val = request.getParameter("suffixName");
+ if (val != null && val.trim().length() > 0) current.setUserProfileSuffixName(val);
+ val = lname;
+ if (val != null && val.trim().length() > 0) current.setUserProfileLastName(val);
+ val = request.getParameter("employeeTitle");
+ if (val != null && val.trim().length() > 0) current.setUserProfileEmployeeTitleID(Integer.parseInt(val));
+ val = request.getParameter("addr1");
+ if (val != null && val.trim().length() > 0) current.setUserProfileAddr1(val);
+
+
+ // store ObjectID in ADDR2 for now until we can resolve how to use GUID to update records via VWS
+ val = objectID;
+ if (val != null && val.trim().length() > 0) current.setUserProfileAddr2(val);
+
+
+ val = request.getParameter("city");
+ if (val != null && val.trim().length() > 0) current.setUserProfileCity(val);
+ val = request.getParameter("state");
+ if (val != null && val.trim().length() > 0) current.setUserProfileState(val);
+ val = request.getParameter("zip");
+ if (val != null && val.trim().length() > 0) current.setUserProfileZip(val);
+ val = request.getParameter("country");
+ if (val != null && val.trim().length() > 0) current.setUserProfileCountry(val);
+ val = record.getValue("EmailAddress");
+ if (val != null && val.trim().length() > 0) current.setUserProfileEMail(val);
+ val = request.getParameter("phone");
+ if (val != null && val.trim().length() > 0) current.setUserProfilePhone(val);
+ val = request.getParameter("hireDate");
+ ++errCode;
+ if ((val != null) && (!val.startsWith("m"))) {
+ Date v = Utils.parseDate(val, 150 * 365, 10 * 365);
+ if (v != null) {
+ current.setUserProfileHireDate(v);
+ }
+ else {
+ errMsg = "Invalid Hire Date, please enter a reasonable date using the format MM/DD/YYYY";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+ }
+
+ ++errCode;
+ val = request.getParameter("termDate");
+ if ((val != null) && (!val.startsWith("m"))) {
+ Date v = Utils.parseDate(val, 150 * 365, 10 * 365);
+ if (v != null) {
+ current.setUserProfileTermDate(v);
+ }
+ else {
+ errMsg = "Invalid Termination Date, please enter a reasonable date using the format MM/DD/YYYY";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+ }
+
+ if ((current.getUserProfilePasswd() == null) || (current.getUserProfilePasswd().trim().length() < 1)) {
+ current.setUserProfilePasswd("changeme");
+ }
+
+ ++errCode;
+ if ((current.getUserProfileFirstName() == null) || (current.getUserProfileFirstName().length() < 1)) {
+ errMsg = "You must supply a First Name (firstName)";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+ ++errCode;
+ if ((current.getUserProfileLastName() == null) || (current.getUserProfileLastName().length() < 1)) {
+ errMsg = "You must supply a Last Name (lastName)";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+ ++errCode;
+ if ((current.getUserProfileNum() == null) || (current.getUserProfileNum().length() < 1)) {
+ errMsg = "You must supply an Login ID (loginID)";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+
+ ++errCode;
+ /*
+ if (currentRoleID < 0 && requestedRole < 0) {
+ errMsg = "You must choose a Role for this employee";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+ */
+ ++errCode;
+ /*
+ if (currentLocationID < 0 && requestedLocation < 0) {
+ errMsg = "You must choose a Workgroup for this employee";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+ */
+ ++errCode;
+ /*
+ if (current.getUserProfileEmployeeTitleID() < 1) {
+ errMsg = "You must supply an Employee Title";
+ result.write("<error code=\""+errCode+"\" message=\""+errMsg+"\"/>");
+ result.write("</result>");
+ continue;
+ }
+ */
+
+ if (orig.getUserProfileID() > 0) {
+ boolean emailNotice = "on".equals(Utils.getSysConfig(session).getProperty("EmailEnableChangePassword", "off"));
+ HttpSession sendEmail = (emailNotice) ? session : null;
+ current.save(ilsSession, orig, sendEmail);
+ }
+ else {
+ current = current.saveNew(ilsSession, session, workgroupName, roleName);
+ }
+ if ((requestedRole != currentRoleID) && (requestedRole > -1)) {
+ Group.deleteUserGroups(ilsSession, Group.GROUPTYPE_ROLE, current.getUserProfileID());
+ Group.addUserGroup(ilsSession, requestedRole, current.getUserProfileID());
+ // modifying an existing user
+ if (orig.getUserProfileID() > 0) {
+ eventsLogger.info("User " + current.getUserProfileNum() + " ROLE changed from " + currentRoleID + " to " + requestedRole + " by user: " + adminUser.getUserProfileNum());
+ }
+ }
+ if ((requestedLocation != currentLocationID) && (requestedLocation > -1)) {
+ Group.deleteUserGroups(ilsSession, Group.GROUPTYPE_LOCATION, current.getUserProfileID());
+ Group.addUserGroup(ilsSession, requestedLocation, current.getUserProfileID());
+ if (orig.getUserProfileID() > 0) {
+ eventsLogger.info("User " + current.getUserProfileNum() + " WORKGROUP changed from " + currentLocationID + " to " + requestedLocation + " by user: " + adminUser.getUserProfileNum());
+ }
+ }
+ result.write("<success userProfileID=\""+current.getUserProfileID()+"\""+(requestedRole > -1 ? " updatedRoleID=\"" + requestedRole + "\"" : "")+(requestedLocation > -1 ? " updatedLocationID=\"" + requestedLocation + "\"" : "")+"/>");
+ result.write("</result>");
+ ++success;
+ }
+ else result.write("<error code=\""+errCode+"\" message=\"no loginID, userProfileID, or userData to identify record\" />");
+
+ } // record, for loop
+
+ if (success == total) out.print("<success");
+ else out.print("<error");
+
+ out.print(" count=\""+total+"\" success=\""+success+"\">");
+ out.print(result.toString());
+
+ if (success == total) out.print("</success>");
+ else out.print("</error>");
+ return;
+}
+response.setContentType("text/html");
+%>
+<html>
+<style>th { text-align:left; }</style>
+<body>
+<h1>user/put</h1>
+<p>Create or modify a user profile record</p>
+<h3>Parameters</h3>
+<table border="1">
+<tbody>
+<tr><th>data</th><td>CCURE Personnel XML. Extra parameters below are still accepted</td></tr>
+<tr><th>action</th><td>(optional) [update|create] If not supplied, action is determined by: <ul><li>if userProfileID is supplied, action is update.</li><li>if a record is found by using loginID or userData, action is update.</li><li>otherwise, action is create.</li></ul></td></tr>
+<tr><th>passwd</th><td>User Password</td></tr>
+<tr><th>suffixName</th><td>Name Suffix (e.g., Jr.)</td></tr>
+<tr><th>employeeTitle</th><td>Employee Title ID {unfinished, will lookup by title string in the future}</td></tr>
+<tr><th>addr1</th><td>Address, Line 1</td></tr>
+<tr><th>addr2</th><td>Address, Line 2</td></tr>
+<tr><th>city</th><td>City</td></tr>
+<tr><th>state</th><td>State</td></tr>
+<tr><th>zip</th><td>Postal Code</td></tr>
+<tr><th>country</th><td>Country</td></tr>
+<tr><th>email</th><td>EMail Address</td></tr>
+<tr><th>phone</th><td>Phone Number</td></tr>
+<tr><th>hireDate</th><td>Date Hired</td></tr>
+<tr><th>termDate</th><td>Date Terminated</td></tr>
+<tr><th>accessLevel</th><td>User Access Level</td></tr>
+<tr><th>accessMode</th><td>User Access Mode</td></tr>
+<tr><th>roleUserData</th><td>Assign this user only to this group type 1 {ROLE}. Any other group type 1's are unassigned.</td></tr>
+<tr><th>locationUserData</th><td>Assign this user only to this group type 2 {WORKGROUP}. Any other group type 2's are unassigned.</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