package org.openedit.entermedia.modules;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openedit.Data;
import org.openedit.events.PathEvent;
import org.openedit.events.PathEventManager;
import com.openedit.WebPageRequest;
import com.openedit.hittracker.HitTracker;
import com.openedit.modules.BaseModule;
import com.openedit.page.Page;
import com.openedit.page.PageProperty;
import com.openedit.page.PageSettings;
public class PathEventModule extends BaseModule
{
private static final Log log = LogFactory.getLog(PathEventModule.class);
public boolean runEvent(WebPageRequest inReq)
{
String runpath = inReq.findValue("runpath");
Page page = getPageManager().getPage(runpath,true);
//WebPageRequest child = inReq.copy(page);
//TODO: First check with the PathEventManager and run that one instead
PathEventManager manager = getPathEventManager(inReq);
return manager.runPathEvent(runpath, inReq);
}
public void runSharedEvent(WebPageRequest inReq)
{
String runpath = inReq.findValue("runpath");
Page page = getPageManager().getPage(runpath,true);
//WebPageRequest child = inReq.copy(page);
//TODO: First check with the PathEventManager and run that one instead
PathEventManager manager = getPathEventManager(inReq);
manager.runSharedPathEvent(runpath);
PathEvent event = manager.getPathEvent(runpath);
inReq.putPageValue("ranevent", event);
inReq.putPageValue("pathevent", event);
}
public PathEventManager getPathEventManager(WebPageRequest inReq)
{
String catalogid = inReq.getContentProperty("catalogid");
if(catalogid == null)
{
catalogid = inReq.getContentProperty("applicationid");
}
PathEventManager manager = (PathEventManager)getModuleManager().getBean(catalogid, "pathEventManager");
inReq.putPageValue("patheventmanager", manager);
return manager;
}
/**
* This is run from path-events. Should include schedled and unscheduled events
* @param inReq
* @return
*/
public void enableLog(WebPageRequest inReq)
{
PathEventManager manager = getPathEventManager(inReq);
if( manager != null)
{
String enabled = inReq.findValue("enableeventlogs");
manager.setLogEvents(Boolean.parseBoolean(enabled));
}
}
public void getPathEvents(WebPageRequest inReq)
{
PathEventManager manager = getPathEventManager(inReq);
List events = manager.getPathEvents();
Collections.sort(events);
inReq.putPageValue("pathevents", events);
}
public void loadPathEvent(WebPageRequest inReq)
{
PathEventManager manager = getPathEventManager(inReq);
String eventPath = inReq.getRequestParameter("eventpath");
inReq.putPageValue("pathevent", manager.getPathEvent(eventPath));
}
public void savePathEvent(WebPageRequest inReq)
{
PathEventManager manager = getPathEventManager(inReq);
String eventPath = inReq.getRequestParameter("eventpath");
PathEvent event = manager.getPathEvent(eventPath);
String period = inReq.getRequestParameter("period");
event.setPeriod(period);
event.setDelay(inReq.getRequestParameter("delay"));
String enabled = inReq.getRequestParameter("enabled");
event.setEnabled("true".equals(enabled));
// Page eventpage = event.getPage();
// eventpage.setProperty("period", event.getFormattedPeriod());
// eventpage.setProperty("delay", event.getFormattedDelay());
// eventpage.setProperty("enabled", String.valueOf(event.isEnabled()));
// getPageManager().saveSettings(eventpage);
PageSettings settings = getPageManager().getPageSettingsManager().getPageSettings(eventPath);
PageProperty prop = new PageProperty("period");
prop.setValue(event.getFormattedPeriod());
settings.putProperty(prop);
prop = new PageProperty("delay");
prop.setValue(event.getFormattedDelay());
settings.putProperty(prop);
prop = new PageProperty("enabled");
prop.setValue(String.valueOf(event.isEnabled()));
settings.putProperty(prop);
prop = new PageProperty("eventname");
prop.setValue(inReq.getRequestParameter("eventname"));
settings.putProperty(prop);
getPageManager().getPageSettingsManager().saveSetting(settings);
manager = getPathEventManager(inReq);
manager.reload(eventPath);
}
public void restartEvents(WebPageRequest inReq)
{
PathEventManager manager = getPathEventManager(inReq);
manager.shutdown();
}
public void init(WebPageRequest inReq)
{
HitTracker catalogs = getSearcherManager().getList("system","catalog");
for (Iterator iterator = catalogs.iterator(); iterator.hasNext();)
{
Data data = (Data) iterator.next();
String catalogid = data.getId();
PathEventManager manager = (PathEventManager)getModuleManager().getBean(catalogid, "pathEventManager");
manager.getPathEvents();
}
}
}