校验接口的必输,字段长度的工具类

package com.nantian.cld.svc.util;

import java.text.SimpleDateFormat;
import java.util.Map;
/**
* ClassName: ValidateUtil <br/>
* Date: 2019年04月17日10:00:00 <br/>
* Description:校验接口字段长度,必输的工具类<br/>
*
* @author luzhenggen
* @param <E>
* @history Date Author Desc<br/>
* 2019年04月17日10:00:00 luzhenggen 新增类<br/>
* @since JDK 1.8<br/>
* Copyright (c) 2019, 广州南天电脑系统有限公司 All Rights Reserved.
*/
public class ValidateUtil {
/**
*
* @param reqList
* 请求报文字段值
* @param reqArr
* 请求报文字段
* @param reqChinese
* 请求报文字段对应的中文描述
* @param mustInput
* 必输字段
* @param mustInputChinese
* 必输字段中文描述
* @param reqLen
* 报文字段约束长度
* @return 校验通过,返回pass,失败返回false_失败原因
*/
public static String validate(Map<String,Object> reqMap, String[] reqArr, String[] reqChinese, String[] mustInput,String[] mustInputChinese, String[] reqLen) {
// 判断必输字段是否必输
if(mustInput!=null) {
for (int i = 0; i < mustInput.length; i++) {
String key = mustInput[i].trim();
Object val = reqMap.get(key);
if (val == null || "".equals(val)) {
// 非空校验不通过,获取不通过字段的中文描述
String keyChinese = mustInputChinese[i];
return "false_" + keyChinese + "不能为空!";
}
}
}
// 必输字段校验通过后,校验长度是否超长
if(reqArr!=null) {
for (int i = 0; i < reqArr.length; i++) {
String key = reqArr[i].trim();
Object val = reqMap.get(key);
String len = reqLen[i];
String keyChinese = reqChinese[i];
if (val != null && !"".equals(val)) {
if (len.contains(",")) {
// 包含",",代表是数值型,且有小数位数控制
String[] lenArr = len.split(",");
// 最大整数长度
int zLen = Integer.parseInt(lenArr[0])-Integer.parseInt(lenArr[1]);
// 最大小数长度
int xLen = Integer.parseInt(lenArr[1]);
if (val.toString().contains(".")) {
// 小数
String[] valArr = val.toString().split("\\.");
// 整数部分值
String zVal = valArr[0];
// 小数部分值
String xVal = valArr[1];
if (zVal.length() > zLen || xVal.length() > xLen) {
// 校验失败
return "false_" + keyChinese + "长度超长!";
}
} else {
// 整数
int valLen = val.toString().length();
if (valLen > zLen) {
// 校验失败
return "false_" + keyChinese + "长度超长!";
}
}
} else {
// 为字符串
int valLen = val.toString().length();
if (valLen > Integer.parseInt(len)) {
// 校验失败
return "false_" + keyChinese + "长度超长!";
}
}

}
}
}
return "pass";
}


public static boolean isValidNum(String str) {
boolean convertSuccess = true;
try {
Double.parseDouble(str);
} catch (Exception e) {
// e.printStackTrace();
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
convertSuccess = false;
}
return convertSuccess;
}

public boolean isValidDate(String str) {
boolean convertSuccess = true;
// 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
try {
// 设置lenient为false.
// 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
format.setLenient(false);
format.parse(str);
} catch (Exception e) {
// e.printStackTrace();
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
convertSuccess = false;
}
return convertSuccess;
}
}

猜你喜欢

转载自www.cnblogs.com/luzhenggen/p/10852813.html
今日推荐