/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/search/trunk/search-impl/impl/src/java/org/sakaiproject/search/journal/impl/IndexManagementTimerTask.java $
* $Id: IndexManagementTimerTask.java 105078 2012-02-24 23:00:38Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 The Sakai Foundation
*
* Licensed under the Educational Community 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.opensource.org/licenses/ECL-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.
*
**********************************************************************************/
package org.sakaiproject.search.journal.impl;
import java.util.TimerTask;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.search.journal.api.ManagementOperation;
import org.sakaiproject.thread_local.api.ThreadLocalManager;
/**
* A timer Task for a management operation in the search code
*
* @author ieb
*/
public class IndexManagementTimerTask extends TimerTask
{
private static final Log log = LogFactory.getLog(IndexManagementTimerTask.class);
private long delay = 60000L;
private long period = 60000L;
private boolean fixedRate = false;
private ManagementOperation managementOperation;
private boolean closed = false;
private ThreadLocalManager threadLocalManager;
/**
*
*/
public IndexManagementTimerTask()
{
}
public void init()
{
}
public void destroy()
{
closed = true;
}
/**
* @return
*/
public long getDelay()
{
return delay;
}
/**
* @return
*/
public long getPeriod()
{
return period;
}
/**
* @param delay
* the delay to set
*/
public void setDelay(long delay)
{
this.delay = delay;
}
/**
* @param period
* the period to set
*/
public void setPeriod(long period)
{
this.period = period;
}
/**
* @return
*/
public boolean isFixedRate()
{
return fixedRate;
}
/**
* @param fixedRate
* the fixedRate to set
*/
public void setFixedRate(boolean fixedRate)
{
this.fixedRate = fixedRate;
}
/*
* (non-Javadoc)
*
* @see java.util.TimerTask#run()
*/
@Override
public void run()
{
if (closed)
{
return;
}
try
{
ConcurrentIndexManager.setRunning(managementOperation);
threadLocalManager.clear();
managementOperation.runOnce();
threadLocalManager.clear();
}
catch (Throwable t)
{
log.error("Management Operation failed ", t);
} finally {
ConcurrentIndexManager.setRunning(null);
}
}
/**
* @return the managementOperation
*/
public ManagementOperation getManagementOperation()
{
return managementOperation;
}
/**
* @param managementOperation
* the managementOperation to set
*/
public void setManagementOperation(ManagementOperation managementOperation)
{
this.managementOperation = managementOperation;
}
/**
* @return the closed
*/
public boolean isClosed()
{
return closed;
}
/**
* @param closed
* the closed to set
*/
public void setClosed(boolean closed)
{
this.closed = closed;
}
public ThreadLocalManager getThreadLocalManager() {
return threadLocalManager;
}
public void setThreadLocalManager(ThreadLocalManager threadLocalManager) {
this.threadLocalManager = threadLocalManager;
}
}