/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.web.filter.render;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ewcms.content.resource.model.Resource;
import com.ewcms.content.resource.service.ResourceServiceable;
/**
* 返回指定的资源
*
* @author wangwei
*/
public class ResourceRender extends AbstractResourceRender{
private static final Logger logger = LoggerFactory.getLogger(ResourceRender.class);
private ResourceServiceable resourceService;
public ResourceRender(ResourceServiceable resourceService){
this.resourceService = resourceService;
}
/**
* 输出站点资源
*
* @param response
* @param uri 资源路基
* @return
* @throws IOException
*/
@Override
protected boolean output(HttpServletResponse response,String uri)throws IOException{
//TODO window与Unix路径问题
Resource resource = resourceService.getResourceByUri(uri);
if(resource == null){
logger.debug("Resource is not exist,uri is {}",uri);
return false;
}
String realPath = resource.getPath();
if(StringUtils.endsWith(resource.getThumbUri(), uri)){
realPath = resource.getThumbPath();
}
try{
IOUtils.copy(new FileInputStream(realPath), response.getOutputStream());
}catch(Exception e){
logger.warn("Resource is not exit,real path is{}", realPath);
}
response.flushBuffer();
return true;
}
}