码迷,mamicode.com
首页 > 其他好文 > 详细

J2EE项目开发中好用的公共方法

时间:2016-06-30 19:40:40      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

  在项目IDCM中涉及到多种工单,包括有:服务器|网络设备上下架工单、服务器|网络设备重启工单、服务器光纤网线更换工单、网络设备撤线布线工单、服务器|网络设备替换工单、服务器|网络设备RMA工单、通用原子工单、硬盘消磁折弯工单、物流工单、资产初入门工单、机柜上下电工单、待盘点|待盘盈工单等等。工单管理系统中要涉及到工单的创建|API创建和维护。所以有必要将一些通用的方法提出来,类似于模块化的架构涉及。

1.业务逻辑描述:在工单系统的详情页中,需要展示对工单的操作记录,所以做了通用的模块设计,这样当要对工单详情中的日志部分作出修改的时候,能在最短的时间,最小的改动的情况下,完美的解决问题。日志表中新增附件字段,关联app_attachment表中的主键,当操作人与登录人相一致时,可以通过附件上传文件。

技术分享

  解决方案:抽象出了详情页面中的orderOptList.vm模块,在工单详情页中通过$control.setTemplate("web:orderOptList.vm")引入到工单详情页中,同时在后端需要提供公共的context.put("operations", operations)和context.put("appUserInfo", pvgInfo)来配合前端数据的展现。

2.业务逻辑描述:需要在工单的详情页中添加是否超时字段,用于在结单时判断工单是否超时,如果逐个在工单中添加,侵入式太重,不利于后期维护,因此利用了java的反射机制,动态的更新是否超时字段。

  解决方案:方法中的参数设置为超级父类Object,传入的类,通过.getClass().getDeclaredMethod("方法名",方法入参逗号分隔)获取到Method类,然后再满足业务逻辑的情况下,通过method.invoke(Object obj, Object.. args)方法,调用方法刷新数据。

 

public void updateIsTimeOut(Object pojo, Date startTm, Double sla, String slaUnit) {
        try {
            Method method = pojo.getClass().getDeclaredMethod("setIsTimeOut", String.class);
            if (null != startTm && null != pojo) {
                if (null != sla && StringUtil.isNotBlank(slaUnit)) {
                    boolean isTimeOut = (new Date().getTime() - startTm.getTime() > (long) (sla.doubleValue() * SLAUtil.getSlaUnit(slaUnit).getUnit()) ? true : false);
                    if (null != method) {
                        if (isTimeOut) {
                            method.invoke(pojo, WorkOrderCst.YES);
                        } else {
                            method.invoke(pojo, WorkOrderCst.NO);
                        }
                    }
                } else {
                    method.invoke(pojo, WorkOrderCst.UNKNOWN);
                }
            } else {
                method.invoke(pojo, WorkOrderCst.UNKNOWN);
            }
        } catch (Exception e) {
            logger.error("update isTimeOut erros.");
        }
    }

 

对类的方法实现动态赋值,使用方法method.invoke(obj,args...)方法,方法中的obj就是一个实例化对象,args是方法的参数。

 

public Object invoke(Object obj, Object... args)
    obj:从中调用底层方法的对象,必须是实例化对象
    args:用于方法调用,是一个object的数组,因为参数有可能有多个

3.业务逻辑描述:

  解决方案:

 

package basic;

import java.security.MessageDigest;

public class TestMD5 {

    public static void main(String[] args) {
        try {
            String name = "Zhao, Xu-Guang";
            String charset = "GBK";
            String str = "2k3u.o#02pt" + name;
            MessageDigest messageDigest;
            messageDigest = MessageDigest.getInstance("MD5");
            messageDigest.reset();
            messageDigest.update(str.getBytes(charset));
            byte[] byteArray = messageDigest.digest();
            StringBuffer md5StrBuff = new StringBuffer();
            for (int i = 0; i < byteArray.length; i++) {
                if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
                    md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
                } else {
                    md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
                }
            }
            System.out.println(md5StrBuff.toString().toLowerCase());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

J2EE项目开发中好用的公共方法

标签:

原文地址:http://www.cnblogs.com/RunForLove/p/5630795.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!