volicity 模板类,java操作配置文件
import java.io.StringWriter;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set; import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.context.Context; public class VMRenderUtils { static public final String vmfileName = "email.vm";
static private final Properties p = new Properties();
static {
p.put("file.resource.loader.class",
"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
Velocity.init(p);
} static public String render(String flag, String emailSubject, String emailHost,
String emailFrom, String emailPassword, Map<String, HashSet<String>> moduleInCharge) {
Template template = Velocity.getTemplate(vmfileName); StringBuilder moduleInChargeString = new StringBuilder(); Set<String> key = moduleInCharge.keySet();
for (Iterator<String> it = key.iterator(); it.hasNext();) {
String s = (String) it.next();
moduleInChargeString.append(s+"="+HashSetToString(moduleInCharge.get(s))+"\n");
} Context context = buildContext(flag, emailSubject, emailHost,
emailFrom, emailPassword, moduleInChargeString.toString());
StringWriter sw = new StringWriter();
template.merge(context, sw);
return sw.toString();
} static Context buildContext(String flag, String emailSubject, String emailHost,
String emailFrom, String emailPassword, String moduleInCharge) {
Context context = new VelocityContext();
context.put("flag", flag);
context.put("emailSubject", emailSubject);
context.put("emailHost", emailHost);
context.put("emailFrom", emailFrom);
context.put("emailPassword", emailPassword); context.put("moduleInCharge", moduleInCharge); return context;
} private static String HashSetToString(HashSet<String> hashSet) {
String result = "";
if(hashSet == null) {
return result;
} for(String at:hashSet) {
result += (at+",");
}
if(!isBlank(result)) {
result = result.substring(0,result.length()-1);
}
return result;
}
private static boolean isBlank(String value) {
if(value == null || "".equals(value)) {
return true;
}
return false;
}
}
email.vm文件
SUPER_ADMIN=huahuiyang@gmail.com #whether to send email
LOL_EMAIL=${flag} #email subject
EMAIL_SUBJECT=${emailSubject}
EMAIL_HOST=${emailHost}
EMAIL_FROM=${emailFrom}
EMAIL_PASSWORD=${emailPassword} #send mail to....
${moduleInCharge}
java如何调用:
URL filePath = Thread.currentThread().getContextClassLoader().getResource("email.properties");
File file = new File(filePath.toString().substring(5));
FileWriter fw;
try {
fw = new FileWriter(file);
fw.write(configureFile);
fw.close();
} catch (IOException e) {
logger.warn("fail to update configure file email.properties");
}
volicity 模板类,java操作配置文件的更多相关文章
- Java中Properties类的操作配置文件
知识学而不用,就等于没用,到真正用到的时 候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用 Java来写, ...
- 错误: 找不到或无法加载主类 java操作hbase出错
用java操作hbase 利用maven引入hbase包后发现无法启动程序,然后网上说是包的冲突. 我引入了下面三个包然后程序就不能运行了. <dependency> <groupI ...
- java 操作配置文件 .properties
package com.dms.common; import java.io.File; import java.io.FileInputStream; import java.io.FileNotF ...
- java操作redis集群配置[可配置密码]和工具类(比较好用)
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
- Spring-继承JdbcDaoSupport类后简化配置文件内容
正常情况下,我们在实现类中想要晕用模板类需要在配置文件中注入连接池,再将连接池注入给模板类,然后在实现类中得到. <!-- 配置C3P0连接池 --> <bean id = &quo ...
- Spring中的JDBC模板类入门
1.Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2.提供了JDBC模板,Spring框架提供的 *JdbcTemplate类 3.Spring框架可以整合Hib ...
- java 操作zookeeper
java 操作zookeeper(一) 首先要使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper ...
- Java中Properties类的操作
知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加 ...
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
随机推荐
- Mysql复制语句
可分为三组(Group):用于Master ,用于Slave,用于任何复制服务.
- 关于快捷键 Ctrl+Alt+[方向键] 的知识
在用PS作图时使用 Ctrl+Alt+[方向键] 组合建时屏幕莫名翻转, 平时电脑懒得维护所以略卡,我不会说一般早上起床摁了开机去上完厕所回来还--咳咳 刚按下时瞬间一黑,再黑,,继续黑--真是大吃 ...
- 2014年十个优秀的免费CDN加速服务-国内和国外免费CDN
这是一篇总结近几年来网络上出现了各类免费CDN服务的文章,文章本来应该早就发出来的,但是因为近期的各种原因一直拖到现在.之前部落已经总结了近几年来的优秀免费空间,新手朋友不必在茫茫“网”海中寻找免费空 ...
- JDK、Jmeter、Android环境变量配置
JDK环境变量 1.在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径,在这里就填写"D:\Program Files\Java\jdk1.6.0_26" ...
- Label Font 字体样式设置
label.font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:24]; 字体名如下: Font Family: Amer ...
- 【计算机图形学】openGL常用函数
OpenGL常用函数 glAccum 操作累加缓冲区 glAddSwapHintRectWIN 定义一组被 SwapBuffers拷贝的三角形 glAlphaFunc允许设置alpha检测 ...
- 序列化悍将Protobuf-Net,入门动手实录
最近在研究web api 2,看了一篇文章,讲解如何提升性能的, 在序列化速度的跑分中,Protobuf一骑绝尘,序列化速度快,性能强,体积小,所以打算了解下这个利器 1:安装篇 谷歌官方没有提供.n ...
- World of Warcraft
一大堆快捷键 鼠标中键:致盲 上滚:闪避 下滚:疾跑 通用:~伺机待发 Q加速 E斗篷 R徽章 T消失 alt+Q脚踢,alt+W毒刃 alt+E亡灵意志 alt+D烟幕弹 alt+F死亡标记 Z天降 ...
- 安装.net Framework 3.5 SP1非常慢的解决方案
解决方案:1.msiexec /unregserver回车,在输入命令:msiexec /regserver msiexec /unregserver是停止installer服务,而msiexec / ...
- 在Salesforce中调用外部系统所提供的的Web Service
这里需要提供外部service所对应的WSDL文件(Salesforce只支持从本地上传),并且提供的WSDL文件有如下两点要求: 1):wsdl 文件只能有一个binding,Salesforce是 ...