var rtn = StructNew(); var listStart = ''; var listEnd = ''; var pg = ''; var maxPage = Ceiling(arguments.itemCount / arguments.pageSize); var itemStart = 0; var itemEnd = 0; // Make sure the value passed in for listLimit is at least 4 if (arguments.listLimit LT 4 ) arguments.listLimit = 4; if ( arguments.page LT 1 ) arguments.page = 1; else if ( arguments.page GT maxPage ) arguments.page = maxPage; if ( arguments.page EQ 1 ) { itemStart = 1; itemEnd = arguments.pageSize; } else { itemStart = ((arguments.page - 1) * arguments.pageSize) + 1; itemEnd = arguments.page * arguments.pageSize; } if ( itemEnd GT arguments.itemCount ) itemEnd = arguments.itemCount; rtn.itemStart = itemStart; rtn.itemEnd = itemEnd; // Validate that the URL Params arg starts with a leading "&" if ( LEN(arguments.URLparams) AND (LEFT(arguments.URLparams,1) NEQ "&") ) arguments.URLparams = "&" & arguments.URLparams; var fileInfo = CreateObject("java","java.io.File").init(arguments.filePath); var thisModuleLastModified = fileInfo.lastModified(); var thisModuleDateTime = createObject("java","java.util.Date").init(thisModuleLastModified); return thisModuleDateTime; var retResult = StructNew(); var schedURL = arguments.url; var defaultDateFormat = "mm/dd/yyyy"; var defaultTimeFormat = "HH:mm"; var defaultMinStartDelay = 5; var defaultMinIntervalDelay = 15; var defaultRequestTimeOut = "3600"; // 3600 second (1 hour) is the default before the request times out var defaultInterval = "once"; var intervalOptionsList = "once,daily,weekly,monthly"; var defaultStartDateTime = DateAdd("n",defaultMinStartDelay,Now()); var defaultEndDateTime = DateAdd("n",1,defaultStartDateTime); var logFileDir = request.cp.commonSpotDir & "logs/"; var fullLogFilePath = logFileDir & arguments.schedLogFileName; var uniqueFullLogFilePath = createUniqueFileName(fullLogFilePath); var uniqueLogFileName = ListLast(uniqueFullLogFilePath,"/"); var schedStartDate = arguments.startDate; var schedStartTime = arguments.startTime; var schedEndDate = ""; var schedEndTime = ""; var schedStartDateTime = ""; var schedEndDateTime = ""; // Set the schedInterval to the default value var schedInterval = defaultInterval; var schedRequestTimeOut = defaultRequestTimeOut; // TODO: FUTURE FEATURE: Use for recurring tasks that need authenication to run unattended var validAuthToken = false; // Verify that the interval passed is valid, if not set the interval to once // - if a numeric value they run the task every X number of seconds if ( IsNumeric(arguments.interval) OR ListFindNoCase(intervalOptionsList,arguments.interval) ) schedInterval = arguments.interval; // Build Start Date if ( LEN(TRIM(schedStartDate)) AND IsDate(schedStartDate) ) schedStartDate = DateFormat(schedStartDate,defaultDateFormat); else schedStartDate = DateFormat(defaultStartDateTime,defaultDateFormat); // Build Start Time if ( LEN(TRIM(schedStartTime)) AND IsDate(schedStartTime) ) schedStartTime = TimeFormat(schedStartTime, defaultTimeFormat); else schedStartTime = TimeFormat(defaultStartDateTime, defaultTimeFormat); // Build Start Date/Time String schedStartDateTime = DateFormat(schedStartDate,"mm-dd-yyyy") & " " & TimeFormat(schedStartTime,"HH:mm:ss"); // Make sure the Start Date/Time is really in the future if ( defaultStartDateTime GT schedStartDateTime ) { schedStartDate = DateFormat(defaultStartDateTime,defaultDateFormat); schedStartTime = TimeFormat(defaultStartDateTime, defaultTimeFormat); schedStartDateTime = DateFormat(schedStartDate,"mm-dd-yyyy") & " " & TimeFormat(schedStartTime,"HH:mm:ss"); } // Build End Date if ( LEN(TRIM(arguments.endDate)) AND IsDate(arguments.endDate) ) { schedEndDate = DateFormat(schedStartDate,defaultDateFormat); if ( LEN(TRIM(arguments.endTime)) AND IsDate(arguments.endTime) ) schedEndTime = TimeFormat(arguments.endTime, defaultTimeFormat); else schedEndTime = "23:59:59"; schedEndDateTime = DateFormat(schedEndDate,"mm-dd-yyyy") & " " & TimeFormat(schedEndTime,"HH:mm:ss"); // Make sure the End Date/Time is after the Start Date/Time if ( schedEndDateTime GT schedStartDateTime ) { schedEndDate = ""; schedEndTime = ""; schedEndDateTime = ""; } } // Make sure the passed timeout value is a valid integer if ( IsNumeric(arguments.timeout) ) schedRequestTimeOut = int(arguments.timeout); // Validate authtoken (Future authentication feature) //validAuthToken = application.ADF.csSecurity.isValidAuthToken(arguments.authtoken); validAuthToken = true; if ( LEN(TRIM(arguments.AuthToken)) AND validAuthToken ) schedURL = schedURL & "&authtoken=" & arguments.authtoken; // Set up the return result struct variables retResult.status = ""; retResult.authenicated = validAuthToken; //Future authentication feature var retParams = arguments.csParams; var paramsOverride = StructNew(); var key = ""; // Build the App Params Struct that will override the XPARAMS/ATTRIBUTES keys and values If ( LEN(TRIM(arguments.appName)) AND LEN(TRIM(arguments.appParamsVarName)) ) { if ( StructKeyExists(application,TRIM(arguments.appName)) AND StructKeyExists(application[TRIM(arguments.appName)],TRIM(arguments.appParamsVarName)) ) paramsOverride = application[TRIM(arguments.appName)][TRIM(arguments.appParamsVarName)]; // Replace the the XPARAMS PROPS values with the APP CONFIG override values if ( IsStruct(paramsOverride) ) { for ( key in paramsOverride ) { // Check to make sure the param from the App can override the CS param if ( ListFindNoCase(arguments.paramsExceptionList,key) EQ 0 ) retParams[key] = paramsOverride[key]; } } } return retParams;