/*
* Created on Apr 22, 2006
*/
package org.openedit.entermedia.generators;
import java.io.File;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.openedit.OpenEditException;
import com.openedit.WebPageRequest;
import com.openedit.generators.BaseGenerator;
import com.openedit.generators.Output;
import com.openedit.page.Page;
import com.openedit.page.manage.PageManager;
import com.openedit.util.PageZipUtil;
import com.openedit.util.PathUtilities;
public class ZipGenerator extends BaseGenerator
{
protected File fieldRoot;
protected PageManager pageManager;
private static final Log log = LogFactory.getLog(ZipGenerator.class);
public void generate(WebPageRequest inReq, Page inPage, Output inOut) throws OpenEditException
{
String path = inReq.getRequestParameter("path");
if (path.indexOf("..") > -1)
{
throw new OpenEditException("Illegal path name");
}
//TODO: Add more security checks
if( inReq.getUser() == null)
{
throw new OpenEditException("Illegal user");
}
path = PathUtilities.resolveRelativePath( path, "/");
// File root = new File( getRoot(), path);
try
{
log.info("Zip up:" + path);
PageZipUtil pageZipUtil = new PageZipUtil(getPageManager());
String strip = inReq.getRequestParameter("stripfolders");
if( strip != null)
{
pageZipUtil.setFolderToStripOnZip(strip);
}
pageZipUtil.setRoot(getRoot());
pageZipUtil.zipFile(path, inOut.getStream());
}
catch ( Exception ex)
{
log.error(ex);
}
}
protected File getRoot()
{
return fieldRoot;
}
public void setRoot(File inRoot)
{
fieldRoot = inRoot;
}
public boolean canGenerate(WebPageRequest inReq)
{
return true;
}
public PageManager getPageManager()
{
return pageManager;
}
public void setPageManager(PageManager inPageManager)
{
pageManager = inPageManager;
}
}