论坛首页 Java企业应用论坛

通用提醒模块使用指南(支持Email,MSN,QQ提醒)

浏览 14509 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2008-09-17  

实际项目中,我们经常需要使用到提醒功能,以便解决当某一触发条件发生时,及时通知用户,怎么实现呢?很简单,先定义一个工厂类,如下:

	public static IAlarm factory(String arg){
		if(!arg.equals("")){
			try {
				Class cls = Class.forName(arg);
				Object obj = cls.newInstance();
				return (IAlarm)obj;
			}catch(Exception e) {
				return null;
			}
		}else{
			return null;
		}		
	}

 统一的提醒接口,定义如下:

	public static final String ALARM_FROM="from";
	public static final String ALARM_TO="to";
	public static final String ALARM_TITLE="title";
	public static final String ALARM_TEXT="text";
	public static final String ALARM_FILE="file";

	public boolean alarm(HashMap params);

Email提醒代码实现类如下:

public class EmailAlarmImpl implements IAlarm {

	
	public boolean alarm(HashMap params) {
		try{
			return send163ByMutil(StrCharUtil.formatNullStr(params.get(ALARM_TITLE)),
					StrCharUtil.formatNullStr(params.get(ALARM_TEXT)),
					StrCharUtil.formatNullStr(params.get(ALARM_FILE)),
					StrCharUtil.formatNullStr(params.get(ALARM_TO)));
		}catch(Exception ex){
			ex.printStackTrace();
			return false;
		}

	}

}
 

MSN提醒代码实现类如下:

public class MSNAlarmImpl implements IAlarm{
	public boolean alarm(HashMap params) {
		String str=StrCharUtil.visitURL("http://"+UploadConfig.getInstance().getImserverip()+":9090/plugins/message/msg?act=sm&svr=msn" +
				"&from="+StrCharUtil.formatNullStr(params.get(ALARM_FROM))+"&to="+
				StrCharUtil.formatNullStr(params.get(ALARM_TO))+"&msg="+Escape.escape(StrCharUtil.formatNullStr(params.get(ALARM_TEXT))));
		return str.indexOf("1")>=0;
	}
}
 

QQ提醒代码实现类如下:

public class QQAlarmImpl implements IAlarm{
	public boolean alarm(HashMap params) {
		String str=StrCharUtil.visitURL("http://"+UploadConfig.getInstance().getImserverip()+":9090/plugins/message/msg?act=sm&svr=qq" +
				"&from="+StrCharUtil.formatNullStr(params.get(ALARM_FROM))+"&to="+
				StrCharUtil.formatNullStr(params.get(ALARM_TO))+"&msg="+Escape.escape(StrCharUtil.formatNullStr(params.get(ALARM_TEXT))));
		return str.indexOf("1")>=0;
	}
}
 

并支持任意的扩展,是不是很好用呢?呵呵

测试代码如下:

		HashMap hm=new HashMap();
		hm.put(IAlarm.ALARM_FILE, "c:\\统计单.doc");
		hm.put(IAlarm.ALARM_FROM,"xuelh");
		hm.put(IAlarm.ALARM_TEXT, "你好,邮件内容");
		hm.put(IAlarm.ALARM_TITLE, "邮件标题");
		hm.put(IAlarm.ALARM_TO, "QQ号码@qq.com");
		System.out.println(AlarmFactory.factory("com.cxlh.alert.EmailAlarmImpl").alarm(hm));

 这样就把提醒的内容以QQ邮件的方式提醒给对方了,同样MSN,QQ提醒只需要简单的修改

com.cxlh.alert.EmailAlarmImpl

就可以了。

 

StrCharUtil.VisitURL函数代码如下:

	public static String visitURL(String strUrl) {
		URL url = null;
		try {
			url = new URL(strUrl);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		URLConnection conn = null;
		try {
			conn = url.openConnection();
			conn.setDoOutput(true);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		OutputStreamWriter out;
		try {
			out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
			out.flush();
			out.close();

		} catch (UnsupportedEncodingException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (IOException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}

		// 接收返回信息
		BufferedReader rd = null;
		try {
			rd = new BufferedReader(
					new InputStreamReader(conn.getInputStream()));
			return rd.readLine();
		} catch (IOException e1) {

		}
		return "";
	}	
 
   发表时间:2008-09-17  
您好,楼主能不能提供提醒模块完整的代码?我想跑起来,目前:StrCharUtil,UploadConfig,Escape这几个类能不能提供啊??谢谢了
0 请登录后投票
   发表时间:2008-09-17  
你好,跟MSN,QQ通信需要搭建Openfire环境并且需要编写Openfire的Plugin,这里不涉及到这方面,所以没详细讲解他的实现,只在本机上运行通过,如果有时间我将整理这部分的代码给网友
0 请登录后投票
   发表时间:2008-09-17  
期待完整的代码下载
0 请登录后投票
   发表时间:2008-09-17  
期待完整代码
0 请登录后投票
   发表时间:2008-11-02  
这个比较屌,能提供完整的代码?
0 请登录后投票
   发表时间:2008-11-02  
 public static final String ALARM_FROM="from";  
 public static final String ALARM_TO="to";  
 public static final String ALARM_TITLE="title";  
 public static final String ALARM_TEXT="text";  
 public static final String ALARM_FILE="file";  


设计为Message对象是不是会好看点?
0 请登录后投票
   发表时间:2008-11-03  
风花雪月饼 写道
 public static final String ALARM_FROM="from";  
 public static final String ALARM_TO="to";  
 public static final String ALARM_TITLE="title";  
 public static final String ALARM_TEXT="text";  
 public static final String ALARM_FILE="file";  


设计为Message对象是不是会好看点?


赞成。用Map很丑。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics