* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package utils;
import freemarker.core.Environment;
import freemarker.template.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import models.cms.BcColumn;
/**
*
* @author Adam
*/
public class ColumnDirective implements TemplateDirectiveModel {
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException {
// 获取传递进来的参数
Iterator it = params.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String paramName = entry.getKey().toString();
TemplateModel paramValue = (TemplateModel) entry.getValue();
if (paramName.equals("size")){
if (!(paramValue instanceof TemplateNumberModel)) {
throw new TemplateModelException("The size parameter " + "must be a number.");
}
}else{
throw new TemplateModelException("Unsupported parameter: " + paramName);
}
}
Map<String, Object> map = get(params);
if (body != null) {
env.setVariable("list", DefaultObjectWrapper.DEFAULT_WRAPPER.wrap(map.get("list")));
body.render(env.getOut());
} else {
throw new RuntimeException("missing body");
}
}
private Map<String, Object> get(Map params) {
Integer size = Integer.valueOf(params.get("size").toString());
Map<String, Object> map = new HashMap<String, Object>();
List<BcColumn> list = BcColumn.find("order by createDate desc").fetch(size);
map.put("list", list);
return map;
}
}