package org.openedit.entermedia.push;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import org.openedit.entermedia.MediaArchive;
import com.openedit.ModuleManager;
public class OLDPublishChecker
{
protected Timer fieldTimer;
protected PushManager fieldPushManager;
protected ModuleManager fieldModuleManager;
public ModuleManager getModuleManager()
{
return fieldModuleManager;
}
public void setModuleManager(ModuleManager inModuleManager)
{
fieldModuleManager = inModuleManager;
}
protected List<String> fieldCatalogIds;
public PushManager getPushManager()
{
return fieldPushManager;
}
public void setPushManager(PushManager inPushManager)
{
fieldPushManager = inPushManager;
}
public List<String> getCatalogIds()
{
if (fieldCatalogIds == null)
{
fieldCatalogIds = new ArrayList<String>();
}
return fieldCatalogIds;
}
public void setCatalogIds(List inCatalogIds)
{
fieldCatalogIds = inCatalogIds;
}
protected Timer getTimer()
{
if (fieldTimer == null)
{
fieldTimer = new Timer("PublishChecker",true);
}
return fieldTimer;
}
public void reload()
{
if( fieldTimer != null )
{
fieldTimer.cancel();
fieldTimer = null;
}
for (Iterator iterator = getCatalogIds().iterator(); iterator.hasNext();)
{
String catalogid = (String) iterator.next();
addCatalogToMonitor(catalogid);
}
}
public MediaArchive getMediaArchive(String inCatalogid)
{
if (inCatalogid == null)
{
return null;
}
MediaArchive archive = (MediaArchive) getModuleManager().getBean(inCatalogid, "mediaArchive");
return archive;
}
public void addCatalogToMonitor(final String inCatalogid)
{
if( !getCatalogIds().contains(inCatalogid))
{
getCatalogIds().add(inCatalogid);
TimerTask task = new TimerTask()
{
@Override
public void run()
{
try
{
MediaArchive archive = getMediaArchive(inCatalogid);
getPushManager().pollRemotePublish(archive);
} catch ( Throwable ex )
{
ex.printStackTrace();
}
}
};
MediaArchive archive = getMediaArchive(inCatalogid);
String p = archive.getCatalogSettingValue("push_pollpublish_period");
int period = 5000;
if( p != null )
{
period = Integer.parseInt(p);
}
getTimer().schedule(task, period,period);
}
}
}