年月日时分秒毫秒+随机数getSerialNum

package com.creditharmony.apporveadapter.core.utils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Dom4JDriver;
import com.thoughtworks.xstream.mapper.MapperWrapper;

/**
 * 接口业务,共同处理.
 */
public class AdapterUtils {

    /**
     * 根据传入的数字, 产生 【年月日时分秒毫秒+随机数】. 格式:yyyyMMddHHmmssSSS + '_' + 四位随机数
     * 
     * @return 25位 随机数
     */
    public static String getSerialNum() {
        Random random = new Random();
        String sRand = "";
        for (int i = 0; i < 2; i++) {
            String rand = String.valueOf(random.nextInt(10));
            sRand += rand;
        }
        for (int i = 0; i < 2; i++) {
            random = new Random();
            String rand = String.valueOf(random.nextInt(10));
            sRand += rand;
        }

        StringBuilder randNoSb = new StringBuilder();
		String dateStr = DateFormatUtils.format(new Date(), "yyyyMMddHHmmssSSS");
		randNoSb.append(dateStr).append(sRand);
        
        return randNoSb.toString();
    }

    /**
     * 取得邮件地址的服务商
     * 
     * @param userAddr 邮件地址
     * @return 邮件服务商
     */
    public static String getMailExtName(String userAddr) {
        if (StringUtils.isEmpty(userAddr) == false) {
            if (userAddr.indexOf("@") > 0) {
                int lastIdx = userAddr.lastIndexOf("@");
                return userAddr.substring(lastIdx);
            } else {
                return "";
            }
        } else {
            return "";
        }
    }

    /**
     * 按照指定的格式取出区间参数.
     * 
     * @param param 信息
     * @return 状态号
     */
    public static String getParam(String param, String inPattern) {
        String code = "";

        String pattern = "\\<" + inPattern + ">(.*?)\\</" + inPattern + ">";
        // 正则表达式,取<error>和</error>之间的字符串
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(param);
        // 取得对应的返回编号
        while (m.find()) {
            code = m.group(1);
        }
        return code;
    }

    /**
     * xml转bean. 将传入的XML转为对应的javaBean 该方法可忽略缺少或者多出的XML中节点对象
     * 
     * @param xml 源XML内容
     * @param clazz 对象Class
     * @return 转换后Bean
     */
    @SuppressWarnings("unchecked")
    public static <T> T xmlToBean(String xml, Class<T>... clazz) {

        T t = null;
        // xml转对象需要用到dom4j.jar包
        XStream xStream = new XStream(new Dom4JDriver()) {

            protected MapperWrapper wrapMapper(MapperWrapper next) {
                return new MapperWrapper(next) {
                    @SuppressWarnings("rawtypes")
                    public boolean shouldSerializeMember(Class definedIn, String fieldName) {

                        if (definedIn == Object.class) {
                            try {
                                return this.realClass(fieldName) != null;

                            } catch (Exception e) {
                                return false;
                            }
                        }
                        return super.shouldSerializeMember(definedIn, fieldName);
                    }
                };
            }

        };
        xStream.setMode(XStream.NO_REFERENCES);
        xStream.processAnnotations(clazz);
        t = (T) xStream.fromXML(xml);

        return t;
    }

    /**
     * 文件byte转文件InputStream 处理.
     * 
     * @param buf 文件byte
     * @return 文件InputStream
     */
    public static final InputStream byte2Input(byte[] buf) {
        return new ByteArrayInputStream(buf);
    }

    /**
     * 文件InputStream转文件byte 处理.
     * 
     * @param inStream 文件InputStream
     * @return 文件byte
     */
    public static final byte[] input2byte(InputStream inStream) throws IOException {
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
        byte[] buff = new byte[100];
        int rc = 0;
        while ((rc = inStream.read(buff, 0, 100)) > 0) {
            swapStream.write(buff, 0, rc);
        }
        swapStream.close();
        byte[] in2b = swapStream.toByteArray();
        return in2b;
    }
    
    /**
     * 获取客户端IP地址.
     * @param serialNum 请求唯一序列号
     * @return IP地址
     */
    public static String getClientIP(HttpServletRequest request, String serialNum) {
        try {
            if (request.getHeader("x-forwarded-for") == null) {
                return request.getRemoteAddr();
            }
            return request.getHeader("x-forwarded-for");
        } catch (Exception e) {
        }
        return "";
    }
    
    /**
     * 获取当前项目URL地址.
     * 
     * @return URL地址
     */
    public static String getRequestPath() {
		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
		String path = request.getRequestURL() + "/";
		return path;
    }
    
    public static String readString3(String pathName)
	{
	    String str="";
	    File file=new File(pathName);
	    try {

	        FileInputStream in=new FileInputStream(file);

	        // size  为字串的长度 ,这里一次性读完

	        int size=in.available();

	        byte[] buffer=new byte[size];

	        in.read(buffer);

	        in.close();

	        str=new String(buffer,"utf-8");

	    } catch (IOException e) {
	        // TODO Auto-generated catch block
	        return null;
	    }
	    return str;

	}
}

  

posted @ 2019-04-20 20:39  hoge  阅读(1104)  评论(0编辑  收藏  举报