package org.openedit.entermedia.modules;
import java.util.Iterator;
import org.entermedia.upload.FileUpload;
import org.entermedia.upload.UploadRequest;
import org.openedit.Data;
import org.openedit.data.Searcher;
import org.openedit.data.SearcherManager;
import org.openedit.entermedia.Asset;
import org.openedit.entermedia.MediaArchive;
import org.openedit.event.WebEvent;
import org.openedit.event.WebEventListener;
import com.openedit.WebPageRequest;
import com.openedit.hittracker.HitTracker;
import com.openedit.hittracker.SearchQuery;
import com.openedit.page.Page;
public class ConvertStatusModule extends BaseMediaModule
{
protected SearcherManager fieldSearcherManager;
protected WebEventListener fieldWebEventListener;
public SearcherManager getSearcherManager()
{
return fieldSearcherManager;
}
public void setSearcherManager(SearcherManager searcherManager)
{
fieldSearcherManager = searcherManager;
}
public WebEventListener getWebEventListener()
{
return fieldWebEventListener;
}
public void setWebEventListener(WebEventListener webEventListener)
{
fieldWebEventListener = webEventListener;
}
//this should kick off the groovy event by firing a path event?
public void addConvertRequest(WebPageRequest inReq)
{
//sourcepath=" + asset.getSourcePath() + "preset=" + preset.getId());
String sourcePath = inReq.getRequestParameter("sourcepath");
if( sourcePath == null)
{
return;
}
String presetId = inReq.getRequestParameter("preset");
if(presetId == null){
presetId = inReq.getRequestParameter("presetid.value");
}
MediaArchive archive = getMediaArchive(inReq);
Asset asset = archive.getAssetBySourcePath(sourcePath);
if(presetId == null){
return;
}
if(asset == null){
return;
}
//Searcher presetSearcher = getSearcherManager().getSearcher(archive.getCatalogId(), "conversions/convertpresets");
//Data preset = (Data) presetSearcher.searchById(presetId);
Searcher taskSearcher = getSearcherManager().getSearcher(archive.getCatalogId(), "conversiontask");
SearchQuery q = taskSearcher.createSearchQuery();
q.addMatches("assetid", asset.getId());
q.addMatches("presetid", presetId);
HitTracker t = taskSearcher.search(q);
if(t.size() > 0){
for (Iterator iterator = t.iterator(); iterator.hasNext();) {
Data task = (Data) iterator.next();
taskSearcher.delete(task, null);
}
}
Data newTask = taskSearcher.createNewData();
newTask.setSourcePath(sourcePath);
newTask.setProperty("status", "new");
newTask.setProperty("presetid", presetId);
newTask.setProperty("assetid", asset.getId());
String []fields = inReq.getRequestParameters("field");
if(fields != null){
taskSearcher.updateData(inReq, fields, newTask);
}
taskSearcher.saveData(newTask, inReq.getUser());
archive.fireMediaEvent("conversions/runconversions", inReq.getUser(), asset);//block
Data preset = archive.getData("convertpreset", presetId);
Page outputpage = getPageManager().getPage("/WEB-INF/data/" + archive.getCatalogId() + "generated"+ asset.getSourcePath() + "/" + preset.get("outputfile"));
if(outputpage.exists()){
getPageManager().putPage(outputpage); // this should create a new version
}
processConversions(inReq);//non-block
}
public void processConversions(WebPageRequest inReq)
{
WebEvent event = new WebEvent();
event.setSource(this);
MediaArchive archive = getMediaArchive(inReq);
event.setCatalogId(archive.getCatalogId());
event.setOperation("conversions/runconversions");
event.setUser(inReq.getUser());
//log.info(getWebEventListener());
getWebEventListener().eventFired(event);
}
public void uploadConversionDocument(WebPageRequest inReq){
MediaArchive archive = getMediaArchive(inReq);
FileUpload command = (FileUpload) archive.getSearcherManager().getModuleManager().getBean("fileUpload");
UploadRequest properties = command.parseArguments(inReq);
if (properties == null) {
return;
}
if (properties.getFirstItem() == null) {
return;
}
String assetid = inReq.getRequestParameter("assetid");
String presetid = inReq.getRequestParameter("presetid");
Data preset = getSearcherManager().getData(archive.getCatalogId(), "convertpreset",presetid);
Asset current = archive.getAsset(assetid);
String generated = "/WEB-INF/data/" + archive.getCatalogId() + "/generated/" + current.getSourcePath() + "/" + preset.get("outputfile");
properties.saveFileAs(properties.getFirstItem(), generated, inReq.getUser());
inReq.putPageValue("asset", current);
}
}