简单判断对象是否含有NULL值,以及信息描述。
package com.sicdt.sicsign.bill.api.util;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.sicdt.sicsign.bill.api.model.CheckResultModel;
public class CheckResultMsg {
private boolean isSuccess;
private String massgage;
private List<CheckResultModel> successes = new ArrayList<>();//验证通过
private List<CheckResultModel> fails = new ArrayList<>();//验证失败
public CheckResultMsg() {
super();
// TODO Auto-generated constructor stub
}
/**
* <br>描 述: 校验入参对象,是否含有空值
* <br>作 者: shizhenwei
* <br>历 史: (版本) 作者 时间 注释
* @param obj
* @return
* @throws IllegalAccessException
* @throws IllegalArgumentException
* @throws InvocationTargetException
*/
public static CheckResultMsg checkObject(Object obj){
CheckResultMsg resultMsg = new CheckResultMsg();
if(null==obj){
resultMsg.setSuccess(true);
resultMsg.setMassgage("入参对象为NULL");
return resultMsg;
}
resultMsg.setSuccess(true);
List<CheckResultModel> successes = resultMsg.getSuccesses();
List<CheckResultModel> fails = resultMsg.getSuccesses();
Class<?> clazz = obj.getClass();
Method[] methods = clazz.getDeclaredMethods();
JSONObject jsonMsg = new JSONObject();
for(Method method : methods){
String methodName = method.getName();
if(methodName.startsWith("get")){
Object res = null;
try {
res = method.invoke(obj);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
resultMsg.setSuccess(false);
return resultMsg;
}
if(null==res){
String fieldName = methodName.substring(3);
String fieldMsg = "不允许为NULL";
jsonMsg.put(fieldName, fieldMsg);
CheckResultModel model = new CheckResultModel(fieldName, fieldMsg, false);
fails.add(model);
if(resultMsg.isSuccess()){
resultMsg.setSuccess(false);
}
}else{
CheckResultModel model = new CheckResultModel(methodName.substring(3), "正确", true);
successes.add(model);
}
}
}
resultMsg.setMassgage(jsonMsg.toJSONString());
return resultMsg;
}
/**
* <br>描 述: 校验入参对象,指定属性,是否含有空值
* <br>作 者: shizhenwei
* <br>历 史: (版本) 作者 时间 注释
* @param obj
* @return
* @throws IllegalAccessException
* @throws IllegalArgumentException
* @throws InvocationTargetException
*/
public static CheckResultMsg checkObject(Object obj, String[] fileds, boolean isCheckFileds){
CheckResultMsg resultMsg = new CheckResultMsg();
if(null==obj){
resultMsg.setSuccess(true);
resultMsg.setMassgage("入参对象为NULL");
return resultMsg;
}
resultMsg.setSuccess(true);
List<CheckResultModel> successes = resultMsg.getSuccesses();
List<CheckResultModel> fails = resultMsg.getSuccesses();
Class<?> clazz = obj.getClass();
Method[] methods = clazz.getDeclaredMethods();
JSONObject jsonMsg = new JSONObject();
for(Method method : methods){
String methodName = method.getName();
String fieldName = methodName.substring(3);
List<String> filedList = Arrays.asList(fileds);
if(filedList.contains(fieldName) == isCheckFileds){
if(methodName.startsWith("get")){
Object res = null;
try {
res = method.invoke(obj);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
resultMsg.setSuccess(false);
return resultMsg;
}
if(null==res){
String fieldMsg = "不允许为NULL";
jsonMsg.put(fieldName, fieldMsg);
CheckResultModel model = new CheckResultModel(fieldName, fieldMsg, false);
fails.add(model);
if(resultMsg.isSuccess()){
resultMsg.setSuccess(false);
}
}else{
CheckResultModel model = new CheckResultModel(methodName.substring(3), "正确", true);
successes.add(model);
}
}
}else{
continue;
}
}
resultMsg.setMassgage(jsonMsg.toJSONString());
return resultMsg;
}
public String description(){
String message = "";
if(this.isSuccess){
message += "参数检查正确:";
}else{
message += "参数检查错误:";
}
return message+this.massgage;
}
public boolean isSuccess() {
return isSuccess;
}
public void setSuccess(boolean isSuccess) {
this.isSuccess = isSuccess;
}
public String getMassgage() {
return massgage;
}
public void setMassgage(String massgage) {
this.massgage = massgage;
}
public List<CheckResultModel> getSuccesses() {
return successes;
}
public void setSuccesses(List<CheckResultModel> successes) {
this.successes = successes;
}
public List<CheckResultModel> getFails() {
return fails;
}
public void setFails(List<CheckResultModel> fails) {
this.fails = fails;
}
}