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

[... 1436 lines stripped ...]

Reply via email to