package com.oa.util;
import java.io.StringWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Component;
import com.oa.listenner.Persistence;
import com.oa.model.DocumentProperty;
import com.oa.model.DynamicForm;
import com.oa.service.DynamicFormService;
import freemarker.cache.ClassTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;
@Component("freeMarketUtil1")
public class FreeMarketUtil {
private static Configuration configuration = new Configuration();
private static DynamicFormService dynamicFormService;
static {
configuration.setTemplateLoader(new ClassTemplateLoader(FreeMarketUtil.class, "template"));
configuration.setObjectWrapper(new DefaultObjectWrapper());
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
configuration.setEncoding(Locale.CHINA, "UTF-8");
}
public static String TemplateToString(int workflowid) {
DynamicForm form = dynamicFormService.getDynamicFormByWorkFlow(workflowid);
if (form == null) {
return null;
}
try {
Template template = configuration.getTemplate(form.getTemplate());
// 最终输出的位置
Writer out = new StringWriter();
Map rootMap = new HashMap();
rootMap.put("form", form);
template.process(rootMap, out);
return out.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String TemplateToString2(int workflowid, String type) {
DynamicForm form = dynamicFormService.getDynamicFormByWorkFlow(workflowid);
List<DocumentProperty> props = null;
String[] key = type.split("\\|");
if ("properties".equals(key[1])) {
props = (List<DocumentProperty>) Persistence.getVariable(key[0]);
}
if (form == null) {
return null;
}
try {
Template template = configuration.getTemplate(form.getTemplate());
// 最终输出的位置
Writer out = new StringWriter();
Map rootMap = new HashMap();
rootMap.put("form", form);
if (props != null) {
rootMap.put("properties", props);
}
template.process(rootMap, out);
return out.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public DynamicFormService getDynamicFormService() {
return dynamicFormService;
}
@Resource
public void setDynamicFormService(DynamicFormService dynamicFormService) {
FreeMarketUtil.dynamicFormService = dynamicFormService;
}
}