You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by ki...@apache.org on 2015/06/13 00:54:44 UTC

svn commit: r1685187 [4/18] - /manifoldcf/trunk/framework/crawler-ui/src/main/webapp/

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=1685187&r1=1685186&r2=1685187&view=diff
==============================================================================
--- manifoldcf/trunk/framework/crawler-ui/src/main/webapp/editjob.jsp (original)
+++ manifoldcf/trunk/framework/crawler-ui/src/main/webapp/editjob.jsp Fri Jun 12 22:54:43 2015
@@ -2,265 +2,293 @@
 
 <%
 
-  /* $Id$ */
+/* $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.
- */
+* 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 {
-    // 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);
-    }
+    // 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
+    {
+	// 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();
 
-    // 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();
-    }
+	// 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);
-      }
-    }
+	// 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());
+	}
 
-    // 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";
-    }
+	// 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);
+		}
+	}
 
-    if (connection != null) {
-      IRepositoryConnector connector = RepositoryConnectorFactory.getConnectorNoCheck(connection.getClassName());
-      if (connector != null) {
-        checkMethod = connector.getFormCheckJavascriptMethodName(0);
-        saveCheckMethod = connector.getFormPresaveCheckJavascriptMethodName(0);
-      }
-    }
+	// 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 < 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);
-        }
+	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"?>
@@ -269,1666 +297,1643 @@
 
 <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();
-      }
-    }
+	<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>
 
-    // 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();
-      }
-    }
+	<script type="text/javascript">
+	<!--
 
-    // 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 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
-    function postFormNew() {
-      if (checkForm()) {
-        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();
+		}
+	}
 
-    // Deprecated
-    function postForm(schedCount) {
-      if (checkForm()) {
-        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;
-        }
-        <%
+	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;
-        }
-        <%
+			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.<%=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();
-    }
+			if (window.<%=saveCheckMethod%>)
+			{
+				if (<%=saveCheckMethod%>() == false)
+					return;
+			}
+			document.editjob.op.value="Save";
+			document.editjob.submit();
+		}
+	}
 
-    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 Cancel()
+	{
+		document.editjob.op.value="Cancel";
+		document.editjob.submit();
+	}
 
-    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 Continue()
+	{
+		document.editjob.op.value="Continue";
+		postFormNew();
+	}
 
-    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 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 DeletePipelineStage(n) {
-      eval("document.editjob.pipeline_" + n + "_op.value = 'Delete'");
-      if (n == 0)
-        postFormSetAnchor("pipeline_tag");
-      else
-        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 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 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 DeleteNotification(n) {
-      eval("document.editjob.notification_" + n + "_op.value = 'Delete'");
-      if (n == 0)
-        postFormSetAnchor("notification_tag");
-      else
-        postFormSetAnchor("notification_" + (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 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 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;
-      <%
+	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;
-      }
-      <%
+		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;
-      }
-      <%
+		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;
-    }
+		// Check the connector part
+		if (window.<%=checkMethod%>)
+		{
+			if (<%=checkMethod%>() == false)
+				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 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 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 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 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 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 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 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 isInteger(value) {
-      var anum = /(^\d+$)/;
-      return anum.test(value);
-    }
+	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 isRegularExpression(value) {
-      try {
-        var foo = "teststring";
-        foo.search(value.replace(/\(\?i\)/, ""));
-        return true;
-      }
-      catch (e) {
-        return false;
-      }
-    }
+	function isInteger(value)
+	{
+		var anum=/(^\d+$)/;
+		return anum.test(value);
+	}
 
-    //-->
-  </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);
-      }
-    }
-  %>
+	function isRegularExpression(value)
+	{
+		try
+		{
+			var foo = "teststring";
+                        foo.search(value.replace(/\(\?i\)/,""));
+			return true;
+		}
+		catch (e)
+		{
+			return false;
+		}
+	}
 
-  <%
-    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);
-      }
-    }
+	//-->
+	</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);
-      }
-    }
-  %>
+<%
+	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>
 
 <body class="standardbody">
 
-<table class="page">
-  <tr>
-    <td colspan="2" class="banner">
-      <jsp:include page="banner.jsp" flush="true"/>
-    </td>
-  </tr>
-  <tr>
-    <td class="navigation">
-      <jsp:include page="navigation.jsp" flush="true"/>
-    </td>
-    <td class="darkwindow">
-      <%
-        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 {
-              %>
-              <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%>"/>
-              <%
-                for (int j = 0; j < pipelineConnectionNames.length; j++) {
-                  String pipelineConnectionName = pipelineConnectionNames[j];
-                  String pipelineDescription = pipelineDescriptions[j];
-                  if (pipelineDescription == null)
-                    pipelineDescription = "";
-              %>
-              <input name="pipeline_<%=j%>_isoutput" type="hidden" value='<%=pipelineIsOutputs[j]?"true":"false"%>'/>
-              <input name="pipeline_<%=j%>_precedent" type="hidden" value="<%=pipelinePrerequisites[j]%>"/>
-              <input type="hidden" name="pipeline_<%=j%>_connectionname" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pipelineConnectionName)%>"/>
-              <input type="hidden" name="pipeline_<%=j%>_description" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pipelineDescription)%>"/>
-              <%
-                }
-                for (int j = 0; j < notificationConnectionNames.length; j++) {
-                  String notificationConnectionName = notificationConnectionNames[j];
-                  String notificationDescription = notificationDescriptions[j];
-                  if (notificationDescription == null)
-                    notificationDescription = "";
-              %>
-              <input type="hidden" name="notification_<%=j%>_connectionname" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(notificationConnectionName)%>"/>
-              <input type="hidden" name="notification_<%=j%>_description" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(notificationDescription)%>"/>
-              <%
-                }
-
-              %>
-              <input type="hidden" name="priority" value='<%=priority%>'/>
-              <input type="hidden" name="startmethod" value='<%=startMethod%>'/>
-              <%
-                }
-
-                // Scheduling tab
-                if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(), "editjob.Scheduling")) && tabSequenceInt == -1) {
-              %>
-              <table class="displaytable">
-                <%
-                  if (model != -1 && model != IRepositoryConnector.MODEL_ADD_CHANGE_DELETE && model != IRepositoryConnector.MODEL_CHAINED_ADD_CHANGE_DELETE) {
-                %>
-                <tr>
-                  <td class="separator" colspan="4">

[... 1802 lines stripped ...]