package com.java110.utils.util;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import org.apache.commons.lang3.StringUtils;
|
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* 自定义 断言
|
* Created by wuxw on 2017/4/22.
|
*/
|
public class Assert extends org.springframework.util.Assert {
|
|
|
public static void hasValue(Object value,String msg){
|
Assert.notNull(value, msg);
|
Assert.hasLength(value.toString(), msg);
|
|
}
|
|
/**
|
* 判断 jsonObject 是否为空
|
*
|
* @param jsonObject
|
* @param key
|
* @param message
|
*/
|
public static void isNotNull(Map jsonObject, String key, String message) {
|
Assert.notEmpty(jsonObject, message);
|
|
if (!jsonObject.containsKey(key)) {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
/**
|
* 判断 jsonObject 是否为空
|
*
|
* @param jsonObject
|
* @param key
|
* @param message
|
*/
|
public static void jsonObjectHaveKey(JSONObject jsonObject, String key, String message) {
|
isNotNull(jsonObject, key, message);
|
}
|
|
|
/**
|
* 判断 jsonObject 是否为空
|
*
|
* @param jsonStr
|
* @param key
|
* @param message
|
*/
|
public static void jsonObjectHaveKey(String jsonStr, String key, String message) {
|
Assert.hasLength(jsonStr, "不是有效的json为空," + message);
|
if (isJsonObject(jsonStr)) {
|
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
|
isNotNull(jsonObject, key, message);
|
} else {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
/**
|
* 判断 jsonObject 是否为空
|
*
|
* @param info
|
* @param key
|
* @param message
|
*/
|
public static void hasKey(Map info, String key, String message) {
|
isNotNull(info, key, message);
|
}
|
|
/**
|
* 判断 jsonObject 是否为空
|
*
|
* @param info
|
* @param key
|
* @param message
|
*/
|
public static void hasKeyAndValue(Map info, String key, String message) {
|
isNotNull(info, key, message);
|
hasLength(info.get(key) == null ? "" : info.get(key).toString(), message);
|
}
|
|
/**
|
* 判断 jsonObject 是否为空
|
*
|
* @param info
|
* @param key
|
* @param message
|
*/
|
public static void hasKeyAndValue(Object info, String key, String message) {
|
hasKeyAndValue(BeanConvertUtil.beanCovertMap(info), key, message);
|
}
|
|
|
/**
|
* 判断json是否为空
|
*
|
* @param jsonArray
|
* @param message
|
*/
|
public static void listIsNull(List jsonArray, String message) {
|
|
if (jsonArray != null && !jsonArray.isEmpty()) {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
/**
|
* 判断json是否为空
|
*
|
* @param jsonArray
|
* @param message
|
*/
|
public static void listNotNull(List jsonArray, String message) {
|
|
Assert.notNull(jsonArray, message);
|
|
if (jsonArray.size() < 1) {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
|
/**
|
* 数组只有一条数据
|
*
|
* @param jsonArray
|
* @param message
|
*/
|
public static void listOnlyOne(List jsonArray, String message) {
|
|
Assert.notNull(jsonArray, message);
|
|
if (jsonArray.size() != 1) {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
/**
|
* 判断list 是否为空
|
*
|
* @param targetList
|
* @param message
|
*/
|
public static void isNotNull(List<?> targetList, String message) {
|
|
Assert.notNull(targetList, message);
|
|
if (targetList.size() < 1) {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
/**
|
* 判断是否只有一条记录数据
|
*
|
* @param targetList
|
* @param message
|
*/
|
public static void isOne(List<?> targetList, String message) {
|
Assert.notNull(targetList, message);
|
|
if (targetList.size() != 1) {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
/**
|
* 校验map 中是否有值
|
*
|
* @param targetMap
|
* @param message
|
*/
|
public static void hasSize(Map<?, ?> targetMap, String message) {
|
Assert.isNull(targetMap, message);
|
|
if (targetMap.size() < 1) {
|
throw new IllegalArgumentException(message);
|
}
|
|
}
|
|
/**
|
* 判断 jsonObject 是否为空
|
*
|
* @param strValue
|
* @param message
|
*/
|
public static void isJsonObject(String strValue, String message) {
|
if (!isJsonObject(strValue)) {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
/**
|
* 校验是否为JSON
|
*
|
* @param msg
|
* @return
|
*/
|
public static Boolean isJsonObject(String msg) {
|
try {
|
JSONObject.parseObject(msg);
|
} catch (Exception e) {
|
return false;
|
}
|
return true;
|
}
|
|
public static Boolean isPageJsonObject(String msg) {
|
try {
|
JSONObject jsonObject = JSONObject.parseObject(msg);
|
if (!jsonObject.containsKey("meta") || !jsonObject.containsKey("param")) {
|
return false;
|
}
|
} catch (Exception e) {
|
return false;
|
}
|
return true;
|
}
|
|
/**
|
* 校验是否为整数
|
*
|
* @param text
|
* @param msg
|
*/
|
public static void isInteger(String text, String msg) {
|
if (!StringUtils.isNumeric(text)) {
|
throw new IllegalArgumentException(msg);
|
}
|
}
|
|
public static void isDate(String text, String msg) {
|
try {
|
DateUtil.getDefaultDateFromString(text);
|
} catch (Exception e) {
|
throw new IllegalArgumentException(msg);
|
}
|
}
|
|
public static void isDate(String text, String format, String msg) {
|
try {
|
DateUtil.getDateFromString(text, format);
|
} catch (Exception e) {
|
throw new IllegalArgumentException(msg);
|
}
|
}
|
|
|
/**
|
* 判断字符串是否是金额
|
*
|
* @param str 金额字符串
|
* @param msg 异常时信息
|
*/
|
public static void isMoney(String str, String msg) {
|
Pattern pattern = java.util.regex.Pattern.compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); // 判断小数点后2位的数字的正则表达式
|
Matcher match = pattern.matcher(str);
|
if (!match.matches()) {
|
throw new IllegalArgumentException(msg);
|
|
}
|
}
|
|
/**
|
* 检验是否在 infos 中存在 flowComponent 对应组件的key
|
*
|
* @param infos
|
* @param flowComponent
|
* @param key
|
* @param message
|
*/
|
public static void hasKeyByFlowData(JSONArray infos, String flowComponent, String key, String message) {
|
|
for (int infoIndex = 0; infoIndex < infos.size(); infoIndex++) {
|
JSONObject _info = infos.getJSONObject(infoIndex);
|
if (_info.containsKey(flowComponent) && _info.getString("flowComponent").equals(flowComponent)) {
|
hasKeyAndValue(_info, key, message);
|
break;
|
}
|
}
|
|
}
|
|
@SuppressWarnings("rawtypes")
|
public static boolean objIsEmpty(Object o) {
|
if (o == null) {
|
return true;
|
}
|
if (o instanceof String) {
|
if (o.toString().trim().equals("")) {
|
return true;
|
}
|
if (o.equals("null") || o.equals("NULL")) {
|
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;
|
}
|
|
|
/**
|
* 检验是否在 infos 中存在 flowComponent 对应组件的key
|
*
|
* @param key
|
* @param message
|
*/
|
public static void isEmail(JSONObject info, String key, String message) {
|
hasKeyAndValue(info, key, message);
|
if (!ValidatorUtil.isEmail(info.getString(key))) {
|
throw new IllegalArgumentException(message);
|
}
|
}
|
|
public static void judgeAttrValue(JSONObject paramObj){
|
if (!paramObj.containsKey("attrs")) {
|
return;
|
}
|
|
JSONArray attrs = paramObj.getJSONArray("attrs");
|
if (attrs.size() < 1) {
|
return;
|
}
|
JSONObject attr = null;
|
for (int attrIndex = 0; attrIndex < attrs.size(); attrIndex++) {
|
attr = attrs.getJSONObject(attrIndex);
|
if (!"Y".equals(attr.getString("required"))) {
|
continue;
|
}
|
Assert.hasKeyAndValue(attr, "value", attr.getString("specName") + "不能为空");
|
|
//整数
|
if ("2002".equals(attr.getString("specValueType"))) {
|
Assert.isInteger(attr.getString("value"), attr.getString("specName") + "不是整数");
|
}
|
|
//整数
|
if ("3003".equals(attr.getString("specValueType"))) {
|
Assert.isMoney(attr.getString("value"), attr.getString("specName") + "不是金额类型 如 3.00");
|
}
|
|
// 日期4004
|
if ("4004".equals(attr.getString("specValueType"))) {
|
Assert.isDate(attr.getString("value"), DateUtil.DATE_FORMATE_STRING_B, attr.getString("specName") + "不是日期格式 YYYY-MM-DD");
|
}
|
|
// 日期5005
|
if ("5005".equals(attr.getString("specValueType"))) {
|
Assert.isDate(attr.getString("value"), DateUtil.DATE_FORMATE_STRING_A, attr.getString("specName") + "不是日期格式 YYYY-MM-DD hh:mm:ss");
|
}
|
}
|
}
|
|
|
}
|