<%@ include file="adminHeaders.jsp" %> <% /* $Id$ */ /** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ %> <% // The contract of this edit page is as follows. It is either called directly, in which case it is expected to be creating // a job or beginning the process of editing an existing job, or it is called via redirection from execute.jsp, in which case // the job object being edited will be placed in the thread context under the name "JobObject". // It may also be called directly with a parameter of "origjobid", which implies that a copy operation should be started. try { // Check if authorized if (!adminprofile.checkAllowed(threadContext,IAuthorizer.CAPABILITY_EDIT_JOBS)) { variableContext.setParameter("target","listjobs.jsp"); %> <% } // 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 tabsArray = new ArrayList(); List sequenceArray = new ArrayList(); 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); } } } %> <% 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); } } %>
<% if (connList.length == 0) { %>

<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoRepositoryConnectionsDefinedCreateOneFirst")%>

<% } else if (outputList.length == 0) { %>

<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoOutputConnectionsDefinedCreateOneFirst")%>

<% } else { %>
<% if (jobID != null) { %> <% } %>
<% int activeTab = 0; int lastTabSeq = -1; 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(); String activeClass = ""; if(tab.equals(tabName)) { activeClass = "active"; } else { activeClass = ""; } if(sequenceNumber == null) { %> <% } else { int nextSeqNum = -1; if(tabNum < tabsArray.size()-1) { nextSeqNum = sequenceArray.get(tabNum + 1); } else { nextSeqNum = -1; } if(lastTabSeq != sequenceNumberInt) { %> <% } lastTabSeq = sequenceNumberInt; } } // Missing remainder tab ON PURPOSE -- comes from rowspan=2 tab above %>
<% // The NAME tab if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name")) && tabSequenceInt == -1) { %>
<% } else { %> <% } // Hop Filters tab if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.HopFilters")) && tabSequenceInt == -1) { if (relationshipTypes != null) { %> <% 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(); %> <% } %>

<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaximumHopCountForType")%> '<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(relationshipType)%>'<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.colon")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.HopCountModeColon")%> ><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.DeleteUnreachableDocuments")%>
><%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.KeepUnreachableDocumentsForNow")%>
><%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.KeepUnreachableDocumentsForever")%>
<% } } else { if (relationshipTypes != null) { %> <% 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(); %> <% } } } // Connection tab if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Connection")) && tabSequenceInt == -1) { %>
<% // A map of stage number to reference count Map referenceCounts = new HashMap(); // A list of precedents to pick from, displayed at the end List precedents = new ArrayList(); // Repository connection is always allowed precedents.add(new Integer(-1)); Set alreadyPresent = new HashSet(); 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"); %> <% } if (anyTransformationButtons) { %> <% } if (outputList.length != alreadyPresent.size()) { %> <% } %>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageNumber")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageType")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StagePrecedent")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageDescription")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageConnectionName")%>
1. <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Repository")%> <% if (connectionName.length() == 0) { %> <% } else { %> <%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(connectionName)%> <% } %>
<% // 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) { %> " alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Deletepipelinestage")%>' onclick="javascript:DeletePipelineStage(<%=j%>);"/> <% } if (transformationList.length > 0) { anyTransformationButtons = true; %> " alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Insertnewtransformationhere")%>' onclick="javascript:InsertPipelineStageTransformation(<%=j%>);"/> <% } if (outputList.length != alreadyPresent.size()) { %> " alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Insertnewoutputhere")%>' onclick="javascript:InsertPipelineStageOutput(<%=j%>);"/> <% } %>
<%=(j+2)%>. <%=pipelineType%> <%=(pipelinePrerequisites[j] + 2)%>. <%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(pipelineConnectionName)%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Transformation")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Output")%>
<% alreadyPresent = new HashSet(); for (int j = 0; j < notificationConnectionNames.length; j++) { alreadyPresent.add(notificationConnectionNames[j]); } if (notificationList.length > 0) { %>
<% for (int j = 0; j < notificationConnectionNames.length; j++) { String notificationConnectionName = notificationConnectionNames[j]; String notificationDescription = notificationDescriptions[j]; if (notificationDescription == null) notificationDescription = ""; %> <% } if (notificationList.length != alreadyPresent.size()) { %> <% } %>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.StageNumber")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.NotificationDescription")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.NotificationConnectionName")%>
" alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Deletenotification")%>' onclick="javascript:DeleteNotification(<%=j%>);"/> <%=(j+pipelineConnectionNames.length+2)%>. <%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(notificationConnectionName)%>
<% } %>
<% } else { %> <% for (int j = 0; j < pipelineConnectionNames.length; j++) { String pipelineConnectionName = pipelineConnectionNames[j]; String pipelineDescription = pipelineDescriptions[j]; if (pipelineDescription == null) pipelineDescription = ""; %> <% } for (int j = 0; j < notificationConnectionNames.length; j++) { String notificationConnectionName = notificationConnectionNames[j]; String notificationDescription = notificationDescriptions[j]; if (notificationDescription == null) notificationDescription = ""; %> <% } %> <% } // Scheduling tab if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Scheduling")) && tabSequenceInt == -1) { %>
<% if (model != -1 && model != IRepositoryConnector.MODEL_ADD_CHANGE_DELETE && model != IRepositoryConnector.MODEL_CHAINED_ADD_CHANGE_DELETE) { %> <% } else { %> <% } String[] availableIDs = java.util.TimeZone.getAvailableIDs(); String localTimezone = java.util.TimeZone.getDefault().getID(); if (scheduleRecords.size() == 0) { %>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoScheduleSpecified")%>
<% } else { int l = 0; while (l < scheduleRecords.size()) { ScheduleRecord sr = (ScheduleRecord)scheduleRecords.get(l); Long srDuration = sr.getDuration(); EnumeratedValues srDayOfWeek = sr.getDayOfWeek(); EnumeratedValues srMonthOfYear = sr.getMonthOfYear(); EnumeratedValues srDayOfMonth = sr.getDayOfMonth(); EnumeratedValues srYear = sr.getYear(); EnumeratedValues srHourOfDay = sr.getHourOfDay(); EnumeratedValues srMinutesOfHour = sr.getMinutesOfHour(); boolean srRequestMinimum = sr.getRequestMinimum(); String srTimezone = sr.getTimezone(); if (srTimezone == null) { srTimezone = java.util.TimeZone.getDefault().getID(); } String postFix = Integer.toString(l); int k; %> <% l++; } } %>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ScheduleTypeColon")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.RecrawlIntervalIfContinuousColon")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutesBlankInfinity")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaxRecrawlIntervalIfContinuousColon")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutesBlankInfinity")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ExpirationIntervalIfContinuousColon")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutesBlankInfinity")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ReseedIntervalIfContinuousColon")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutesBlankInfinity")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ScheduledTimeColon")%>
: <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.at")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.plus")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.in")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.on")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaximumRunTimeColon")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutes")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.JobInvocationColon")%>
" onClick='<%="Javascript:RemoveSchedule("+Integer.toString(l)+")"%>' alt='<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.RemoveScheduleRecord")+Integer.toString(l)%>'/>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ScheduledTimeColon")%>
: <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.at")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.plus")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.in")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.on")%>
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaximumRunTimeColon")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutes")%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.JobInvocationColon")%>
" onClick="javascript:AddScheduledTime()" alt="<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.AddNewScheduleRecord")%>"/>
<% } else { %> <% int l = 0; while (l < scheduleRecords.size()) { ScheduleRecord sr = (ScheduleRecord)scheduleRecords.get(l); Long srDuration = sr.getDuration(); EnumeratedValues srDayOfWeek = sr.getDayOfWeek(); EnumeratedValues srMonthOfYear = sr.getMonthOfYear(); EnumeratedValues srDayOfMonth = sr.getDayOfMonth(); EnumeratedValues srYear = sr.getYear(); EnumeratedValues srHourOfDay = sr.getHourOfDay(); EnumeratedValues srMinutesOfHour = sr.getMinutesOfHour(); boolean srRequestMinimum = sr.getRequestMinimum(); String srTimezone = sr.getTimezone(); String postFix = Integer.toString(l); %> <% if (srDayOfWeek == null) { %> <% } else { Iterator iter = srDayOfWeek.getValues(); while (iter.hasNext()) { Integer value = (Integer)iter.next(); %> <% } } if (srHourOfDay == null) { %> <% } else { Iterator iter = srHourOfDay.getValues(); while (iter.hasNext()) { Integer value = (Integer)iter.next(); %> <% } } if (srMinutesOfHour == null) { %> <% } else { Iterator iter = srMinutesOfHour.getValues(); while (iter.hasNext()) { Integer value = (Integer)iter.next(); %> <% } } if (srDayOfMonth == null) { %> <% } else { Iterator iter = srDayOfMonth.getValues(); while (iter.hasNext()) { Integer value = (Integer)iter.next(); %> <% } } if (srMonthOfYear == null) { %> <% } else { Iterator iter = srMonthOfYear.getValues(); while (iter.hasNext()) { Integer value = (Integer)iter.next(); %> <% } } %> <% l++; } } if (connection != null) { IRepositoryConnector repositoryConnector = repositoryConnectorPool.grab(connection); if (repositoryConnector != null) { try { repositoryConnector.outputSpecificationBody(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),documentSpecification,0,tabSequenceInt,tabName); } finally { repositoryConnectorPool.release(connection,repositoryConnector); } %> <% } } boolean outputPresent = false; for (int j = 0; j < pipelineConnectionNames.length; j++) { if (pipelineIsOutputs[j]) { outputPresent = true; IOutputConnection outputConnection = outputMgr.load(pipelineConnectionNames[j]); if (outputConnection != null) { IOutputConnector outputConnector = outputConnectorPool.grab(outputConnection); if (outputConnector != null) { try { outputConnector.outputSpecificationBody(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),pipelineSpecifications[j],1+j,tabSequenceInt,tabName); } 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.outputSpecificationBody(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),pipelineSpecifications[j],1+j,tabSequenceInt,tabName); } finally { transformationConnectorPool.release(transformationConnection,transformationConnector); } } } } } 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.outputSpecificationBody(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),notificationSpecifications[j],1+pipelineConnectionNames.length+j,tabSequenceInt,tabName); } finally { notificationConnectorPool.release(notificationConnection,notificationConnector); } } } } %>
<% } %>
<% } catch (ManifoldCFException e) { e.printStackTrace(); variableContext.setParameter("text",e.getMessage()); variableContext.setParameter("target","listjobs.jsp"); %> <% } %>