Modified: manifoldcf/trunk/framework/crawler-ui/src/main/webapp/editjob.jsp URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/crawler-ui/src/main/webapp/editjob.jsp?rev=1685321&r1=1685320&r2=1685321&view=diff ============================================================================== --- manifoldcf/trunk/framework/crawler-ui/src/main/webapp/editjob.jsp (original) +++ manifoldcf/trunk/framework/crawler-ui/src/main/webapp/editjob.jsp Sat Jun 13 20:28:32 2015 @@ -29,266 +29,266 @@ // It may also be called directly with a parameter of "origjobid", which implies that a copy operation should be started. try { - // Get the job manager handle - IJobManager manager = JobManagerFactory.make(threadContext); - IRepositoryConnectionManager connMgr = RepositoryConnectionManagerFactory.make(threadContext); - IRepositoryConnection[] connList = connMgr.getAllConnections(); - INotificationConnectionManager notificationMgr = NotificationConnectionManagerFactory.make(threadContext); - INotificationConnection[] notificationList = notificationMgr.getAllConnections(); - IOutputConnectionManager outputMgr = OutputConnectionManagerFactory.make(threadContext); - IOutputConnection[] outputList = outputMgr.getAllConnections(); - ITransformationConnectionManager transformationMgr = TransformationConnectionManagerFactory.make(threadContext); - ITransformationConnection[] transformationList = transformationMgr.getAllConnections(); - - IOutputConnectorPool outputConnectorPool = OutputConnectorPoolFactory.make(threadContext); - IRepositoryConnectorPool repositoryConnectorPool = RepositoryConnectorPoolFactory.make(threadContext); - INotificationConnectorPool notificationConnectorPool = NotificationConnectorPoolFactory.make(threadContext); - ITransformationConnectorPool transformationConnectorPool = TransformationConnectorPoolFactory.make(threadContext); - - // Figure out tab name and sequence number - String tabName = variableContext.getParameter("tabname"); - String tabSequenceNumber = variableContext.getParameter("sequencenumber"); - int tabSequenceInt; - if (tabName == null || tabName.length() == 0) - { - tabName = Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name"); - tabSequenceInt = -1; - } - else - { - if (tabSequenceNumber == null || tabSequenceNumber.length() == 0) - tabSequenceInt = -1; - else - tabSequenceInt = Integer.parseInt(tabSequenceNumber); - } - - // Get a loaded job object, somehow. - String jobID = null; - IJobDescription job = (IJobDescription)threadContext.get("JobObject"); - if (job == null) - { - // We did not go through execute.jsp - // We might have received an argument specifying the connection name. - jobID = variableContext.getParameter("jobid"); - String origJobID = variableContext.getParameter("origjobid"); - if (origJobID == null || origJobID.length() == 0) - origJobID = jobID; - if (origJobID != null) - job = manager.load(new Long(origJobID)); - } - else - jobID = job.getID().toString(); - - // Setup default fields - String connectionName = ""; - String description = ""; - int type = IJobDescription.TYPE_SPECIFIED; - Specification documentSpecification = new Specification(); - - // Pipeline data - String[] pipelineConnectionNames = new String[0]; - String[] pipelineDescriptions = new String[0]; - boolean[] pipelineIsOutputs = new boolean[0]; - int[] pipelinePrerequisites = new int[0]; - Specification[] pipelineSpecifications = new Specification[0]; - - String[] notificationConnectionNames = new String[0]; - String[] notificationDescriptions = new String[0]; - Specification[] notificationSpecifications = new Specification[0]; - - ArrayList scheduleRecords = new ArrayList(); - - EnumeratedValues dayOfWeek = null; - EnumeratedValues dayOfMonth = null; - EnumeratedValues monthOfYear = null; - EnumeratedValues year = null; - EnumeratedValues hourOfDay = null; - EnumeratedValues minutesOfHour = null; - // Duration in minutes - Long duration = null; - // RequestMinimum flag - boolean requestMinimum = false; - - // Priority - int priority = 5; - // Minimum recrawl interval (Default: 1 day) - Long recrawlInterval = new Long(60L * 24L); - // Maximum recrawl interval (Default: none) - Long maxRecrawlInterval = null; - // Reseed interval (Default: 60 minutes) - Long reseedInterval = new Long(60L); - // Expiration interval (Default: never) - Long expirationInterval = null; - // Start method - int startMethod = IJobDescription.START_DISABLE; - // Hopcount mode - int hopcountMode = IJobDescription.HOPCOUNT_ACCURATE; - // Hop filters - Map hopFilterMap = new HashMap(); - - // If the job is not null, prepopulate everything with what comes from it. - if (job != null) - { - // Set up values - description = job.getDescription(); - connectionName = job.getConnectionName(); - - pipelineConnectionNames = new String[job.countPipelineStages()]; - pipelineDescriptions = new String[job.countPipelineStages()]; - pipelineIsOutputs = new boolean[job.countPipelineStages()]; - pipelinePrerequisites = new int[job.countPipelineStages()]; - pipelineSpecifications = new Specification[job.countPipelineStages()]; - for (int j = 0; j < job.countPipelineStages(); j++) - { - pipelineConnectionNames[j] = job.getPipelineStageConnectionName(j); - pipelineDescriptions[j] = job.getPipelineStageDescription(j); - pipelineIsOutputs[j] = job.getPipelineStageIsOutputConnection(j); - pipelinePrerequisites[j] = job.getPipelineStagePrerequisite(j); - pipelineSpecifications[j] = job.getPipelineStageSpecification(j); - } - notificationConnectionNames = new String[job.countNotifications()]; - notificationDescriptions = new String[job.countNotifications()]; - notificationSpecifications = new Specification[job.countNotifications()]; - for (int j = 0; j < job.countNotifications(); j++) - { - notificationConnectionNames[j] = job.getNotificationConnectionName(j); - notificationDescriptions[j] = job.getNotificationDescription(j); - notificationSpecifications[j] = job.getNotificationSpecification(j); - } - - type = job.getType(); - startMethod = job.getStartMethod(); - hopcountMode = job.getHopcountMode(); - documentSpecification = job.getSpecification(); - // Fill in schedule records from job - for (int j = 0; j < job.getScheduleRecordCount(); j++) - { - scheduleRecords.add(job.getScheduleRecord(j)); - } - - priority = job.getPriority(); - Long value = job.getInterval(); - recrawlInterval = (value==null)?null:new Long(value.longValue()/60000L); - value = job.getMaxInterval(); - maxRecrawlInterval = (value==null)?null:new Long(value.longValue()/60000L); - value = job.getReseedInterval(); - reseedInterval = (value==null)?null:new Long(value.longValue()/60000L); - value = job.getExpiration(); - expirationInterval = (value==null)?null:new Long(value.longValue()/60000L); - hopFilterMap = job.getHopCountFilters(); - } - - - // This form reposts to itself. It basically only allows the connection to be picked once; once done, the repost occurs - // and cannot be undone. - // Therefore, there are three possible entry conditions: - // 1) no jobid w/no connection name, which indicates a brand-new job without a chosen connection - // 2) no jobid w/a connection name, which indicates that the connection at least has been chosen - // 3) a jobid and a connection name, which indicates that we are editing an existing connection. - // There are similar combinations for output connections. - - int model = IRepositoryConnector.MODEL_ADD_CHANGE_DELETE; - String[] relationshipTypes = null; - List<String> tabsArray = new ArrayList<String>(); - List<Integer> sequenceArray = new ArrayList<Integer>(); - - IRepositoryConnection connection = null; - if (connectionName.length() > 0) - { - connection = connMgr.load(connectionName); - model = RepositoryConnectorFactory.getConnectorModel(threadContext,connection.getClassName()); - relationshipTypes = RepositoryConnectorFactory.getRelationshipTypes(threadContext,connection.getClassName()); - } - - // Set up the predefined tabs - tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name")); - sequenceArray.add(null); - tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Connection")); - sequenceArray.add(null); - if (connectionName.length() > 0) - { - tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Scheduling")); - sequenceArray.add(null); - if (relationshipTypes != null && relationshipTypes.length > 0) - { - tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.HopFilters")); - sequenceArray.add(null); - } - } - - // Get the names of the various Javascript methods we'll need to call - String checkMethod = "checkSpecification"; - String saveCheckMethod = "checkSpecificationForSave"; - String[] pipelineCheckMethods = new String[pipelineConnectionNames.length]; - String[] pipelineCheckForSaveMethods = new String[pipelineConnectionNames.length]; - String[] notificationCheckMethods = new String[notificationConnectionNames.length]; - String[] notificationCheckForSaveMethods = new String[notificationConnectionNames.length]; - - for (int j = 0; j < pipelineConnectionNames.length; j++) - { - pipelineCheckMethods[j] = "unknown"; - pipelineCheckForSaveMethods[j] = "unknown"; - } - for (int j = 0; j < notificationConnectionNames.length; j++) - { - notificationCheckMethods[j] = "unknown"; - notificationCheckForSaveMethods[j] = "unknown"; - } - - if (connection != null) - { - IRepositoryConnector connector = RepositoryConnectorFactory.getConnectorNoCheck(connection.getClassName()); - if (connector != null) - { - checkMethod = connector.getFormCheckJavascriptMethodName(0); - saveCheckMethod = connector.getFormPresaveCheckJavascriptMethodName(0); - } - } - - for (int j = 0; j < pipelineConnectionNames.length; j++) - { - if (pipelineIsOutputs[j]) - { - IOutputConnection outputConnection = outputMgr.load(pipelineConnectionNames[j]); - if (outputConnection != null) - { - IOutputConnector outputConnector = OutputConnectorFactory.getConnectorNoCheck(outputConnection.getClassName()); - if (outputConnector != null) - { - pipelineCheckMethods[j] = outputConnector.getFormCheckJavascriptMethodName(1+j); - pipelineCheckForSaveMethods[j] = outputConnector.getFormPresaveCheckJavascriptMethodName(1+j); - } - } - } - else - { - ITransformationConnection transformationConnection = transformationMgr.load(pipelineConnectionNames[j]); - if (transformationConnection != null) - { - ITransformationConnector transformationConnector = TransformationConnectorFactory.getConnectorNoCheck(transformationConnection.getClassName()); - if (transformationConnector != null) - { - pipelineCheckMethods[j] = transformationConnector.getFormCheckJavascriptMethodName(1+j); - pipelineCheckForSaveMethods[j] = transformationConnector.getFormPresaveCheckJavascriptMethodName(1+j); - } - } - } - } - - for (int j = 0; j < notificationConnectionNames.length; j++) - { - INotificationConnection notificationConnection = notificationMgr.load(notificationConnectionNames[j]); - if (notificationConnection != null) - { - INotificationConnector notificationConnector = NotificationConnectorFactory.getConnectorNoCheck(notificationConnection.getClassName()); - if (notificationConnector != null) - { - notificationCheckMethods[j] = notificationConnector.getFormCheckJavascriptMethodName(1+pipelineConnectionNames.length+j); - notificationCheckForSaveMethods[j] = notificationConnector.getFormPresaveCheckJavascriptMethodName(1+pipelineConnectionNames.length+j); - } + // Get the job manager handle + IJobManager manager = JobManagerFactory.make(threadContext); + IRepositoryConnectionManager connMgr = RepositoryConnectionManagerFactory.make(threadContext); + IRepositoryConnection[] connList = connMgr.getAllConnections(); + INotificationConnectionManager notificationMgr = NotificationConnectionManagerFactory.make(threadContext); + INotificationConnection[] notificationList = notificationMgr.getAllConnections(); + IOutputConnectionManager outputMgr = OutputConnectionManagerFactory.make(threadContext); + IOutputConnection[] outputList = outputMgr.getAllConnections(); + ITransformationConnectionManager transformationMgr = TransformationConnectionManagerFactory.make(threadContext); + ITransformationConnection[] transformationList = transformationMgr.getAllConnections(); + + IOutputConnectorPool outputConnectorPool = OutputConnectorPoolFactory.make(threadContext); + IRepositoryConnectorPool repositoryConnectorPool = RepositoryConnectorPoolFactory.make(threadContext); + INotificationConnectorPool notificationConnectorPool = NotificationConnectorPoolFactory.make(threadContext); + ITransformationConnectorPool transformationConnectorPool = TransformationConnectorPoolFactory.make(threadContext); + + // Figure out tab name and sequence number + String tabName = variableContext.getParameter("tabname"); + String tabSequenceNumber = variableContext.getParameter("sequencenumber"); + int tabSequenceInt; + if (tabName == null || tabName.length() == 0) + { + tabName = Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name"); + tabSequenceInt = -1; + } + else + { + if (tabSequenceNumber == null || tabSequenceNumber.length() == 0) + tabSequenceInt = -1; + else + tabSequenceInt = Integer.parseInt(tabSequenceNumber); + } + + // Get a loaded job object, somehow. + String jobID = null; + IJobDescription job = (IJobDescription)threadContext.get("JobObject"); + if (job == null) + { + // We did not go through execute.jsp + // We might have received an argument specifying the connection name. + jobID = variableContext.getParameter("jobid"); + String origJobID = variableContext.getParameter("origjobid"); + if (origJobID == null || origJobID.length() == 0) + origJobID = jobID; + if (origJobID != null) + job = manager.load(new Long(origJobID)); + } + else + jobID = job.getID().toString(); + + // Setup default fields + String connectionName = ""; + String description = ""; + int type = IJobDescription.TYPE_SPECIFIED; + Specification documentSpecification = new Specification(); + + // Pipeline data + String[] pipelineConnectionNames = new String[0]; + String[] pipelineDescriptions = new String[0]; + boolean[] pipelineIsOutputs = new boolean[0]; + int[] pipelinePrerequisites = new int[0]; + Specification[] pipelineSpecifications = new Specification[0]; + + String[] notificationConnectionNames = new String[0]; + String[] notificationDescriptions = new String[0]; + Specification[] notificationSpecifications = new Specification[0]; + + ArrayList scheduleRecords = new ArrayList(); + + EnumeratedValues dayOfWeek = null; + EnumeratedValues dayOfMonth = null; + EnumeratedValues monthOfYear = null; + EnumeratedValues year = null; + EnumeratedValues hourOfDay = null; + EnumeratedValues minutesOfHour = null; + // Duration in minutes + Long duration = null; + // RequestMinimum flag + boolean requestMinimum = false; + + // Priority + int priority = 5; + // Minimum recrawl interval (Default: 1 day) + Long recrawlInterval = new Long(60L * 24L); + // Maximum recrawl interval (Default: none) + Long maxRecrawlInterval = null; + // Reseed interval (Default: 60 minutes) + Long reseedInterval = new Long(60L); + // Expiration interval (Default: never) + Long expirationInterval = null; + // Start method + int startMethod = IJobDescription.START_DISABLE; + // Hopcount mode + int hopcountMode = IJobDescription.HOPCOUNT_ACCURATE; + // Hop filters + Map hopFilterMap = new HashMap(); + + // If the job is not null, prepopulate everything with what comes from it. + if (job != null) + { + // Set up values + description = job.getDescription(); + connectionName = job.getConnectionName(); + + pipelineConnectionNames = new String[job.countPipelineStages()]; + pipelineDescriptions = new String[job.countPipelineStages()]; + pipelineIsOutputs = new boolean[job.countPipelineStages()]; + pipelinePrerequisites = new int[job.countPipelineStages()]; + pipelineSpecifications = new Specification[job.countPipelineStages()]; + for (int j = 0; j < job.countPipelineStages(); j++) + { + pipelineConnectionNames[j] = job.getPipelineStageConnectionName(j); + pipelineDescriptions[j] = job.getPipelineStageDescription(j); + pipelineIsOutputs[j] = job.getPipelineStageIsOutputConnection(j); + pipelinePrerequisites[j] = job.getPipelineStagePrerequisite(j); + pipelineSpecifications[j] = job.getPipelineStageSpecification(j); + } + notificationConnectionNames = new String[job.countNotifications()]; + notificationDescriptions = new String[job.countNotifications()]; + notificationSpecifications = new Specification[job.countNotifications()]; + for (int j = 0; j < job.countNotifications(); j++) + { + notificationConnectionNames[j] = job.getNotificationConnectionName(j); + notificationDescriptions[j] = job.getNotificationDescription(j); + notificationSpecifications[j] = job.getNotificationSpecification(j); + } + + type = job.getType(); + startMethod = job.getStartMethod(); + hopcountMode = job.getHopcountMode(); + documentSpecification = job.getSpecification(); + // Fill in schedule records from job + for (int j = 0; j < job.getScheduleRecordCount(); j++) + { + scheduleRecords.add(job.getScheduleRecord(j)); + } + + priority = job.getPriority(); + Long value = job.getInterval(); + recrawlInterval = (value==null)?null:new Long(value.longValue()/60000L); + value = job.getMaxInterval(); + maxRecrawlInterval = (value==null)?null:new Long(value.longValue()/60000L); + value = job.getReseedInterval(); + reseedInterval = (value==null)?null:new Long(value.longValue()/60000L); + value = job.getExpiration(); + expirationInterval = (value==null)?null:new Long(value.longValue()/60000L); + hopFilterMap = job.getHopCountFilters(); + } + + + // This form reposts to itself. It basically only allows the connection to be picked once; once done, the repost occurs + // and cannot be undone. + // Therefore, there are three possible entry conditions: + // 1) no jobid w/no connection name, which indicates a brand-new job without a chosen connection + // 2) no jobid w/a connection name, which indicates that the connection at least has been chosen + // 3) a jobid and a connection name, which indicates that we are editing an existing connection. + // There are similar combinations for output connections. + + int model = IRepositoryConnector.MODEL_ADD_CHANGE_DELETE; + String[] relationshipTypes = null; + List<String> tabsArray = new ArrayList<String>(); + List<Integer> sequenceArray = new ArrayList<Integer>(); + + IRepositoryConnection connection = null; + if (connectionName.length() > 0) + { + connection = connMgr.load(connectionName); + model = RepositoryConnectorFactory.getConnectorModel(threadContext,connection.getClassName()); + relationshipTypes = RepositoryConnectorFactory.getRelationshipTypes(threadContext,connection.getClassName()); + } + + // Set up the predefined tabs + tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name")); + sequenceArray.add(null); + tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Connection")); + sequenceArray.add(null); + if (connectionName.length() > 0) + { + tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Scheduling")); + sequenceArray.add(null); + if (relationshipTypes != null && relationshipTypes.length > 0) + { + tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.HopFilters")); + sequenceArray.add(null); + } + } + + // Get the names of the various Javascript methods we'll need to call + String checkMethod = "checkSpecification"; + String saveCheckMethod = "checkSpecificationForSave"; + String[] pipelineCheckMethods = new String[pipelineConnectionNames.length]; + String[] pipelineCheckForSaveMethods = new String[pipelineConnectionNames.length]; + String[] notificationCheckMethods = new String[notificationConnectionNames.length]; + String[] notificationCheckForSaveMethods = new String[notificationConnectionNames.length]; + + for (int j = 0; j < pipelineConnectionNames.length; j++) + { + pipelineCheckMethods[j] = "unknown"; + pipelineCheckForSaveMethods[j] = "unknown"; + } + for (int j = 0; j < notificationConnectionNames.length; j++) + { + notificationCheckMethods[j] = "unknown"; + notificationCheckForSaveMethods[j] = "unknown"; + } + + if (connection != null) + { + IRepositoryConnector connector = RepositoryConnectorFactory.getConnectorNoCheck(connection.getClassName()); + if (connector != null) + { + checkMethod = connector.getFormCheckJavascriptMethodName(0); + saveCheckMethod = connector.getFormPresaveCheckJavascriptMethodName(0); + } + } + + for (int j = 0; j < pipelineConnectionNames.length; j++) + { + if (pipelineIsOutputs[j]) + { + IOutputConnection outputConnection = outputMgr.load(pipelineConnectionNames[j]); + if (outputConnection != null) + { + IOutputConnector outputConnector = OutputConnectorFactory.getConnectorNoCheck(outputConnection.getClassName()); + if (outputConnector != null) + { + pipelineCheckMethods[j] = outputConnector.getFormCheckJavascriptMethodName(1+j); + pipelineCheckForSaveMethods[j] = outputConnector.getFormPresaveCheckJavascriptMethodName(1+j); + } + } + } + else + { + ITransformationConnection transformationConnection = transformationMgr.load(pipelineConnectionNames[j]); + if (transformationConnection != null) + { + ITransformationConnector transformationConnector = TransformationConnectorFactory.getConnectorNoCheck(transformationConnection.getClassName()); + if (transformationConnector != null) + { + pipelineCheckMethods[j] = transformationConnector.getFormCheckJavascriptMethodName(1+j); + pipelineCheckForSaveMethods[j] = transformationConnector.getFormPresaveCheckJavascriptMethodName(1+j); + } + } + } + } + + for (int j = 0; j < notificationConnectionNames.length; j++) + { + INotificationConnection notificationConnection = notificationMgr.load(notificationConnectionNames[j]); + if (notificationConnection != null) + { + INotificationConnector notificationConnector = NotificationConnectorFactory.getConnectorNoCheck(notificationConnection.getClassName()); + if (notificationConnector != null) + { + notificationCheckMethods[j] = notificationConnector.getFormCheckJavascriptMethodName(1+pipelineConnectionNames.length+j); + notificationCheckForSaveMethods[j] = notificationConnector.getFormPresaveCheckJavascriptMethodName(1+pipelineConnectionNames.length+j); + } - } - } + } + } %> <?xml version="1.0" encoding="utf-8"?> @@ -297,452 +297,452 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="StyleSheet" href="style.css" type="text/css" media="screen"/> - <title> - <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ApacheManifoldCFEditJob")%> - </title> - - <script type="text/javascript"> - <!-- - - // Use this method to repost the form and pick a new tab - function SelectTab(newtab) - { - if (checkForm()) - { - document.editjob.tabname.value = newtab; - document.editjob.sequencenumber.value = ""; - document.editjob.submit(); - } - } - - // Use this method to repost the form and pick a new tab - function SelectSequencedTab(newtab, sequencenumber) - { - if (checkForm()) - { - document.editjob.tabname.value = newtab; - document.editjob.sequencenumber.value = sequencenumber; - document.editjob.submit(); - } - } - - // Use this method to repost the form, - // and set the anchor request. - function postFormSetAnchor(anchorValue) - { - if (checkForm()) - { - if (anchorValue != "") - document.editjob.action = document.editjob.action + "#" + anchorValue; - document.editjob.submit(); - } - } - - // Use this method to repost the form - function postFormNew() - { - if (checkForm()) - { - document.editjob.submit(); - } - } - - // Deprecated - function postForm(schedCount) - { - if (checkForm()) - { - document.editjob.submit(); - } - } - - function Save() - { - if (checkForm()) - { - // Can't submit until all required fields have been set. - // Some of these don't live on the current tab, so don't set - // focus. - - // Check our part of the form, for save - if (editjob.description.value == "") - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.JobMustHaveAName")%>"); - SelectTab("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.Name")%>"); - document.editjob.description.focus(); - return; - } -<% - for (int j = 0; j < pipelineCheckForSaveMethods.length; j++) - { -%> - if (window.<%=pipelineCheckForSaveMethods[j]%>) - { - if (<%=pipelineCheckForSaveMethods[j]%>() == false) - return; - } -<% - } - for (int j = 0; j < notificationCheckForSaveMethods.length; j++) - { -%> - if (window.<%=notificationCheckForSaveMethods[j]%>) - { - if (<%=notificationCheckForSaveMethods[j]%>() == false) - return; - } -<% - } -%> - if (window.<%=saveCheckMethod%>) - { - if (<%=saveCheckMethod%>() == false) - return; - } - document.editjob.op.value="Save"; - document.editjob.submit(); - } - } - - function Cancel() - { - document.editjob.op.value="Cancel"; - document.editjob.submit(); - } - - function Continue() - { - document.editjob.op.value="Continue"; - postFormNew(); - } - - function InsertPipelineStageTransformation(n) - { - if (editjob.transformation_connectionname.value == "") - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.SelectATransformationStageConnectionName")%>"); - editjob.transformation_connectionname.focus(); - return; - } - eval("document.editjob.pipeline_"+n+"_op.value = 'InsertTransformation'"); - postFormSetAnchor("pipeline_"+(n+1)+"_tag"); - } - - function InsertPipelineStageOutput(n) - { - if (editjob.output_connectionname.value == "") - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.SelectAnOutputStageConnectionName")%>"); - editjob.output_connectionname.focus(); - return; - } - eval("document.editjob.pipeline_"+n+"_op.value = 'InsertOutput'"); - postFormSetAnchor("pipeline_"+(n+1)+"_tag"); - } - - function AppendPipelineStageOutput() - { - if (editjob.output_connectionname.value == "") - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.SelectAnOutputStageConnectionName")%>"); - editjob.output_connectionname.focus(); - return; - } - document.editjob.output_op.value="Add"; - postFormSetAnchor("output_tag"); - } - - function DeletePipelineStage(n) - { - eval("document.editjob.pipeline_"+n+"_op.value = 'Delete'"); - if (n == 0) - postFormSetAnchor("pipeline_tag"); - else - postFormSetAnchor("pipeline_"+(n-1)+"_tag"); - } - - function AppendNotification() - { - if (editjob.notification_connectionname.value == "") - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.SelectANotificationConnectionName")%>"); - editjob.notification_connectionname.focus(); - return; - } - document.editjob.notification_op.value="Add"; - postFormSetAnchor("notification_tag"); - } - - function DeleteNotification(n) - { - eval("document.editjob.notification_"+n+"_op.value = 'Delete'"); - if (n == 0) - postFormSetAnchor("notification_tag"); - else - postFormSetAnchor("notification_"+(n-1)+"_tag"); - } - - function AddScheduledTime() - { - if (editjob.duration.value != "" && !isInteger(editjob.duration.value)) - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.DurationMustBeAValidInteger")%>"); - editjob.duration.focus(); - return; - } - document.editjob.recordop.value="Add Scheduled Time"; - postFormSetAnchor("add_schedule"); - } - - function RemoveSchedule(n) - { - eval("document.editjob.recordop"+n+".value = 'Remove Schedule'"); - if (n == 0) - postFormSetAnchor("add_schedule"); - else - postFormSetAnchor("remove_schedule_"+(n-1)); - } - - function checkForm() - { - if (!checkRecrawl()) - return false; - if (!checkMaxRecrawl()) - return false; - if (!checkRecrawlConsistent()) - return false; - if (!checkReseed()) - return false; - if (!checkExpiration()) - return false; - if (!checkSchedule()) - return false; -<% - for (int j = 0; j < pipelineCheckMethods.length; j++) - { -%> - if (window.<%=pipelineCheckMethods[j]%>) - { - if (<%=pipelineCheckMethods[j]%>() == false) - return false; - } -<% - } - for (int j = 0; j < notificationCheckMethods.length; j++) - { -%> - if (window.<%=notificationCheckMethods[j]%>) - { - if (<%=notificationCheckMethods[j]%>() == false) - return false; - } -<% - } -%> - // Check the connector part - if (window.<%=checkMethod%>) - { - if (<%=checkMethod%>() == false) - return false; - } - return true; - } - - function checkSchedule() - { - var i = 0; - var schedCount = <%=Integer.toString(scheduleRecords.size())%>; - while (i < schedCount) - { - var propertyname = "duration" + i; - if (eval("editjob."+propertyname+".value") != "" && !isInteger(eval("editjob."+propertyname+".value"))) - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.DurationMustBeAValidInteger")%>"); - eval("editjob."+propertyname+".focus()"); - return false; - } - i = i+1; - } - return true; - } - - function checkRecrawl() - { - if (editjob.recrawlinterval.value != "" && !isInteger(editjob.recrawlinterval.value)) - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.RecrawlIntervalMustBeAValidIntegerOrNull")%>"); - editjob.recrawlinterval.focus(); - return false; - } - return true; - } - - function checkMaxRecrawl() - { - if (editjob.maxrecrawlinterval.value != "" && !isInteger(editjob.maxrecrawlinterval.value)) - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.MaxRecrawlIntervalMustBeAValidIntegerOrNull")%>"); - editjob.maxrecrawlinterval.focus(); - return false; - } - return true; - } - - function checkRecrawlConsistent() - { - if (editjob.maxrecrawlinterval.value != "" && editjob.recrawlinterval.value != "" && parseInt(editjob.maxrecrawlinterval.value) < parseInt(editjob.recrawlinterval.value)) - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.MaxRecrawlIntervalMustBeLargerThanRecrawlInterval")%>"); - editjob.maxrecrawlinterval.focus(); - return false; - } - return true; - } - - function checkReseed() - { - if (editjob.reseedinterval.value != "" && !isInteger(editjob.reseedinterval.value)) - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.ReseedIntervalMustBeAValidIntegerOrNull")%>"); - editjob.reseedinterval.focus(); - return false; - } - return true; - } - - function checkExpiration() - { - if (editjob.expirationinterval.value != "" && !isInteger(editjob.expirationinterval.value)) - { - alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.ExpirationIntervalMustBeAValidIntegerOrNull")%>"); - editjob.expirationinterval.focus(); - return false; - } - return true; - } - - function isInteger(value) - { - var anum=/(^\d+$)/; - return anum.test(value); - } - - function isRegularExpression(value) - { - try - { - var foo = "teststring"; + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <link rel="StyleSheet" href="style.css" type="text/css" media="screen"/> + <title> + <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ApacheManifoldCFEditJob")%> + </title> + + <script type="text/javascript"> + <!-- + + // Use this method to repost the form and pick a new tab + function SelectTab(newtab) + { + if (checkForm()) + { + document.editjob.tabname.value = newtab; + document.editjob.sequencenumber.value = ""; + document.editjob.submit(); + } + } + + // Use this method to repost the form and pick a new tab + function SelectSequencedTab(newtab, sequencenumber) + { + if (checkForm()) + { + document.editjob.tabname.value = newtab; + document.editjob.sequencenumber.value = sequencenumber; + document.editjob.submit(); + } + } + + // Use this method to repost the form, + // and set the anchor request. + function postFormSetAnchor(anchorValue) + { + if (checkForm()) + { + if (anchorValue != "") + document.editjob.action = document.editjob.action + "#" + anchorValue; + document.editjob.submit(); + } + } + + // Use this method to repost the form + function postFormNew() + { + if (checkForm()) + { + document.editjob.submit(); + } + } + + // Deprecated + function postForm(schedCount) + { + if (checkForm()) + { + document.editjob.submit(); + } + } + + function Save() + { + if (checkForm()) + { + // Can't submit until all required fields have been set. + // Some of these don't live on the current tab, so don't set + // focus. + + // Check our part of the form, for save + if (editjob.description.value == "") + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.JobMustHaveAName")%>"); + SelectTab("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.Name")%>"); + document.editjob.description.focus(); + return; + } +<% + for (int j = 0; j < pipelineCheckForSaveMethods.length; j++) + { +%> + if (window.<%=pipelineCheckForSaveMethods[j]%>) + { + if (<%=pipelineCheckForSaveMethods[j]%>() == false) + return; + } +<% + } + for (int j = 0; j < notificationCheckForSaveMethods.length; j++) + { +%> + if (window.<%=notificationCheckForSaveMethods[j]%>) + { + if (<%=notificationCheckForSaveMethods[j]%>() == false) + return; + } +<% + } +%> + if (window.<%=saveCheckMethod%>) + { + if (<%=saveCheckMethod%>() == false) + return; + } + document.editjob.op.value="Save"; + document.editjob.submit(); + } + } + + function Cancel() + { + document.editjob.op.value="Cancel"; + document.editjob.submit(); + } + + function Continue() + { + document.editjob.op.value="Continue"; + postFormNew(); + } + + function InsertPipelineStageTransformation(n) + { + if (editjob.transformation_connectionname.value == "") + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.SelectATransformationStageConnectionName")%>"); + editjob.transformation_connectionname.focus(); + return; + } + eval("document.editjob.pipeline_"+n+"_op.value = 'InsertTransformation'"); + postFormSetAnchor("pipeline_"+(n+1)+"_tag"); + } + + function InsertPipelineStageOutput(n) + { + if (editjob.output_connectionname.value == "") + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.SelectAnOutputStageConnectionName")%>"); + editjob.output_connectionname.focus(); + return; + } + eval("document.editjob.pipeline_"+n+"_op.value = 'InsertOutput'"); + postFormSetAnchor("pipeline_"+(n+1)+"_tag"); + } + + function AppendPipelineStageOutput() + { + if (editjob.output_connectionname.value == "") + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.SelectAnOutputStageConnectionName")%>"); + editjob.output_connectionname.focus(); + return; + } + document.editjob.output_op.value="Add"; + postFormSetAnchor("output_tag"); + } + + function DeletePipelineStage(n) + { + eval("document.editjob.pipeline_"+n+"_op.value = 'Delete'"); + if (n == 0) + postFormSetAnchor("pipeline_tag"); + else + postFormSetAnchor("pipeline_"+(n-1)+"_tag"); + } + + function AppendNotification() + { + if (editjob.notification_connectionname.value == "") + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.SelectANotificationConnectionName")%>"); + editjob.notification_connectionname.focus(); + return; + } + document.editjob.notification_op.value="Add"; + postFormSetAnchor("notification_tag"); + } + + function DeleteNotification(n) + { + eval("document.editjob.notification_"+n+"_op.value = 'Delete'"); + if (n == 0) + postFormSetAnchor("notification_tag"); + else + postFormSetAnchor("notification_"+(n-1)+"_tag"); + } + + function AddScheduledTime() + { + if (editjob.duration.value != "" && !isInteger(editjob.duration.value)) + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.DurationMustBeAValidInteger")%>"); + editjob.duration.focus(); + return; + } + document.editjob.recordop.value="Add Scheduled Time"; + postFormSetAnchor("add_schedule"); + } + + function RemoveSchedule(n) + { + eval("document.editjob.recordop"+n+".value = 'Remove Schedule'"); + if (n == 0) + postFormSetAnchor("add_schedule"); + else + postFormSetAnchor("remove_schedule_"+(n-1)); + } + + function checkForm() + { + if (!checkRecrawl()) + return false; + if (!checkMaxRecrawl()) + return false; + if (!checkRecrawlConsistent()) + return false; + if (!checkReseed()) + return false; + if (!checkExpiration()) + return false; + if (!checkSchedule()) + return false; +<% + for (int j = 0; j < pipelineCheckMethods.length; j++) + { +%> + if (window.<%=pipelineCheckMethods[j]%>) + { + if (<%=pipelineCheckMethods[j]%>() == false) + return false; + } +<% + } + for (int j = 0; j < notificationCheckMethods.length; j++) + { +%> + if (window.<%=notificationCheckMethods[j]%>) + { + if (<%=notificationCheckMethods[j]%>() == false) + return false; + } +<% + } +%> + // Check the connector part + if (window.<%=checkMethod%>) + { + if (<%=checkMethod%>() == false) + return false; + } + return true; + } + + function checkSchedule() + { + var i = 0; + var schedCount = <%=Integer.toString(scheduleRecords.size())%>; + while (i < schedCount) + { + var propertyname = "duration" + i; + if (eval("editjob."+propertyname+".value") != "" && !isInteger(eval("editjob."+propertyname+".value"))) + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.DurationMustBeAValidInteger")%>"); + eval("editjob."+propertyname+".focus()"); + return false; + } + i = i+1; + } + return true; + } + + function checkRecrawl() + { + if (editjob.recrawlinterval.value != "" && !isInteger(editjob.recrawlinterval.value)) + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.RecrawlIntervalMustBeAValidIntegerOrNull")%>"); + editjob.recrawlinterval.focus(); + return false; + } + return true; + } + + function checkMaxRecrawl() + { + if (editjob.maxrecrawlinterval.value != "" && !isInteger(editjob.maxrecrawlinterval.value)) + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.MaxRecrawlIntervalMustBeAValidIntegerOrNull")%>"); + editjob.maxrecrawlinterval.focus(); + return false; + } + return true; + } + + function checkRecrawlConsistent() + { + if (editjob.maxrecrawlinterval.value != "" && editjob.recrawlinterval.value != "" && parseInt(editjob.maxrecrawlinterval.value) < parseInt(editjob.recrawlinterval.value)) + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.MaxRecrawlIntervalMustBeLargerThanRecrawlInterval")%>"); + editjob.maxrecrawlinterval.focus(); + return false; + } + return true; + } + + function checkReseed() + { + if (editjob.reseedinterval.value != "" && !isInteger(editjob.reseedinterval.value)) + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.ReseedIntervalMustBeAValidIntegerOrNull")%>"); + editjob.reseedinterval.focus(); + return false; + } + return true; + } + + function checkExpiration() + { + if (editjob.expirationinterval.value != "" && !isInteger(editjob.expirationinterval.value)) + { + alert("<%=Messages.getBodyJavascriptString(pageContext.getRequest().getLocale(),"editjob.ExpirationIntervalMustBeAValidIntegerOrNull")%>"); + editjob.expirationinterval.focus(); + return false; + } + return true; + } + + function isInteger(value) + { + var anum=/(^\d+$)/; + return anum.test(value); + } + + function isRegularExpression(value) + { + try + { + var foo = "teststring"; foo.search(value.replace(/\(\?i\)/,"")); - return true; - } - catch (e) - { - return false; - } - } - - //--> - </script> -<% - if (connection != null) - { - IRepositoryConnector repositoryConnector = repositoryConnectorPool.grab(connection); - if (repositoryConnector != null) - { - try - { - repositoryConnector.outputSpecificationHeader(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),documentSpecification,0,tabsArray); - } - finally - { - repositoryConnectorPool.release(connection,repositoryConnector); - } - } - Integer repositoryConnectionSequenceNumber = new Integer(0); - while (sequenceArray.size() < tabsArray.size()) - { - sequenceArray.add(repositoryConnectionSequenceNumber); - } - } -%> - -<% - for (int j = 0; j < pipelineConnectionNames.length; j++) - { - if (pipelineIsOutputs[j]) - { - IOutputConnection outputConnection = outputMgr.load(pipelineConnectionNames[j]); - if (outputConnection != null) - { - IOutputConnector outputConnector = outputConnectorPool.grab(outputConnection); - if (outputConnector != null) - { - try - { - outputConnector.outputSpecificationHeader(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),pipelineSpecifications[j],1+j,tabsArray); - } - finally - { - outputConnectorPool.release(outputConnection,outputConnector); - } - } - } - } - else - { - ITransformationConnection transformationConnection = transformationMgr.load(pipelineConnectionNames[j]); - if (transformationConnection != null) - { - ITransformationConnector transformationConnector = transformationConnectorPool.grab(transformationConnection); - if (transformationConnector != null) - { - try - { - transformationConnector.outputSpecificationHeader(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),pipelineSpecifications[j],1+j,tabsArray); - } - finally - { - transformationConnectorPool.release(transformationConnection,transformationConnector); - } - } - } - } - Integer connectionSequenceNumber = new Integer(1+j); - while (sequenceArray.size() < tabsArray.size()) - { - sequenceArray.add(connectionSequenceNumber); - } - } - -%> - -<% - for (int j = 0; j < notificationConnectionNames.length; j++) - { - INotificationConnection notificationConnection = notificationMgr.load(notificationConnectionNames[j]); - if (notificationConnection != null) - { - INotificationConnector notificationConnector = notificationConnectorPool.grab(notificationConnection); - if (notificationConnector != null) - { - try - { - notificationConnector.outputSpecificationHeader(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),notificationSpecifications[j],1+pipelineConnectionNames.length+j,tabsArray); - } - finally - { - notificationConnectorPool.release(notificationConnection,notificationConnector); - } - } - } - Integer connectionSequenceNumber = new Integer(1+pipelineConnectionNames.length+j); - while (sequenceArray.size() < tabsArray.size()) - { - sequenceArray.add(connectionSequenceNumber); - } - } + return true; + } + catch (e) + { + return false; + } + } + + //--> + </script> +<% + if (connection != null) + { + IRepositoryConnector repositoryConnector = repositoryConnectorPool.grab(connection); + if (repositoryConnector != null) + { + try + { + repositoryConnector.outputSpecificationHeader(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),documentSpecification,0,tabsArray); + } + finally + { + repositoryConnectorPool.release(connection,repositoryConnector); + } + } + Integer repositoryConnectionSequenceNumber = new Integer(0); + while (sequenceArray.size() < tabsArray.size()) + { + sequenceArray.add(repositoryConnectionSequenceNumber); + } + } +%> + +<% + for (int j = 0; j < pipelineConnectionNames.length; j++) + { + if (pipelineIsOutputs[j]) + { + IOutputConnection outputConnection = outputMgr.load(pipelineConnectionNames[j]); + if (outputConnection != null) + { + IOutputConnector outputConnector = outputConnectorPool.grab(outputConnection); + if (outputConnector != null) + { + try + { + outputConnector.outputSpecificationHeader(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),pipelineSpecifications[j],1+j,tabsArray); + } + finally + { + outputConnectorPool.release(outputConnection,outputConnector); + } + } + } + } + else + { + ITransformationConnection transformationConnection = transformationMgr.load(pipelineConnectionNames[j]); + if (transformationConnection != null) + { + ITransformationConnector transformationConnector = transformationConnectorPool.grab(transformationConnection); + if (transformationConnector != null) + { + try + { + transformationConnector.outputSpecificationHeader(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),pipelineSpecifications[j],1+j,tabsArray); + } + finally + { + transformationConnectorPool.release(transformationConnection,transformationConnector); + } + } + } + } + Integer connectionSequenceNumber = new Integer(1+j); + while (sequenceArray.size() < tabsArray.size()) + { + sequenceArray.add(connectionSequenceNumber); + } + } + +%> + +<% + for (int j = 0; j < notificationConnectionNames.length; j++) + { + INotificationConnection notificationConnection = notificationMgr.load(notificationConnectionNames[j]); + if (notificationConnection != null) + { + INotificationConnector notificationConnector = notificationConnectorPool.grab(notificationConnection); + if (notificationConnector != null) + { + try + { + notificationConnector.outputSpecificationHeader(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),notificationSpecifications[j],1+pipelineConnectionNames.length+j,tabsArray); + } + finally + { + notificationConnectorPool.release(notificationConnection,notificationConnector); + } + } + } + Integer connectionSequenceNumber = new Integer(1+pipelineConnectionNames.length+j); + while (sequenceArray.size() < tabsArray.size()) + { + sequenceArray.add(connectionSequenceNumber); + } + } %> </head> @@ -754,1168 +754,1168 @@ <tr><td class="navigation"><jsp:include page="navigation.jsp" flush="true"/></td> <td class="darkwindow"> <% - if (connList.length == 0) - { + if (connList.length == 0) + { +%> + <p class="windowtitle"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditaJob")%></p> + <table class="displaytable"><tr><td class="message"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoRepositoryConnectionsDefinedCreateOneFirst")%></td></tr></table> +<% + } + else if (outputList.length == 0) + { +%> + <p class="windowtitle"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditaJob")%></p> + <table class="displaytable"><tr><td class="message"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoOutputConnectionsDefinedCreateOneFirst")%></td></tr></table> +<% + } + else + { +%> + <form class="standardform" name="editjob" action="execute.jsp" method="POST" enctype="multipart/form-data"> + <input type="hidden" name="op" value="Continue"/> + <input type="hidden" name="type" value="job"/> + <input type="hidden" name="index" value=""/> + <input type="hidden" name="tabname" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(tabName)%>'/> + <input type="hidden" name="sequencenumber" value='<%=((tabSequenceInt==-1)?"":Integer.toString(tabSequenceInt))%>'/> +<% + if (jobID != null) + { +%> + <input type="hidden" name="jobid" value='<%=jobID%>'/> +<% + } +%> + <table class="tabtable"> + <tr class="tabspacerrow"> + <td class="spacertab" colspan="<%=tabsArray.size()%>"></td> + <td class="remaindertab" rowspan="3"> +<% + if (description.length() > 0) + { +%> + <nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditJob")%> '<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(description)%>'</nobr> +<% + } + else + { +%> + <nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditaJob")%></nobr> +<% + } +%> + </td> + </tr> + <tr class="tabsequencerow"> +<% + Integer currentSequenceNumber = null; + int startColumn = 0; + for (int tabNum = 0; tabNum < tabsArray.size(); tabNum++) + { + boolean doswitch = false; + Integer sequenceNumber = sequenceArray.get(tabNum); + if (sequenceNumber == null || currentSequenceNumber == null) + doswitch = (sequenceNumber != null || currentSequenceNumber != null); + else + doswitch = !sequenceNumber.equals(currentSequenceNumber); + if (doswitch) + { + int colspan = tabNum - startColumn; + if (colspan > 0) + { + if (currentSequenceNumber == null) + { +%> + <td class="blanksequencetab" colspan="<%=colspan%>"></td> +<% + } + else + { +%> + <td class="sequencetab" colspan="<%=colspan%>"><%=(currentSequenceNumber.intValue()+1)%>.</td> +<% + } + } + startColumn = tabNum; + currentSequenceNumber = sequenceNumber; + } + } + if (startColumn != tabsArray.size()) + { + int colspan = tabsArray.size() - startColumn; + if (currentSequenceNumber == null) + { +%> + <td class="blanksequencetab" colspan="<%=colspan%>"></td> +<% + } + else + { +%> + <td class="sequencetab" colspan="<%=colspan%>"><%=(currentSequenceNumber.intValue()+1)%>.</td> +<% + } + } + // Final (remainder) cell left out on purpose; filled in above. +%> + </tr> + <tr class="tabrow"> +<% + for (int tabNum = 0; tabNum < tabsArray.size(); tabNum++) + { + String tab = tabsArray.get(tabNum); + Integer sequenceNumber = sequenceArray.get(tabNum); + int sequenceNumberInt = (sequenceNumber == null)?-1:sequenceNumber.intValue(); + if (tab.equals(tabName) && (tabSequenceInt == -1 || sequenceNumberInt == tabSequenceInt)) + { +%> + <td class="activetab"><nobr><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(tab)%></nobr></td> +<% + } + else + { +%> + <td class="passivetab"><nobr><a href="javascript:void(0);" alt='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(tab)+" "+Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.tab")%>' onclick='<%="javascript:SelectSequencedTab(\""+tab+"\",\""+((sequenceNumber==null)?"":sequenceNumber.toString())+"\");return false;"%>'><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(tab)%></a></nobr></td> +<% + } + } + // Missing remainder tab ON PURPOSE -- comes from rowspan=2 tab above +%> + </tr> + <tr class="tabbodyrow"> + <td class="tabbody" colspan='<%=Integer.toString(tabsArray.size()+1)%>'> + + <input type="hidden" name="schedulerecords" value='<%=Integer.toString(scheduleRecords.size())%>'/> +<% + // The NAME tab + if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name")) && tabSequenceInt == -1) + { +%> + <table class="displaytable"> + <tr> + <td class="separator" colspan="4"><hr/></td> + </tr> + <tr> + <td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NameColon")%></nobr></td><td class="value" colspan="3"> + <input type="text" size="50" name="description" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(description)%>'/> + </td> + </tr> + </table> +<% + } + else + { +%> + <input type="hidden" name="description" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(description)%>'/> +<% + } + + // Hop Filters tab + if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.HopFilters")) && tabSequenceInt == -1) + { + if (relationshipTypes != null) + { +%> + <table class="displaytable"> + <tr> + <td class="separator" colspan="4"><input type="hidden" name="hopfilters" value="true"/><hr/></td> + </tr> +<% + int i = 0; + while (i < relationshipTypes.length) + { + String relationshipType = relationshipTypes[i++]; + String mapField = ""; + Long mapValue = (Long)hopFilterMap.get(relationshipType); + if (mapValue != null) + mapField = mapValue.toString(); +%> + <tr> + <td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaximumHopCountForType")%> '<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(relationshipType)%>'<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.colon")%></nobr></td> + <td class="value" colspan="3" > + <input name='<%="hopmax_"+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(relationshipType)%>' type="text" size="5" value='<%=mapField%>'/> + </td> + </tr> +<% + } +%> + <tr><td class="separator" colspan="4"><hr/></td></tr> + <tr> + <td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.HopCountModeColon")%></nobr></td> + <td class="value" colspan="3"> + <nobr><input type="radio" name="hopcountmode" value='<%=Integer.toString(IJobDescription.HOPCOUNT_ACCURATE)%>' <%=((hopcountMode==IJobDescription.HOPCOUNT_ACCURATE)?"checked=\"true\"":"")%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.DeleteUnreachableDocuments")%></input></nobr><br/> + <nobr><input type="radio" name="hopcountmode" value='<%=Integer.toString(IJobDescription.HOPCOUNT_NODELETE)%>' <%=((hopcountMode==IJobDescription.HOPCOUNT_NODELETE)?"checked=\"true\"":"")%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.KeepUnreachableDocumentsForNow")%></input></nobr><br/> + <nobr><input type="radio" name="hopcountmode" value='<%=Integer.toString(IJobDescription.HOPCOUNT_NEVERDELETE)%>' <%=((hopcountMode==IJobDescription.HOPCOUNT_NEVERDELETE)?"checked=\"true\"":"")%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.KeepUnreachableDocumentsForever")%></input></nobr><br/> + </td> + </tr> + </table> +<% + } + } + else + { + if (relationshipTypes != null) + { +%> + <input type="hidden" name="hopfilters" value="true"/> +<% + int i = 0; + while (i < relationshipTypes.length) + { + String relationshipType = relationshipTypes[i++]; + String mapField = ""; + Long mapValue = (Long)hopFilterMap.get(relationshipType); + if (mapValue != null) + mapField = mapValue.toString(); +%> + <input name='<%="hopmax_"+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(relationshipType)%>' type="hidden" value='<%=mapField%>'/> + <input name="hopcountmode" type="hidden" value='<%=Integer.toString(hopcountMode)%>'/> +<% + } + } + } + + // Connection tab + if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Connection")) && tabSequenceInt == -1) + { + int rowCounter = 0; + +%> + <table class="displaytable"> + <tr><td class="separator" colspan="4"><hr/></td></tr> + <tr> + <td colspan="1" class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.PipelineColon")%></nobr></td> + <td class="boxcell" colspan="3"> + <table class="formtable"> + <tr class="formheaderrow"> + <td class="formcolumnheader"> + <input name="pipeline_count" type="hidden" value="<%=pipelineConnectionNames.length%>"/> + </td> + <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageNumber")%></nobr></td> + <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageType")%></nobr></td> + <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StagePrecedent")%></nobr></td> + <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageDescription")%></nobr></td> + <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageConnectionName")%></nobr></td> + </tr> + <tr class="<%=((rowCounter++ % 2)==0)?"evenformrow":"oddformrow"%>"> + <td class="formcolumncell"></td> + <td class="formcolumncell">1.</td> + <td class="formcolumncell"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Repository")%></td> + <td class="formcolumncell"></td> + <td class="formcolumncell"></td> + <td class="formcolumncell"> +<% + if (connectionName.length() == 0) + { +%> + <select name="connectionname" size="1"> + <option <%="".equals(connectionName)?"selected=\"selected\"":""%> value="">-- <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoneSelected")%> --</option> +<% + for (IRepositoryConnection conn : connList) + { +%> + <option <%=conn.getName().equals(connectionName)?"selected=\"selected\"":""%> value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(conn.getName())%>'><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(conn.getName())%></option> +<% + } +%> + </select> +<% + } + else + { +%> + <input type="hidden" name="connectionname" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(connectionName)%>'/><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(connectionName)%> +<% + } +%> + </td> + </tr> +<% + // A map of stage number to reference count + Map<Integer,Integer> referenceCounts = new HashMap<Integer,Integer>(); + // A list of precedents to pick from, displayed at the end + List<Integer> precedents = new ArrayList<Integer>(); + // Repository connection is always allowed + precedents.add(new Integer(-1)); + Set<String> alreadyPresent = new HashSet<String>(); + for (int j = 0; j < pipelineConnectionNames.length; j++) + { + if (pipelineIsOutputs[j]) + alreadyPresent.add(pipelineConnectionNames[j]); + else + precedents.add(new Integer(j)); + if (pipelinePrerequisites[j] != -1) + { + Integer thisOne = new Integer(pipelinePrerequisites[j]); + Integer x = referenceCounts.get(thisOne); + if (x == null) + referenceCounts.put(thisOne,new Integer(1)); + else + referenceCounts.put(thisOne,new Integer(x.intValue() + 1)); + } + } + boolean anyTransformationButtons = false; + for (int j = 0; j < pipelineConnectionNames.length; j++) + { + String pipelineConnectionName = pipelineConnectionNames[j]; + String pipelineDescription = pipelineDescriptions[j]; + if (pipelineDescription == null) + pipelineDescription = ""; + String pipelineType = pipelineIsOutputs[j]?Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Output"):Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Transformation"); +%> + <tr class="<%=((rowCounter++ % 2)==0)?"evenformrow":"oddformrow"%>"> + <td class="formcolumncell"> + <input name="pipeline_<%=j%>_op" type="hidden" value="Continue"/> + <a name="pipeline_<%=j%>_tag"/> +<% + // We don't want to leave orphans around. If the pipeline stage is an output, we can delete it ONLY if: + // -- the precedent is -1, OR + // -- the precedent is not -1 BUT more than one stage refers to the precedent + if (!pipelineIsOutputs[j] || pipelinePrerequisites[j] == -1 || referenceCounts.get(new Integer(pipelinePrerequisites[j])).intValue() > 1) + { +%> + <input type="button" value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Delete")%>" alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Deletepipelinestage")%>' onclick="javascript:DeletePipelineStage(<%=j%>);"/> +<% + } + if (transformationList.length > 0) + { + anyTransformationButtons = true; +%> + <input type="button" value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.InsertTransformationBefore")%>" alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Insertnewtransformationhere")%>' onclick="javascript:InsertPipelineStageTransformation(<%=j%>);"/> +<% + } + if (outputList.length != alreadyPresent.size()) + { +%> + <input type="button" value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.InsertOutputBefore")%>" alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Insertnewoutputhere")%>' onclick="javascript:InsertPipelineStageOutput(<%=j%>);"/> +<% + } +%> + </td> + <td class="formcolumncell"><%=(j+2)%>.</td> + <td class="formcolumncell"><%=pipelineType%> + <input name="pipeline_<%=j%>_isoutput" type="hidden" value='<%=pipelineIsOutputs[j]?"true":"false"%>'/> + </td> + <td class="formcolumncell"><%=(pipelinePrerequisites[j] + 2)%>. + <input name="pipeline_<%=j%>_precedent" type="hidden" value="<%=pipelinePrerequisites[j]%>"/> + </td> + <td class="formcolumncell"> + <input name="pipeline_<%=j%>_description" type="text" size="30" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pipelineDescription)%>"/> + </td> + <td class="formcolumncell"> + <nobr><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(pipelineConnectionName)%></nobr> + <input name="pipeline_<%=j%>_connectionname" type="hidden" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pipelineConnectionName)%>"/> + </td> + </tr> +<% + } + if (anyTransformationButtons) + { +%> + <tr class="formrow"><td class="formseparator" colspan="4"><hr/></td></tr> + <tr class="formrow"> + <td class="formcolumncell"> + <a name="transformation_tag"/> + </td> + <td class="formcolumncell"></td> + <td class="formcolumncell"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Transformation")%></td> + <td class="formcolumncell"></td> + <td class="formcolumncell"> + <input name="transformation_description" type="text" size="30" value=""/> + </td> + <td class="formcolumncell"> + <select name="transformation_connectionname" size="1"> + <option selected="selected" value="">-- <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoneSelected")%> --</option> +<% + for (ITransformationConnection conn : transformationList) + { +%> + <option value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(conn.getName())%>'><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(conn.getName())%></option> +<% + } +%> + </select> + </td> + </tr> +<% + } + if (outputList.length != alreadyPresent.size()) + { +%> + <tr class="formrow"><td class="formseparator" colspan="4"><hr/></td></tr> + <tr class="formrow"> + <td class="formcolumncell"> + <a name="output_tag"/> + <input type="button" value='<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.AddOutput")%>' alt='<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.AddAnOutput")%>' onclick="javascript:AppendPipelineStageOutput();"/> + <input name="output_op" type="hidden" value="Continue"/> + </td> + <td class="formcolumncell"></td> + <td class="formcolumncell"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Output")%></td> + <td class="formcolumncell"> + <select name="output_precedent" size="1"> +<% + for (Integer pre : precedents) + { +%> + <option value="<%=pre%>"><%=(pre.intValue()+2)%></option> +<% + } +%> + </select> + </td> + <td class="formcolumncell"> + <input name="output_description" type="text" size="30" value=""/> + </td> + <td class="formcolumncell"> + <select name="output_connectionname" size="1"> + <option selected="selected" value="">-- <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoneSelected")%> --</option> +<% + for (IOutputConnection conn : outputList) + { + if (!alreadyPresent.contains(conn.getName())) + { +%> + <option value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(conn.getName())%>'><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(conn.getName())%></option> +<% + } + } +%> + </select> + </td> + </tr> +<% + } +%> + </table> + </td> + </tr> + +<% + alreadyPresent = new HashSet<String>(); + for (int j = 0; j < notificationConnectionNames.length; j++) + { + alreadyPresent.add(notificationConnectionNames[j]); + } + if (notificationList.length > 0) + { +%> + <tr> + <td colspan="1" class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NotificationsColon")%></nobr></td> + <td class="boxcell" colspan="3"> + <table class="formtable"> + <tr class="formheaderrow"> + <td class="formcolumnheader"> + <input name="notification_count" type="hidden" value="<%=notificationConnectionNames.length%>"/> + </td> + <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageNumber")%></nobr></td> + <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NotificationDescription")%></nobr></td> + <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NotificationConnectionName")%></nobr></td> + </tr> +<% + rowCounter = 0; + for (int j = 0; j < notificationConnectionNames.length; j++) + { + String notificationConnectionName = notificationConnectionNames[j]; + String notificationDescription = notificationDescriptions[j]; + if (notificationDescription == null) + notificationDescription = ""; +%> + <tr class="<%=((rowCounter++ % 2)==0)?"evenformrow":"oddformrow"%>"> + <td class="formcolumncell"> + <input name="notification_<%=j%>_op" type="hidden" value="Continue"/> + <a name="notification_<%=j%>_tag"/> + <input type="button" value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Delete")%>" alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Deletenotification")%>' onclick="javascript:DeleteNotification(<%=j%>);"/> + </td> + <td class="formcolumncell"><%=(j+pipelineConnectionNames.length+2)%>.</td> + <td class="formcolumncell"> + <input name="notification_<%=j%>_description" type="text" size="30" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(notificationDescription)%>"/> + </td> + <td class="formcolumncell"> + <nobr><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(notificationConnectionName)%></nobr> + <input name="notification_<%=j%>_connectionname" type="hidden" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(notificationConnectionName)%>"/> + </td> + </tr> +<% + } + if (notificationList.length != alreadyPresent.size()) + { +%> + <tr class="formrow"><td class="formseparator" colspan="4"><hr/></td></tr> + <tr class="formrow"> + <td class="formcolumncell"> + <a name="notification_tag"/> + <input type="button" value='<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.AddNotification")%>' alt='<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.AddANotification")%>' onclick="javascript:AppendNotification();"/> + <input name="notification_op" type="hidden" value="Continue"/> + </td> + <td class="formcolumncell"></td> + <td class="formcolumncell"> + <input name="notification_description" type="text" size="30" value=""/> + </td> + <td class="formcolumncell"> + <select name="notification_connectionname" size="1"> + <option selected="selected" value="">-- <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoneSelected")%> --</option> +<% + for (INotificationConnection conn : notificationList) + { + if (!alreadyPresent.contains(conn.getName())) + { +%> + <option value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(conn.getName())%>'><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(conn.getName())%></option> +<% + } + } +%> + </select> + </td> + </tr> +<% + } +%> + </table> + </td> + </tr> +<% + } +%> + <tr><td class="separator" colspan="4"><hr/></td></tr> + + <tr> + <td class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.PriorityColon")%></nobr></td> + <td class="value"> + <select name="priority" size="1"> + <option value="1" <%=(priority==1)?"selected=\"selected\"":""%>>1 <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Highest")%></option> + <option value="2" <%=(priority==2)?"selected=\"selected\"":""%>>2</option> + <option value="3" <%=(priority==3)?"selected=\"selected\"":""%>>3</option> + <option value="4" <%=(priority==4)?"selected=\"selected\"":""%>>4</option> + <option value="5" <%=(priority==5)?"selected=\"selected\"":""%>>5</option> + <option value="6" <%=(priority==6)?"selected=\"selected\"":""%>>6</option> + <option value="7" <%=(priority==7)?"selected=\"selected\"":""%>>7</option> + <option value="8" <%=(priority==8)?"selected=\"selected\"":""%>>8</option> + <option value="9" <%=(priority==9)?"selected=\"selected\"":""%>>9</option> + <option value="10" <%=(priority==10)?"selected=\"selected\"":""%>>10 <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Lowest")%></option> + </select> + </td> + <td class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StartMethodColon")%></nobr></td> + <td class="value"> + <select name="startmethod" size="1"> + <option value='<%=IJobDescription.START_WINDOWBEGIN%>' <%=(startMethod==IJobDescription.START_WINDOWBEGIN)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StartWhenScheduleWindowStarts")%></option> + <option value='<%=IJobDescription.START_WINDOWINSIDE%>' <%=(startMethod==IJobDescription.START_WINDOWINSIDE)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StartEvenInsideAScheduleWindow")%></option> + <option value='<%=IJobDescription.START_DISABLE%>' <%=(startMethod==IJobDescription.START_DISABLE)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.DontAutomaticallyStartThisJob")%></option> + </select> + </td> + </tr> + </table> +<% + } + else + { %> - <p class="windowtitle"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditaJob")%></p> - <table class="displaytable"><tr><td class="message"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoRepositoryConnectionsDefinedCreateOneFirst")%></td></tr></table> + <input type="hidden" name="connectionname" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(connectionName)%>'/> + <input type="hidden" name="pipeline_count" value="<%=pipelineConnectionNames.length%>"/> + <input type="hidden" name="notification_count" value="<%=notificationConnectionNames.length%>"/> <% - } - else if (outputList.length == 0) - { -%> - <p class="windowtitle"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditaJob")%></p> - <table class="displaytable"><tr><td class="message"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoOutputConnectionsDefinedCreateOneFirst")%></td></tr></table> -<% - } - else - { -%> - <form class="standardform" name="editjob" action="execute.jsp" method="POST" enctype="multipart/form-data"> - <input type="hidden" name="op" value="Continue"/> - <input type="hidden" name="type" value="job"/> - <input type="hidden" name="index" value=""/> - <input type="hidden" name="tabname" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(tabName)%>'/> - <input type="hidden" name="sequencenumber" value='<%=((tabSequenceInt==-1)?"":Integer.toString(tabSequenceInt))%>'/> -<% - if (jobID != null) - { -%> - <input type="hidden" name="jobid" value='<%=jobID%>'/> -<% - } -%> - <table class="tabtable"> - <tr class="tabspacerrow"> - <td class="spacertab" colspan="<%=tabsArray.size()%>"></td> - <td class="remaindertab" rowspan="3"> -<% - if (description.length() > 0) - { -%> - <nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditJob")%> '<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(description)%>'</nobr> -<% - } - else - { -%> - <nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditaJob")%></nobr> -<% - } -%> - </td> - </tr> - <tr class="tabsequencerow"> -<% - Integer currentSequenceNumber = null; - int startColumn = 0; - for (int tabNum = 0; tabNum < tabsArray.size(); tabNum++) - { - boolean doswitch = false; - Integer sequenceNumber = sequenceArray.get(tabNum); - if (sequenceNumber == null || currentSequenceNumber == null) - doswitch = (sequenceNumber != null || currentSequenceNumber != null); - else - doswitch = !sequenceNumber.equals(currentSequenceNumber); - if (doswitch) - { - int colspan = tabNum - startColumn; - if (colspan > 0) - { - if (currentSequenceNumber == null) - { -%> - <td class="blanksequencetab" colspan="<%=colspan%>"></td> -<% - } - else - { -%> - <td class="sequencetab" colspan="<%=colspan%>"><%=(currentSequenceNumber.intValue()+1)%>.</td> -<% - } - } - startColumn = tabNum; - currentSequenceNumber = sequenceNumber; - } - } - if (startColumn != tabsArray.size()) - { - int colspan = tabsArray.size() - startColumn; - if (currentSequenceNumber == null) - { -%> - <td class="blanksequencetab" colspan="<%=colspan%>"></td> -<% - } - else - { -%> - <td class="sequencetab" colspan="<%=colspan%>"><%=(currentSequenceNumber.intValue()+1)%>.</td> -<% - } - } - // Final (remainder) cell left out on purpose; filled in above. -%> - </tr> - <tr class="tabrow"> -<% - for (int tabNum = 0; tabNum < tabsArray.size(); tabNum++) - { - String tab = tabsArray.get(tabNum); - Integer sequenceNumber = sequenceArray.get(tabNum); - int sequenceNumberInt = (sequenceNumber == null)?-1:sequenceNumber.intValue(); - if (tab.equals(tabName) && (tabSequenceInt == -1 || sequenceNumberInt == tabSequenceInt)) - { -%> - <td class="activetab"><nobr><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(tab)%></nobr></td> -<% - } - else - { -%> - <td class="passivetab"><nobr><a href="javascript:void(0);" alt='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(tab)+" "+Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.tab")%>' onclick='<%="javascript:SelectSequencedTab(\""+tab+"\",\""+((sequenceNumber==null)?"":sequenceNumber.toString())+"\");return false;"%>'><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(tab)%></a></nobr></td> -<% - } - } - // Missing remainder tab ON PURPOSE -- comes from rowspan=2 tab above -%> - </tr> - <tr class="tabbodyrow"> - <td class="tabbody" colspan='<%=Integer.toString(tabsArray.size()+1)%>'> - - <input type="hidden" name="schedulerecords" value='<%=Integer.toString(scheduleRecords.size())%>'/> -<% - // The NAME tab - if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name")) && tabSequenceInt == -1) - { -%> - <table class="displaytable"> - <tr> - <td class="separator" colspan="4"><hr/></td> - </tr> - <tr> - <td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NameColon")%></nobr></td><td class="value" colspan="3"> - <input type="text" size="50" name="description" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(description)%>'/> - </td> - </tr> - </table> -<% - } - else - { -%> - <input type="hidden" name="description" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(description)%>'/> -<% - } - - // Hop Filters tab - if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.HopFilters")) && tabSequenceInt == -1) - { - if (relationshipTypes != null) - { -%> - <table class="displaytable"> - <tr> - <td class="separator" colspan="4"><input type="hidden" name="hopfilters" value="true"/><hr/></td> - </tr> -<% - int i = 0; - while (i < relationshipTypes.length) - { - String relationshipType = relationshipTypes[i++]; - String mapField = ""; - Long mapValue = (Long)hopFilterMap.get(relationshipType); - if (mapValue != null) - mapField = mapValue.toString(); -%> - <tr> - <td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaximumHopCountForType")%> '<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(relationshipType)%>'<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.colon")%></nobr></td> - <td class="value" colspan="3" > - <input name='<%="hopmax_"+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(relationshipType)%>' type="text" size="5" value='<%=mapField%>'/> - </td> - </tr> -<% - } -%> - <tr><td class="separator" colspan="4"><hr/></td></tr> - <tr> - <td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.HopCountModeColon")%></nobr></td> - <td class="value" colspan="3"> - <nobr><input type="radio" name="hopcountmode" value='<%=Integer.toString(IJobDescription.HOPCOUNT_ACCURATE)%>' <%=((hopcountMode==IJobDescription.HOPCOUNT_ACCURATE)?"checked=\"true\"":"")%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.DeleteUnreachableDocuments")%></input></nobr><br/> - <nobr><input type="radio" name="hopcountmode" value='<%=Integer.toString(IJobDescription.HOPCOUNT_NODELETE)%>' <%=((hopcountMode==IJobDescription.HOPCOUNT_NODELETE)?"checked=\"true\"":"")%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.KeepUnreachableDocumentsForNow")%></input></nobr><br/> - <nobr><input type="radio" name="hopcountmode" value='<%=Integer.toString(IJobDescription.HOPCOUNT_NEVERDELETE)%>' <%=((hopcountMode==IJobDescription.HOPCOUNT_NEVERDELETE)?"checked=\"true\"":"")%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.KeepUnreachableDocumentsForever")%></input></nobr><br/> - </td> - </tr> - </table> -<% - } - } - else - { - if (relationshipTypes != null) - { -%> - <input type="hidden" name="hopfilters" value="true"/> -<% - int i = 0; - while (i < relationshipTypes.length) - { - String relationshipType = relationshipTypes[i++]; - String mapField = ""; - Long mapValue = (Long)hopFilterMap.get(relationshipType); - if (mapValue != null) - mapField = mapValue.toString(); -%> - <input name='<%="hopmax_"+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(relationshipType)%>' type="hidden" value='<%=mapField%>'/> - <input name="hopcountmode" type="hidden" value='<%=Integer.toString(hopcountMode)%>'/> -<% - } - } - } - - // Connection tab - if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Connection")) && tabSequenceInt == -1) - { - int rowCounter = 0; - -%> - <table class="displaytable"> - <tr><td class="separator" colspan="4"><hr/></td></tr> - <tr> - <td colspan="1" class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.PipelineColon")%></nobr></td> - <td class="boxcell" colspan="3"> - <table class="formtable"> - <tr class="formheaderrow"> - <td class="formcolumnheader"> - <input name="pipeline_count" type="hidden" value="<%=pipelineConnectionNames.length%>"/> - </td> - <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageNumber")%></nobr></td> - <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageType")%></nobr></td> - <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StagePrecedent")%></nobr></td> - <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageDescription")%></nobr></td> - <td class="formcolumnheader"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageConnectionName")%></nobr></td> - </tr> - <tr class="<%=((rowCounter++ % 2)==0)?"evenformrow":"oddformrow"%>"> - <td class="formcolumncell"></td> - <td class="formcolumncell">1.</td> - <td class="formcolumncell"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Repository")%></td> - <td class="formcolumncell"></td> - <td class="formcolumncell"></td> - <td class="formcolumncell"> -<% - if (connectionName.length() == 0) - { -%> - <select name="connectionname" size="1"> - <option <%="".equals(connectionName)?"selected=\"selected\"":""%> value="">-- <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoneSelected")%> --</option> -<% - for (IRepositoryConnection conn : connList) - { -%> - <option <%=conn.getName().equals(connectionName)?"selected=\"selected\"":""%> value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(conn.getName())%>'><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(conn.getName())%></option> -<% - } -%> - </select> -<% - } - else - { -%> - <input type="hidden" name="connectionname" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(connectionName)%>'/><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(connectionName)%> -<% - } -%> - </td> - </tr> -<% - // A map of stage number to reference count - Map<Integer,Integer> referenceCounts = new HashMap<Integer,Integer>(); - // A list of precedents to pick from, displayed at the end - List<Integer> precedents = new ArrayList<Integer>(); - // Repository connection is always allowed - precedents.add(new Integer(-1)); - Set<String> alreadyPresent = new HashSet<String>(); - for (int j = 0; j < pipelineConnectionNames.length; j++) - { - if (pipelineIsOutputs[j]) - alreadyPresent.add(pipelineConnectionNames[j]); - else - precedents.add(new Integer(j)); - if (pipelinePrerequisites[j] != -1) - { - Integer thisOne = new Integer(pipelinePrerequisites[j]); - Integer x = referenceCounts.get(thisOne); - if (x == null) - referenceCounts.put(thisOne,new Integer(1)); - else - referenceCounts.put(thisOne,new Integer(x.intValue() + 1)); - } - } - boolean anyTransformationButtons = false; - for (int j = 0; j < pipelineConnectionNames.length; j++) - { - String pipelineConnectionName = pipelineConnectionNames[j]; - String pipelineDescription = pipelineDescriptions[j]; - if (pipelineDescription == null) - pipelineDescription = ""; - String pipelineType = pipelineIsOutputs[j]?Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Output"):Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Transformation"); -%> - <tr class="<%=((rowCounter++ % 2)==0)?"evenformrow":"oddformrow"%>"> - <td class="formcolumncell"> - <input name="pipeline_<%=j%>_op" type="hidden" value="Continue"/> - <a name="pipeline_<%=j%>_tag"/> -<% - // We don't want to leave orphans around. If the pipeline stage is an output, we can delete it ONLY if: - // -- the precedent is -1, OR - // -- the precedent is not -1 BUT more than one stage refers to the precedent - if (!pipelineIsOutputs[j] || pipelinePrerequisites[j] == -1 || referenceCounts.get(new Integer(pipelinePrerequisites[j])).intValue() > 1) - { -%> - <input type="button" value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Delete")%>" alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Deletepipelinestage")%>' onclick="javascript:DeletePipelineStage(<%=j%>);"/> -<% - } - if (transformationList.length > 0) - { - anyTransformationButtons = true; -%> - <input type="button" value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.InsertTransformationBefore")%>" alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Insertnewtransformationhere")%>' onclick="javascript:InsertPipelineStageTransformation(<%=j%>);"/> -<% - } - if (outputList.length != alreadyPresent.size()) - { -%> - <input type="button" value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.InsertOutputBefore")%>" alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Insertnewoutputhere")%>' onclick="javascript:InsertPipelineStageOutput(<%=j%>);"/> -<% - } -%> - </td> - <td class="formcolumncell"><%=(j+2)%>.</td> - <td class="formcolumncell"><%=pipelineType%> - <input name="pipeline_<%=j%>_isoutput" type="hidden" value='<%=pipelineIsOutputs[j]?"true":"false"%>'/> - </td> - <td class="formcolumncell"><%=(pipelinePrerequisites[j] + 2)%>.
[... 1436 lines stripped ...]
