package com.creg.shield.util;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* Created by ken on 2015/10/10.
*/
public class Ut {
/**
* @param json
* @return
*/
public static Map json2Map(String json) {
try {
ObjectMapper objectMapper = new ObjectMapper();
Map map = objectMapper.readValue(json, Map.class);
return map;
} catch (Exception e) {
return null;
}
}
/**
* @param map
* @return
*/
public static String map2Json(Map map) {
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
String json = objectMapper.writeValueAsString(map);
return json;
} catch (Exception e) {
return null;
}
}
/**
* @param o
* @return
*/
public static String obj2Json(Object o) {
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
String json = objectMapper.writeValueAsString(o);
return json;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* @param tt
* @param json
* @param <T>
* @return
*/
public static <T> T json2Obj(Class<T> tt, String json) {
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
T object = objectMapper.readValue(json, tt);
return object;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static <T> T getVal(Class<T> c, Object o) {
try {
if (o.getClass().equals(c)) {
return (T) o;
}
Constructor constructor = c.getConstructor(String.class);
o = constructor.newInstance(o.toString());
return (T) o;
} catch (Exception e) {
return null;
}
}
public static String getStr(Object o) {
return Ut.getVal(String.class, o);
}
public static String getStr(Object o, String defaultValue) {
String val = Ut.getVal(String.class, o);
return val == null ? defaultValue : val;
}
public static Integer getInt(Object o) {
return Ut.getVal(Integer.class, o);
}
public static Integer getInt(Object o, Integer defaultValue) {
Integer val = Ut.getVal(Integer.class, o);
return val == null ? defaultValue : val;
}
public static Long getLong(Object o) {
return Ut.getVal(Long.class, o);
}
public static Long getLong(Object o, Long defaultValue) {
Long val = Ut.getVal(Long.class, o);
return val == null ? defaultValue : val;
}
public static Float getFloat(Object o) {
return Ut.getVal(Float.class, o);
}
public static Float getFloat(Object o, Float defaultValue) {
Float val = Ut.getVal(Float.class, o);
return val == null ? defaultValue : val;
}
public static Double getDouble(Object o) {
return Ut.getVal(Double.class, o);
}
public static Double getDouble(Object o, Double defaultValue) {
Double val = Ut.getVal(Double.class, o);
return val == null ? defaultValue : val;
}
public static Short getShort(Object o) {
return Ut.getVal(Short.class, o);
}
public static Short getShort(Object o, Short defaultValue) {
Short val = Ut.getVal(Short.class, o);
return val == null ? defaultValue : val;
}
public static String formatDate(String format, Date date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date);
}
public static Date parseDate(String format, String dataStr) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
return simpleDateFormat.parse(dataStr);
} catch (Exception e) {
return null;
}
}
public static Date getDate(Timestamp timeStamp) {
return new Date(timeStamp.getTime());
}
public static Date getDate(Long time) {
return new Date(time);
}
public static Timestamp getTimestamp(Date date) {
return new Timestamp(date.getTime());
}
public static Timestamp getTimestamp(Long time) {
return new Timestamp(time);
}
/**
* 解决空格变加号的问题
*
* @param str
* @param encoding
* @return
*/
public static String netEncode(String str, String encoding) {
String zhCN = null;
try {
zhCN = java.net.URLEncoder.encode(str, encoding);
zhCN = zhCN.replaceAll("\\+", "%20");
return zhCN;
} catch (Exception e) {
return zhCN;
}
}
public static <T> T copyProp(T dst, Object origin) {
try {
Field[] dscFields = dst.getClass().getDeclaredFields();
Map map = new HashMap();
for (Field field : dscFields) {
map.put(field.getName(), field);
}
Field[] originFields = origin.getClass().getDeclaredFields();
for (Field field : originFields) {
field.setAccessible(true);
if (map.get(field.getName()) != null) {
if (field.get(origin) != null) {
Field dscField = (Field) map.get(field.getName());
dscField.setAccessible(true);
dscField.set(dst, field.get(origin));
dscField.setAccessible(false);
}
}
field.setAccessible(false);
}
return dst;
} catch (Exception e) {
return null;
}
}
// lhc排序
public static Map<String, Object> sortMapByKey() {
Map<String, Object> map2 = new TreeMap<String, Object>(
new Comparator<String>() {
public int compare(String key1, String key2) {
return key2.compareTo(key1);
}
}
);
return map2;
}
//字符串去掉最后一位;
public static String trimLast(String str){
return str.substring(0,str.length()-1);
}
//获取随机数字符串
public static String getRandom(int min,int max){
int len = (max +"").length();
if(max < min){
int r = max;
max = min;
min = r;
}
Random random = new Random();
int s = random.nextInt(max)%(max-min+1) + min;
return String.format("%0"+len+"d",s);
}
//对象验证
public static String validate(Object vo){
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(vo);
Iterator<ConstraintViolation<Object>> iterator = constraintViolations.iterator();
StringB