浏览 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 ""; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-17
您好,楼主能不能提供提醒模块完整的代码?我想跑起来,目前:StrCharUtil,UploadConfig,Escape这几个类能不能提供啊??谢谢了
|
|
返回顶楼 | |
发表时间:2008-09-17
你好,跟MSN,QQ通信需要搭建Openfire环境并且需要编写Openfire的Plugin,这里不涉及到这方面,所以没详细讲解他的实现,只在本机上运行通过,如果有时间我将整理这部分的代码给网友
|
|
返回顶楼 | |
发表时间:2008-09-17
期待完整的代码下载
|
|
返回顶楼 | |
发表时间:2008-09-17
期待完整代码
|
|
返回顶楼 | |
发表时间:2008-11-02
这个比较屌,能提供完整的代码?
|
|
返回顶楼 | |
发表时间: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对象是不是会好看点? |
|
返回顶楼 | |
发表时间: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很丑。 |
|
返回顶楼 | |