%@ 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
{
// Get the job manager handle
IJobManager manager = JobManagerFactory.make(threadContext);
IRepositoryConnectionManager connMgr = RepositoryConnectionManagerFactory.make(threadContext);
IRepositoryConnection[] connList = connMgr.getAllConnections();
IOutputConnectionManager outputMgr = OutputConnectionManagerFactory.make(threadContext);
IOutputConnection[] outputList = outputMgr.getAllConnections();
// Figure out tab name
String tabName = variableContext.getParameter("tabname");
if (tabName == null || tabName.length() == 0)
tabName = Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name");
// 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 outputName = "";
String description = "";
int type = IJobDescription.TYPE_SPECIFIED;
OutputSpecification outputSpecification = new OutputSpecification();
DocumentSpecification documentSpecification = new DocumentSpecification();
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;
// Priority
int priority = 5;
// Minimum recrawl interval (Default: 1 day)
Long recrawlInterval = new Long(60L * 24L);
// 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();
outputName = job.getOutputConnectionName();
connectionName = job.getConnectionName();
type = job.getType();
startMethod = job.getStartMethod();
hopcountMode = job.getHopcountMode();
outputSpecification = job.getOutputSpecification();
documentSpecification = job.getSpecification();
// Fill in schedule records from job
int j = 0;
while (j < job.getScheduleRecordCount())
{
scheduleRecords.add(job.getScheduleRecord(j++));
}
priority = job.getPriority();
Long value = job.getInterval();
recrawlInterval = (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;
ArrayList tabsArray = new ArrayList();
IRepositoryConnection connection = null;
IOutputConnection outputConnection = null;
if (connectionName.length() > 0)
{
connection = connMgr.load(connectionName);
model = RepositoryConnectorFactory.getConnectorModel(threadContext,connection.getClassName());
relationshipTypes = RepositoryConnectorFactory.getRelationshipTypes(threadContext,connection.getClassName());
}
if (outputName.length() > 0)
{
outputConnection = outputMgr.load(outputName);
}
// Set up the predefined tabs
tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Name"));
tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Connection"));
if (connectionName.length() > 0)
{
tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.Scheduling"));
if (relationshipTypes != null && relationshipTypes.length > 0)
tabsArray.add(Messages.getString(pageContext.getRequest().getLocale(),"editjob.HopFilters"));
}
%>