blob: 01d8716cf7ba6b3f6e143316bda2d07b373ca4bd [file] [log] [blame]
<%@ include file="adminHeaders.jsp" %>
<%
/* $Id$ */
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
%>
<%
// The contract of this edit page is as follows. It is either called directly, in which case it is expected to be creating
// a job or beginning the process of editing an existing job, or it is called via redirection from execute.jsp, in which case
// the job object being edited will be placed in the thread context under the name "JobObject".
// It may also be called directly with a parameter of "origjobid", which implies that a copy operation should be started.
try
{
// Check if authorized
if (!adminprofile.checkAllowed(threadContext,IAuthorizer.CAPABILITY_EDIT_JOBS))
{
variableContext.setParameter("target","listjobs.jsp");
%>
<jsp:forward page="unauthorized.jsp"/>
<%
}
// Get the job manager handle
IJobManager manager = JobManagerFactory.make(threadContext);
IRepositoryConnectionManager connMgr = RepositoryConnectionManagerFactory.make(threadContext);
IRepositoryConnection[] connList = connMgr.getAllConnections();
INotificationConnectionManager notificationMgr = NotificationConnectionManagerFactory.make(threadContext);
INotificationConnection[] notificationList = notificationMgr.getAllConnections();
IOutputConnectionManager outputMgr = OutputConnectionManagerFactory.make(threadContext);
IOutputConnection[] outputList = outputMgr.getAllConnections();
ITransformationConnectionManager transformationMgr = TransformationConnectionManagerFactory.make(threadContext);
ITransformationConnection[] transformationList = transformationMgr.getAllConnections();
IOutputConnectorPool outputConnectorPool = OutputConnectorPoolFactory.make(threadContext);
IRepositoryConnectorPool repositoryConnectorPool = RepositoryConnectorPoolFactory.make(threadContext);
INotificationConnectorPool notificationConnectorPool = NotificationConnectorPoolFactory.make(threadContext);
ITransformationConnectorPool transformationConnectorPool = TransformationConnectorPoolFactory.make(threadContext);
// Figure out tab name and sequence number
String tabName = variableContext.getParameter("tabname");
String tabSequenceNumber = variableContext.getParameter("sequencenumber");
int tabSequenceInt;
if (tabName == null || tabName.length() == 0)
{
tabName = Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name");
tabSequenceInt = -1;
}
else
{
if (tabSequenceNumber == null || tabSequenceNumber.length() == 0)
tabSequenceInt = -1;
else
tabSequenceInt = Integer.parseInt(tabSequenceNumber);
}
// Get a loaded job object, somehow.
String jobID = null;
IJobDescription job = (IJobDescription)threadContext.get("JobObject");
if (job == null)
{
// We did not go through execute.jsp
// We might have received an argument specifying the connection name.
jobID = variableContext.getParameter("jobid");
String origJobID = variableContext.getParameter("origjobid");
if (origJobID == null || origJobID.length() == 0)
origJobID = jobID;
if (origJobID != null)
job = manager.load(new Long(origJobID));
}
else
jobID = job.getID().toString();
// Setup default fields
String connectionName = "";
String description = "";
int type = IJobDescription.TYPE_SPECIFIED;
Specification documentSpecification = new Specification();
// Pipeline data
String[] pipelineConnectionNames = new String[0];
String[] pipelineDescriptions = new String[0];
boolean[] pipelineIsOutputs = new boolean[0];
int[] pipelinePrerequisites = new int[0];
Specification[] pipelineSpecifications = new Specification[0];
String[] notificationConnectionNames = new String[0];
String[] notificationDescriptions = new String[0];
Specification[] notificationSpecifications = new Specification[0];
ArrayList scheduleRecords = new ArrayList();
EnumeratedValues dayOfWeek = null;
EnumeratedValues dayOfMonth = null;
EnumeratedValues monthOfYear = null;
EnumeratedValues year = null;
EnumeratedValues hourOfDay = null;
EnumeratedValues minutesOfHour = null;
// Duration in minutes
Long duration = null;
// RequestMinimum flag
boolean requestMinimum = false;
// Priority
int priority = 5;
// Minimum recrawl interval (Default: 1 day)
Long recrawlInterval = new Long(60L * 24L);
// Maximum recrawl interval (Default: none)
Long maxRecrawlInterval = null;
// Reseed interval (Default: 60 minutes)
Long reseedInterval = new Long(60L);
// Expiration interval (Default: never)
Long expirationInterval = null;
// Start method
int startMethod = IJobDescription.START_DISABLE;
// Hopcount mode
int hopcountMode = IJobDescription.HOPCOUNT_ACCURATE;
// Hop filters
Map hopFilterMap = new HashMap();
// If the job is not null, prepopulate everything with what comes from it.
if (job != null)
{
// Set up values
description = job.getDescription();
connectionName = job.getConnectionName();
pipelineConnectionNames = new String[job.countPipelineStages()];
pipelineDescriptions = new String[job.countPipelineStages()];
pipelineIsOutputs = new boolean[job.countPipelineStages()];
pipelinePrerequisites = new int[job.countPipelineStages()];
pipelineSpecifications = new Specification[job.countPipelineStages()];
for (int j = 0; j < job.countPipelineStages(); j++)
{
pipelineConnectionNames[j] = job.getPipelineStageConnectionName(j);
pipelineDescriptions[j] = job.getPipelineStageDescription(j);
pipelineIsOutputs[j] = job.getPipelineStageIsOutputConnection(j);
pipelinePrerequisites[j] = job.getPipelineStagePrerequisite(j);
pipelineSpecifications[j] = job.getPipelineStageSpecification(j);
}
notificationConnectionNames = new String[job.countNotifications()];
notificationDescriptions = new String[job.countNotifications()];
notificationSpecifications = new Specification[job.countNotifications()];
for (int j = 0; j < job.countNotifications(); j++)
{
notificationConnectionNames[j] = job.getNotificationConnectionName(j);
notificationDescriptions[j] = job.getNotificationDescription(j);
notificationSpecifications[j] = job.getNotificationSpecification(j);
}
type = job.getType();
startMethod = job.getStartMethod();
hopcountMode = job.getHopcountMode();
documentSpecification = job.getSpecification();
// Fill in schedule records from job
for (int j = 0; j < job.getScheduleRecordCount(); j++)
{
scheduleRecords.add(job.getScheduleRecord(j));
}
priority = job.getPriority();
Long value = job.getInterval();
recrawlInterval = (value==null)?null:new Long(value.longValue()/60000L);
value = job.getMaxInterval();
maxRecrawlInterval = (value==null)?null:new Long(value.longValue()/60000L);
value = job.getReseedInterval();
reseedInterval = (value==null)?null:new Long(value.longValue()/60000L);
value = job.getExpiration();
expirationInterval = (value==null)?null:new Long(value.longValue()/60000L);
hopFilterMap = job.getHopCountFilters();
}
// This form reposts to itself. It basically only allows the connection to be picked once; once done, the repost occurs
// and cannot be undone.
// Therefore, there are three possible entry conditions:
// 1) no jobid w/no connection name, which indicates a brand-new job without a chosen connection
// 2) no jobid w/a connection name, which indicates that the connection at least has been chosen
// 3) a jobid and a connection name, which indicates that we are editing an existing connection.
// There are similar combinations for output connections.
int model = IRepositoryConnector.MODEL_ADD_CHANGE_DELETE;
String[] relationshipTypes = null;
List<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);
}
}
}
%>
<script type="text/javascript">
<!--
<%
String title = null;
if (description.length() > 0)
{
title = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditJob") + " - " + org.apache.manifoldcf.ui.util.Encoder.bodyJavascriptEscape(description);
}
else
{
title = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EditaJob");
}
%>
$.ManifoldCF.setTitle(
'<%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.ApacheManifoldCFEditJob")%>',
'<%=title%>',
'jobs'
);
// 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 = "";
$.ManifoldCF.submit(document.editjob);
}
}
// 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;
$.ManifoldCF.submit(document.editjob);
}
}
// 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;
$.ManifoldCF.submit(document.editjob);
}
}
// Use this method to repost the form
function postFormNew()
{
if (checkForm())
{
$.ManifoldCF.submit(document.editjob);
}
}
// Deprecated
function postForm(schedCount)
{
if (checkForm())
{
$.ManifoldCF.submit(document.editjob);
}
}
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";
$.ManifoldCF.submit(document.editjob);
}
}
function Cancel()
{
document.editjob.op.value="Cancel";
$.ManifoldCF.submit(document.editjob);
}
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);
}
}
%>
<div class="row">
<div class="col-md-12">
<%
if (connList.length == 0)
{
%>
<div class="callout callout-warning">
<p><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoRepositoryConnectionsDefinedCreateOneFirst")%></p>
</div>
<%
}
else if (outputList.length == 0)
{
%>
<div class="callout callout-warning">
<p><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoOutputConnectionsDefinedCreateOneFirst")%></p>
</div>
<%
}
else
{
%>
<div class="box box-primary">
<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%>'/>
<%
}
%>
<div class="box-header">
<div class="tab-group">
<%
int activeTab = 0;
int lastTabSeq = -1;
for (int tabNum = 0; tabNum < tabsArray.size(); tabNum++)
{
String tab = tabsArray.get(tabNum);
Integer sequenceNumber = sequenceArray.get(tabNum);
int sequenceNumberInt = (sequenceNumber == null)?-1:sequenceNumber.intValue();
String activeClass = "";
if(tab.equals(tabName))
{
activeClass = "active";
}
else
{
activeClass = "";
}
if(sequenceNumber == null)
{
%>
<div class="btn-group" sequenceNumber="<%= (sequenceNumberInt + 1) %>">
<a class="btn btn-md <%= activeClass %>" href="#tab_<%=tabNum%>"
alt='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(tab)+" "+Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.tab")%>'
<%
if(activeClass.length() == 0)
{
%>
onclick='<%="javascript:SelectSequencedTab(\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(tab)+"\",\""+((sequenceNumber==null)?"":sequenceNumber.toString())+"\");return false;"%>'
<%
}
%>
><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(tab)%></a>
</div>
<%
}
else
{
int nextSeqNum = -1;
if(tabNum < tabsArray.size()-1)
{
nextSeqNum = sequenceArray.get(tabNum + 1);
}
else
{
nextSeqNum = -1;
}
if(lastTabSeq != sequenceNumberInt)
{
%>
<div class="btn-group" sequenceNumber="<%= (sequenceNumberInt + 1) %>">
<%
}
%>
<a class="btn btn-md <%= activeClass %>" href="#tab_<%=tabNum%>"
alt='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(tab)+" "+Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.tab")%>'
<%
if(activeClass.length() == 0)
{
%>
onclick='<%="javascript:SelectSequencedTab(\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(tab)+"\",\""+((sequenceNumber==null)?"":sequenceNumber.toString())+"\");return false;"%>'
<%
}
%>
><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(tab)%></a>
<%
if(nextSeqNum != sequenceNumberInt)
{
%>
</div>
<%
}
lastTabSeq = sequenceNumberInt;
}
}
// Missing remainder tab ON PURPOSE -- comes from rowspan=2 tab above
%>
</div>
</div>
<div class="box-body">
<div class="tab-content">
<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)
{
%>
<div class="tab-pane active" id="tab_<%=activeTab%>">
<div class="form-group">
<label><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NameColon")%></label>
<input type="text" size="50" class="form-control" name="description" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(description)%>'/>
</div>
</div>
<%
}
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 table table-bordered">
<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="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)
{
%>
<div class="tab-pane active" id="tab_<%=activeTab%>">
<div class="form-group">
<label><%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.PipelineColon")%>
</label>
<table class="table table-bordered">
<tr>
<th><input name="pipeline_count" type="hidden" value="<%=pipelineConnectionNames.length%>"/></th>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageNumber")%></nobr></th>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageType")%></nobr></th>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StagePrecedent")%></nobr></th>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageDescription")%></nobr></th>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StageConnectionName")%></nobr></th>
</tr>
<tr>
<td></td>
<td>1.</td>
<td><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Repository")%></td>
<td></td>
<td></td>
<td>
<%
if (connectionName.length() == 0)
{
%>
<select name="connectionname" class="form-control">
<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>
<td>
<input name="pipeline_<%=j%>_op" type="hidden" value="Continue"/>
<a name="pipeline_<%=j%>_tag"/>
<div class="btn-group-vertical">
<%
// 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" class="btn btn-sm btn-danger" 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" class="btn btn-sm btn-primary" 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" class="btn btn-sm btn-primary"
value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.InsertOutputBefore")%>"
alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Insertnewoutputhere")%>'
onclick="javascript:InsertPipelineStageOutput(<%=j%>);"/>
<%
}
%>
</div>
</td>
<td><%=(j+2)%>.</td>
<td><%=pipelineType%>
<input name="pipeline_<%=j%>_isoutput" type="hidden" value='<%=pipelineIsOutputs[j]?"true":"false"%>'/>
</td>
<td><%=(pipelinePrerequisites[j] + 2)%>.
<input name="pipeline_<%=j%>_precedent" type="hidden" value="<%=pipelinePrerequisites[j]%>"/>
</td>
<td>
<input name="pipeline_<%=j%>_description" type="text" size="30" class="from-control" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pipelineDescription)%>"/>
</td>
<td>
<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><a name="transformation_tag"/></td>
<td></td>
<td><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Transformation")%></td>
<td></td>
<td><input name="transformation_description" type="text" class="form-control" size="30" value=""/></td>
<td>
<select name="transformation_connectionname" class="form-control">
<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>
<a name="output_tag"/>
<input type="button" class="btn btn-primary btn-sm"
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></td>
<td><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Output")%></td>
<td>
<select name="output_precedent" class="form-control">
<%
for (Integer pre : precedents)
{
%>
<option value="<%=pre%>"><%=(pre.intValue()+2)%></option>
<%
}
%>
</select>
</td>
<td><input name="output_description" type="text" class="form-control" size="30" value=""/></td>
<td>
<select name="output_connectionname" class="form-control">
<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>
</div>
<%
alreadyPresent = new HashSet<String>();
for (int j = 0; j < notificationConnectionNames.length; j++)
{
alreadyPresent.add(notificationConnectionNames[j]);
}
if (notificationList.length > 0)
{
%>
<div class="form-group">
<label><%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.NotificationsColon")%></label>
<table class="table table-bordered">
<tr>
<th><input name="notification_count" type="hidden" value="<%=notificationConnectionNames.length%>"/></th>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.StageNumber")%></nobr></th>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.NotificationDescription")%></nobr></th>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.NotificationConnectionName")%></nobr></th>
</tr>
<%
for (int j = 0; j < notificationConnectionNames.length; j++)
{
String notificationConnectionName = notificationConnectionNames[j];
String notificationDescription = notificationDescriptions[j];
if (notificationDescription == null)
notificationDescription = "";
%>
<tr>
<td>
<input name="notification_<%=j%>_op" type="hidden" value="Continue"/>
<a name="notification_<%=j%>_tag"/>
<input type="button" class="btn btn-danger btn-sm"
value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Delete")%>"
alt='<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Deletenotification")%>'
onclick="javascript:DeleteNotification(<%=j%>);"/>
</td>
<td><%=(j+pipelineConnectionNames.length+2)%>.</td>
<td>
<input name="notification_<%=j%>_description" type="text" size="30"
class="form-control"
value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(notificationDescription)%>"/>
</td>
<td>
<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>
<a name="notification_tag"/>
<input type="button" class="btn btn-primary btn-sm"
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></td>
<td><input name="notification_description" type="text" size="30" value="" class="form-control"/></td>
<td>
<select name="notification_connectionname" class="form-control">
<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>
</div>
<%
}
%>
<div class="form-group">
<label><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.PriorityColon")%></label>
<select name="priority" class="form-control">
<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>
</div>
<div class="form-group">
<label><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.StartMethodColon")%></label>
<select name="startmethod" class="form-control">
<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>
</div>
</div>
<%
}
else
{
%>
<input type="hidden" name="connectionname" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(connectionName)%>'/>
<input type="hidden" name="pipeline_count" value="<%=pipelineConnectionNames.length%>"/>
<input type="hidden" name="notification_count" value="<%=notificationConnectionNames.length%>"/>
<%
for (int j = 0; j < pipelineConnectionNames.length; j++)
{
String pipelineConnectionName = pipelineConnectionNames[j];
String pipelineDescription = pipelineDescriptions[j];
if (pipelineDescription == null)
pipelineDescription = "";
%>
<input name="pipeline_<%=j%>_isoutput" type="hidden" value='<%=pipelineIsOutputs[j]?"true":"false"%>'/>
<input name="pipeline_<%=j%>_precedent" type="hidden" value="<%=pipelinePrerequisites[j]%>"/>
<input type="hidden" name="pipeline_<%=j%>_connectionname" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pipelineConnectionName)%>"/>
<input type="hidden" name="pipeline_<%=j%>_description" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pipelineDescription)%>"/>
<%
}
for (int j = 0; j < notificationConnectionNames.length; j++)
{
String notificationConnectionName = notificationConnectionNames[j];
String notificationDescription = notificationDescriptions[j];
if (notificationDescription == null)
notificationDescription = "";
%>
<input type="hidden" name="notification_<%=j%>_connectionname" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(notificationConnectionName)%>"/>
<input type="hidden" name="notification_<%=j%>_description" value="<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(notificationDescription)%>"/>
<%
}
%>
<input type="hidden" name="priority" value='<%=priority%>'/>
<input type="hidden" name="startmethod" value='<%=startMethod%>'/>
<%
}
// Scheduling tab
if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Scheduling")) && tabSequenceInt == -1)
{
%>
<div class="tab-pane active" id="tab_<%=activeTab%>">
<%
if (model != -1 && model != IRepositoryConnector.MODEL_ADD_CHANGE_DELETE && model != IRepositoryConnector.MODEL_CHAINED_ADD_CHANGE_DELETE)
{
%>
<table class="table table-bordered">
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ScheduleTypeColon")%></nobr></th>
<td colspan="3">
<select name="scheduletype" class="form-control">
<option value='<%=IJobDescription.TYPE_CONTINUOUS%>' <%=(type==IJobDescription.TYPE_CONTINUOUS)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.RescanDocumentsDynamically")%></option>
<option value='<%=IJobDescription.TYPE_SPECIFIED%>' <%=(type==IJobDescription.TYPE_SPECIFIED)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ScanEveryDocumentOnce")%></option>
</select>
</td>
</tr>
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.RecrawlIntervalIfContinuousColon")%></nobr></th>
<td colspan="3">
<nobr><input type="text" size="5" name="recrawlinterval" class="form-control" value='<%=((recrawlInterval==null)?"":recrawlInterval.toString())%>'/> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutesBlankInfinity")%></nobr>
</td>
</tr>
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaxRecrawlIntervalIfContinuousColon")%></nobr></th>
<td colspan="3">
<nobr><input type="text" size="5" name="maxrecrawlinterval" class="form-control" value='<%=((maxRecrawlInterval==null)?"":maxRecrawlInterval.toString())%>'/> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutesBlankInfinity")%></nobr>
</td>
</tr>
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ExpirationIntervalIfContinuousColon")%></nobr></th>
<td colspan="3">
<nobr><input type="text" size="5" name="expirationinterval" class="form-control" value='<%=((expirationInterval==null)?"":expirationInterval.toString())%>'/> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutesBlankInfinity")%></nobr>
</td>
</tr>
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ReseedIntervalIfContinuousColon")%></nobr></th>
<td colspan="3">
<nobr><input type="text" size="5" name="reseedinterval" class="form-control" value='<%=((reseedInterval==null)?"":reseedInterval.toString())%>'/> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutesBlankInfinity")%></nobr>
</td>
</tr>
<%
}
else
{
%>
<input type="hidden" name="scheduletype" value='<%=type%>'/>
<input type="hidden" name="recrawlinterval" value='<%=((recrawlInterval==null)?"":recrawlInterval.toString())%>'/>
<input type="hidden" name="maxrecrawlinterval" value='<%=((maxRecrawlInterval==null)?"":maxRecrawlInterval.toString())%>'/>
<input type="hidden" name="reseedinterval" value='<%=((reseedInterval==null)?"":reseedInterval.toString())%>'/>
<input type="hidden" name="expirationinterval" value='<%=((expirationInterval==null)?"":expirationInterval.toString())%>'/>
<%
}
String[] availableIDs = java.util.TimeZone.getAvailableIDs();
String localTimezone = java.util.TimeZone.getDefault().getID();
if (scheduleRecords.size() == 0)
{
%>
<div class="callout callout-info">
<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.NoScheduleSpecified")%>
</div>
<%
}
else
{
int l = 0;
while (l < scheduleRecords.size())
{
ScheduleRecord sr = (ScheduleRecord)scheduleRecords.get(l);
Long srDuration = sr.getDuration();
EnumeratedValues srDayOfWeek = sr.getDayOfWeek();
EnumeratedValues srMonthOfYear = sr.getMonthOfYear();
EnumeratedValues srDayOfMonth = sr.getDayOfMonth();
EnumeratedValues srYear = sr.getYear();
EnumeratedValues srHourOfDay = sr.getHourOfDay();
EnumeratedValues srMinutesOfHour = sr.getMinutesOfHour();
boolean srRequestMinimum = sr.getRequestMinimum();
String srTimezone = sr.getTimezone();
if (srTimezone == null)
{
srTimezone = java.util.TimeZone.getDefault().getID();
}
String postFix = Integer.toString(l);
int k;
%>
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ScheduledTimeColon")%></nobr></th>
<td colspan="3" class="value">
<div class="input-group">
<select class="selectpicker schedulepulldown" data-size="10" data-live-search="true" data-live-search-normalize="true" data-live-search-style="contains" name='<%="timezone"+postFix%>'>
<%
k = 0;
while (k < availableIDs.length)
{
String id = availableIDs[k];
if (id.equals(srTimezone))
{
%>
<option value='<%=id%>' selected=\"selected\"><%=id%></option>
<%
}
else
{
%>
<option value='<%=id%>'><%=id%></option>
<%
}
k++;
}
%>
</select>
<span class="label">:</span>
<select class="selectpicker" data-size="10" data-selected-text-format="count > 2" multiple="true" name='<%="dayofweek"+postFix%>'>
<option value="none" <%=(srDayOfWeek==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.AnyDayOfWeek")%></option>
<option value="0" <%=(srDayOfWeek!=null&&srDayOfWeek.checkValue(0))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Sundays")%></option>
<option value="1" <%=(srDayOfWeek!=null&&srDayOfWeek.checkValue(1))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Mondays")%></option>
<option value="2" <%=(srDayOfWeek!=null&&srDayOfWeek.checkValue(2))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Tuesdays")%></option>
<option value="3" <%=(srDayOfWeek!=null&&srDayOfWeek.checkValue(3))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Wednesdays")%></option>
<option value="4" <%=(srDayOfWeek!=null&&srDayOfWeek.checkValue(4))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Thursdays")%></option>
<option value="5" <%=(srDayOfWeek!=null&&srDayOfWeek.checkValue(5))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Fridays")%></option>
<option value="6" <%=(srDayOfWeek!=null&&srDayOfWeek.checkValue(6))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Saturdays")%></option>
</select>
<span class="label"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.at")%></span>
<select class="selectpicker" data-size="10" data-selected-text-format="count > 2" multiple="true" name='<%="hourofday"+postFix%>'>
<option value="none" <%=(srHourOfDay==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MidnightAnyHourOfDay")%></option>
<%
k = 0;
while (k < 24)
{
int q = k;
String ampm;
if (k < 12)
ampm = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.am");
else
{
ampm = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.pm");
q -= 12;
}
String hour;
if (q == 0)
q = 12;
%>
<option value='<%=k%>' <%=(srHourOfDay!=null&&srHourOfDay.checkValue(k))?"selected=\"selected\"":""%>><%=Integer.toString(q)+" "+ampm%></option>
<%
k++;
}
%>
</select>
<span class="label"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.plus")%></span>
<select class="selectpicker" data-size="10" data-selected-text-format="count > 2" multiple="true" name='<%="minutesofhour"+postFix%>'>
<option value="none" <%=(srMinutesOfHour==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Nothing")%></option>
<%
k = 0;
while (k < 60)
{
%>
<option value='<%=k%>' <%=(srMinutesOfHour!=null&&srMinutesOfHour.checkValue(k))?"selected=\"selected\"":""%>><%=Integer.toString(k)%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutes")%></option>
<%
k++;
}
%>
</select>
<span class="label"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.in")%></span>
<select class="selectpicker" multiple="true" data-size="10" data-selected-text-format="count > 2" name='<%="monthofyear"+postFix%>'>
<option value="none" <%=(srMonthOfYear==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EveryMonthOfYear")%></option>
<option value="0" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(0))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.January")%></option>
<option value="1" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(1))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.February")%></option>
<option value="2" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(2))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.March")%></option>
<option value="3" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(3))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.April")%></option>
<option value="4" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(4))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.May")%></option>
<option value="5" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(5))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.June")%></option>
<option value="6" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(6))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.July")%></option>
<option value="7" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(7))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.August")%></option>
<option value="8" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(8))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.September")%></option>
<option value="9" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(9))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.October")%></option>
<option value="10" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(10))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.November")%></option>
<option value="11" <%=(srMonthOfYear!=null&&srMonthOfYear.checkValue(11))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.December")%></option>
</select>
<span class="label"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.on")%></span>
<select class="selectpicker schedulepulldown" data-size="10" data-selected-text-format="count > 2" multiple="true" name='<%="dayofmonth"+postFix%>'>
<option value="none" <%=(srDayOfMonth==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.AnyDayOfMonth")%></option>
<%
k = 0;
while (k < 31)
{
int value = (k+1) % 10;
String suffix;
if (value == 1 && k != 10)
suffix = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.st");
else if (value == 2 && k != 11)
suffix = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.nd");
else if (value == 3 && k != 12)
suffix = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.rd");
else
suffix = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.th");
%>
<option value='<%=Integer.toString(k)%>' <%=(srDayOfMonth!=null&&srDayOfMonth.checkValue(k))?"selected=\"selected\"":""%>><%=Integer.toString(k+1)+suffix+" "+Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.dayofmonth")%></option>
<%
k++;
}
%>
</select>
</div>
<input type="hidden" name='<%="year"+postFix%>' value="none"/>
</td>
</tr>
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaximumRunTimeColon")%></nobr></th>
<td class="value">
<input type="text" size="5" name='<%="duration"+postFix%>' class="form-control" value='<%=((srDuration==null)?"":new Long(srDuration.longValue()/60000L).toString())%>'/> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutes")%>
</td>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.JobInvocationColon")%></nobr></th>
<td class="value">
<select class="form-control schedulepulldown" name='<%="invocation"+postFix%>'>
<option value="complete" <%=(srRequestMinimum==false)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Complete")%></option>
<option value="minimal" <%=srRequestMinimum?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Minimal")%></option>
</select>
</td>
</tr>
<tr>
<td class="message" colspan="4">
<a name='<%="remove_schedule_"+Integer.toString(l)%>'>
<input type="button" class="btn btn-primary btn-sm"
value="<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.RemoveSchedule")%>"
onClick='<%="Javascript:RemoveSchedule("+Integer.toString(l)+")"%>'
alt='<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.RemoveScheduleRecord")+Integer.toString(l)%>'/></a>
<input type="hidden" name='<%="recordop"+postFix%>' value=""/>
</td>
</tr>
<%
l++;
}
}
%>
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.ScheduledTimeColon")%></nobr></th>
<td colspan="3" class="value">
<div class="input-group">
<select class="selectpicker schedulepulldown" data-size="10" data-live-search="true" data-live-search-normalize="true" data-live-search-style="contains" name="timezone">
<%
int k = 0;
while (k < availableIDs.length)
{
String id = availableIDs[k];
if (id.equals(localTimezone))
{
%>
<option value='<%=id%>' selected=\"selected\"><%=id%></option>
<%
}
else
{
%>
<option value='<%=id%>'><%=id%></option>
<%
}
k++;
}
%>
</select>
<span class="label">:</span>
<select class="selectpicker" data-size="10" data-selected-text-format="count > 2" multiple="true" name="dayofweek">
<option value="none" <%=(dayOfWeek==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.AnyDayOfWeek")%></option>
<option value="0" <%=(dayOfWeek!=null&&dayOfWeek.checkValue(0))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Sundays")%></option>
<option value="1" <%=(dayOfWeek!=null&&dayOfWeek.checkValue(1))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Mondays")%></option>
<option value="2" <%=(dayOfWeek!=null&&dayOfWeek.checkValue(2))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Tuesdays")%></option>
<option value="3" <%=(dayOfWeek!=null&&dayOfWeek.checkValue(3))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Wednesdays")%></option>
<option value="4" <%=(dayOfWeek!=null&&dayOfWeek.checkValue(4))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Thursdays")%></option>
<option value="5" <%=(dayOfWeek!=null&&dayOfWeek.checkValue(5))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Fridays")%></option>
<option value="6" <%=(dayOfWeek!=null&&dayOfWeek.checkValue(6))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Saturdays")%></option>
</select>
<span class="label"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.at")%></span>
<select class="selectpicker" data-size="10" data-selected-text-format="count > 2" multiple="true" name="hourofday">
<option value="none" <%=(hourOfDay==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MidnightAnyHourOfDay")%></option>
<%
k = 0;
while (k < 24)
{
int q = k;
String ampm;
if (k < 12)
ampm = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.am");
else
{
ampm = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.pm");
q -= 12;
}
String hour;
if (q == 0)
q = 12;
%>
<option value='<%=k%>' <%=(hourOfDay!=null&&hourOfDay.checkValue(k))?"selected=\"selected\"":""%>><%=Integer.toString(q)+" "+ampm%></option>
<%
k++;
}
%>
</select>
<span class="label"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.plus")%></span>
<select class="selectpicker" data-size="10" data-selected-text-format="count > 2" multiple="true" name="minutesofhour">
<option value="none" <%=(minutesOfHour==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Nothing")%></option>
<%
k = 0;
while (k < 60)
{
%>
<option value='<%=k%>' <%=(minutesOfHour!=null&&minutesOfHour.checkValue(k))?"selected=\"selected\"":""%>><%=Integer.toString(k)%> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutes")%></option>
<%
k++;
}
%>
</select>
<span class="label"><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.in")%></span>
<select class="selectpicker" data-size="10" data-selected-text-format="count > 2" multiple="true" name="monthofyear">
<option value="none" <%=(monthOfYear==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.EveryMonthOfYear")%></option>
<option value="0" <%=(monthOfYear!=null&&monthOfYear.checkValue(0))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.January")%></option>
<option value="1" <%=(monthOfYear!=null&&monthOfYear.checkValue(1))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.February")%></option>
<option value="2" <%=(monthOfYear!=null&&monthOfYear.checkValue(2))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.March")%></option>
<option value="3" <%=(monthOfYear!=null&&monthOfYear.checkValue(3))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.April")%></option>
<option value="4" <%=(monthOfYear!=null&&monthOfYear.checkValue(4))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.May")%></option>
<option value="5" <%=(monthOfYear!=null&&monthOfYear.checkValue(5))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.June")%></option>
<option value="6" <%=(monthOfYear!=null&&monthOfYear.checkValue(6))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.July")%></option>
<option value="7" <%=(monthOfYear!=null&&monthOfYear.checkValue(7))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.August")%></option>
<option value="8" <%=(monthOfYear!=null&&monthOfYear.checkValue(8))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.September")%></option>
<option value="9" <%=(monthOfYear!=null&&monthOfYear.checkValue(9))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.October")%></option>
<option value="10" <%=(monthOfYear!=null&&monthOfYear.checkValue(10))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.November")%></option>
<option value="11" <%=(monthOfYear!=null&&monthOfYear.checkValue(11))?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.December")%></option>
</select>
<span class="label"><%=Messages.getBodyString(pageContext.getRequest().getLocale(), "editjob.on")%></span>
<select class="selectpicker" data-size="10" data-selected-text-format="count > 2" multiple="true" name="dayofmonth">
<option value="none" <%=(dayOfMonth==null)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.AnyDayOfMonth")%></option>
<%
k = 0;
while (k < 31)
{
int value = (k+1) % 10;
String suffix;
if (value == 1 && k != 10)
suffix = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.st");
else if (value == 2 && k != 11)
suffix = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.nd");
else if (value == 3 && k != 12)
suffix = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.rd");
else
suffix = Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.th");
%>
<option value='<%=Integer.toString(k)%>' <%=(dayOfMonth!=null&&dayOfMonth.checkValue(k))?"selected=\"selected\"":""%>><%=Integer.toString(k+1)+suffix+" "+Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.dayofmonth")%></option>
<%
k++;
}
%>
</select>
</div>
<input type="hidden" name="year" value="none"/>
</td>
</tr>
<tr>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.MaximumRunTimeColon")%></nobr></th>
<td class="value">
<input type="text" size="5" name="duration" class="form-control" value='<%=((duration==null)?"":duration.toString())%>'/> <%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.minutes")%>
</td>
<th><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.JobInvocationColon")%></nobr></th>
<td class="value">
<select class="selectpicker" data-size="10" name="invocation" class="form-control">
<option value="complete" <%=(requestMinimum==false)?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Complete")%></option>
<option value="minimal" <%=requestMinimum ?"selected=\"selected\"":""%>><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editjob.Minimal")%></option>
</select>
</td>
</tr>
<tr>
<td class="message" colspan="4">
<input type="hidden" name="recordop" value=""/>
<a name="add_schedule">
<input type="button" class="btn btn-primary btn-sm"
value="<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.AddScheduledTime")%>"
onClick="javascript:AddScheduledTime()"
alt="<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.AddNewScheduleRecord")%>"/></a>
</td>
</tr>
</table>
<%
}
else
{
%>
<input type="hidden" name="scheduletype" value='<%=type%>'/>
<input type="hidden" name="recrawlinterval" value='<%=((recrawlInterval==null)?"":recrawlInterval.toString())%>'/>
<input type="hidden" name="maxrecrawlinterval" value='<%=((maxRecrawlInterval==null)?"":maxRecrawlInterval.toString())%>'/>
<input type="hidden" name="reseedinterval" value='<%=((reseedInterval==null)?"":reseedInterval.toString())%>'/>
<input type="hidden" name="expirationinterval" value='<%=((expirationInterval==null)?"":expirationInterval.toString())%>'/>
<%
int l = 0;
while (l < scheduleRecords.size())
{
ScheduleRecord sr = (ScheduleRecord)scheduleRecords.get(l);
Long srDuration = sr.getDuration();
EnumeratedValues srDayOfWeek = sr.getDayOfWeek();
EnumeratedValues srMonthOfYear = sr.getMonthOfYear();
EnumeratedValues srDayOfMonth = sr.getDayOfMonth();
EnumeratedValues srYear = sr.getYear();
EnumeratedValues srHourOfDay = sr.getHourOfDay();
EnumeratedValues srMinutesOfHour = sr.getMinutesOfHour();
boolean srRequestMinimum = sr.getRequestMinimum();
String srTimezone = sr.getTimezone();
String postFix = Integer.toString(l);
%>
<input type="hidden" name='<%="timezone"+postFix%>' value='<%=((srTimezone==null)?"":srTimezone)%>'/>
<%
if (srDayOfWeek == null)
{
%>
<input type="hidden" name='<%="dayofweek"+postFix%>' value="none"/>
<%
}
else
{
Iterator iter = srDayOfWeek.getValues();
while (iter.hasNext())
{
Integer value = (Integer)iter.next();
%>
<input type="hidden" name='<%="dayofweek"+postFix%>' value='<%=value%>'/>
<%
}
}
if (srHourOfDay == null)
{
%>
<input type="hidden" name='<%="hourofday"+postFix%>' value="none"/>
<%
}
else
{
Iterator iter = srHourOfDay.getValues();
while (iter.hasNext())
{
Integer value = (Integer)iter.next();
%>
<input type="hidden" name='<%="hourofday"+postFix%>' value='<%=value%>'/>
<%
}
}
if (srMinutesOfHour == null)
{
%>
<input type="hidden" name='<%="minutesofhour"+postFix%>' value="none"/>
<%
}
else
{
Iterator iter = srMinutesOfHour.getValues();
while (iter.hasNext())
{
Integer value = (Integer)iter.next();
%>
<input type="hidden" name='<%="minutesofhour"+postFix%>' value='<%=value%>'/>
<%
}
}
if (srDayOfMonth == null)
{
%>
<input type="hidden" name='<%="dayofmonth"+postFix%>' value="none"/>
<%
}
else
{
Iterator iter = srDayOfMonth.getValues();
while (iter.hasNext())
{
Integer value = (Integer)iter.next();
%>
<input type="hidden" name='<%="dayofmonth"+postFix%>' value='<%=value%>'/>
<%
}
}
if (srMonthOfYear == null)
{
%>
<input type="hidden" name='<%="monthofyear"+postFix%>' value="none"/>
<%
}
else
{
Iterator iter = srMonthOfYear.getValues();
while (iter.hasNext())
{
Integer value = (Integer)iter.next();
%>
<input type="hidden" name='<%="monthofyear"+postFix%>' value='<%=value%>'/>
<%
}
}
%>
<input type="hidden" name='<%="duration"+postFix%>' value='<%=((srDuration==null)?"":new Long(srDuration.longValue()/60000L).toString())%>'/>
<input type="hidden" name='<%="invocation"+postFix%>' value='<%=srRequestMinimum?"minimal":"complete"%>'/>
<input type="hidden" name='<%="year"+postFix%>' value="none"/>
<%
l++;
}
}
if (connection != null)
{
IRepositoryConnector repositoryConnector = repositoryConnectorPool.grab(connection);
if (repositoryConnector != null)
{
try
{
repositoryConnector.outputSpecificationBody(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),documentSpecification,0,tabSequenceInt,tabName);
}
finally
{
repositoryConnectorPool.release(connection,repositoryConnector);
}
%>
<input type="hidden" name="connectionpresent" value="true"/>
<%
}
}
boolean outputPresent = false;
for (int j = 0; j < pipelineConnectionNames.length; j++)
{
if (pipelineIsOutputs[j])
{
outputPresent = true;
IOutputConnection outputConnection = outputMgr.load(pipelineConnectionNames[j]);
if (outputConnection != null)
{
IOutputConnector outputConnector = outputConnectorPool.grab(outputConnection);
if (outputConnector != null)
{
try
{
outputConnector.outputSpecificationBody(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),pipelineSpecifications[j],1+j,tabSequenceInt,tabName);
}
finally
{
outputConnectorPool.release(outputConnection,outputConnector);
}
}
}
}
else
{
ITransformationConnection transformationConnection = transformationMgr.load(pipelineConnectionNames[j]);
if (transformationConnection != null)
{
ITransformationConnector transformationConnector = transformationConnectorPool.grab(transformationConnection);
if (transformationConnector != null)
{
try
{
transformationConnector.outputSpecificationBody(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),pipelineSpecifications[j],1+j,tabSequenceInt,tabName);
}
finally
{
transformationConnectorPool.release(transformationConnection,transformationConnector);
}
}
}
}
}
for (int j = 0; j < notificationConnectionNames.length; j++)
{
INotificationConnection notificationConnection = notificationMgr.load(notificationConnectionNames[j]);
if (notificationConnection != null)
{
INotificationConnector notificationConnector = notificationConnectorPool.grab(notificationConnection);
if (notificationConnector != null)
{
try
{
notificationConnector.outputSpecificationBody(new org.apache.manifoldcf.ui.jsp.JspWrapper(out,adminprofile),pageContext.getRequest().getLocale(),notificationSpecifications[j],1+pipelineConnectionNames.length+j,tabSequenceInt,tabName);
}
finally
{
notificationConnectorPool.release(notificationConnection,notificationConnector);
}
}
}
}
%>
</div>
</div>
<div class="box-footer clearfix">
<div class="btn-group">
<%
if (connectionName.length() > 0 && outputPresent)
{
%>
<a href="#" class="btn btn-primary" onClick="javascript:Save()"
title="<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.SaveThisJob")%>" data-toggle="tooltip"><i class="fa fa-save fa-fw"></i><%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.Save")%></a>
<%
}
else
{
if (tabName.equals(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Connection")) && tabSequenceInt == -1)
{
%>
<a href="#" class="btn btn-primary" onClick="javascript:Continue()"
title="<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.ContinueToNextScreen")%>" data-toggle="tooltip"><i class="fa fa-play fa-fw"></i><%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.Continue")%></a>
<%
}
}
%>
<a href="#" class="btn btn-primary" onClick="javascript:Cancel()"
title="<%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.CancelJobEditing")%>" data-toggle="tooltip"><i class="fa fa-times-circle-o fa-fw"></i><%=Messages.getAttributeString(pageContext.getRequest().getLocale(),"editjob.cancel")%></a>
</div>
</div>
</form>
<%
}
%>
</div>
</div>
</div>
<%
}
catch (ManifoldCFException e)
{
e.printStackTrace();
variableContext.setParameter("text",e.getMessage());
variableContext.setParameter("target","listjobs.jsp");
%>
<jsp:forward page="error.jsp"/>
<%
}
%>