JSON转换 - JSONUtils.java
1 package com.demo.utils; 2 3 import com.fasterxml.jackson.core.JsonProcessingException; 4 import com.fasterxml.jackson.databind.ObjectMapper; 5 import org.apache.commons.lang3.StringUtils; 6 import org.json.JSONArray; 7 import org.json.JSONObject; 8 import org.slf4j.Logger; 9 import org.slf4j.LoggerFactory; 10 11 import java.io.IOException; 12 13 public class JSONUtils { 14 15 private static final Logger logger = LoggerFactory.getLogger(JSONUtils.class); 16 17 private JSONUtils() { 18 } 19 20 public static JSONObject parseJSONObject(String json) { 21 try { 22 return new JSONObject(json); 23 } catch (Exception e) { 24 logger.error("parse JSONObject error!", e); 25 } 26 return null; 27 } 28 29 public static JSONArray parseJSONArray(String jsonArray) { 30 try { 31 return new JSONArray(jsonArray); 32 } catch (Exception e) { 33 logger.error("parse parseJSONArray error!", e); 34 } 35 return null; 36 } 37 38 public static String getString(JSONObject obj, String name) { 39 String value = ""; 40 try { 41 value = obj.getString(name); 42 } catch (Exception e) { 43 logger.error("JSONObject get String value error!", e); 44 } 45 return value; 46 } 47 48 public static Long getLong(JSONObject obj, String name) { 49 Long value = 0L; 50 try { 51 value = obj.getLong(name); 52 } catch (Exception e) { 53 logger.error("JSONObject get Long value error!", e); 54 } 55 return value; 56 } 57 58 public static JSONArray getJSONArray(JSONObject obj, String name) { 59 try { 60 return obj.getJSONArray(name); 61 } catch (Exception e) { 62 logger.error("JSONObject get JSONArray value error!", e); 63 } 64 return null; 65 } 66 67 public static String toJson(Object obj) { 68 if (obj == null) { 69 return ""; 70 } 71 ObjectMapper mapper = new ObjectMapper(); 72 try { 73 return mapper.writeValueAsString(obj); 74 } catch (JsonProcessingException e) { 75 logger.error("JSONUtils to String error!", e); 76 } 77 return ""; 78 } 79 80 public staticT fromJson(String json, Class clazz) { 81 if (StringUtils.isBlank(json)) return null; 82 ObjectMapper mapper = new ObjectMapper(); 83 try { 84 return mapper.readValue(json, clazz); 85 } catch (IOException e) { 86 logger.error("JSONUtils fromJson error!", e); 87 } 88 return null; 89 } 90 91 92 public static T fromJsonWithoutErr(String json, Class clazz) { 93 ObjectMapper mapper = new ObjectMapper(); 94 try { 95 return mapper.readValue(json, clazz); 96 } catch (IOException ignored) { 97 } 98 return null; 99 }100 101 /**102 * 取字符串值 调用toString方法103 *104 * @param v 对象105 * @param dv 默认值106 * @return107 */108 String strValue(Object v, String dv) {109 if (v != null && v instanceof String)110 return StringUtils.isBlank(v.toString()) ? dv : v.toString();111 return v == null ? dv : v.toString();112 }113 }
Data时间 - DataUtils.java
1 package com.demo.utils; 2 3 import freemarker.template.utility.NullArgumentException; 4 import org.apache.commons.lang3.StringUtils; 5 import org.slf4j.Logger; 6 import org.slf4j.LoggerFactory; 7 8 import java.text.ParseException; 9 import java.text.SimpleDateFormat; 10 import java.util.Calendar; 11 import java.util.Date; 12 import java.util.GregorianCalendar; 13 import java.util.Set; 14 15 /** 16 * 日期转换工具 17 * 18 */ 19 public class DateUtils { 20 21 private static final Logger logger = LoggerFactory.getLogger(DateUtils.class); 22 23 public static final int TIME_SECOND = 1000; 24 25 public static final int TIME_MINUTE = 60 * TIME_SECOND; 26 27 public static final int TIME_HOUR = 60 * TIME_MINUTE; 28 29 public static final int TIME_DAY = 24 * TIME_HOUR; 30 31 public enum Pattern { 32 YEAR("yyyy"), // 33 MONTH("MM"), // 34 DAY("dd"), // 35 HOUR("HH"), // 36 MINUTE("mm"), // 37 SECOND("ss"), // 38 YEAR_MONTH("yyyy/MM"), // 39 YEAR_MONTH_SHORT("yyyyMM"), // 40 YEAR_MONTH_CN("yyyy-MM"), // 41 DATE_CN("yyyy-MM-dd"), // 42 DATE_EN("yyyy/MM/dd"), // 43 DATE_SHORT("yyyyMMdd"), // 44 TIME_FULL("HH:mm:ss"), // 45 TIME_SHORT("HHmmss"), // 46 TIME_HM("HH:mm"), // 47 TIME_HM_S("HHmm"), // 48 DATETIME_YMDHM_CN("yyyy-MM-dd HH:mm"), // 49 DATETIME_SHORT("yyyyMMddHHmmss"), // 50 DATETIME_FULL_SHORT("yyyyMMddHHmmssSSS"), // 51 DATETIME_CN("yyyy-MM-dd HH:mm:ss"), // 52 DATETIME_EN("yyyy/MM/dd HH:mm:ss"); 53 54 private final String value; 55 56 private Pattern(String value) { 57 this.value = value; 58 } 59 60 public String getValue() { 61 return value; 62 } 63 } 64 65 protected static final String[] WEEK_CN = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; 66 protected static final String[] WEEK_CN_SHORT = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"}; 67 68 /** 69 * 获日期取周中文名称 70 * 71 * @param date 72 * @return 73 */ 74 public static String getWeek(Date date) { 75 Calendar cal = Calendar.getInstance(); 76 cal.setTime(date); 77 int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1; 78 if (week_index < 0) { 79 week_index = 0; 80 } 81 return WEEK_CN[week_index]; 82 } 83 84 /** 85 * 获工作是取周中文名称 86 * 87 * @param week 88 * @return 89 */ 90 public static String getWeek(final Integer week) { 91 int index_week = 0; 92 if (week != null && week >= 0 && week <= 6) { 93 index_week = week; 94 } 95 return WEEK_CN[index_week]; 96 } 97 98 /** 99 * 获工作是取周中文名称100 *101 * @param week102 * @return103 */104 public static String getWeekShort(final Integer week) {105 int index_week = 0;106 if (week != null && week >= 0 && week <= 6) {107 index_week = week;108 }109 return WEEK_CN_SHORT[index_week];110 }111 112 113 /**114 * Return the current date115 *116 * @return - DATE117 */118 public static Date currDateTime() {119 Calendar cal = Calendar.getInstance();120 return cal.getTime();121 }122 123 /**124 * Return the current date125 *126 * @return - DATE127 */128 public static Date currDateTimeCN() {129 Date date = currDateTime();130 String dateStr = format(Pattern.DATETIME_CN, date);131 return parseDateTime(dateStr);132 }133 134 /**135 * Return the current date string136 *137 * @return - 产生的日期字符串138 */139 public static String getCurrentDateStr() {140 Calendar cal = Calendar.getInstance();141 Date currDate = cal.getTime();142 return format(currDate);143 }144 145 /**146 * Return the current date in the specified format147 *148 * @return149 */150 public static String getCurrentDateTimeStr() {151 Calendar cal = Calendar.getInstance();152 Date currDate = cal.getTime();153 154 return formatTime(currDate);155 }156 157 public static Date parse(final Pattern pattern, String dateValue) {158 if (dateValue == null) {159 return null;160 }161 SimpleDateFormat dateFormat = new SimpleDateFormat(pattern.getValue());162 163 try {164 return dateFormat.parse(dateValue);165 } catch (ParseException e) {166 logger.error(DateUtils.class.getSimpleName(), e);167 }168 169 return null;170 171 }172 173 /**174 * Parse a string and return a date timestamp175 *176 * @param timestamp177 * @return178 * @throws Exception179 */180 public static Date parse(Long timestamp) {181 return new Date(timestamp);182 }183 184 /**185 * Parse a string and return a date value186 *187 * @param dateValue188 * @return189 * @throws Exception190 */191 public static Date parseDate(String dateValue) {192 return parse(Pattern.DATE_CN, dateValue);193 }194 195 /**196 * Parse a strign and return a datetime value197 *198 * @param dateValue199 * @return200 */201 public static Date parseDateTime(String dateValue) {202 return parse(Pattern.DATETIME_CN, dateValue);203 }204 205 /**206 * String转换Date("yyyy-MM-dd HH:mm")207 *208 * @param dateValue209 * @return210 */211 public static Date parseDateTimeHM(String dateValue) {212 return parse(Pattern.DATETIME_YMDHM_CN, dateValue);213 }214 215 /**216 * 将Timestamp类型的日期转换为系统参数定义的格式的字符串。217 *218 * @param datetime 需要转换的日期。219 * @return 转换后符合给定格式的日期字符串220 */221 public static String format(Date datetime) {222 return format(Pattern.DATE_CN, datetime);223 }224 225 /**226 * 将Timestamp类型的日期转换为系统参数定义的格式的字符串。227 *228 * @param datetime 需要转换的日期。229 * @return 转换后符合给定格式的日期字符串230 */231 public static String formatTime(Date datetime) {232 return format(Pattern.DATETIME_CN, datetime);233 }234 235 public static String formatTimeYMDHM(Date dateTime) {236 return format(Pattern.DATETIME_YMDHM_CN, dateTime);237 }238 239 /**240 * 将Date类型的日期转换为系统参数定义的格式的字符串。241 *242 * @param pattern243 * @param datetime244 * @return245 */246 public static String format(final Pattern pattern, Date datetime) {247 if (datetime == null)248 return null;249 SimpleDateFormat dateFormat = new SimpleDateFormat(pattern.getValue());250 return dateFormat.format(datetime);251 }252 253 /**254 * 取得指定日期N天后的日期255 *256 * @param date257 * @param days258 * @return259 */260 public static Date addDays(Date date, int days) {261 Calendar cal = Calendar.getInstance();262 cal.setTime(date);263 264 cal.add(Calendar.DAY_OF_MONTH, days);265 266 return cal.getTime();267 }268 269 /**270 * 计算两个日期之间相差的天数271 *272 * @param date1273 * @param date2274 * @return275 */276 public static int daysBetween(Date date1, Date date2) {277 Calendar cal = Calendar.getInstance();278 cal.setTime(date1);279 long time1 = cal.getTimeInMillis();280 cal.setTime(date2);281 long time2 = cal.getTimeInMillis();282 long betweenDays = (time2 - time1) / (1000 * 3600 * 24);283 284 return Integer.parseInt(String.valueOf(betweenDays));285 }286 287 /**288 * 计算当前日期相对于"1977-12-01"的天数289 *290 * @param date291 * @return292 */293 public static long getRelativeDays(Date date) {294 Date relativeDate = DateUtils.parse(Pattern.DATE_CN, "1977-12-01");295 296 return DateUtils.daysBetween(relativeDate, date);297 }298 299 public static Date getDateBeforTwelveMonth() {300 String date = "";301 Calendar calendar = Calendar.getInstance();302 calendar.setTime(currDateTime());303 int year = calendar.get(Calendar.YEAR) - 1;304 int month = calendar.get(Calendar.MONTH) + 1;305 if (month > 9) {306 date = String.valueOf(year) + "-" + month + "-01";307 } else {308 date = String.valueOf(year) + "-0" + month + "-01";309 }310 311 return parseDate(date);312 }313 314 /**315 * 传入时间字符串,加一天后返回Date316 *317 * @param date 时间 格式 YYYY-MM-DD318 * @return319 */320 public static Date addDate(String date) {321 if (date == null) {322 return null;323 }324 325 Date tempDate = parse(Pattern.DATE_CN, date);326 String year = format(Pattern.YEAR, tempDate);327 String month = format(Pattern.MONTH, tempDate);328 String day = format(Pattern.DAY, tempDate);329 330 GregorianCalendar calendar = new GregorianCalendar(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day));331 332 calendar.add(GregorianCalendar.DATE, 1);333 return calendar.getTime();334 }335 336 public static Integer getOfType(Date date, int type) {337 if (date == null) {338 return null;339 }340 Calendar c = Calendar.getInstance();341 c.setTime(date);342 int t = Calendar.YEAR;343 switch (type) {344 case Calendar.MONTH:345 t = Calendar.MONTH;346 return c.get(t) + 1;347 case Calendar.DATE:348 t = Calendar.DATE;349 break;350 case Calendar.HOUR:351 t = Calendar.HOUR;352 break;353 case Calendar.MINUTE:354 t = Calendar.MINUTE;355 break;356 case Calendar.SECOND:357 t = Calendar.SECOND;358 break;359 case Calendar.DAY_OF_WEEK:360 t = Calendar.DAY_OF_WEEK;361 break;362 case Calendar.DAY_OF_WEEK_IN_MONTH:363 t = Calendar.DAY_OF_WEEK_IN_MONTH;364 break;365 default:366 break;367 }368 return c.get(t);369 }370 371 public static Date getFirstDayOfMouth(Date date) {372 if (date == null) {373 return null;374 }375 Calendar c = Calendar.getInstance();376 c.setTime(date);377 c.set(Calendar.DAY_OF_MONTH, 1);378 c.set(Calendar.HOUR_OF_DAY, 0);379 c.set(Calendar.MINUTE, 0);380 c.set(Calendar.SECOND, 0);381 c.set(Calendar.MILLISECOND, 0);382 return c.getTime();383 }384 385 /**386 * 时间去掉时分秒(yyy-MM-dd 00:00:00.000)387 *388 * @param dateTime389 * @return390 */391 public static Date clearTime(Date dateTime) {392 if (dateTime == null) {393 return null;394 }395 Calendar c = Calendar.getInstance();396 c.setTime(dateTime);397 c.set(Calendar.HOUR_OF_DAY, 0);398 c.set(Calendar.MINUTE, 0);399 c.set(Calendar.SECOND, 0);400 c.set(Calendar.MILLISECOND, 0);401 return c.getTime();402 }403 404 /**405 * 时间去掉毫秒(yyy-MM-dd HH:mm:ss.000)406 *407 * @param dateTime408 * @return409 */410 public static Date clearTimeMS(Date dateTime) {411 if (dateTime == null) {412 return null;413 }414 Calendar c = Calendar.getInstance();415 c.setTime(dateTime);416 c.set(Calendar.MILLISECOND, 0);417 return c.getTime();418 }419 420 /**421 * 日期最后一刻(yyy-MM-dd 23:59:59.999)422 *423 * @param dateTime424 * @return425 */426 public static Date endTime(Date dateTime) {427 if (dateTime == null) {428 return null;429 }430 Calendar c = Calendar.getInstance();431 c.setTime(dateTime);432 c.set(Calendar.HOUR_OF_DAY, 23);433 c.set(Calendar.MINUTE, 59);434 c.set(Calendar.SECOND, 59);435 c.set(Calendar.MILLISECOND, 999);436 return c.getTime();437 }438 439 public static Date addHours(Date date, int hours) {440 Calendar cal = Calendar.getInstance();441 cal.setTime(date);442 cal.add(Calendar.HOUR_OF_DAY, hours);443 return cal.getTime();444 }445 446 public static Date addMinutes(Date date, int minutes) {447 Calendar cal = Calendar.getInstance();448 cal.setTime(date);449 cal.add(Calendar.MINUTE, minutes);450 return cal.getTime();451 }452 453 /**454 * 计算两个日期之间的工作日数455 *456 * @param start 开始日期457 * @param end 结束日期458 * @param workday 适用工作日(1周日2周一3周二4周三5周四6周五7周六)459 * @return 工作日数460 */461 public static int workdays(Date start, Date end, Setworkday) {462 if (start == null || end == null) {463 throw new NullArgumentException("start ro end date is require!");464 }465 Calendar cal = Calendar.getInstance();466 cal.setTime(start);467 int count = 0;468 while (cal.getTime().before(addDays(end, 1))) {469 if (workday.contains(getOfType(cal.getTime(), Calendar.DAY_OF_WEEK))) {470 count++;471 }472 cal.add(Calendar.DAY_OF_MONTH, 1);473 }474 return count;475 }476 477 /**478 * 计算两个日期之间的工作日数479 *480 * @param start 开始日期481 * @param end 结束日期482 * @param workday 适用工作日(1周日2周一3周二4周三5周四6周五7周六)483 * @return 工作日数484 */485 public static int workdays(Date start, Date end, String workday) {486 if (start == null || end == null) {487 throw new NullArgumentException("start ro end date is require!");488 }489 Calendar cal = Calendar.getInstance();490 cal.setTime(start);491 int count = 0;492 while (cal.getTime().before(addDays(end, 1))) {493 Integer tmp = getOfType(cal.getTime(), Calendar.DAY_OF_WEEK);494 if (tmp != null && workday.contains(tmp.toString())) {495 count++;496 }497 cal.add(Calendar.DAY_OF_MONTH, 1);498 }499 return count;500 }501 502 /**503 * 1234567转中文504 *505 * @param workday506 * @param separator 分割符507 * @return508 */509 public static String convertWorkdays(String workday, String separator) {510 return convertWorkdays(workday, separator, "zh_cn_short");511 }512 513 /**514 * 1234567转中文515 *516 * @param workday517 * @param separator 分割符518 * @param nameType 中文(全、简写)519 * @return520 */521 public static String convertWorkdays(String workday, String separator, String nameType) {522 if (StringUtils.isBlank(workday)) {523 return "-";524 }525 StringBuilder sb = new StringBuilder();526 for (int i = 0; i < workday.length(); i++) {527 if (sb.length() > 0) {528 sb.append(separator);529 }530 String day = String.valueOf(workday.charAt(i));531 if (StringUtils.isNumeric(day)) {532 if ("zh_cn".equals(nameType)) {533 sb.append(DateUtils.getWeek(Integer.valueOf(day)));534 } else if ("zh_cn_short".equals(nameType)) {535 sb.append(DateUtils.getWeekShort(Integer.valueOf(day)));536 }537 }538 }539 return sb.toString();540 }541 542 /**543 * 时间偏移544 *545 * @param date 时间546 * @param offsetDay 天数547 * @param offsetMin 分钟数548 * @return 跨越天数(以0点为准)549 */550 public static int calcOffset(Date date, int offsetDay, int offsetMin) {551 // Date date = DateUtils.parse(Pattern.TIME_HM_S, hm);552 if (date == null) return 0;553 Calendar cal = Calendar.getInstance();554 cal.setTime(date);555 Date d0 = cal.getTime();556 Date d1 = addDays(date, offsetDay);557 Date d2 = addMinutes(d1, offsetMin);558 Date d3 = d1.after(d2) ? d1 : d2;559 d3 = clearTime(d3);560 int n = 0;561 do {562 d3 = addDays(d3, -1);563 if (d3.after(d0) && !d2.before(d3)) {564 n++;565 }566 } while (d3.after(d0));567 return n;568 }569 570 /**571 * 分钟偏移572 *573 * @param date 时间574 * @param offsetDay 天数575 * @param offsetMin 分钟数576 * @return577 */578 public static Date moveMinute(Date date, int offsetDay, int offsetMin) {579 if (date == null) return null;580 Date d1 = addDays(date, offsetDay);581 Date d2 = addMinutes(d1, offsetMin);582 return addDays(d2, -offsetDay);583 }584 585 /**586 * 分钟偏移587 *588 * @param hm 时分589 * @param offsetDay 天数590 * @param offsetMin 分钟数591 * @return592 */593 public static String moveMinute(String hm, int offsetDay, int offsetMin) {594 Date date = DateUtils.parse(Pattern.TIME_HM_S, hm);595 if (date == null) return null;596 // logger.info("{}|{}|{}", formatTime(d1), formatTime(d2), formatTime(d3));597 return format(Pattern.TIME_HM_S, moveMinute(date, offsetDay, offsetMin));598 }599 600 601 /**602 * 两个日期取小值603 *604 * @param date1605 * @param date2606 * @return607 */608 public static Date min(Date date1, Date date2) {609 if (date1 == null) return date2;610 else if (date2 == null) return date1;611 else if (date1.after(date2)) return date2;612 return date1;613 }614 615 /**616 * 两个日期取大值617 *618 * @param date1619 * @param date2620 * @return621 */622 public static Date max(Date date1, Date date2) {623 if (date1 == null) return date2;624 else if (date2 == null) return date1;625 else if (date1.before(date2)) return date2;626 return date1;627 }628 629 /**630 * Title: exchangeDate
631 *Description:
632 *633 * @param nyr 取年月日634 * @param sfm 取时分635 * @return636 */637 public static Date exchangeDate(Date nyr, Date sfm) {638 Date date = new Date();639 try {640 String sfmStr = format(Pattern.TIME_HM, sfm);641 String nyrStr = format(nyr);642 date = parse(Pattern.DATETIME_YMDHM_CN, nyrStr + " " + sfmStr);643 } catch (Exception e) {644 }645 return date;646 }647 648 public static String exchangeString(Date nyr, Date sfm) {649 Date date = new Date();650 try {651 String sfmStr = format(Pattern.TIME_HM, sfm);652 String nyrStr = format(nyr);653 return nyrStr + " " + sfmStr;654 } catch (Exception e) {655 }656 return formatTimeYMDHM(date);657 }658 659 }
System系统 - SystemUtil.java
1 package com.sf.shiva.trtms.ground.core.utils; 2 3 import java.net.InetAddress; 4 import java.net.NetworkInterface; 5 import java.net.UnknownHostException; 6 import java.util.Enumeration; 7 import java.util.Properties; 8 9 10 import org.slf4j.Logger; 11 import org.slf4j.LoggerFactory; 12 13 14 public class SystemUtil { 15 16 17 private static Logger LOG = LoggerFactory.getLogger(SystemUtil.class); 18 19 20 /** 21 * 返回本机IP的字符串形式 22 * 23 * @return 24 * @throws Exception 25 */ 26 public static String getLocalIp() throws Exception { 27 InetAddress inetAddress; 28 29 30 inetAddress = getSystemLocalIP(); 31 if (null != inetAddress) { 32 String ip = inetAddress.getHostAddress(); 33 LOG.info("获取的本机IP为{}", ip); 34 return ip; 35 } 36 throw new Exception("获取ip失败"); 37 } 38 39 40 /** 41 * 获取本机ip的InetAddress形式 42 * 43 * @return 44 * @throws Exception 45 */ 46 private static InetAddress getSystemLocalIP() throws Exception { 47 48 49 InetAddress inetAddress; 50 String osName = getSystemOsName(); 51 if ("Windows".compareToIgnoreCase(osName) < 0) { 52 inetAddress = getWinLocalIp(); 53 } else { 54 inetAddress = getUnixLocalIp(); 55 } 56 return inetAddress; 57 } 58 59 60 /** 61 * 获取类Unix系统的IP 62 * 63 * @return 64 * @throws Exception 65 */ 66 private static InetAddress getUnixLocalIp() throws Exception { 67 EnumerationnetInterfaces = NetworkInterface.getNetworkInterfaces(); 68 if (null == netInterfaces) { 69 throw new Exception("获取类Unix系统的IP失败"); 70 } 71 InetAddress ip = null; 72 while (netInterfaces.hasMoreElements()) { 73 NetworkInterface ni = netInterfaces.nextElement(); 74 if (ni.isUp()) { 75 Enumeration addressEnumeration = ni.getInetAddresses(); 76 while (addressEnumeration.hasMoreElements()) { 77 ip = addressEnumeration.nextElement(); 78 if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && !ip.getHostAddress().contains(":")) { 79 return ip; 80 } 81 } 82 } 83 } 84 throw new Exception("获取类Unix系统的IP失败"); 85 } 86 87 88 /** 89 * 获取window系统的ip,貌似不会返回null 90 * 91 * @return 92 * @throws UnknownHostException 93 */ 94 private static InetAddress getWinLocalIp() throws UnknownHostException { 95 InetAddress inetAddress = InetAddress.getLocalHost(); 96 return inetAddress; 97 } 98 99 100 /**101 * 获取操作系统名称102 * 103 * @return104 */105 private static String getSystemOsName() {106 Properties props = System.getProperties();107 String osName = props.getProperty("os.name");108 return osName;109 }110 111 112 /**113 * 获取内存信息114 * 115 * @return116 */117 public static final String getRamInfo() {118 Runtime rt = Runtime.getRuntime();119 return "RAM:" + rt.totalMemory()/1024/1024 + "MB total," + rt.freeMemory()/1024/1024 + "MB free.";120 }121 122 123 public static void main(String[] args) {124 try {125 getLocalIp();126 } catch (Exception e) {127 LOG.error("failed");128 }129 }130 }
MySql加解密 - MySqlCryptoUtils.java
1 package com.sf.shiva.trtms.ground.core.utils; 2 3 import com.sf.shiva.trtms.ground.core.error.UnsupportedRuntimeException; 4 import org.apache.commons.codec.binary.Hex; 5 import org.slf4j.Logger; 6 import org.slf4j.LoggerFactory; 7 8 import javax.crypto.Cipher; 9 import javax.crypto.spec.SecretKeySpec;10 import java.io.UnsupportedEncodingException;11 12 public class MySqlCryptoUtils {13 14 private static final Logger logger = LoggerFactory.getLogger(MySqlCryptoUtils.class);15 16 private MySqlCryptoUtils() {17 }18 19 /**20 * AES-密钥21 *22 * @param key--密钥串23 * @param encoding--编码24 * @return25 */26 private static SecretKeySpec generateMySQLAESKey(final String key, final String encoding) {27 try {28 final byte[] finalKey = new byte[16];29 int i = 0;30 for (byte b : key.getBytes(encoding))31 finalKey[i++ % 16] ^= b;32 return new SecretKeySpec(finalKey, "AES");33 } catch (UnsupportedEncodingException e) {34 throw new UnsupportedRuntimeException(e);35 }36 }37 38 /**39 * 字符串AES加密(mysql)40 *41 * @param src-- 需要加密的字符串42 * @param key-- 密钥43 * @return44 */45 public static String mysqlEncryptToHex(String src, String key) {46 String encryptString = null;47 try {48 Cipher encryptCipher = Cipher.getInstance("AES");49 SecretKeySpec secretKeySpec = generateMySQLAESKey(key, "UTF-8");// 密钥50 encryptCipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);51 52 byte[] bytes = encryptCipher.doFinal(src.getBytes());53 encryptString = new String(Hex.encodeHex(bytes));54 } catch (Exception e) {55 logger.error("The MySqlCrypto.mysqlDecryptToHex Exception!", e);56 }57 return encryptString;58 }59 60 /**61 * 字符串AES解密(mysql)62 *63 * @param value--加密后的十六进制字符串64 * @param key-- 密钥65 * @return66 */67 public static String mysqlDecryptToHex(String value, String key) {68 String decryptString = null;69 try {70 Cipher decryptCipher = Cipher.getInstance("AES");71 SecretKeySpec secretKeySpec = generateMySQLAESKey(key, "UTF-8");// 密钥72 decryptCipher.init(Cipher.DECRYPT_MODE, secretKeySpec);73 74 byte[] bytes = Hex.decodeHex(value.toCharArray());75 bytes = decryptCipher.doFinal(bytes);76 decryptString = new String(bytes);77 } catch (Exception e) {78 logger.error("The MySqlCrypto.mysqlDecryptToHex Exception!", e);79 }80 return decryptString;81 }82 }
1 package com.sf.shiva.trtms.ground.core.error; 2 3 /** 4 * 不支持-运行时异常 5 * 6 */ 7 public class UnsupportedRuntimeException extends GrdRuntimeException { 8 9 /**10 * 不用的11 */12 private static final long serialVersionUID = 1L;13 14 public UnsupportedRuntimeException() {15 super("Unsupported Runtime Exception!");16 }17 18 public UnsupportedRuntimeException(Throwable e) {19 super("Unsupported Runtime Exception!", e);20 }21 22 public UnsupportedRuntimeException(String code, String msg) {23 super(msg);24 this.code = code;25 }26 }
SQLUtils - SQLUtils.java
1 package com.sf.shiva.trtms.ground.core.utils; 2 3 import java.util.regex.Pattern; 4 5 public class SQLUtils { 6 7 private SQLUtils() { 8 } 9 10 private final static String[] patternList = {".*(update|UPDATE) .*(set|SET) .*", ".*(delete|DELETE_PLAN) .*(from|FROM) .*", ".*(drop|DROP) .*", ".*(alter|ALTER) .*(table|TABLE) .*", ".*(truncate|TRUNCATE) .*"};11 12 public static boolean isSelectSql(String sql) {13 if ( org.apache.commons.lang3.StringUtils.isBlank(sql)) {14 return false;15 }16 for (String pattern : patternList) {17 boolean ok = Pattern.matches(pattern, sql);18 if (ok) return false;19 }20 return true;21 }22 23 public enum Type {24 SELECT, UPDATE, CREATE, DELETE, UNKNOW, DROP, ALTER, TRUNCATE25 }26 27 public static Type parseType(String sql) {28 String tmp = org.apache.commons.lang3.StringUtils.trim(sql);29 String[] lines = tmp.split("\n");30 String sqlStart = "";31 if (lines.length <= 1) {32 sqlStart = tmp;33 } else {34 int i = 0;35 for (String line : lines) {36 if ( org.apache.commons.lang3.StringUtils.isBlank(line)) {37 continue;38 }39 if (line.startsWith("/*")) {40 i = 1;41 } else if (i == 0 && !line.startsWith("-- ") && !line.startsWith("#")) {42 sqlStart = line;43 break;44 } else if (line.startsWith("*/")) {45 i = 0;46 }47 }48 }49 50 if (sqlStart.startsWith("select") || sqlStart.startsWith("SELECT")) {51 return Type.SELECT;52 } else if (sqlStart.startsWith("update") || sqlStart.startsWith("UPDATE")) {53 return Type.UPDATE;54 } else if (sqlStart.startsWith("create") || sqlStart.startsWith("CREATE")) {55 return Type.CREATE;56 } else if (sqlStart.startsWith("delete") || sqlStart.startsWith("DELETE_PLAN")) {57 return Type.DELETE;58 } else if (sqlStart.startsWith("drop") || sqlStart.startsWith("DROP")) {59 return Type.DROP;60 } else if (sqlStart.startsWith("alter") || sqlStart.startsWith("ALTER")) {61 return Type.ALTER;62 } else if (sqlStart.startsWith("truncate") || sqlStart.startsWith("TRUNCATE")) {63 return Type.TRUNCATE;64 }65 return Type.UNKNOW;66 }67 }
MapUtil请求URL - MapUtil.java
1 /* 2 * Copyright (c) 2017, S.F. Express Inc. All rights reserved. 3 */ 4 package com.sf.shiva.trtms.ground.core.utils; 5 6 import org.dom4j.Document; 7 import org.dom4j.DocumentException; 8 import org.dom4j.DocumentHelper; 9 import org.dom4j.Element; 10 import org.json.JSONObject; 11 import org.slf4j.LoggerFactory; 12 13 import java.io.BufferedReader; 14 import java.io.IOException; 15 import java.io.InputStreamReader; 16 import java.io.UnsupportedEncodingException; 17 import java.net.URL; 18 import java.net.URLConnection; 19 import java.net.URLEncoder; 20 21 22 /** 23 * 请求url操作工具类 24 */ 25 public class MapUtil { 26 private static org.slf4j.Logger logger = LoggerFactory.getLogger(MapUtil.class); 27 28 //请求url获取string字符串 29 public static String loadUrl(String url) { 30 StringBuilder json = new StringBuilder(); 31 BufferedReader in = null; 32 try { 33 URL server = new URL(url); 34 URLConnection yc = server.openConnection(); 35 yc.setRequestProperty("accept", "*/*"); 36 yc.setRequestProperty("connection", "Keep-Alive"); 37 //建立连接 38 yc.connect(); 39 40 in = new BufferedReader(new InputStreamReader( 41 yc.getInputStream(), "utf-8"));//防止乱码 42 String inputLine = null; 43 while ((inputLine = in.readLine()) != null) { 44 json.append(inputLine); 45 } 46 } catch (IOException e) { 47 logger.error("An anomaly occurs in the analysis of latitude and longitude:{}", e.getMessage()); 48 } finally { 49 IOUtils.close(in); 50 } 51 return json.toString(); 52 } 53 54 //解析获取json数据 55 public static String getKey(String url, String key) { 56 JSONObject obj = new JSONObject(url); 57 return obj.getString(key); 58 } 59 60 61 /** 62 * 拼装解析经纬度url 63 * 64 * @param citys 省市 省市之间用,分割,还要判断市是否有/,如有,取第一个市 65 * @return 66 * @params url 图吧url 67 */ 68 public static String convertCityUrl(String url, String citys) { 69 StringBuffer sb = new StringBuffer(url); 70 String[] cs = citys.split(","); 71 String province = cs[0]; 72 String city = cs[1]; 73 if (city.contains("/")) { 74 city = city.split("/")[0]; 75 } 76 try { 77 sb.append("/geocoding/getLatLonByAddress.json?encode=UTF-8&customer=2").append("&keyword=").append(URLEncoder.encode(province + city, "UTF-8")); 78 sb.append("&city=").append(URLEncoder.encode(city, "UTF-8")); 79 80 } catch (UnsupportedEncodingException e) { 81 return null; 82 } 83 return sb.toString(); 84 } 85 86 /** 87 * 拼装根据经纬度获取距离的url 88 * 89 * @param oriLatLon 始发城市经纬度 如 19.232,123.232 90 * @param destLatLon 目的城市经纬度 91 * @param mid :['0', "地址到地址"], ['1', "网点到网点"],['2', "地址到网点"],['3', "网点到地址"],['4', "车辆当前位置到网点"] 92 * @param style : ['0', "最快路线"],['1', "最短路线"], ['6', "避开高速"],['3', "步行"] 93 * @return 94 * @params url 图吧url 95 */ 96 public static String convertDistanceUrl(String url, String oriLatLon, String destLatLon, String mid, int style) { 97 StringBuffer sb = new StringBuffer(url); 98 sb.append("/route/getDriveByLatLon.xml?customer=2&encode=UTF-8"); 99 sb.append("&orig=").append(oriLatLon).append("&dest=").append(destLatLon);100 if (mid != null && !"".equals(mid)) {101 sb.append("&mid=").append(mid);102 }103 sb.append("&style=").append(style).append("&inGb=g02&outGb=g02");104 return sb.toString();105 }106 107 //根据经纬度解析xml获取距离108 public static String getDistance(String xml) {109 String value = null;110 try {111 Document doc = DocumentHelper.parseText(xml);112 Element root = doc.getRootElement();113 value = root.elementText("distance");114 } catch (DocumentException e) {115 return null;116 }117 return value;118 }119 120 }
BaseResult接口返回 - aseResult.java
1 package com.sf.shiva.trtms.ground.core.http; 2 3 import java.io.Serializable; 4 import java.util.ArrayList; 5 import java.util.Collection; 6 7 public class BaseResultimplements Serializable { 8 9 private int status = 0;10 private String code;11 private String msg;12 13 private Collection records = new ArrayList<>();14 15 public BaseResult() {16 }17 18 public BaseResult(T record) {19 this.status = 1;20 this.records = new ArrayList<>();21 this.records.add(record);22 }23 24 public BaseResult(Collection records) {25 if (records != null && !records.isEmpty()) {26 this.status = 1;27 this.records = records;28 }29 }30 31 public Collection getRecords() {32 return records;33 }34 35 public void setRecords(Collection records) {36 if (records != null && !records.isEmpty()) {37 this.status = 1;38 this.records = records;39 }40 }41 42 public int getStatus() {43 return status;44 }45 46 public void setStatus(int status) {47 this.status = status;48 }49 50 public String getCode() {51 return code;52 }53 54 public void setCode(String code) {55 this.code = code;56 }57 58 public String getMsg() {59 return msg;60 }61 62 public void setMsg(String msg) {63 this.msg = msg;64 }65 66 67 public boolean isSuccess() {68 return status == 1;69 }70 71 public boolean isEmpty() {72 return records == null || records.isEmpty();73 }74 75 public T get() {76 if (isEmpty()) {77 return null;78 }79 return records.iterator().next();80 }81 }
PlatformUtils获取本机IP - PlatformUtils.java
1 package com.sf.shiva.trtms.ground.core.utils; 2 3 import org.slf4j.Logger; 4 import org.slf4j.LoggerFactory; 5 6 import java.net.InetAddress; 7 import java.net.NetworkInterface; 8 import java.net.SocketException; 9 import java.net.UnknownHostException;10 11 public class PlatformUtils {12 13 private static final Logger LOG = LoggerFactory.getLogger(PlatformUtils.class);14 15 private PlatformUtils() {16 }17 18 /**19 * 获取本机器的IP地址20 *21 * @return22 */23 public static String getLocalHostIp() {24 try {25 InetAddress addr = InetAddress.getLocalHost();26 return addr.getHostAddress();27 } catch (UnknownHostException e) {28 LOG.error("getLocalHostIp()", e);29 return "N/A";30 }31 }32 33 /**34 * 获取本机器的MAC地址35 *36 * @return37 * @throws Exception38 */39 public static String getLocalHostMac() {40 try {41 InetAddress inetAddress = InetAddress.getLocalHost();42 NetworkInterface networkInterface = NetworkInterface.getByInetAddress(inetAddress);43 StringBuilder sb = new StringBuilder();44 // 获取网卡,获取地址45 byte[] mac = networkInterface.getHardwareAddress();46 for (int i = 0; i < mac.length; i++) {47 if (i != 0) {48 sb.append(":");49 }50 // 字节转换为整数51 int temp = mac[i] & 0xff;52 String str = Integer.toHexString(temp);53 if (str.length() == 1) {54 sb.append("0" + str);55 } else {56 sb.append(str);57 }58 }59 return sb.toString().toUpperCase();60 } catch (UnknownHostException | SocketException ue) {61 LOG.error("getLocalHostMac()", ue);62 return "N/A";63 }64 }65 }