From scribe at crosswire.org Wed Jan 9 10:52:46 2019 From: scribe at crosswire.org (scribe at crosswire.org) Date: Wed, 09 Jan 2019 10:52:46 -0700 Subject: [Ils-source] r1627 - trunk/webapp Message-ID: Author: scribe Date: 2019-01-09 10:52:45 -0700 (Wed, 09 Jan 2019) New Revision: 1627 Modified: trunk/webapp/admin_systemmanagement.jsp Log: Commented out stage time facility Modified: trunk/webapp/admin_systemmanagement.jsp =================================================================== --- trunk/webapp/admin_systemmanagement.jsp 2018-11-12 14:30:34 UTC (rev 1626) +++ trunk/webapp/admin_systemmanagement.jsp 2019-01-09 17:52:45 UTC (rev 1627) @@ -1802,6 +1802,7 @@ Scheduled Jobs + From scribe at crosswire.org Wed Jan 9 10:57:51 2019 From: scribe at crosswire.org (scribe at crosswire.org) Date: Wed, 09 Jan 2019 10:57:51 -0700 Subject: [Ils-source] r1628 - in branches/1.6: . src/com/resolutions/ils/data src/com/resolutions/jobs webapp webapp/WEB-INF/classes webapp/WEB-INF/lib Message-ID: Author: scribe Date: 2019-01-09 10:57:51 -0700 (Wed, 09 Jan 2019) New Revision: 1628 Modified: branches/1.6/ branches/1.6/build.xml branches/1.6/src/com/resolutions/ils/data/CourseAttempt.java branches/1.6/src/com/resolutions/ils/data/UserProfile.java branches/1.6/src/com/resolutions/jobs/MgrComplianceEMails.java branches/1.6/webapp/WEB-INF/classes/versions.properties branches/1.6/webapp/WEB-INF/lib/crosswire.jar branches/1.6/webapp/WEB-INF/lib/ils.jar branches/1.6/webapp/admin_profile.jsp branches/1.6/webapp/admin_systemmanagement.jsp Log: Merged and committed final changes for release: 1.85.0 Property changes on: branches/1.6 ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:796-1502,1504-1505,1507,1509-1510,1512,1514-1515,1517-1563,1565,1567,1569-1608,1610,1613-1614,1619 + /trunk:796-1502,1504-1505,1507,1509-1510,1512,1514-1515,1517-1563,1565,1567,1569-1608,1610,1613-1614,1619,1621-1627 Modified: branches/1.6/build.xml =================================================================== --- branches/1.6/build.xml 2019-01-09 17:52:45 UTC (rev 1627) +++ branches/1.6/build.xml 2019-01-09 17:57:51 UTC (rev 1628) @@ -61,6 +61,7 @@ + Modified: branches/1.6/src/com/resolutions/ils/data/CourseAttempt.java =================================================================== --- branches/1.6/src/com/resolutions/ils/data/CourseAttempt.java 2019-01-09 17:52:45 UTC (rev 1627) +++ branches/1.6/src/com/resolutions/ils/data/CourseAttempt.java 2019-01-09 17:57:51 UTC (rev 1628) @@ -90,11 +90,11 @@ " AND CA2.CASTATUSID=1" + " AND CA2.CAEXPIREDON IS NULL" + " AND CC.COURSPASSEXPDAYS > 0" + - " AND CA2.CACOMPLETEDATE <= (current_timestamp - (CC.COURSPASSEXPDAYS - COALESCE(CC.COURSREASBEFDAYS,0)))"; + " AND DATEDIFF(day, CA2.CACOMPLETEDATE, {CURRENT_TIMESTAMP}) >= (CC.COURSPASSEXPDAYS - COALESCE(CC.COURSREASBEFDAYS,0))"; static String LOOKUPEXPCOURSE = LOOKUPEXP + " AND CA2.COURSID={COURSID}"; - static String REVOKE = "UPDATE COURSEATTEMPT SET CAEXPIREDON=current_timestamp, CAEXPREASON='Recurrent Training Assigned'"; + static String REVOKE = "UPDATE COURSEATTEMPT SET CAEXPIREDON={CURRENT_TIMESTAMP}, CAEXPREASON='Recurrent Training Assigned'"; static String REVOKEEXPCOURSE = REVOKE + " WHERE COURSATTID IN (" + LOOKUPEXPCOURSE + ")"; static String REVOKEEXP = REVOKE + " WHERE COURSATTID IN (" + LOOKUPEXP + ")"; @@ -107,7 +107,7 @@ " AND CA2.CASTATUSID=1" + " AND CA2.CAEXPIREDON IS NOT NULL" + " AND CC.COURSPASSEXPDAYS > 0" + - " AND CA2.CACOMPLETEDATE <= (current_timestamp - (CC.COURSPASSEXPDAYS - {WARNDAYS}))"; + " AND DATEDIFF(day, CA2.CACOMPLETEDATE, {CURRENT_TIMESTAMP}) >= (CC.COURSPASSEXPDAYS - {WARNDAYS})"; static String LOOKUPPENDINGEXPCOURSE = LOOKUPPENDINGEXP + " AND CA2.COURSID={COURSID}"; @@ -163,6 +163,7 @@ Properties sysConfig = Utils.getSysConfig(context, companyID); CourseAttempt query = new CourseAttempt(); query.setCompanyID(companyID); + query.setTSValue("CURRENT_TIMESTAMP", Utils.getNow()); List results = null; int count = 0; Course course = null; @@ -240,10 +241,11 @@ * @return */ static public synchronized int warnAllPendingExpired(int companyID, int courseID, ServletContext context, int warningNumber) { +logger.debug("Begin warnAllPendingExpired(companyID: " + companyID + ", courseID: " + courseID + "; warningNumber: " + warningNumber); Properties sysConfig = Utils.getSysConfig(context, companyID); CourseAttempt query = new CourseAttempt(); query.setCompanyID(companyID); - String WARN = "UPDATE COURSEATTEMPT SET CAWARNEDON"+warningNumber+"=current_timestamp"; + String WARN = "UPDATE COURSEATTEMPT SET CAWARNEDON"+warningNumber+"={CURRENT_TIMESTAMP}"; List results = null; int count = 0; @@ -251,14 +253,19 @@ switch (warningNumber) { case 1: try { warnDays = Integer.parseInt(sysConfig.getProperty("EmailBeforeDueDate1", "0")); } catch (Exception e) { e.printStackTrace(); } + break; case 2: try { warnDays = Integer.parseInt(sysConfig.getProperty("EmailBeforeDueDate2", "0")); } catch (Exception e) { e.printStackTrace(); } + break; case 3: - try { warnDays = Integer.parseInt(sysConfig.getProperty("EmailPastDueDate1", "0")); } catch (Exception e) { e.printStackTrace(); } + try { warnDays = -1 * Integer.parseInt(sysConfig.getProperty("EmailPastDueDate1", "0")); } catch (Exception e) { e.printStackTrace(); } + break; case 4: - try { warnDays = Integer.parseInt(sysConfig.getProperty("EmailPastDueDate2", "0")); } catch (Exception e) { e.printStackTrace(); } + try { warnDays = -1 * Integer.parseInt(sysConfig.getProperty("EmailPastDueDate2", "0")); } catch (Exception e) { e.printStackTrace(); } + break; } query.setIntValue("WARNDAYS", warnDays); + query.setTSValue("CURRENT_TIMESTAMP", Utils.getNow()); if (courseID > 0) { query.setCourseAttemptCourseID(courseID); @@ -283,7 +290,7 @@ try { HashMap params = new HashMap(); params.put("SITEURL", sysConfig.getProperty("SiteURL", "your training site")); - params.put("WARNDAYS", Integer.toString(warnDays)); + params.put("WARNDAYS", Integer.toString(Math.abs(warnDays))); params.putAll(ca.getData()); String subject = Utils.replaceParams(subjectTemplate, params); String body = Utils.replaceParams(bodyTemplate, params); @@ -296,6 +303,7 @@ } SMTPMail.closeMailConnection(); } +logger.debug("End warnAllPendingExpired(companyID: " + companyID + ", courseID: " + courseID + "; warningNumber: " + warningNumber + ") : " + count); return count; } @@ -717,7 +725,7 @@ } public void setCourseAttemptExpired(String reason) { - setTSValue("CAEXPIREDON", new Date()); + setTSValue("CAEXPIREDON", Utils.getNow()); setValue("CAEXPREASON", reason); } @@ -734,7 +742,7 @@ } public void setCourseAttemptForcePass(String reason) { - Date now = new Date(); + Date now = Utils.getNow(); setTSValue("CAFORCEPASSON", now); if (getCourseAttemptCompleteDate() == null) { setCourseAttemptCompleteDate(now); @@ -766,7 +774,7 @@ public void defaultAll() { setCourseAttemptScore(-1); - setCourseAttemptStartDate(new Date()); + setCourseAttemptStartDate(Utils.getNow()); setCourseAttemptStatusID(STATUS_IN_PROGRESS); } Modified: branches/1.6/src/com/resolutions/ils/data/UserProfile.java =================================================================== --- branches/1.6/src/com/resolutions/ils/data/UserProfile.java 2019-01-09 17:52:45 UTC (rev 1627) +++ branches/1.6/src/com/resolutions/ils/data/UserProfile.java 2019-01-09 17:57:51 UTC (rev 1628) @@ -28,7 +28,8 @@ import com.resolutions.ils.ILSSession; import com.resolutions.ils.ILSDataObject; -import com.resolutions.ils.Utils; +import org.crosswire.utils.Utils; +import org.crosswire.utils.SMTPMail; import java.util.HashMap; import java.io.StringWriter; import org.owasp.html.HtmlPolicyBuilder; @@ -89,14 +90,14 @@ + " UP.USERPRLNAME, UP.USERPRFNAME, UP.USERPRNUM, " + " (SELECT MAX(GROUPNAME) FROM USERGROUP UG JOIN ILSGROUP IG ON UG.ILSGROUPID=IG.ILSGROUPID AND UG.USERPRID=UP.USERPRID AND GROUPTYPEID=2) WORKGROUP," + " (SELECT MAX(GROUPNAME) FROM USERGROUP UG JOIN ILSGROUP IG ON UG.ILSGROUPID=IG.ILSGROUPID AND UG.USERPRID=UP.USERPRID AND GROUPTYPEID=1) ROLE, " - + " C.COURSNAME, CA.CACOMPLETEDATE, CASE C.COURSPASSEXPDAYS WHEN 0 THEN CA.CAEXPIREDON ELSE COALESCE(CA.CAEXPIREDON, CA.CACOMPLETEDATE+C.COURSPASSEXPDAYS) END AS CAEXPIREDON, DATEDIFF(day, CA.CAEXPIREDON, CURRENT_TIMESTAMP) as DAYSEXPIRED, CASE C.COURSPASSEXPDAYS WHEN 0 THEN NULL ELSE C.COURSPASSEXPDAYS - DATEDIFF(day, CA.CACOMPLETEDATE, CURRENT_TIMESTAMP) END as DAYSSHOULDEXPIRE " + + " C.COURSNAME, CA.CACOMPLETEDATE, CASE C.COURSPASSEXPDAYS WHEN 0 THEN CA.CAEXPIREDON ELSE COALESCE(CA.CAEXPIREDON, CA.CACOMPLETEDATE+C.COURSPASSEXPDAYS) END AS CAEXPIREDON, DATEDIFF(day, CA.CAEXPIREDON, {CURRENT_TIMESTAMP}) as DAYSEXPIRED, CASE C.COURSPASSEXPDAYS WHEN 0 THEN NULL ELSE C.COURSPASSEXPDAYS - DATEDIFF(day, CA.CACOMPLETEDATE, {CURRENT_TIMESTAMP}) END as DAYSSHOULDEXPIRE " + " FROM USERCOURSEASSIGNMENTSWITHGROUPS CASS " + " LEFT JOIN COURSE C ON C.COURSID = CASS.COURSID " + " LEFT JOIN COURSE CURDET ON CURDET.COURSID = CASS.FROMCURRICULUM " + " LEFT JOIN COURSEATTEMPT CA ON CA.USERPRID=CASS.USERPRID AND CA.COURSID=CASS.COURSID " + " INNER JOIN (SELECT USERPRID, COURSID, MAX(CACOMPLETEDATE) as max_date FROM COURSEATTEMPT GROUP BY USERPRID, COURSID)a on a.USERPRID = CA.USERPRID AND a.COURSID=CA.COURSID and a.max_date = CA.CACOMPLETEDATE " + " LEFT JOIN USERPROFILE UP ON UP.COMPANYID=CASS.COMPANYID AND UP.USERPRID = CASS.USERPRID " - + " WHERE CASS.COMPANYID={COMPANYID} AND (DATEDIFF(day, CA.CAEXPIREDON, CURRENT_TIMESTAMP) >= 0 OR CASE C.COURSPASSEXPDAYS WHEN 0 THEN NULL ELSE C.COURSPASSEXPDAYS - DATEDIFF(day, CA.CACOMPLETEDATE, CURRENT_TIMESTAMP) END <={DAYSTILEXP}) AND UP.USERPRSTATUSID=" + STATUS_ACTIVE + + " WHERE CASS.COMPANYID={COMPANYID} AND (DATEDIFF(day, CA.CAEXPIREDON, {CURRENT_TIMESTAMP}) >= 0 OR CASE C.COURSPASSEXPDAYS WHEN 0 THEN NULL ELSE C.COURSPASSEXPDAYS - DATEDIFF(day, CA.CACOMPLETEDATE, {CURRENT_TIMESTAMP}) END <={DAYSTILEXP}) AND UP.USERPRSTATUSID=" + STATUS_ACTIVE + " AND (CURDET.COURSISCURRICCERT IS NULL OR CURDET.COURSISCURRICCERT = 'F')" + ""; static String RECURRENT_TRAINING_REPORT_LIMIT_TO_MANAGER = " AND CASS.USERPRID IN (SELECT DISTINCT UG.USERPRID FROM MANAGERGROUP MG LEFT JOIN USERGROUP UG ON UG.COMPANYID = MG.COMPANYID AND UG.ILSGROUPID=MG.ILSGROUPID WHERE MG.COMPANYID={COMPANYID} AND MG.USERPRID={USERPRID}) AND (GROUPTYPEID <> 2 OR ILSGROUPID IN (SELECT ILSGROUPID FROM MANAGERGROUP WHERE COMPANYID={COMPANYID} AND USERPRID={USERPRID}))"; @@ -158,14 +159,14 @@ static public int deleteExpiredUserProfiles(ILSSession session, int olderThanDays) { Calendar cal = Calendar.getInstance(); - cal.setTime(new Date()); + cal.setTime(Utils.getNow()); cal.add(Calendar.DAY_OF_YEAR, olderThanDays*-1); return deleteExpiredUserProfiles(session, cal.getTime()); } static public int getCountOfExpiredUserProfiles(ILSSession session, int olderThanDays) { Calendar cal = Calendar.getInstance(); - cal.setTime(new Date()); + cal.setTime(Utils.getNow()); cal.add(Calendar.DAY_OF_YEAR, olderThanDays*-1); return getCountOfExpiredUserProfiles(session, cal.getTime()); } @@ -227,7 +228,7 @@ subject = Utils.replaceParams(subject, params); body = Utils.replaceParams(body, params); body += Utils.getSysConfig(email).getProperty("SendMailSig", ""); - Utils.sendEmail(email, Utils.getSysConfig(email).getProperty("SendMailFrom"), getUserProfileEMail(), subject, body, false); + SMTPMail.sendEmail(email, Utils.getSysConfig(email).getProperty("SendMailFrom"), getUserProfileEMail(), subject, body, false); } catch (Exception e) { e.printStackTrace(); @@ -278,7 +279,7 @@ subject = Utils.replaceParams(subject, params); body = Utils.replaceParams(body, params); body += sysConfig.getProperty("SendMailSig", ""); - Utils.sendEmail(email, sysConfig.getProperty("SendMailFrom"), retVal.getUserProfileEMail(), subject, body, false); + SMTPMail.sendEmail(email, sysConfig.getProperty("SendMailFrom"), retVal.getUserProfileEMail(), subject, body, false); } } catch (Exception e) { @@ -585,6 +586,7 @@ UserProfile retVal = new UserProfile(); String sql = RECURRENT_TRAINING_REPORT; retVal.setCompanyID(companyID); + retVal.setTSValue("CURRENT_TIMESTAMP", Utils.getNow()); retVal.setIntValue("DAYSTILEXP", daysTilExpire); if (limitToManagerID != -1) { sql += RECURRENT_TRAINING_REPORT_LIMIT_TO_MANAGER; @@ -612,6 +614,7 @@ return getStringValue("USERPRNUM"); } + //TODO: this method should not exist public String getUserProfilePasswd() { return getStringValue("USERPRPASSWD"); } @@ -697,7 +700,7 @@ Calendar cal = Calendar.getInstance(); cal.setTime(getUserProfileHireDate()); cal.add(Calendar.DAY_OF_YEAR, days); - return cal.getTime().getTime() < new Date().getTime(); + return cal.getTime().getTime() < Utils.getNowMillis(); } public Date getUserProfileTermDate() { @@ -781,7 +784,8 @@ } public void setUserProfilePasswd(String userProfilePasswd) { - setValue("USERPRPASSWD", userProfilePasswd); + // bypass OWASP XSS sanitation; we never include passwd as part of html + super.setValue("USERPRPASSWD", userProfilePasswd); } public void setUserProfileState(String userProfileState) { @@ -823,7 +827,7 @@ public void setUserProfileStatusID(int userProfileStatusID) { setIntValue("USERPRSTATUSID", userProfileStatusID); if (userProfileStatusID == UserProfile.STATUS_INACTIVE) { - setUserProfileInactiveDate(new Date()); + setUserProfileInactiveDate(Utils.getNow()); } } @@ -1037,13 +1041,13 @@ body = Utils.replaceParams(body, params); body += Utils.getSysConfig(httpSession).getProperty("SendMailSig", ""); try { - Utils.sendEmail(httpSession, Utils.getSysConfig(httpSession).getProperty("SendMailFrom"), email, subject, body, true); + SMTPMail.sendEmail(httpSession, Utils.getSysConfig(httpSession).getProperty("SendMailFrom"), email, subject, body, true); } catch (Exception e) { e.printStackTrace(); } } } - Utils.closeMailConnection(); + SMTPMail.closeMailConnection(); return results.size(); } @@ -1099,7 +1103,7 @@ String companyName = Company.getCompany(getCompanyID()).getCompanyName(); out.write(companyName + "\n"); out.write(getUserProfileFirstName() + " " + getUserProfileLastName() + "\n"); - out.write("Report Run " + df.format(new Date()) + "\n\n"); + out.write("Report Run " + df.format(Utils.getNow()) + "\n\n"); out.write("Compliance Report\n\n"); out.write(getGroupComplReport(getCompanyID(), groupID).toString()); Properties sysConfig = Utils.getSysConfig(context, getCompanyID()); @@ -1121,7 +1125,7 @@ catch (Exception e) { e.printStackTrace(); } - Utils.closeMailConnection(); + SMTPMail.closeMailConnection(); } @@ -1148,7 +1152,7 @@ String companyName = Company.getCompany(getCompanyID()).getCompanyName(); out.write(companyName + "\n"); out.write(getUserProfileFirstName() + " " + getUserProfileLastName() + "\n"); - out.write("Report Run " + df.format(new Date()) + "\n\n"); + out.write("Report Run " + df.format(Utils.getNow()) + "\n\n"); out.write("Recurrent Training Management Report\n\n"); out.write("Past Due Training\n\n"); out.write("Last Name,"); @@ -1216,7 +1220,7 @@ catch (Exception e) { e.printStackTrace(); } - Utils.closeMailConnection(); + SMTPMail.closeMailConnection(); } public String toXML() { Modified: branches/1.6/src/com/resolutions/jobs/MgrComplianceEMails.java =================================================================== --- branches/1.6/src/com/resolutions/jobs/MgrComplianceEMails.java 2019-01-09 17:52:45 UTC (rev 1627) +++ branches/1.6/src/com/resolutions/jobs/MgrComplianceEMails.java 2019-01-09 17:57:51 UTC (rev 1628) @@ -17,7 +17,7 @@ import org.apache.log4j.Logger; -import com.resolutions.ils.Utils; +import org.crosswire.utils.Utils; import com.resolutions.ils.data.Company; import com.resolutions.ils.data.Group; import com.resolutions.ils.data.UserProfile; @@ -71,15 +71,15 @@ else { cal.add(Calendar.DAY_OF_MONTH, 1); } - cal.add(Calendar.HOUR, -4); // be sure we don't miss out date by just a few hours. report shouldn't take more than this long to run the reports. -logger.debug("LastBatchRun: " + lastDate + "; Next Batch Run After: " + cal.getTime() + "; Now: " + new Date()); + cal.add(Calendar.HOUR, -4); // be sure we don't miss our date by just a few hours. report shouldn't take more than this long to run the reports. +logger.debug("LastBatchRun: " + lastDate + "; Next Batch Run After: " + cal.getTime() + "; Now: " + Utils.getNow()); lastDate = cal.getTime(); - if (new Date().after(lastDate)) { + if (Utils.getNow().after(lastDate)) { logger.debug("running..."); UserProfile.runMgrComplReport(servletContext, complReportThresholdPercent, complReportManagersOlderThanNumDays); - lastJobs.setProperty("LastBatchRun", df.format(new Date())); + lastJobs.setProperty("LastBatchRun", df.format(Utils.getNow())); try { FileOutputStream propFile = new FileOutputStream(propName); lastJobs.store(propFile, "last saved from MgrComplEmail batch job"); Modified: branches/1.6/webapp/WEB-INF/classes/versions.properties =================================================================== --- branches/1.6/webapp/WEB-INF/classes/versions.properties 2019-01-09 17:52:45 UTC (rev 1627) +++ branches/1.6/webapp/WEB-INF/classes/versions.properties 2019-01-09 17:57:51 UTC (rev 1628) @@ -1 +1 @@ -LMS=V1.82.1 +LMS=V1.85.0 Modified: branches/1.6/webapp/WEB-INF/lib/crosswire.jar =================================================================== (Binary files differ) Modified: branches/1.6/webapp/WEB-INF/lib/ils.jar =================================================================== (Binary files differ) Modified: branches/1.6/webapp/admin_profile.jsp =================================================================== --- branches/1.6/webapp/admin_profile.jsp 2019-01-09 17:52:45 UTC (rev 1627) +++ branches/1.6/webapp/admin_profile.jsp 2019-01-09 17:57:51 UTC (rev 1628) @@ -581,12 +581,10 @@ - Modified: branches/1.6/webapp/admin_systemmanagement.jsp =================================================================== --- branches/1.6/webapp/admin_systemmanagement.jsp 2019-01-09 17:52:45 UTC (rev 1627) +++ branches/1.6/webapp/admin_systemmanagement.jsp 2019-01-09 17:57:51 UTC (rev 1628) @@ -4,8 +4,9 @@ contentType="text/html;charset=utf-8" %> <%@ page trimDirectiveWhitespaces="true" %> -<%@ page import="com.resolutions.ils.*" %> +<%@ page import="org.crosswire.utils.Utils" %> <%@ page import="com.resolutions.ils.data.*" %> +<%@ page import="com.resolutions.ils.ILSSession" %> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.Comparator" %> @@ -21,6 +22,11 @@ <%@ page import="org.apache.commons.fileupload.*" %> <%@ page import="org.apache.commons.lang.StringEscapeUtils" %> <%@ page import="org.apache.log4j.Logger" %> +<%@ page import="org.quartz.Scheduler" %> +<%@ page import="org.quartz.JobKey" %> +<%@ page import="org.quartz.Trigger" %> +<%@ page import="org.quartz.impl.StdSchedulerFactory" %> +<%@ page import="org.quartz.impl.matchers.GroupMatcher" %> <% Logger logger = Logger.getLogger(this.getClass()); @@ -110,12 +116,10 @@ emailTemplates.add(new EMailTemplate("Recurrent Training Report", "Your Employee's Past Due & Upcoming Training", "The attached Recurrent Training Report includes the Past Due & Upcoming Recurrent Training for your employees at {CONAME}." )); -/* // 8 emailTemplates.add(new EMailTemplate("Manager Compliance Report", "Your Teams' Compliance", "The attached Team Compliance Report includes the compliance rates for your employees at {CONAME}." )); -*/ Properties sysConfigProperties = Utils.getSysConfig(session); File sysConfigFile = new File(session.getServletContext().getRealPath("/WEB-INF/sysconfig."+ilsSession.getCompanyID()+".properties")); @@ -195,7 +199,7 @@ String validError = ""; Company current = null; - SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy"); + SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss z"); try { current = Company.getCompany(ilsSession); @@ -479,6 +483,27 @@ statusMsg = "Sent Manager Compliance Emails."; logger.debug("Finished Sending Manager Compliance Emails"); } + if ("runJob".equals(action)) { + String jobGroup = request.getParameter("jobGroup"); + String jobName = request.getParameter("jobName"); + JobKey jobKey = JobKey.jobKey(jobName, jobGroup); + Scheduler scheduler = new StdSchedulerFactory().getScheduler(); + try { + scheduler.triggerJob(jobKey); + statusMsg = "Launching Job: " + jobName + "."; + } + catch (Exception e) { + statusMsg = "Problem Launching Job: " + jobName + "."; + } + } + if ("setTime".equals(action)) { + String stagedTime = request.getParameter("stagedTime"); + Utils.setNow(df.parse(stagedTime).getTime()); + statusMsg = "Setting Job Stage Time to: " + Utils.getNow(); + } + if ("clearTime".equals(action)) { + Utils.setNow(null); + } if ("Save".equals(action)) { boolean saveLog = false; @@ -1149,7 +1174,7 @@ <%= statusMsg %>
<%= validError %> - +
name="mgrRecOver" value="true" type="checkbox" <%=current.isMgrRecurEmailOverride()?"checked=\"checked\"":""%> />
Role:
@@ -1160,7 +1185,7 @@
Edit System Settings
- + @@ -1258,17 +1283,17 @@ + - + @@ -1371,7 +1396,6 @@ - @@ -1504,7 +1527,7 @@
Version :<%=Utils.getVersionString()%><%=com.resolutions.ils.Utils.getVersionString()%>
Company ID :
Outgoing Mail User: - -
Outgoing Mail Password:
Default "From" Email Address:  
Allow Users To Edit Their Email Address in My Profile size="40"/>
- +
@@ -1534,7 +1557,7 @@
Enable: size="40"/>
- +
@@ -1584,13 +1607,13 @@
Enable: size="40"/>
- +
Course IP Address Restriction
- +
@@ -1617,7 +1640,7 @@
Enable: size="40"/>
- +
@@ -1646,7 +1669,7 @@
Enable: size="40"/>

-
+ @@ -1707,7 +1730,7 @@
Announcements

-
+ @@ -1774,6 +1797,78 @@
+
+ + + + + + + + +
Scheduled Jobs
+ + + + + + +<% + Scheduler scheduler = new StdSchedulerFactory().getScheduler(); + + for (String groupName : scheduler.getJobGroupNames()) { + + for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) { + + String jobName = jobKey.getName(); + String jobGroup = jobKey.getGroup(); + + //get job's trigger + List triggers = (List) scheduler.getTriggersOfJob(jobKey); + Date nextFireTime = triggers.get(0).getNextFireTime(); + if (!"JobSchedulingDataLoaderPlugin".equals(jobGroup)) { + +%> + + + + + +<% + } + } + } +%> + +
Job NameNext Run
<%=jobName%><%=nextFireTime%>
+ + + + +
+
<%@ include file="footer.jsp" %>