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 + ">";

// 正则表达式,取和之间的字符串

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 xmlToBean(String xml, Class... 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;

}

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐