/**
|
* Copyright (c) 2015-2016, Chill Zhuang 庄骞 (smallchill@163.com).
|
* <p>
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
* <p>
|
* http://www.apache.org/licenses/LICENSE-2.0
|
* <p>
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
package com.dsh.account.util;
|
|
|
import java.io.IOException;
|
import java.io.PrintWriter;
|
import java.io.StringWriter;
|
import java.lang.reflect.Array;
|
import java.math.BigDecimal;
|
import java.net.URISyntaxException;
|
import java.util.*;
|
import java.util.Map.Entry;
|
|
/**
|
* 高频方法集合类
|
*/
|
public class ToolUtil {
|
|
/**
|
* 获取随机位数的字符串
|
*
|
* @author fengshuonan
|
* @Date 2017/8/24 14:09
|
*/
|
public static String getRandomString(int length) {
|
String base = "abcdefghijklmnopqrstuvwxyz0123456789";
|
Random random = new Random();
|
StringBuffer sb = new StringBuffer();
|
for (int i = 0; i < length; i++) {
|
int number = random.nextInt(base.length());
|
sb.append(base.charAt(number));
|
}
|
return sb.toString();
|
}
|
|
/**
|
* 判断一个对象是否是时间类型
|
*
|
* @author stylefeng
|
* @Date 2017/4/18 12:55
|
*/
|
public static String dateType(Object o) {
|
if (o instanceof Date) {
|
return DateUtil.getDay((Date) o);
|
} else {
|
return o.toString();
|
}
|
}
|
|
/**
|
* 获取异常的具体信息
|
*
|
* @author fengshuonan
|
* @Date 2017/3/30 9:21
|
* @version 2.0
|
*/
|
public static String getExceptionMsg(Exception e) {
|
StringWriter sw = new StringWriter();
|
try {
|
e.printStackTrace(new PrintWriter(sw));
|
} finally {
|
try {
|
sw.close();
|
} catch (IOException e1) {
|
e1.printStackTrace();
|
}
|
}
|
return sw.getBuffer().toString().replaceAll("\\$", "T");
|
}
|
|
/**
|
* 比较两个对象是否相等。<br>
|
* 相同的条件有两个,满足其一即可:<br>
|
* 1. obj1 == null && obj2 == null; 2. obj1.equals(obj2)
|
*
|
* @param obj1 对象1
|
* @param obj2 对象2
|
* @return 是否相等
|
*/
|
public static boolean equals(Object obj1, Object obj2) {
|
return (obj1 != null) ? (obj1.equals(obj2)) : (obj2 == null);
|
}
|
|
/**
|
* 计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度
|
*
|
* @param obj 被计算长度的对象
|
* @return 长度
|
*/
|
public static int length(Object obj) {
|
if (obj == null) {
|
return 0;
|
}
|
if (obj instanceof CharSequence) {
|
return ((CharSequence) obj).length();
|
}
|
if (obj instanceof Collection) {
|
return ((Collection<?>) obj).size();
|
}
|
if (obj instanceof Map) {
|
return ((Map<?, ?>) obj).size();
|
}
|
|
int count;
|
if (obj instanceof Iterator) {
|
Iterator<?> iter = (Iterator<?>) obj;
|
count = 0;
|
while (iter.hasNext()) {
|
count++;
|
iter.next();
|
}
|
return count;
|
}
|
if (obj instanceof Enumeration) {
|
Enumeration<?> enumeration = (Enumeration<?>) obj;
|
count = 0;
|
while (enumeration.hasMoreElements()) {
|
count++;
|
enumeration.nextElement();
|
}
|
return count;
|
}
|
if (obj.getClass().isArray() == true) {
|
return Array.getLength(obj);
|
}
|
return -1;
|
}
|
|
/**
|
* 对象中是否包含元素
|
*
|
* @param obj 对象
|
* @param element 元素
|
* @return 是否包含
|
*/
|
public static boolean contains(Object obj, Object element) {
|
if (obj == null) {
|
return false;
|
}
|
if (obj instanceof String) {
|
if (element == null) {
|
return false;
|
}
|
return ((String) obj).contains(element.toString());
|
}
|
if (obj instanceof Collection) {
|
return ((Collection<?>) obj).contains(element);
|
}
|
if (obj instanceof Map) {
|
return ((Map<?, ?>) obj).values().contains(element);
|
}
|
|
if (obj instanceof Iterator) {
|
Iterator<?> iter = (Iterator<?>) obj;
|
while (iter.hasNext()) {
|
Object o = iter.next();
|
if (equals(o, element)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
if (obj instanceof Enumeration) {
|
Enumeration<?> enumeration = (Enumeration<?>) obj;
|
while (enumeration.hasMoreElements()) {
|
Object o = enumeration.nextElement();
|
if (equals(o, element)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
if (obj.getClass().isArray() == true) {
|
int len = Array.getLength(obj);
|
for (int i = 0; i < len; i++) {
|
Object o = Array.get(obj, i);
|
if (equals(o, element)) {
|
return true;
|
}
|
}
|
}
|
return false;
|
}
|
|
/**
|
* 对象是否不为空(新增)
|
*
|
* @param o String,List,Map,Object[],int[],long[]
|
* @return
|
*/
|
public static boolean isNotEmpty(Object o) {
|
return !isEmpty(o);
|
}
|
|
/**
|
* 对象是否为空
|
*
|
* @param o String,List,Map,Object[],int[],long[]
|
* @return
|
*/
|
@SuppressWarnings("rawtypes")
|
public static boolean isEmpty(Object o) {
|
if (o == null) {
|
return true;
|
}
|
if (o instanceof String) {
|
if (o.toString().trim().equals("")) {
|
return true;
|
}
|
} else if (o instanceof List) {
|
if (((List) o).size() == 0) {
|
return true;
|
}
|
} else if (o instanceof Map) {
|
if (((Map) o).size() == 0) {
|
return true;
|
}
|
} else if (o instanceof Set) {
|
if (((Set) o).size() == 0) {
|
return true;
|
}
|
} else if (o instanceof Object[]) {
|
if (((Object[]) o).length == 0) {
|
return true;
|
}
|
} else if (o instanceof int[]) {
|
if (((int[]) o).length == 0) {
|
return true;
|
}
|
} else if (o instanceof long[]) {
|
if (((long[]) o).length == 0) {
|
return true;
|
}
|
}
|
return false;
|
}
|
|
/**
|
* 对象组中是否存在 Empty Object
|
*
|
* @param os 对象组
|
* @return
|
*/
|
public static boolean isOneEmpty(Object... os) {
|
for (Object o : os) {
|
if (isEmpty(o)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
|
/**
|
* 对象组中是否全是 Empty Object
|
*
|
* @param os
|
* @return
|
*/
|
public static boolean isAllEmpty(Object... os) {
|
for (Object o : os) {
|
if (!isEmpty(o)) {
|
return false;
|
}
|
}
|
return true;
|
}
|
|
/**
|
* 是否为数字
|
*
|
* @param obj
|
* @return
|
*/
|
public static boolean isNum(Object obj) {
|
try {
|
Integer.parseInt(obj.toString());
|
} catch (Exception e) {
|
return false;
|
}
|
return true;
|
}
|
|
/**
|
* 如果为空, 则调用默认值
|
*
|
* @param str
|
* @return
|
*/
|
public static Object getValue(Object str, Object defaultValue) {
|
if (isEmpty(str)) {
|
return defaultValue;
|
}
|
return str;
|
}
|
|
|
/**
|
* 强转->string,并去掉多余空格
|
*
|
* @param str
|
* @return
|
*/
|
public static String toStr(Object str) {
|
return toStr(str, "");
|
}
|
|
/**
|
* 强转->string,并去掉多余空格
|
*
|
* @param str
|
* @param defaultValue
|
* @return
|
*/
|
public static String toStr(Object str, String defaultValue) {
|
if (null == str) {
|
return defaultValue;
|
}
|
return str.toString().trim();
|
}
|
|
/**
|
* 强转->int
|
*
|
* @param obj
|
* @return
|
*/
|
// public static int toInt(Object value) {
|
// return toInt(value, -1);
|
// }
|
|
/**
|
* 强转->int
|
*
|
* @param obj
|
* @param defaultValue
|
* @return
|
*/
|
// public static int toInt(Object value, int defaultValue) {
|
// return Convert.toInt(value, defaultValue);
|
// }
|
|
/**
|
* 强转->long
|
*
|
* @param obj
|
* @return
|
*/
|
// public static long toLong(Object value) {
|
// return toLong(value, -1);
|
// }
|
|
/**
|
* 强转->long
|
*
|
* @param obj
|
* @param defaultValue
|
* @return
|
*/
|
// public static long toLong(Object value, long defaultValue) {
|
// return Convert.toLong(value, defaultValue);
|
// }
|
//
|
// public static String encodeUrl(String url) {
|
// return URLKit.encode(url, CharsetKit.UTF_8);
|
// }
|
//
|
// public static String decodeUrl(String url) {
|
// return URLKit.decode(url, CharsetKit.UTF_8);
|
// }
|
|
/**
|
* map的key转为小写
|
*
|
* @param map
|
* @return Map<String , Object>
|
*/
|
public static Map<String, Object> caseInsensitiveMap(Map<String, Object> map) {
|
Map<String, Object> tempMap = new HashMap<>();
|
for (String key : map.keySet()) {
|
tempMap.put(key.toLowerCase(), map.get(key));
|
}
|
return tempMap;
|
}
|
|
/**
|
* 获取map中第一个数据值
|
*
|
* @param <K> Key的类型
|
* @param <V> Value的类型
|
* @param map 数据源
|
* @return 返回的值
|
*/
|
public static <K, V> V getFirstOrNull(Map<K, V> map) {
|
V obj = null;
|
for (Entry<K, V> entry : map.entrySet()) {
|
obj = entry.getValue();
|
if (obj != null) {
|
break;
|
}
|
}
|
return obj;
|
}
|
|
/**
|
* 创建StringBuilder对象
|
*
|
* @return StringBuilder对象
|
*/
|
public static StringBuilder builder(String... strs) {
|
final StringBuilder sb = new StringBuilder();
|
for (String str : strs) {
|
sb.append(str);
|
}
|
return sb;
|
}
|
|
/**
|
* 创建StringBuilder对象
|
*
|
* @return StringBuilder对象
|
*/
|
public static void builder(StringBuilder sb, String... strs) {
|
for (String str : strs) {
|
sb.append(str);
|
}
|
}
|
|
/**
|
* 去掉指定后缀
|
*
|
* @param str 字符串
|
* @param suffix 后缀
|
* @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串
|
*/
|
public static String removeSuffix(String str, String suffix) {
|
if (isEmpty(str) || isEmpty(suffix)) {
|
return str;
|
}
|
|
if (str.endsWith(suffix)) {
|
return str.substring(0, str.length() - suffix.length());
|
}
|
return str;
|
}
|
|
/**
|
* 当前时间
|
*
|
* @author stylefeng
|
* @Date 2017/5/7 21:56
|
*/
|
public static String currentTime() {
|
return DateUtil.getTime();
|
}
|
|
|
/**
|
* 判断是否是windows操作系统
|
*
|
* @author stylefeng
|
* @Date 2017/5/24 22:34
|
*/
|
public static Boolean isWinOs() {
|
String os = System.getProperty("os.name");
|
if (os.toLowerCase().startsWith("win")) {
|
return true;
|
} else {
|
return false;
|
}
|
}
|
|
/**
|
* 获取临时目录
|
*
|
* @author stylefeng
|
* @Date 2017/5/24 22:35
|
*/
|
public static String getTempPath() {
|
return System.getProperty("java.io.tmpdir");
|
}
|
|
/**
|
* 把一个数转化为int
|
*
|
* @author fengshuonan
|
* @Date 2017/11/15 下午11:10
|
*/
|
public static Integer toInt(Object val) {
|
if (val instanceof Double) {
|
BigDecimal bigDecimal = new BigDecimal((Double) val);
|
return bigDecimal.intValue();
|
} else {
|
return Integer.valueOf(val.toString());
|
}
|
|
}
|
|
/**
|
* 获取项目路径
|
*/
|
public static String getWebRootPath(String filePath) {
|
try {
|
String path = ToolUtil.class.getClassLoader().getResource("").toURI().getPath();
|
path = path.replace("/WEB-INF/classes/", "");
|
path = path.replace("/target/classes/", "");
|
path = path.replace("file:/", "");
|
if (ToolUtil.isEmpty(filePath)) {
|
return path;
|
} else {
|
return path + "/" + filePath;
|
}
|
} catch (URISyntaxException e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
/**
|
* 获取文件后缀名 不包含点
|
*/
|
public static String getFileSuffix(String fileWholeName) {
|
if (ToolUtil.isEmpty(fileWholeName)) {
|
return "none";
|
}
|
int lastIndexOf = fileWholeName.lastIndexOf(".");
|
return fileWholeName.substring(lastIndexOf + 1);
|
}
|
}
|