package com.code2roc.fastface.util; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.time.DateUtils; import org.springframework.cglib.beans.BeanMap; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.*; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; public class ConvertOp { //可能的时间格式 private static final String[] format = {" HH:mm:ss", "yyyy-MM-dd", "yyyyMMdd", "yyyy/MM/dd"}; //时间匹配正则表达式 private static final String[] dateRegex = {"^[\\d]{4}+[-]+[\\d]{1,2}+[-]+[\\d]{1,2}$", "\\d{8}", "^[\\d]{4}+[/]+[\\d]{1,2}+[/]+[\\d]{1,2}$"}; //时间前后分割 private static String space = "[A-Za-z\\s.]+"; //字母,空格,小数点 public static HashMap convertBeanToMap(T bean) { HashMap map = new HashMap(); if (bean != null) { BeanMap beanMap = BeanMap.create(bean); for (Object key : beanMap.keySet()) { map.put(key + "", beanMap.get(key)); } } return map; } public static T convertMapToBean(Map map, T bean) { BeanMap beanMap = BeanMap.create(bean); for (Object beankey : beanMap.keySet()) { for (Object resultkey : map.keySet()) { if (ConvertOp.convert2String(beankey).toLowerCase().equals(ConvertOp.convert2String(resultkey).toLowerCase())) { beanMap.put(beankey, map.get(resultkey)); continue; } } } return bean; } public static T convertLinkHashMapToBean(LinkedHashMap map, T bean) { BeanMap beanMap = BeanMap.create(bean); for (Object beankey : beanMap.keySet()) { for (Object resultkey : map.keySet()) { if (ConvertOp.convert2String(beankey).toLowerCase().equals(ConvertOp.convert2String(resultkey).toLowerCase())) { Object value = map.get(resultkey); beanMap.put(beankey, value); continue; } } } return bean; } public static T2 convertSameStructObj(T1 fromBean, T2 toBean) { Map fromBeanMap = convertBeanToMap(fromBean); return (T2) convertMapToBean(fromBeanMap, toBean); } public static boolean isNull(Object obj) { if (obj == null) { return true; } else { return false; } } public static Integer convert2Int(Object obj) { Integer result; if (!isNull(obj)) { if (obj.getClass() == BigDecimal.class) { BigDecimal bigDecimal = (BigDecimal) obj; return bigDecimal.intValue(); } else { try { result = Integer.parseInt(String.valueOf(obj)); } catch (Exception e) { e.printStackTrace(); ; result = 0; } } } else { result = 0; } return result; } public static Double convert2Double(Object obj) { Double result; if (!isNull(obj)) { try { result = Double.parseDouble(String.valueOf(obj)); } catch (Exception e) { e.printStackTrace(); ; result = 0.0; } } else { result = 0.0; } return result; } public static Double convert2Double(Double obj, int scale) { Double result; if (!isNull(obj)) { try { BigDecimal b = new BigDecimal(obj); result = b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } catch (Exception e) { e.printStackTrace(); ; result = 0.0; } } else { result = 0.0; } return result; } public static BigDecimal convert2Decimal(Object obj) { BigDecimal result; if (!isNull(obj)) { try { result = new BigDecimal(String.valueOf(obj)); } catch (Exception e) { e.printStackTrace(); ; result = new BigDecimal(0); } } else { result = new BigDecimal(0); } return result; } public static BigDecimal convert2Decimal(Object obj, int scale) { BigDecimal result; if (!isNull(obj)) { try { result = new BigDecimal(String.valueOf(obj)).setScale(scale, RoundingMode.HALF_UP); } catch (Exception e) { e.printStackTrace(); ; result = new BigDecimal(0); } } else { result = new BigDecimal(0); } return result; } public static Boolean convert2Boolean(Object obj) { Boolean result; if (!isNull(obj)) { try { result = Boolean.parseBoolean(String.valueOf(obj)); } catch (Exception e) { e.printStackTrace(); ; result = false; } } else { result = false; } return result; } public static Date convert2Date(Object obj) { Date result = new Date(1753, 1, 1); ; if (!isNull(obj)) { try { String date = String.valueOf(obj); if (date != null && !date.matches("[A-Za-z.]+")) { date = date.split("[A-Za-z.]+")[0].trim(); String pre = date.split("[\\s]+")[0]; if (pre.matches(dateRegex[0])) { result = DateUtils.parseDate(date, format[1], format[1] + format[0]); } else if (pre.matches(dateRegex[1])) { result = DateUtils.parseDate(date, format[2], format[2] + format[0]); } else if (pre.matches(dateRegex[2])) { result = DateUtils.parseDate(date, format[3], format[3] + format[0]); } } } catch (Exception e) { e.printStackTrace(); ; result = new Date(1753, 1, 1); } } else { result = new Date(1753, 1, 1); } return result; } public static String convert2String(Object obj) { String result; if (!isNull(obj)) { try { result = String.valueOf(obj); } catch (Exception e) { e.printStackTrace(); ; result = ""; } } else { result = ""; } return result; } public static byte[] convertStreamToByte(InputStream inputStream) throws IOException { byte[] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while ((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.close(); return bos.toByteArray(); } public static ByteArrayInputStream convertByteToStream(byte[] content) { if (content == null) { return null; } return new ByteArrayInputStream(content); } public static BufferedImage convertBase64ToImage(String base64Image) { BufferedImage image = null; try { Base64.Decoder decoder = Base64.getDecoder(); byte[] bytes = decoder.decode(base64Image); image = ImageIO.read(convertByteToStream(bytes)); } catch (IOException e) { } return image; } public static String convertImageToBase64(String filePath) { String base64 = ""; FileInputStream fileInputStream = null; try { File file = new File(filePath); fileInputStream = new FileInputStream(file); byte[] bytes = ConvertOp.convertStreamToByte(fileInputStream); Base64.Encoder encoder = Base64.getEncoder(); base64 = encoder.encodeToString(bytes); base64 = "data:image/" + FilenameUtils.getExtension(filePath) + ";base64," + base64; } catch (Exception e) { e.printStackTrace(); } finally { try { if (fileInputStream != null) { fileInputStream.close(); } } catch (Exception e1) { } } return base64; } }