/**
* 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.publication.freemarker.directive.out.article;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
import com.ewcms.common.lang.EmptyUtil;
import com.ewcms.content.document.model.Article;
import com.ewcms.content.document.model.Relation;
import com.ewcms.publication.freemarker.directive.out.HtmlDirectiveOut;
import freemarker.core.Environment;
import freemarker.template.TemplateException;
/**
* 引用文章标签输出
*
* @author wangwei
*/
public class RelationsDirectiveOut extends HtmlDirectiveOut {
private static final Logger logger = LoggerFactory.getLogger(RelationsDirectiveOut.class);
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public Object loopValue(Object value, Environment env, Map params)throws TemplateException {
Assert.notNull(value);
List<Article> articles = new ArrayList<Article>();
for(Relation r : (List<Relation>)value){
articles.add(r.getArticle());
}
return articles;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public String constructOut(Object value, Environment env, Map params)throws TemplateException {
Assert.notNull(value);
List<Relation> list = (List<Relation>)value;
if(EmptyUtil.isCollectionEmpty(list)){
logger.debug("Relateds is empty");
return null;
}
StringBuilder builder = new StringBuilder();
builder.append("<ul");
String c = getClassValue(params);
if(EmptyUtil.isNotNull(c)){builder.append(" class=\"").append(c).append("\"");}
String s = getStyleValue(params);
if(EmptyUtil.isNotNull(s)){builder.append(" style=\"").append(s).append("\"");}
builder.append(">");
for(Relation r : list){
Article article = r.getArticle();
builder.append("<li>");
builder.append("<a href=\"").append(article.getUrl()).append("\" title=\"").append(article.getTitle()).append("\" target=\"_blank\">");
builder.append(article.getTitle());
builder.append("</a>");
builder.append("</li>");
}
builder.append("</ul>");
return builder.toString();
}
}