diff --git a/README.md b/README.md index ae8010c..f61bb2e 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,13 @@ EasyPoi Excel和 Word简易工具类 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 - 作者博客:http://blog.csdn.net/qjueyue + 作者博客:http://blog.afterturn.cn/ 作者邮箱: qrb.jueyue@gmail.com QQ群: 364192721 [测试项目](http://git.oschina.net/jueyue/easypoi-test): http://git.oschina.net/jueyue/easypoi-test + +!!!2.1.6-SNAPSHOT 版本开始和之前的版本校验不兼用,使用hibernate的校验,删除了之前的注解,请注意 --------------------------- EasyPoi的主要特点 diff --git a/easypoi-annotation/src/main/java/org/jeecgframework/poi/excel/annotation/ExcelVerify.java b/easypoi-annotation/src/main/java/org/jeecgframework/poi/excel/annotation/ExcelVerify.java deleted file mode 100644 index 86430b6..0000000 --- a/easypoi-annotation/src/main/java/org/jeecgframework/poi/excel/annotation/ExcelVerify.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) - * - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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 org.jeecgframework.poi.excel.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Excel 导入校验 - * - * @author JueYue - * @date 2014年6月23日 下午10:46:26 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface ExcelVerify { - /** - * 接口校验 - * @return - */ - public boolean interHandler() default false; - - /** - * 是电子邮件 - * - * @return - */ - public boolean isEmail() default false; - - /** - * 是13位移动电话 - * - * @return - */ - public boolean isMobile() default false; - - /** - * 是座机号码 - * - * @return - */ - public boolean isTel() default false; - - /** - * 最大长度 - * - * @return - */ - public int maxLength() default -1; - - /** - * 最小长度 - * - * @return - */ - public int minLength() default -1; - - /** - * 不允许空 - * - * @return - */ - public boolean notNull() default false; - - /** - * 正在表达式 - * - * @return - */ - public String regex() default ""; - - /** - * 正在表达式,错误提示信息 - * - * @return - */ - public String regexTip() default "数据不符合规范"; - -} diff --git a/easypoi-base/pom.xml b/easypoi-base/pom.xml index 2026139..5b01e9b 100644 --- a/easypoi-base/pom.xml +++ b/easypoi-base/pom.xml @@ -70,6 +70,11 @@ slf4j-api + + org.hibernate + hibernate-validator + + org.jeecg easypoi-annotation diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoadeImpl.java b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoadeImpl.java index cdacdcd..6c11466 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoadeImpl.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoadeImpl.java @@ -20,6 +20,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import org.apache.poi.util.IOUtils; import org.jeecgframework.poi.util.PoiPublicUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -58,14 +59,8 @@ public class FileLoadeImpl implements IFileLoader { } catch (IOException e) { LOGGER.error(e.getMessage(), e); } finally { - try { - if (fileis != null) - fileis.close(); - if (fileis != null) - baos.close(); - } catch (IOException e) { - LOGGER.error(e.getMessage(), e); - } + IOUtils.closeQuietly(fileis); + IOUtils.closeQuietly(baos); } LOGGER.error(fileis + "这个路径文件没有找到,请查询"); return null; diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java index cc44e11..585b0b4 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java @@ -33,7 +33,8 @@ import com.google.common.cache.LoadingCache; * * @author JueYue * @date 2014年2月10日 - * @version 1.0 + * @date 2015年10月17日 + * @version 1.1 */ public final class POICacheManager { diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ImportParams.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ImportParams.java index 71c2f68..c7b957e 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ImportParams.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ImportParams.java @@ -24,6 +24,7 @@ import org.jeecgframework.poi.handler.inter.IExcelVerifyHandler; * @date 2013-9-24 * @version 1.0 */ +@SuppressWarnings("rawtypes") public class ImportParams extends ExcelBaseParams { /** * 表格标题行数,默认0 @@ -53,6 +54,10 @@ public class ImportParams extends ExcelBaseParams { * 是否需要保存上传的Excel,默认为false */ private boolean needSave = false; + /** + * 是否需要校验上传的Excel,默认为false + */ + private boolean needVerfiy = false; /** * 保存上传的Excel目录,默认是 如 TestEntity这个类保存路径就是 * upload/excelUpload/Test/yyyyMMddHHmss_***** 保存名称上传时间_五位随机数 @@ -147,4 +152,12 @@ public class ImportParams extends ExcelBaseParams { this.startSheetIndex = startSheetIndex; } + public boolean isNeedVerfiy() { + return needVerfiy; + } + + public void setNeedVerfiy(boolean needVerfiy) { + this.needVerfiy = needVerfiy; + } + } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelImportEntity.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelImportEntity.java index a59bffa..53e385e 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelImportEntity.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelImportEntity.java @@ -39,10 +39,6 @@ public class ExcelImportEntity extends ExcelBaseEntity { * 对应exportType */ private String classType; - /** - * 校驗參數 - */ - private ExcelVerifyEntity verify; /** * 后缀 */ @@ -70,10 +66,6 @@ public class ExcelImportEntity extends ExcelBaseEntity { return saveUrl; } - public ExcelVerifyEntity getVerify() { - return verify; - } - public void setClassType(String classType) { this.classType = classType; } @@ -94,10 +86,6 @@ public class ExcelImportEntity extends ExcelBaseEntity { this.saveUrl = saveUrl; } - public void setVerify(ExcelVerifyEntity verify) { - this.verify = verify; - } - public String getSuffix() { return suffix; } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelVerifyEntity.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelVerifyEntity.java deleted file mode 100644 index 35a5fcc..0000000 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelVerifyEntity.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) - * - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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 org.jeecgframework.poi.excel.entity.params; - -/** - * Excel 校验对象 - * - * @author JueYue - * @date 2014年6月29日 下午4:24:59 - */ -public class ExcelVerifyEntity { - - /** - * 接口校验 - * - * @return - */ - private boolean interHandler; - - /** - * 不允许空 - * - * @return - */ - private boolean notNull; - - /** - * 是13位移动电话 - * - * @return - */ - private boolean isMobile; - /** - * 是座机号码 - * - * @return - */ - private boolean isTel; - - /** - * 是电子邮件 - * - * @return - */ - private boolean isEmail; - - /** - * 最小长度 - * - * @return - */ - private int minLength; - - /** - * 最大长度 - * - * @return - */ - private int maxLength; - - /** - * 正在表达式 - * - * @return - */ - private String regex; - /** - * 正在表达式,错误提示信息 - * - * @return - */ - private String regexTip; - - public int getMaxLength() { - return maxLength; - } - - public int getMinLength() { - return minLength; - } - - public String getRegex() { - return regex; - } - - public String getRegexTip() { - return regexTip; - } - - public boolean isEmail() { - return isEmail; - } - - public boolean isInterHandler() { - return interHandler; - } - - public boolean isMobile() { - return isMobile; - } - - public boolean isNotNull() { - return notNull; - } - - public boolean isTel() { - return isTel; - } - - public void setEmail(boolean isEmail) { - this.isEmail = isEmail; - } - - public void setInterHandler(boolean interHandler) { - this.interHandler = interHandler; - } - - public void setMaxLength(int maxLength) { - this.maxLength = maxLength; - } - - public void setMinLength(int minLength) { - this.minLength = minLength; - } - - public void setMobile(boolean isMobile) { - this.isMobile = isMobile; - } - - public void setNotNull(boolean notNull) { - this.notNull = notNull; - } - - public void setRegex(String regex) { - this.regex = regex; - } - - public void setRegexTip(String regexTip) { - this.regexTip = regexTip; - } - - public void setTel(boolean isTel) { - this.isTel = isTel; - } - -} diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java index 585c639..2029d3a 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java @@ -27,6 +27,12 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; import org.apache.commons.lang3.StringUtils; import org.apache.poi.POIXMLDocument; @@ -51,9 +57,9 @@ import org.jeecgframework.poi.excel.entity.params.ExcelImportEntity; import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; import org.jeecgframework.poi.excel.entity.result.ExcelVerifyHanlderResult; import org.jeecgframework.poi.excel.imports.base.ImportBaseService; -import org.jeecgframework.poi.excel.imports.verifys.VerifyHandlerServer; import org.jeecgframework.poi.exception.excel.ExcelImportException; import org.jeecgframework.poi.exception.excel.enums.ExcelImportEnum; +import org.jeecgframework.poi.handler.inter.IExcelModel; import org.jeecgframework.poi.util.PoiPublicUtil; import org.jeecgframework.poi.util.PoiReflectorUtil; import org.slf4j.Logger; @@ -70,9 +76,14 @@ public class ExcelImportServer extends ImportBaseService { private final static Logger LOGGER = LoggerFactory.getLogger(ExcelImportServer.class); - private CellValueServer cellValueServer; + private final static Validator validator; + + static { + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + validator = factory.getValidator(); + } - private VerifyHandlerServer verifyHandlerServer; + private CellValueServer cellValueServer; private boolean verfiyFail = false; /** @@ -82,7 +93,6 @@ public class ExcelImportServer extends ImportBaseService { public ExcelImportServer() { this.cellValueServer = new CellValueServer(); - this.verifyHandlerServer = new VerifyHandlerServer(); } /*** @@ -147,6 +157,9 @@ public class ExcelImportServer extends ImportBaseService { case Cell.CELL_TYPE_FORMULA: obj = cell.getCellFormula(); break; + default: + cell.setCellType(Cell.CELL_TYPE_STRING); + obj = cell.getStringCellValue(); } return obj == null ? null : obj.toString().trim(); } @@ -231,7 +244,9 @@ public class ExcelImportServer extends ImportBaseService { for (ExcelCollectionParams param : excelCollection) { addListContinue(object, param, row, titlemap, targetId, pictures, params); } - collection.add(object); + if (verifyingDataValidity(object, row, params, pojoClass)) { + collection.add(object); + } } catch (ExcelImportException e) { if (!e.getType().equals(ExcelImportEnum.VERIFY_ERROR)) { throw new ExcelImportException(e.getType(), e); @@ -242,6 +257,61 @@ public class ExcelImportServer extends ImportBaseService { return collection; } + /** + * 校验数据合法性 + * @param object + * @param row + * @param params + * @param pojoClass + * @return + */ + private boolean verifyingDataValidity(Object object, Row row, ImportParams params, + Class pojoClass) { + boolean isAdd = true; + Cell cell = null; + if (params.isNeedVerfiy()) { + Set> set = validator.validate(object); + if (set.size() > 0) { + cell = row.createCell(row.getLastCellNum()); + String errMsg = getValidateErrMsg(set); + cell.setCellValue(errMsg); + if (object instanceof IExcelModel) { + IExcelModel model = (IExcelModel) object; + model.setErrorMsg(errMsg); + } else { + isAdd = false; + } + } + } + if (params.getVerifyHanlder() != null) { + ExcelVerifyHanlderResult result = params.getVerifyHanlder().verifyHandler(object); + if (!result.isSuccess()) { + if (cell == null) + cell = row.createCell(row.getLastCellNum()); + cell.setCellValue((StringUtils.isNoneBlank(cell.getStringCellValue()) + ? cell.getStringCellValue() + "," : "") + result.getMsg()); + if (object instanceof IExcelModel) { + IExcelModel model = (IExcelModel) object; + model.setErrorMsg((StringUtils.isNoneBlank(model.getErrorMsg()) + ? model.getErrorMsg() + "," : "") + result.getMsg()); + } else { + isAdd = false; + } + } + } + if (cell != null) + cell.setCellStyle(errorCellStyle); + return isAdd; + } + + private String getValidateErrMsg(Set> set) { + StringBuilder builder = new StringBuilder(); + for (ConstraintViolation constraintViolation : set) { + builder.append(constraintViolation.getMessage()).append(","); + } + return builder.substring(0, builder.length() - 1).toString(); + } + /** * 获取表格字段列名对应信息 * @param rows @@ -381,17 +451,7 @@ public class ExcelImportServer extends ImportBaseService { ((Map) object).put(titleString, value); } } else { - ExcelVerifyHanlderResult verifyResult = verifyHandlerServer.verifyData(object, value, - titleString, excelParams.get(titleString).getVerify(), params.getVerifyHanlder()); - if (verifyResult.isSuccess()) { - setValues(excelParams.get(titleString), object, value); - } else { - Cell errorCell = row.createCell(row.getLastCellNum()); - errorCell.setCellValue(verifyResult.getMsg()); - errorCell.setCellStyle(errorCellStyle); - verfiyFail = true; - throw new ExcelImportException(ExcelImportEnum.VERIFY_ERROR); - } + setValues(excelParams.get(titleString), object, value); } } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/base/ImportBaseService.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/base/ImportBaseService.java index c6f2cc4..20278f6 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/base/ImportBaseService.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/base/ImportBaseService.java @@ -31,13 +31,12 @@ import java.util.Set; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.ExcelCollection; -import org.jeecgframework.poi.excel.annotation.ExcelVerify; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.params.ExcelCollectionParams; import org.jeecgframework.poi.excel.entity.params.ExcelImportEntity; -import org.jeecgframework.poi.excel.entity.params.ExcelVerifyEntity; import org.jeecgframework.poi.util.PoiPublicUtil; import org.jeecgframework.poi.util.PoiReflectorUtil; @@ -69,7 +68,6 @@ public class ImportBaseService { excelEntity.setSaveType(excel.imageType()); excelEntity.setReplace(excel.replace()); excelEntity.setDatabaseFormat(excel.databaseFormat()); - excelEntity.setVerify(getImportVerify(field)); excelEntity.setSuffix(excel.suffix()); getExcelField(targetId, field, excelEntity, excel, pojoClass); if (getMethods != null) { @@ -82,30 +80,6 @@ public class ImportBaseService { } - /** - * 获取导入校验参数 - * - * @param field - * @return - */ - public ExcelVerifyEntity getImportVerify(Field field) { - ExcelVerify verify = field.getAnnotation(ExcelVerify.class); - if (verify != null) { - ExcelVerifyEntity entity = new ExcelVerifyEntity(); - entity.setEmail(verify.isEmail()); - entity.setInterHandler(verify.interHandler()); - entity.setMaxLength(verify.maxLength()); - entity.setMinLength(verify.minLength()); - entity.setMobile(verify.isMobile()); - entity.setNotNull(verify.notNull()); - entity.setRegex(verify.regex()); - entity.setRegexTip(verify.regexTip()); - entity.setTel(verify.isTel()); - return entity; - } - return null; - } - /** * 获取需要导出的全部字段 * @@ -245,7 +219,7 @@ public class ImportBaseService { + Math.round(Math.random() * 100000) + (isXSSFWorkbook == true ? ".xlsx" : ".xls")); book.write(fos); - fos.close(); + IOUtils.closeQuietly(fos); } /** diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/verifys/BaseVerifyHandler.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/verifys/BaseVerifyHandler.java deleted file mode 100644 index 272cf2f..0000000 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/verifys/BaseVerifyHandler.java +++ /dev/null @@ -1,146 +0,0 @@ -/** - * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) - * - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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 org.jeecgframework.poi.excel.imports.verifys; - -import java.util.regex.Pattern; - -import org.jeecgframework.poi.excel.entity.result.ExcelVerifyHanlderResult; - -/** - * 基础校验工具类 - * - * @author JueYue - * @date 2014年6月23日 下午11:10:12 - */ -public class BaseVerifyHandler { - - private static String NOT_NULL = "不允许为空"; - private static String IS_MOBILE = "不是手机号"; - private static String IS_TEL = "不是电话号码"; - private static String IS_EMAIL = "不是邮箱地址"; - private static String MIN_LENGHT = "小于规定长度"; - private static String MAX_LENGHT = "超过规定长度"; - - private static Pattern mobilePattern = Pattern.compile("^[1][3,4,5,8,7][0-9]{9}$"); - - private static Pattern telPattern = Pattern.compile("^([0][1-9]{2,3}-)?[0-9]{5,10}$"); - - private static Pattern emailPattern = Pattern - .compile("^([a-zA-Z0-9]+[_|\\_|\\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\\_|\\.]?)*[a-zA-Z0-9]+\\.[a-zA-Z]{2,3}$"); - - /** - * email校验 - * - * @param name - * @param val - * @return - */ - public static ExcelVerifyHanlderResult isEmail(String name, Object val) { - if (!emailPattern.matcher(String.valueOf(val)).matches()) { - return new ExcelVerifyHanlderResult(false, name + IS_EMAIL); - } - return new ExcelVerifyHanlderResult(true); - } - - /** - * 手机校验 - * - * @param name - * @param val - * @return - */ - public static ExcelVerifyHanlderResult isMobile(String name, Object val) { - if (!mobilePattern.matcher(String.valueOf(val)).matches()) { - return new ExcelVerifyHanlderResult(false, name + IS_MOBILE); - } - return new ExcelVerifyHanlderResult(true); - } - - /** - * 电话校验 - * - * @param name - * @param val - * @return - */ - public static ExcelVerifyHanlderResult isTel(String name, Object val) { - if (!telPattern.matcher(String.valueOf(val)).matches()) { - return new ExcelVerifyHanlderResult(false, name + IS_TEL); - } - return new ExcelVerifyHanlderResult(true); - } - - /** - * 最大长度校验 - * - * @param name - * @param val - * @return - */ - public static ExcelVerifyHanlderResult maxLength(String name, Object val, int maxLength) { - if (notNull(name, val).isSuccess() && String.valueOf(val).length() > maxLength) { - return new ExcelVerifyHanlderResult(false, name + MAX_LENGHT); - } - return new ExcelVerifyHanlderResult(true); - } - - /** - * 最小长度校验 - * - * @param name - * @param val - * @param minLength - * @return - */ - public static ExcelVerifyHanlderResult minLength(String name, Object val, int minLength) { - if (notNull(name, val).isSuccess() && String.valueOf(val).length() < minLength) { - return new ExcelVerifyHanlderResult(false, name + MIN_LENGHT); - } - return new ExcelVerifyHanlderResult(true); - } - - /** - * 非空校验 - * - * @param name - * @param val - * @return - */ - public static ExcelVerifyHanlderResult notNull(String name, Object val) { - if (val == null || val.toString().equals("")) { - return new ExcelVerifyHanlderResult(false, name + NOT_NULL); - } - return new ExcelVerifyHanlderResult(true); - } - - /** - * 正则表达式校验 - * @param name - * @param val - * @param regex - * @param regexTip - * @return - */ - public static ExcelVerifyHanlderResult regex(String name, Object val, String regex, - String regexTip) { - Pattern pattern = Pattern.compile(regex); - if (!pattern.matcher(String.valueOf(val)).matches()) { - return new ExcelVerifyHanlderResult(false, name + regexTip); - } - return new ExcelVerifyHanlderResult(true); - } - -} diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/verifys/VerifyHandlerServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/verifys/VerifyHandlerServer.java deleted file mode 100644 index 90f181a..0000000 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/verifys/VerifyHandlerServer.java +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) - * - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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 org.jeecgframework.poi.excel.imports.verifys; - -import org.apache.commons.lang3.StringUtils; -import org.jeecgframework.poi.excel.entity.params.ExcelVerifyEntity; -import org.jeecgframework.poi.excel.entity.result.ExcelVerifyHanlderResult; -import org.jeecgframework.poi.handler.inter.IExcelVerifyHandler; - -/** - * 校验服务 - * - * @author JueYue - * @date 2014年6月29日 下午4:37:56 - */ -public class VerifyHandlerServer { - - private final static ExcelVerifyHanlderResult DEFAULT_RESULT = new ExcelVerifyHanlderResult( - true); - - private void addVerifyResult(ExcelVerifyHanlderResult hanlderResult, - ExcelVerifyHanlderResult result) { - if (!hanlderResult.isSuccess()) { - result.setSuccess(false); - result.setMsg((StringUtils.isEmpty(result.getMsg()) ? "" : result.getMsg() + " , ") - + hanlderResult.getMsg()); - } - } - - /** - * 校驗數據 - * - * @param object - * @param value - * @param titleString - * @param verify - * @param excelVerifyHandler - */ - public ExcelVerifyHanlderResult verifyData(Object object, Object value, String name, - ExcelVerifyEntity verify, - IExcelVerifyHandler excelVerifyHandler) { - if (verify == null) { - return DEFAULT_RESULT; - } - ExcelVerifyHanlderResult result = new ExcelVerifyHanlderResult(true, ""); - if (verify.isNotNull()) { - addVerifyResult(BaseVerifyHandler.notNull(name, value), result); - } - if (verify.isEmail()) { - addVerifyResult(BaseVerifyHandler.isEmail(name, value), result); - } - if (verify.isMobile()) { - addVerifyResult(BaseVerifyHandler.isMobile(name, value), result); - } - if (verify.isTel()) { - addVerifyResult(BaseVerifyHandler.isTel(name, value), result); - } - if (verify.getMaxLength() != -1) { - addVerifyResult(BaseVerifyHandler.maxLength(name, value, verify.getMaxLength()), result); - } - if (verify.getMinLength() != -1) { - addVerifyResult(BaseVerifyHandler.minLength(name, value, verify.getMinLength()), result); - } - if (StringUtils.isNotEmpty(verify.getRegex())) { - addVerifyResult( - BaseVerifyHandler.regex(name, value, verify.getRegex(), verify.getRegexTip()), - result); - } - if (verify.isInterHandler()) { - addVerifyResult(excelVerifyHandler.verifyHandler(object, name, value), result); - } - return result; - - } -} diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java index 493f063..dd47cef 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java @@ -27,14 +27,14 @@ import org.jeecgframework.poi.handler.inter.IExcelDataHandler; * @author JueYue * @date 2014年6月20日 上午12:11:52 */ -public abstract class ExcelDataHandlerDefaultImpl implements IExcelDataHandler { +public abstract class ExcelDataHandlerDefaultImpl implements IExcelDataHandler { /** * 需要处理的字段 */ private String[] needHandlerFields; @Override - public Object exportHandler(Object obj, String name, Object value) { + public Object exportHandler(T obj, String name, Object value) { return value; } @@ -44,7 +44,7 @@ public abstract class ExcelDataHandlerDefaultImpl implements IExcelDataHandler { } @Override - public Object importHandler(Object obj, String name, Object value) { + public Object importHandler(T obj, String name, Object value) { return value; } @@ -59,7 +59,7 @@ public abstract class ExcelDataHandlerDefaultImpl implements IExcelDataHandler { } @Override - public Hyperlink getHyperlink(CreationHelper creationHelper, Object obj, String name, Object value) { + public Hyperlink getHyperlink(CreationHelper creationHelper, T obj, String name, Object value) { return null; } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java index c7acb62..0191425 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java @@ -26,7 +26,7 @@ import org.apache.poi.ss.usermodel.Hyperlink; * @author JueYue * @date 2014年6月19日 下午11:59:45 */ -public interface IExcelDataHandler { +public interface IExcelDataHandler { /** * 导出处理方法 @@ -39,7 +39,7 @@ public interface IExcelDataHandler { * 当前值 * @return */ - public Object exportHandler(Object obj, String name, Object value); + public Object exportHandler(T obj, String name, Object value); /** * 获取需要处理的字段,导入和导出统一处理了, 减少书写的字段 @@ -59,7 +59,7 @@ public interface IExcelDataHandler { * 当前值 * @return */ - public Object importHandler(Object obj, String name, Object value); + public Object importHandler(T obj, String name, Object value); /** * 设置需要处理的属性列表 @@ -83,6 +83,6 @@ public interface IExcelDataHandler { * @param value * @return */ - public Hyperlink getHyperlink(CreationHelper creationHelper, Object obj, String name, Object value); + public Hyperlink getHyperlink(CreationHelper creationHelper, T obj, String name, Object value); } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelModel.java b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelModel.java new file mode 100644 index 0000000..8b165a8 --- /dev/null +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelModel.java @@ -0,0 +1,35 @@ +/** + * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) + * + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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 org.jeecgframework.poi.handler.inter; +/** + * Excel标记类 + * @author JueYue + * @date 2015年10月31日 下午9:31:47 + */ +public interface IExcelModel { + + /** + * 获取错误数据 + * @return + */ + public String getErrorMsg(); + /** + * 设置错误信息 + * @param errorMsg + */ + public void setErrorMsg(String errorMsg); + +} diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelVerifyHandler.java b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelVerifyHandler.java index 47b2a4c..b500ddd 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelVerifyHandler.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelVerifyHandler.java @@ -23,33 +23,15 @@ import org.jeecgframework.poi.excel.entity.result.ExcelVerifyHanlderResult; * @author JueYue * @date 2014年6月23日 下午11:08:21 */ -public interface IExcelVerifyHandler { - - /** - * 获取需要处理的字段,导入和导出统一处理了, 减少书写的字段 - * - * @return - */ - public String[] getNeedVerifyFields(); - - /** - * 获取需要处理的字段,导入和导出统一处理了, 减少书写的字段 - * - * @return - */ - public void setNeedVerifyFields(String[] arr); +public interface IExcelVerifyHandler { /** * 导出处理方法 * * @param obj * 当前对象 - * @param name - * 当前字段名称 - * @param value - * 当前值 * @return */ - public ExcelVerifyHanlderResult verifyHandler(Object obj, String name, Object value); + public ExcelVerifyHanlderResult verifyHandler(T obj); } diff --git a/pom.xml b/pom.xml index bfd26db..709b8e1 100644 --- a/pom.xml +++ b/pom.xml @@ -152,6 +152,13 @@ 5.2.0 + + org.hibernate + hibernate-validator + 5.1.3.Final + true + + org.jeecg