From fac5d01bfcddfc8edef0a5fd3d401b1fe383fe16 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 29 三月 2022 16:48:15 +0800 Subject: [PATCH] 采用配置文件自动化生成代码 --- src/main/java/org/yeshi/utils/generater/GeneraterManager.java | 12 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/dao/DaoData.java | 39 src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java | 391 +++++++++ src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java | 279 ++++++ src/main/resources/schemas/generator.dtd | 110 ++ src/main/java/org/yeshi/utils/generater/util/NameUtil.java | 32 src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java | 6 src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java | 45 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentImg.java | 52 + src/main/resources/generater/admin/adminController.template | 62 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/GenertorConfig.java | 50 + src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminData.java | 28 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminPageData.java | 57 + src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentRadioGroup.java | 26 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/ColumnData.java | 86 ++ src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentText.java | 86 ++ src/test/test.xml | 88 ++ src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java | 4 src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminControllerInfoVO.java | 26 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/SearchFormData.java | 43 + src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentSwitch.java | 13 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminControllerData.java | 59 + src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java | 425 +++++++++ src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/ApiData.java | 30 src/test/java/com/generater/GeneratorTest.java | 14 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java | 29 src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java | 42 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/ListPageData.java | 85 + src/main/java/org/yeshi/utils/generater/vo/xmlconfig/dao/DaoQuery.java | 31 src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java | 3 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AddPageData.java | 44 + src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/VerifyData.java | 52 + src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentSelect.java | 46 + src/main/java/org/yeshi/utils/generater/TestEntity3.java | 91 ++ src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/FormComponent.java | 38 src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java | 11 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/UpdatePageData.java | 44 + 37 files changed, 2,496 insertions(+), 83 deletions(-) diff --git a/src/main/java/org/yeshi/utils/generater/GeneraterManager.java b/src/main/java/org/yeshi/utils/generater/GeneraterManager.java index ed8d621..87d4a31 100644 --- a/src/main/java/org/yeshi/utils/generater/GeneraterManager.java +++ b/src/main/java/org/yeshi/utils/generater/GeneraterManager.java @@ -10,6 +10,7 @@ import org.yeshi.utils.generater.params.AdminGeneraterParams; import org.yeshi.utils.generater.params.DaoGeneraterParams; import org.yeshi.utils.generater.params.ServiceGeneraterParams; +import org.yeshi.utils.generater.util.NameUtil; import org.yeshi.utils.generater.vo.ExceptionVO; import org.yeshi.utils.generater.vo.admin.controller.AdminControllerInfoVO; import org.yeshi.utils.generater.vo.dao.MongoDBDaoVO; @@ -17,6 +18,7 @@ import org.yeshi.utils.generater.vo.service.QueryVO; import org.yeshi.utils.generater.vo.service.ServiceImplInfoVO; import org.yeshi.utils.generater.vo.service.ServiceInfoVO; +import org.yeshi.utils.generater.vo.xmlconfig.GenertorConfig; import org.yeshi.utils.mongo.MongodbBaseDao; import org.yeshi.utils.mybatis.BaseMapper; @@ -44,6 +46,7 @@ private String classRootDir; private Class entity; + public static GeneraterManager getInstance() { if (instance == null) @@ -104,7 +107,8 @@ * @param: packageName **/ public MongoDBDaoVO createDao(String packageName) throws Exception { - String daoName = entity.getSimpleName() + "Dao"; + + String daoName = NameUtil.getDefaultDaoName(entity); String path = getDirPath(packageName); MongoDBDaoVO vo = new MongoDBDaoVO.Builder() .setBaseDao(new ClassInfo(MongodbBaseDao.class.getSimpleName(), MongodbBaseDao.class.getName())) @@ -125,7 +129,7 @@ * @param: mapperDir **/ public MyBatisDBDaoVO createMapper(String packageName, String mapperDir) throws Exception { - String mapperName = entity.getSimpleName() + "Mapper"; + String mapperName = NameUtil.getDefaultMapperName(entity); String path = getDirPath(packageName); MyBatisDBDaoVO vo = new MyBatisDBDaoVO.Builder() .setBaseMapper(new ClassInfo(BaseMapper.class.getSimpleName(), BaseMapper.class.getName())) @@ -172,7 +176,7 @@ //鍒涘缓service鎺ュ彛 - String serviceName = entity.getSimpleName() + "Service"; + String serviceName = NameUtil.getDefaultServiceName(entity); String path = getDirPath(interPackageName); ServiceInfoVO vo = new ServiceInfoVO.Builder() .setPackageName(interPackageName) @@ -184,7 +188,7 @@ saveFile(result, new File(path, serviceName + ".java").getAbsolutePath()); //鍒涘缓service瀹炵幇 - String serviceImplName = entity.getSimpleName() + "ServiceImpl"; + String serviceImplName = NameUtil.getDefaultServiceImplName(entity); path = getDirPath(implPackageName); ServiceImplInfoVO implVO = new ServiceImplInfoVO.Builder() .setDao(dao) diff --git a/src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java b/src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java new file mode 100644 index 0000000..959dadc --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java @@ -0,0 +1,391 @@ +package org.yeshi.utils.generater; + +import org.springframework.data.mongodb.core.mapping.Document; +import org.yeshi.utils.FileUtil; +import org.yeshi.utils.StringUtil; +import org.yeshi.utils.generater.entity.ClassInfo; +import org.yeshi.utils.generater.entity.admin.AdminGeneraterInfo; +import org.yeshi.utils.generater.mybatis.Table; +import org.yeshi.utils.generater.util.NameUtil; +import org.yeshi.utils.generater.vo.ExceptionVO; +import org.yeshi.utils.generater.vo.admin.controller.AdminControllerInfoVO; +import org.yeshi.utils.generater.vo.dao.MongoDBDaoVO; +import org.yeshi.utils.generater.vo.dao.MyBatisDBDaoVO; +import org.yeshi.utils.generater.vo.service.QueryVO; +import org.yeshi.utils.generater.vo.service.ServiceImplInfoVO; +import org.yeshi.utils.generater.vo.service.ServiceInfoVO; +import org.yeshi.utils.generater.vo.xmlconfig.GenertorConfig; +import org.yeshi.utils.mongo.MongodbBaseDao; +import org.yeshi.utils.mybatis.BaseMapper; + +import java.io.File; +import java.io.IOException; +import java.lang.annotation.Annotation; + +/** + * @author Administrator + * @title: GeneraterManager + * @description: 鑷姩鍖栦唬鐮佺敓鎴愮鐞嗗櫒(閲囩敤瑙f瀽xml閰嶇疆鏂囦欢鐨勫舰寮�) + * @date 2021/10/13 14:48 + */ + +/** + * Title + * + * @Description //TODO + * @Author hxh + * @Date 18:11 2021/10/13 + **/ +public class GeneraterManagerV2 { + + private static GeneraterManagerV2 instance; + + private String classRootDir; + private GenertorConfig config; + + public static GeneraterManagerV2 getInstance() { + if (instance == null) + instance = new GeneraterManagerV2(); + return instance; + } + + + public void init(String classRootDir, GenertorConfig config) { + this.classRootDir = classRootDir; + this.config = config; + } + + //鑾峰彇鏂囦欢澶圭殑璺緞 + private String getDirPath(String packageName) { + File f = new File(classRootDir); + if (!f.exists()) { + f.mkdirs(); + } + f = new File(f.getAbsolutePath(), packageName.replace(".", "/")); + if (!f.exists()) { + f.mkdirs(); + } + return f.getAbsolutePath(); + } + + /** + * @return void + * @author hxh + * @description 淇濆瓨鏂囦欢 + * @date 10:06 2021/10/14 + * @param: data + * @param: path + **/ + private void saveFile(String data, String path) throws IOException { + if (!new File(path).exists()) + new File(path).createNewFile(); + FileUtil.saveAsFileByte(data.getBytes("UTF-8"), path); + } + + public void createException(Class base) throws Exception { + if (config.getService().getException() == null) { + throw new Exception("灏氭湭閰嶇疆寮傚父淇℃伅"); + } + + String path = getDirPath(config.getService().getException().getPkg()); + try { + ExceptionVO vo = new ExceptionVO.Builder().setEntity(config.getEntity()).setPackageName(config.getService().getException().getPkg()).setBase(new ClassInfo(base.getSimpleName(), base.getName())).build(); + String result = GeneraterUtil.createException(vo); + //淇濆瓨 + saveFile(result, path); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void createDao() throws Exception { + + Annotation[] as = config.getEntity().getAnnotations(); + for (Annotation a : as) { + if (a instanceof Table) { + createMapper(); + break; + } else if (a instanceof Document) { + createMongoDBDao(); + break; + } + } + } + + /** + * @return org.yeshi.utils.generater.vo.dao.MongoDBDaoVO + * @author hxh + * @description 鑷姩鐢熸垚Dao + * @date 18:24 2021/10/13 + * @param: packageName + **/ + public MongoDBDaoVO createMongoDBDao() throws Exception { + if (config.getDao() == null) { + throw new Exception("灏氭湭閰嶇疆Dao淇℃伅"); + } + + String daoName = NameUtil.getDefaultDaoName(config.getEntity()); + String path = getDirPath(config.getDao().getPkg()); + MongoDBDaoVO vo = new MongoDBDaoVO.Builder() + .setBaseDao(new ClassInfo(MongodbBaseDao.class.getSimpleName(), MongodbBaseDao.class.getName())) + .setDao(new ClassInfo(daoName, config.getDao().getPkg() + "." + daoName)) + .setEntity(config.getEntity()).setDaoData(config.getDao()).build(); + String result = GeneraterUtil.createMongoDBDao(vo); + //淇濆瓨 + saveFile(result, new File(path, daoName + ".java").getAbsolutePath()); + return vo; + } + + /** + * @return org.yeshi.utils.generater.vo.dao.MyBatisDBDaoVO + * @author hxh + * @description 鑷姩鐢熸垚Mapper + * @date 18:24 2021/10/13 + * @param: packageName + * @param: mapperDir + **/ + public MyBatisDBDaoVO createMapper() throws Exception { + if (config.getDao() == null) { + throw new Exception("灏氭湭閰嶇疆Dao淇℃伅"); + } + + if (StringUtil.isNullOrEmpty(config.getDao().getMapperDir())) { + throw new Exception("Mapper瀛樻斁鐩綍涓虹┖"); + } + + String mapperName = NameUtil.getDefaultMapperName(config.getEntity()); + String path = getDirPath(config.getDao().getPkg()); + MyBatisDBDaoVO vo = new MyBatisDBDaoVO.Builder() + .setBaseMapper(new ClassInfo(BaseMapper.class.getSimpleName(), BaseMapper.class.getName())) + .setMapper(new ClassInfo(mapperName, config.getDao().getPkg() + "." + mapperName)) + .setEntity(config.getEntity()) + .setDaoData(config.getDao()) + .build(); + + String result = GeneraterUtil.createMybatisDBMapper(vo); + //淇濆瓨 + saveFile(result, new File(path, mapperName + ".java").getAbsolutePath()); + if (!new File(config.getDao().getMapperDir()).exists()) + new File(config.getDao().getMapperDir()).mkdirs(); + result = GeneraterUtil.createMybatisDBMapperXML(vo); + saveFile(result, new File(config.getDao().getMapperDir(), mapperName + ".xml").getAbsolutePath()); + return vo; + } + + /** + * @return org.yeshi.utils.generater.vo.service.QueryVO + * @author hxh + * @description /鍒涘缓鏌ヨQuery + * @date 18:24 2021/10/13 + * @param: packageName + **/ + public QueryVO createQuery(String packageName) throws Exception { + //鍒涘缓Query + String path = getDirPath(packageName); + QueryVO queryVO = new QueryVO.Builder().setEntity(config.getEntity()).setPackageName(packageName).build(); + String result = GeneraterUtil.createQuery(queryVO); + saveFile(result, new File(path, queryVO.getClassName() + ".java").getAbsolutePath()); + return queryVO; + } + + /** + * @return org.yeshi.utils.generater.vo.service.ServiceInfoVO + * @author hxh + * @description 鑷姩鐢熸垚鏈嶅姟 + * @date 18:23 2021/10/13 + * @param: interPackageName + * @param: implPackageName + * @param: query + * @param: dao + **/ + public ServiceInfoVO createService(ClassInfo dao) throws Exception { + + if (config.getService() == null) { + throw new Exception("灏氭湭閰嶇疆service"); + } + + if (config.getDao() == null && dao == null) { + throw new Exception("璇峰湪xml涓厤缃瓺ao锛屾垨鑰呬紶鍏ao淇℃伅"); + } + + if (dao == null) { + if (StringUtil.isNullOrEmpty(config.getDao().getMapperDir())) { + String daoName = NameUtil.getDefaultDaoName(config.getEntity()); + dao = new ClassInfo(daoName, config.getDao().getPkg() + "." + daoName); + } else { + String daoName = NameUtil.getDefaultMapperName(config.getEntity()); + dao = new ClassInfo(daoName, config.getDao().getPkg() + "." + daoName); + } + } + + QueryVO queryVO = createQuery(config.getService().getQueryPackage()); + + ClassInfo query = new ClassInfo(queryVO.getClassName(), queryVO.getPackageName() + "." + queryVO.getClassName()); + + //鍒涘缓service鎺ュ彛 + String serviceName = NameUtil.getDefaultServiceName(config.getEntity()); + String path = getDirPath(config.getService().getInterPackage()); + ServiceInfoVO vo = new ServiceInfoVO.Builder() + .setPackageName(config.getService().getInterPackage()) + .setEntity(config.getEntity()) + .setQuery(query) + .setService(new ClassInfo(serviceName, config.getService().getInterPackage() + "." + serviceName)) + .build(); + String result = GeneraterUtil.createService(vo); + saveFile(result, new File(path, serviceName + ".java").getAbsolutePath()); + + //鍒涘缓service瀹炵幇 + String serviceImplName = NameUtil.getDefaultServiceImplName(config.getEntity()); + path = getDirPath(config.getService().getImplPackage()); + ServiceImplInfoVO implVO = new ServiceImplInfoVO.Builder() + .setDao(dao) + .setPackageName(config.getService().getImplPackage()) + .setEntity(config.getEntity()) + .setQuery(query) + .setService(new ClassInfo(serviceName, config.getService().getInterPackage() + "." + serviceName)) + .setDaoQuery(new ClassInfo("DaoQuery", dao.getClazz() + ".DaoQuery")) + .build(); + result = GeneraterUtil.createServiceImpl(implVO); + saveFile(result, new File(path, serviceImplName + ".java").getAbsolutePath()); + return vo; + } + + + /** + * @return void + * @author hxh + * @description 鑷姩鐢熸垚绠$悊妯″潡 + * @date 18:23 2021/10/13 + * @param: controllerPackage + * @param: htmlDir + * @param: query + * @param: service + **/ + public void createAdmin(ClassInfo query, ClassInfo service) throws Exception { + if (config.getAdmin() == null) { + throw new Exception("灏氭湭閰嶇疆admin"); + } + + if (service == null) { + if (config.getService() == null) { + throw new Exception("璇蜂紶鍏ervice鎴栬�呭湪xml涓厤缃畇ervice"); + } + String serviceName = NameUtil.getDefaultServiceName(config.getEntity()); + service = new ClassInfo(serviceName, config.getService().getInterPackage() + "." + serviceName); + } + + if (query == null) { + if (config.getService() == null) { + throw new Exception("璇蜂紶鍏ervice鎴栬�呭湪xml涓厤缃畇ervice"); + } + String queryName = NameUtil.getDefaultQueryName(config.getEntity()); + query = new ClassInfo(queryName, config.getService().getQueryPackage() + "." + queryName); + } + + + String path = getDirPath(config.getAdmin().getController().getPkg()); + + AdminGeneraterInfo generaterInfo = new AdminGeneraterInfo.Builder().setEntityClass(config.getEntity()).setAdminData(config.getAdmin()).build(); + + + AdminControllerInfoVO vo = new AdminControllerInfoVO.Builder().setAdminInfo(generaterInfo).setPackageName(generaterInfo.getControllerData().getPkg()).setQueryVO(query).setService(service).build(); + String controllerName = vo.getControllerName(); + //鐢熸垚controller + String result = GeneraterUtil.createAdminController(vo); + saveFile(result, new File(path, controllerName + ".java").getAbsolutePath()); + + + if (!new File(generaterInfo.getPageDir()).exists()) { + new File(generaterInfo.getPageDir()).mkdirs(); + } + + String htmlNamePrefix = getHtmlNameFromEntityName(config.getEntity().getSimpleName()); + + if (generaterInfo.getShowDataList() != null && generaterInfo.getShowDataList().size() > 0) { + result = GeneraterUtil.createAdminPageForList(generaterInfo); + saveFile(result, new File(generaterInfo.getPageDir(), generaterInfo.getListFileName() != null ? generaterInfo.getListFileName() : htmlNamePrefix + "_list.html").getAbsolutePath()); + } + + if (config.getAdmin().getPages().getAdd() != null && generaterInfo.getAddFormRows() != null && generaterInfo.getAddFormRows().size() > 0) { + result = GeneraterUtil.createAdminPageForAdd(generaterInfo); + saveFile(result, new File(generaterInfo.getPageDir(), generaterInfo.getAddFileName() != null ? generaterInfo.getAddFileName() : htmlNamePrefix + "_add.html").getAbsolutePath()); + } + + if (config.getAdmin().getPages().getUpdate() != null && generaterInfo.getUpdateFormRows() != null && generaterInfo.getUpdateFormRows().size() > 0) { + result = GeneraterUtil.createAdminPageForUpdate(generaterInfo); + saveFile(result, new File(generaterInfo.getPageDir(), generaterInfo.getUpdateFileName() != null ? generaterInfo.getUpdateFileName() : htmlNamePrefix + "_update.html").getAbsolutePath()); + } + } + + + /** + * @return void + * @author hxh + * @description 鍒涘缓鏁翠釜鍔熻兘妯″潡 + * @date 18:19 2021/10/13 + * @param: daoParams + * @param: serviceParams + * @param: adminParams + **/ + public void createWholeFunction() throws Exception { + Annotation[] as = config.getEntity().getAnnotations(); + int type = -1; + for (Annotation a : as) { + if (a instanceof Table) { + type = 1; + break; + } else if (a instanceof Document) { + type = 2; + break; + } + } + if (type == -1) { + throw new Exception("瀹炰綋鏈厤缃甿ybatis鎴栬�卪ongodb"); + } + + createDao(); + createService(null); + createAdmin(null, null); + } + + /** + * @return java.lang.String + * @author hxh + * @description 閫氳繃entity鐨勫悕绉拌幏鍙杊tml鏂囦欢鐨勫墠缂�鍚嶇О + * @date 18:25 2021/10/13 + * @param: entityName + **/ + private static String getHtmlNameFromEntityName(String entityName) { + StringBuffer sb = new StringBuffer(); + StringBuffer buffer = null; + for (int i = 0; i < entityName.length(); i++) { + if (entityName.charAt(i) >= 65 && entityName.charAt(i) <= 90) { + //澶у啓瀛楁瘝 + if (buffer == null) + buffer = new StringBuffer(); + buffer.append(entityName.charAt(i)); + } else { + if (buffer != null) { + sb.append("_" + buffer.toString().toLowerCase()); + buffer = null; + } + sb.append(entityName.charAt(i)); + } + } + + if (buffer != null) { + sb.append("_" + buffer.toString().toLowerCase()); + } + + if (sb.charAt(0) == '_') + sb = sb.replace(0, 1, ""); + return sb.toString(); + } + + + public static void main(String[] args) { + System.out.print(getHtmlNameFromEntityName("TTestEEntity")); + } + + +} diff --git a/src/main/java/org/yeshi/utils/generater/TestEntity3.java b/src/main/java/org/yeshi/utils/generater/TestEntity3.java new file mode 100644 index 0000000..275d9db --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/TestEntity3.java @@ -0,0 +1,91 @@ +package org.yeshi.utils.generater; + +import org.springframework.data.annotation.Id; +import org.yeshi.utils.generater.mybatis.Column; +import org.yeshi.utils.generater.mybatis.Table; + +import java.util.Date; + +/** + * @author Administrator + * @title: TestEntity + * @description: 娴嬭瘯entity + * @date 2021/9/23 14:22 + */ +@Table("table_test") +public class TestEntity3 { + @Id + private String id; + + @Column(name = "nick_name") + private String nickName; + + private Integer type; + + private Integer sex; + + private String portrait; + + private String province; + + private Date createTime; + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getSex() { + return sex; + } + + public void setSex(Integer sex) { + this.sex = sex; + } + + public String getPortrait() { + return portrait; + } + + public void setPortrait(String portrait) { + this.portrait = portrait; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + +} diff --git a/src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java b/src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java index 480ad85..ab34430 100644 --- a/src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java +++ b/src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java @@ -1,11 +1,18 @@ package org.yeshi.utils.generater.entity.admin; import org.yeshi.utils.generater.annotation.admin.AdminController; +import org.yeshi.utils.generater.annotation.admin.form.*; +import org.yeshi.utils.generater.entity.KeyValue; import org.yeshi.utils.generater.util.AnotationUtil; +import org.yeshi.utils.generater.vo.xmlconfig.admin.AdminControllerData; +import org.yeshi.utils.generater.vo.xmlconfig.admin.AdminData; +import org.yeshi.utils.generater.vo.xmlconfig.admin.ColumnData; +import org.yeshi.utils.generater.vo.xmlconfig.admin.SearchFormData; +import org.yeshi.utils.generater.vo.xmlconfig.admin.form.*; +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; import java.lang.annotation.Annotation; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author Administrator @@ -18,7 +25,7 @@ //entity绫� private Class entity; //controller娉ㄨВ瀵硅薄 - private AdminController controllerData; + private AdminControllerData controllerData; //淇敼鐨勮〃鍗曡鏁版嵁 private List<FormRowData> updateFormRows; //娣诲姞鐨勮〃鍗曡鏁版嵁 @@ -28,6 +35,24 @@ private List<Map<String, Object>> showDataList; + private String title; + private String pageDir; + private String listFileName; + private String addFileName; + private String updateFileName; + + private boolean delete; + private boolean add; + private boolean edit; + + + public String getPageDir() { + return pageDir; + } + + public void setPageDir(String pageDir) { + this.pageDir = pageDir; + } public Class getEntity() { return entity; @@ -37,11 +62,11 @@ this.entity = entity; } - public AdminController getControllerData() { + public AdminControllerData getControllerData() { return controllerData; } - public void setControllerData(AdminController controllerData) { + public void setControllerData(AdminControllerData controllerData) { this.controllerData = controllerData; } @@ -77,13 +102,75 @@ this.showDataList = showDataList; } + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getListFileName() { + return listFileName; + } + + public void setListFileName(String listFileName) { + this.listFileName = listFileName; + } + + public String getAddFileName() { + return addFileName; + } + + public void setAddFileName(String addFileName) { + this.addFileName = addFileName; + } + + public String getUpdateFileName() { + return updateFileName; + } + + public void setUpdateFileName(String updateFileName) { + this.updateFileName = updateFileName; + } + + public boolean isDelete() { + return delete; + } + + public void setDelete(boolean delete) { + this.delete = delete; + } + + public boolean isAdd() { + return add; + } + + public void setAdd(boolean add) { + this.add = add; + } + + public boolean isEdit() { + return edit; + } + + public void setEdit(boolean edit) { + this.edit = edit; + } public static class Builder { private Class entity; + private AdminData adminData; + public Builder setEntityClass(Class clazz) { this.entity = clazz; + return this; + } + + public Builder setAdminData(AdminData adminData) { + this.adminData = adminData; return this; } @@ -91,24 +178,180 @@ if (entity == null) { throw new Exception("灏氭湭璁剧疆entity"); } - //鏌ヨ鏄惁闇�瑕佺敓鎴愮鐞嗙晫闈笌controller - Annotation[] ans = entity.getAnnotations(); - for (Annotation an : ans) { - if (an instanceof AdminController) { - Class searchFormClass = ((AdminController) an).searchForm(); - AdminGeneraterInfo info = new AdminGeneraterInfo(); - info.setEntity(entity); - info.setControllerData((AdminController) an); - info.setSearchFormRows(AnotationUtil.getFormRowData(searchFormClass)); - info.setAddFormRows(AnotationUtil.getFormRowData(entity)); - info.setUpdateFormRows(AnotationUtil.getUpdateFormRowData(entity)); - info.setShowDataList(AnotationUtil.getShowDataList(entity)); - return info; + + if (adminData != null) { + //xml閰嶇疆鏂囦欢鏂瑰紡鐢熸垚 + AdminGeneraterInfo info = new AdminGeneraterInfo(); + info.setEntity(entity); + info.setControllerData(adminData.getController()); + info.setTitle(adminData.getPages().getTitle()); + info.setPageDir(adminData.getPages().getPageDir()); + info.setEdit(adminData.getPages().getList().isEdit()); + info.setDelete(adminData.getPages().getList().isDelete()); + info.setAdd(adminData.getPages().getAdd() != null); + + + if (adminData.getPages().getList() != null) { + info.setListFileName(adminData.getPages().getList().getFileName()); + if (adminData.getPages().getList().getSearchForm() != null) { + List<FormRowData> searchFormList = new ArrayList<>(); + for (ColumnData columnData : adminData.getPages().getList().getSearchForm().getColumns()) { + FormRowData rowData = getFormRowData(columnData); + searchFormList.add(rowData); + } + info.setSearchFormRows(searchFormList); + } + + List<Map<String, Object>> showList = new ArrayList<>(); + + for (ColumnData columnData : adminData.getPages().getList().getColumns()) { + Map<String, Object> map = new HashMap<>(); + map.put("identifier", columnData.getProperty()); + map.put("title", columnData.getTitle()); + map.put("order", columnData.getOrder()); + map.put("imgWidth", columnData.getImgWidth()); + map.put("imgHeight", columnData.getImgHeight()); + map.put("showType", columnData.getShowType().name()); + showList.add(map); + } + + Comparator<Map<String, Object>> cm = (Map<String, Object> o1, Map<String, Object> o2) -> { + return (int) (o1.get("order")) - (int) (o2.get("order")); + }; + Collections.sort(showList, cm); + info.setShowDataList(showList); + } + + if (adminData.getPages().getAdd() != null) { + info.setAddFileName(adminData.getPages().getAdd().getFileName()); + List<FormRowData> rowList = new ArrayList<>(); + for (ColumnData columnData : adminData.getPages().getAdd().getColumns()) { + FormRowData rowData = getFormRowData(columnData); + rowList.add(rowData); + } + info.setAddFormRows(rowList); + } + + if (adminData.getPages().getUpdate() != null) { + info.setUpdateFileName(adminData.getPages().getUpdate().getFileName()); + List<FormRowData> rowList = new ArrayList<>(); + for (ColumnData columnData : adminData.getPages().getUpdate().getColumns()) { + FormRowData rowData = getFormRowData(columnData); + rowList.add(rowData); + } + info.setUpdateFormRows(rowList); + } + + return info; + } else { + //娉ㄨВ鏂瑰紡鐢熸垚 + //鏌ヨ鏄惁闇�瑕佺敓鎴愮鐞嗙晫闈笌controller + Annotation[] ans = entity.getAnnotations(); + for (Annotation an : ans) { + if (an instanceof AdminController) { + Class searchFormClass = ((AdminController) an).searchForm(); + AdminGeneraterInfo info = new AdminGeneraterInfo(); + info.setEntity(entity); + + AdminControllerData adminControllerData = new AdminControllerData(); + AdminController adminController = (AdminController) an; + adminControllerData.setMapping(adminController.mapping()); + adminControllerData.setResponseBody(true); + adminControllerData.setPkg(null); + adminControllerData.setJsonp(false); + + info.setEdit(adminController.edit()); + info.setDelete(adminController.delete()); + info.setAdd(true); + + info.setControllerData(adminControllerData); + info.setSearchFormRows(AnotationUtil.getFormRowData(searchFormClass)); + info.setAddFormRows(AnotationUtil.getFormRowData(entity)); + info.setUpdateFormRows(AnotationUtil.getUpdateFormRowData(entity)); + info.setShowDataList(AnotationUtil.getShowDataList(entity)); + return info; + } } } return null; } + private FormRowData getFormRowData(ColumnData columnData) { + FormRowData rowData = new FormRowData(); + rowData.setKey(columnData.getProperty()); + FormComponent component = columnData.getComponent(); + Map<String, Object> params = new HashMap<>(); + params.put("desc", component.getDesc()); + params.put("disable", !component.isEnable()); + params.put("title", columnData.getTitle()); + if (component instanceof FormComponentText) { + rowData.setType(Text.class.getSimpleName()); + + FormComponentText formComponentText = (FormComponentText) component; + params.put("dateFormat", formComponentText.getDateFormat()); + params.put("inputType", formComponentText.getInputType().name()); + params.put("maxLength", formComponentText.getMaxLength() == null ? -1 : formComponentText.getMaxLength()); + params.put("minLength", formComponentText.getMinLength() == null ? -1 : formComponentText.getMinLength()); + params.put("placeHolder", formComponentText.getPlaceHolder()); + if (formComponentText.getVerify() != null) { + params.put("require", formComponentText.getVerify().isRequire()); + params.put("verifyType", formComponentText.getVerify().getType()); + params.put("verifyValue", formComponentText.getVerify().getExpress()); + params.put("verifyNotifyMsg", formComponentText.getVerify().getNotify()); + } + + } else if (component instanceof FormComponentRadioGroup) { + rowData.setType(RadioGroup.class.getSimpleName()); + FormComponentRadioGroup formComponentRadioGroup = (FormComponentRadioGroup) component; + Map<String, Object> map = formComponentRadioGroup.getValues(); + List<KeyValue> list = new ArrayList<>(); + for (Iterator<String> its = map.keySet().iterator(); its.hasNext(); ) { + String key = its.next(); + list.add(new KeyValue(key, map.get(key) + "")); + } + params.put("values", list); + } else if (component instanceof FormComponentImg) { + rowData.setType(Img.class.getSimpleName()); + FormComponentImg formComponentImg = (FormComponentImg) component; + params.put("width", formComponentImg.getWidth() == null ? -1 : formComponentImg.getWidth()); + params.put("height", formComponentImg.getHeight() == null ? -1 : formComponentImg.getHeight()); + params.put("uploadApi", formComponentImg.getApi().getPath()); + if (formComponentImg.getApi().getParams() != null) { + List<KeyValue> list = new ArrayList<>(); + for (Iterator<String> its = formComponentImg.getApi().getParams().keySet().iterator(); its.hasNext(); ) { + String key = its.next(); + list.add(new KeyValue(key, formComponentImg.getApi().getParams().get(key) + "")); + } + params.put("uploadApiParams", list); + } + } else if (component instanceof FormComponentSwitch) { + rowData.setType(Switch.class.getSimpleName()); + } else if (component instanceof FormComponentSelect) { + rowData.setType(Select.class.getSimpleName()); + FormComponentSelect formComponentSelect = (FormComponentSelect) component; + if (formComponentSelect.getApi() != null) { + params.put("apiPath", formComponentSelect.getApi().getPath()); + List<KeyValue> list = new ArrayList<>(); + for (Iterator<String> its = formComponentSelect.getApi().getParams().keySet().iterator(); its.hasNext(); ) { + String key = its.next(); + list.add(new KeyValue(key, formComponentSelect.getApi().getParams().get(key) + "")); + } + params.put("apiParams", list); + } + + if (formComponentSelect.getValues() != null) { + List<KeyValue> list = new ArrayList<>(); + for (Iterator<String> its = formComponentSelect.getValues().keySet().iterator(); its.hasNext(); ) { + String key = its.next(); + list.add(new KeyValue(key, formComponentSelect.getValues().get(key) + "")); + } + params.put("values", list); + } + } + rowData.setParams(params); + return rowData; + } + } diff --git a/src/main/java/org/yeshi/utils/generater/util/NameUtil.java b/src/main/java/org/yeshi/utils/generater/util/NameUtil.java new file mode 100644 index 0000000..be3c69c --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/util/NameUtil.java @@ -0,0 +1,32 @@ +package org.yeshi.utils.generater.util; + +/** + * @author hxh + * @title: NameUtil + * @description: 鍙栧悕宸ュ叿绫� + * @date 2022/3/29 15:59 + */ +public class NameUtil { + + public static String getDefaultDaoName(Class entity) { + return entity.getSimpleName() + "Dao"; + } + + public static String getDefaultMapperName(Class entity) { + return entity.getSimpleName() + "Mapper"; + } + + public static String getDefaultServiceName(Class entity) { + return entity.getSimpleName() + "Service"; + } + + public static String getDefaultQueryName(Class entity) { + return entity.getSimpleName() + "Query"; + } + + public static String getDefaultServiceImplName(Class entity) { + return entity.getSimpleName() + "ServiceImpl"; + } + + +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminControllerInfoVO.java b/src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminControllerInfoVO.java index a90b56a..124e173 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminControllerInfoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminControllerInfoVO.java @@ -19,6 +19,8 @@ private ClassInfo service; private ClassInfo query; private boolean jsonp; + + private boolean responseBody; //涓婚敭绫诲瀷 private String identifyIdType; @@ -38,6 +40,8 @@ private ClassInfo query; // private ClassInfo service; + + private boolean responseBody; public Builder setAdminInfo(AdminGeneraterInfo generaterInfo) { @@ -60,6 +64,11 @@ return this; } + public Builder setResponseBody(boolean responseBody) { + this.responseBody = responseBody; + return this; + } + public AdminControllerInfoVO build() throws Exception { if (generaterInfo == null) { throw new Exception("generaterInfo涓嶈兘涓虹┖"); @@ -75,15 +84,16 @@ } AdminControllerInfoVO vo = new AdminControllerInfoVO(); - vo.setMapping(generaterInfo.getControllerData().mapping()); + vo.setMapping(generaterInfo.getControllerData().getMapping()); vo.setEntity(new ClassInfo(generaterInfo.getEntity().getSimpleName(), generaterInfo.getEntity().getName())); - vo.setJsonp(generaterInfo.getControllerData().jsonp()); + vo.setJsonp(generaterInfo.getControllerData().isJsonp()); vo.setPackageName(packageName); vo.setQueryVO(query); vo.setService(service); vo.setAdd(generaterInfo.getAddFormRows() != null && generaterInfo.getAddFormRows().size() > 0); - vo.setUpdate(generaterInfo.getUpdateFormRows() != null && generaterInfo.getUpdateFormRows().size() > 0 && generaterInfo.getControllerData().edit()); - vo.setDelete(generaterInfo.getControllerData().delete()); + vo.setUpdate(generaterInfo.getUpdateFormRows() != null && generaterInfo.getUpdateFormRows().size() > 0 ); + vo.setDelete(true); + vo.setResponseBody(generaterInfo.getControllerData().isResponseBody()); vo.setIdentifyIdType(EntityUtil.getIdentifyId(generaterInfo.getEntity()).getType().getSimpleName()); vo.setControllerName(vo.getEntity().getName() + "AdminController"); @@ -184,4 +194,12 @@ public void setDelete(boolean delete) { this.delete = delete; } + + public boolean isResponseBody() { + return responseBody; + } + + public void setResponseBody(boolean responseBody) { + this.responseBody = responseBody; + } } diff --git a/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java b/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java index 049eb12..c8292a7 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java @@ -40,9 +40,9 @@ public FormAddInfoVO build() { FormAddInfoVO vo = new FormAddInfoVO(); - vo.setAddApi(generaterInfo.getControllerData().mapping() + "/add"); + vo.setAddApi(generaterInfo.getControllerData().getMapping() + "/add"); vo.setRowsList(generaterInfo.getAddFormRows()); - vo.setTitle("鏂板" + generaterInfo.getControllerData().title()); + vo.setTitle("鏂板" + generaterInfo.getTitle()); //閬嶅巻闇�瑕佹鍒欒〃杈惧紡鐨凾ext鎴栬�匱extArea List<FormInputRegexVerifyVO> verifyVOList = new ArrayList<>(); for (FormRowData row : vo.getRowsList()) { diff --git a/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java b/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java index ffaf0ea..04da1ed 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java @@ -41,10 +41,10 @@ public FormUpdateInfoVO build() { FormUpdateInfoVO vo = new FormUpdateInfoVO(); - vo.setUpdateApi(generaterInfo.getControllerData().mapping() + "/update"); - vo.setDetailApi(generaterInfo.getControllerData().mapping() + "/get"); + vo.setUpdateApi(generaterInfo.getControllerData().getMapping() + "/update"); + vo.setDetailApi(generaterInfo.getControllerData().getMapping() + "/get"); vo.setRowsList(generaterInfo.getUpdateFormRows()); - vo.setTitle("淇敼" + generaterInfo.getControllerData().title()); + vo.setTitle("淇敼" + generaterInfo.getTitle()); //閬嶅巻闇�瑕佹鍒欒〃杈惧紡鐨凾ext鎴栬�匱extArea List<FormInputRegexVerifyVO> verifyVOList = new ArrayList<>(); for (FormRowData row : vo.getRowsList()) { diff --git a/src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java b/src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java index e4f1496..2432a60 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java @@ -51,7 +51,7 @@ public ListInfoVO build() { ListInfoVO vo = new ListInfoVO(); - vo.setListApi(generaterInfo.getControllerData().mapping() + "/list"); + vo.setListApi(generaterInfo.getControllerData().getMapping() + "/list"); if (generaterInfo.getAddFormRows() != null && generaterInfo.getAddFormRows().size() > 0) { vo.setAddPagePath(generaterInfo.getEntity().getSimpleName().toLowerCase() + "_add.html"); } @@ -61,10 +61,10 @@ } vo.setSearchFormRows(generaterInfo.getSearchFormRows()); vo.setShowFileds(generaterInfo.getShowDataList()); - vo.setTitle(generaterInfo.getControllerData().title()); + vo.setTitle(generaterInfo.getTitle()); - if (generaterInfo.getControllerData().delete()) { - vo.setDeleteApi(generaterInfo.getControllerData().mapping() + "/delete"); + if (generaterInfo.isDelete()) { + vo.setDeleteApi(generaterInfo.getControllerData().getMapping() + "/delete"); } //閬嶅巻闇�瑕佹鍒欒〃杈惧紡鐨凾ext鎴栬�匱extArea @@ -132,6 +132,9 @@ if (layVerify.endsWith("|")) layVerify = layVerify.substring(0, layVerify.length() - 1); //閲嶆柊璧嬪�硷紝琛ㄥ崟涓洿鎺ュ彇鍊� + if (row.getParams() == null) { + row.setParams(new HashMap<>()); + } row.getParams().put("verifyValue", layVerify); } diff --git a/src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java b/src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java index 9bc53a3..159938f 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java @@ -5,6 +5,8 @@ import org.yeshi.utils.StringUtil; import org.yeshi.utils.generater.annotation.admin.DaoQueryCondition; import org.yeshi.utils.generater.entity.*; +import org.yeshi.utils.generater.vo.xmlconfig.dao.DaoData; +import org.yeshi.utils.generater.vo.xmlconfig.dao.DaoQuery; import java.lang.annotation.Annotation; import java.lang.reflect.Field; @@ -31,6 +33,8 @@ private Class entity; private ClassInfo dao; + private DaoData daoData; + public Builder setBaseDao(ClassInfo baseDao) { this.baseDao = baseDao; return this; @@ -43,6 +47,11 @@ public Builder setDao(ClassInfo dao) { this.dao = dao; + return this; + } + + public Builder setDaoData(DaoData daoData) { + this.daoData = daoData; return this; } @@ -95,16 +104,34 @@ } //鑾峰彇鏌ヨ鏉′欢 - for (Annotation a : as) { - if (a instanceof DaoQueryCondition) { - MybatisColumnData columnData=new MybatisColumnData(columName); - if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) { - daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columName),columnData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt)); - daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columName),columnData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte)); - } else { - daoQueryColumnList.add(new DaoQueryColumnData(columName,columnData, fd.getType().getSimpleName(), ((DaoQueryCondition) a).queryType())); + + if (daoData != null) { + //鏌ヨ鏉′欢浠庡閮ㄤ紶鍏� + for (DaoQuery query : daoData.getQueryList()) { + if (query.getName().equalsIgnoreCase(columName)) { + MybatisColumnData columnData = new MybatisColumnData(columName); + if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) { + daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columName), columnData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt)); + daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columName), columnData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte)); + } else { + daoQueryColumnList.add(new DaoQueryColumnData(columName, columnData, fd.getType().getSimpleName(), query.getQueryType())); + } } - break; + } + + } else { + //鏍规嵁娉ㄨВ璁剧疆鐨勬煡璇㈡潯浠� + for (Annotation a : as) { + if (a instanceof DaoQueryCondition) { + MybatisColumnData columnData = new MybatisColumnData(columName); + if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) { + daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columName), columnData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt)); + daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columName), columnData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte)); + } else { + daoQueryColumnList.add(new DaoQueryColumnData(columName, columnData, fd.getType().getSimpleName(), ((DaoQueryCondition) a).queryType())); + } + break; + } } } diff --git a/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java b/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java index aba2762..b86b3bc 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java @@ -9,6 +9,8 @@ import org.yeshi.utils.generater.mybatis.ColumnParseUtil; import org.yeshi.utils.generater.mybatis.Table; import org.yeshi.utils.generater.vo.ExceptionVO; +import org.yeshi.utils.generater.vo.xmlconfig.dao.DaoData; +import org.yeshi.utils.generater.vo.xmlconfig.dao.DaoQuery; import java.lang.annotation.Annotation; import java.lang.reflect.Field; @@ -28,11 +30,13 @@ private List<DaoQueryColumnData> queryList; private String table; + public static class Builder { private ClassInfo baseMapper; private Class entity; private ClassInfo mapper; + private DaoData daoData; public Builder setBaseMapper(ClassInfo baseMapper) { this.baseMapper = baseMapper; @@ -46,6 +50,11 @@ public Builder setMapper(ClassInfo mapper) { this.mapper = mapper; + return this; + } + + public Builder setDaoData(DaoData daoData) { + this.daoData = daoData; return this; } @@ -133,16 +142,31 @@ columlist.add(columData); - //鑾峰彇鏌ヨ鏉′欢 - for (Annotation a : as) { - if (a instanceof DaoQueryCondition) { - if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) { - daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt)); - daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte)); - } else { - daoQueryColumnList.add(new DaoQueryColumnData(columData.getProperty(), columData, fd.getType().getSimpleName(), ((DaoQueryCondition) a).queryType())); + if (daoData != null) { + //鏌ヨ鏉′欢浠庡閮ㄤ紶鍏� + for (DaoQuery query : daoData.getQueryList()) { + if (query.getName().equalsIgnoreCase(columData.getProperty())) { + if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) { + daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt)); + daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte)); + } else { + daoQueryColumnList.add(new DaoQueryColumnData(columData.getProperty(), columData, fd.getType().getSimpleName(), query.getQueryType())); + } } - break; + } + + } else { + //鑾峰彇娉ㄨВ鏌ヨ鏉′欢 + for (Annotation a : as) { + if (a instanceof DaoQueryCondition) { + if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) { + daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt)); + daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte)); + } else { + daoQueryColumnList.add(new DaoQueryColumnData(columData.getProperty(), columData, fd.getType().getSimpleName(), ((DaoQueryCondition) a).queryType())); + } + break; + } } } } diff --git a/src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java b/src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java index 796b659..b55747b 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java @@ -2,6 +2,7 @@ import org.yeshi.utils.generater.entity.BaseData; import org.yeshi.utils.generater.util.EntityUtil; +import org.yeshi.utils.generater.util.NameUtil; import java.lang.reflect.Field; @@ -41,7 +42,7 @@ } QueryVO vo = new QueryVO(); vo.setPackageName(packageName); - vo.setClassName(entity.getSimpleName() + "Query"); + vo.setClassName(NameUtil.getDefaultQueryName(entity)); return vo; } diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/GenertorConfig.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/GenertorConfig.java new file mode 100644 index 0000000..73c46cf --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/GenertorConfig.java @@ -0,0 +1,50 @@ +package org.yeshi.utils.generater.vo.xmlconfig; + +import org.yeshi.utils.generater.vo.xmlconfig.admin.AdminData; +import org.yeshi.utils.generater.vo.xmlconfig.dao.DaoData; +import org.yeshi.utils.generater.vo.xmlconfig.service.ServiceData; + +/** + * @author hxh + * @title: GenertorConfig + * @description: xml鏄犲皠鐨勬暟鎹В鏋愮粨鏋� + * @date 2022/3/28 11:53 + */ +public class GenertorConfig { + private Class entity; + private DaoData dao; + private ServiceData service; + private AdminData admin; + + public Class getEntity() { + return entity; + } + + public void setEntity(Class entity) { + this.entity = entity; + } + + public DaoData getDao() { + return dao; + } + + public void setDao(DaoData dao) { + this.dao = dao; + } + + public ServiceData getService() { + return service; + } + + public void setService(ServiceData service) { + this.service = service; + } + + public AdminData getAdmin() { + return admin; + } + + public void setAdmin(AdminData admin) { + this.admin = admin; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java new file mode 100644 index 0000000..0ba0094 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java @@ -0,0 +1,425 @@ +package org.yeshi.utils.generater.vo.xmlconfig; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; +import org.yeshi.utils.generater.GeneraterManagerV2; +import org.yeshi.utils.generater.annotation.admin.DaoQueryCondition; +import org.yeshi.utils.generater.annotation.admin.Show; +import org.yeshi.utils.generater.annotation.admin.form.Text; +import org.yeshi.utils.generater.entity.admin.FormVerifyType; +import org.yeshi.utils.generater.vo.xmlconfig.admin.*; +import org.yeshi.utils.generater.vo.xmlconfig.admin.form.*; +import org.yeshi.utils.generater.vo.xmlconfig.base.ApiData; +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; +import org.yeshi.utils.generater.vo.xmlconfig.base.VerifyData; +import org.yeshi.utils.generater.vo.xmlconfig.dao.DaoData; +import org.yeshi.utils.generater.vo.xmlconfig.dao.DaoQuery; +import org.yeshi.utils.generater.vo.xmlconfig.service.ExceptionData; +import org.yeshi.utils.generater.vo.xmlconfig.service.ServiceData; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author hxh + * @title: XmlConfigParseUtil + * @description: xml閰嶇疆鏂囦欢瑙f瀽宸ュ叿绫� + * @date 2022/3/28 15:02 + */ +public class XmlConfigParseUtil { + + public static GenertorConfig parse(InputStream inputStream) throws IOException, ParserConfigurationException, SAXException, ClassNotFoundException { + if (inputStream == null) { + throw new FileNotFoundException(); + } + GenertorConfig genertorConfig = new GenertorConfig(); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document root = builder.parse(inputStream); + NodeList nodelist = root.getElementsByTagName("generator-config"); + Node rootNode = nodelist.item(0); + String clazz = rootNode.getAttributes().getNamedItem("class").getNodeValue(); + genertorConfig.setEntity(Class.forName(clazz)); + + nodelist = rootNode.getChildNodes(); + for (int i = 0; i < nodelist.getLength(); i++) { + Node node = nodelist.item(i); + + switch (node.getNodeName()) { + case "dao": { + genertorConfig.setDao(parseDao(node)); + } + break; + case "service": { + genertorConfig.setService(parseService(node)); + } + break; + case "admin": { + genertorConfig.setAdmin(parseAdmin(node)); + } + break; + + + } + + + } + + + return genertorConfig; + } + + private static DaoData parseDao(Node node) { + DaoData daoData = new DaoData(); + daoData.setPkg(node.getAttributes().getNamedItem("package").getNodeValue()); + daoData.setMapperDir(getNodeAttributeValue(node, "mapperDir")); + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + if (nodeList.item(i).getNodeName().equalsIgnoreCase("queryList")) { + nodeList = nodeList.item(i).getChildNodes(); + List<DaoQuery> queryList = new ArrayList<>(); + for (int j = 0; j < nodeList.getLength(); j++) { + Node node1 = nodeList.item(j); + if (node1.getNodeName().equalsIgnoreCase("query")) { + DaoQuery daoQuery = new DaoQuery(); + daoQuery.setName(getNodeAttributeValue(node1, "name")); + daoQuery.setQueryType(DaoQueryCondition.QueryType.valueOf(getNodeAttributeValue(node1, "type"))); + queryList.add(daoQuery); + } + } + daoData.setQueryList(queryList); + break; + } + } + return daoData; + } + + private static ServiceData parseService(Node node) { + ServiceData data = new ServiceData(); + data.setInterPackage(getNodeAttributeValue(node, "interPackage")); + data.setImplPackage(getNodeAttributeValue(node, "implPackage")); + data.setQueryPackage(getNodeAttributeValue(node, "queryPackage")); + + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + if (nodeList.item(i).getNodeName().equalsIgnoreCase("exception")) { + ExceptionData exceptionData = new ExceptionData(); + exceptionData.setPkg(getNodeAttributeValue(nodeList.item(i), "package")); + exceptionData.setName(getNodeAttributeValue(nodeList.item(i), "name")); + data.setException(exceptionData); + break; + } + } + return data; + } + + private static AdminData parseAdmin(Node node) { + AdminData adminData = new AdminData(); + + //瑙f瀽page鏁版嵁 + + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + + switch (nodeList.item(i).getNodeName()) { + + case "pages": { + Node node1 = nodeList.item(i); + AdminPageData adminPageData = new AdminPageData(); + adminPageData.setTitle(getNodeAttributeValue(node1, "title")); + adminPageData.setPageDir(getNodeAttributeValue(node1, "pageDir")); + NodeList nodeList1 = node1.getChildNodes(); + for (int i1 = 0; i1 < nodeList1.getLength(); i1++) { + Node node2 = nodeList1.item(i1); + switch (node2.getNodeName()) { + case "list": { + ListPageData listPageData = new ListPageData(); + listPageData.setDelete(Boolean.parseBoolean(getNodeAttributeValue(node2, "delete"))); + listPageData.setEdit(Boolean.parseBoolean(getNodeAttributeValue(node2, "edit"))); + listPageData.setPage(Boolean.parseBoolean(getNodeAttributeValue(node2, "page"))); + listPageData.setFileName(getNodeAttributeValue(node2, "fileName")); + + NodeList nodeList2 = node2.getChildNodes(); + for (int i2 = 0; i2 < nodeList2.getLength(); i2++) { + Node node3 = nodeList2.item(i2); + if (node3.getNodeName().equalsIgnoreCase("searchForm")) { + SearchFormData searchFormData = new SearchFormData(); + NodeList nodeList3 = node3.getChildNodes(); + for (int i3 = 0; i3 < nodeList3.getLength(); i3++) { + if (nodeList3.item(i3).getNodeName().equalsIgnoreCase("columns")) { + searchFormData.setColumns(parseColumns(nodeList3.item(i3))); + break; + } + } + searchFormData.setPkg(getNodeAttributeValue(node3, "package")); + searchFormData.setName(getNodeAttributeValue(node3, "name")); + listPageData.setSearchForm(searchFormData); + } else if (node3.getNodeName().equalsIgnoreCase("columns")) { + listPageData.setColumns(parseColumns(node3)); + } + } + adminPageData.setList(listPageData); + } + break; + + case "add": { + AddPageData addPageData = new AddPageData(); + addPageData.setColumns(parseColumns(node2)); + addPageData.setApi(null); + addPageData.setFileName(getNodeAttributeValue(node2, "fileName")); + adminPageData.setAdd(addPageData); + + } + break; + + case "update": { + UpdatePageData updatePageData = new UpdatePageData(); + updatePageData.setColumns(parseColumns(node2)); + updatePageData.setApi(null); + updatePageData.setFileName(getNodeAttributeValue(node2, "fileName")); + adminPageData.setUpdate(updatePageData); + } + break; + } + } + adminData.setPages(adminPageData); + } + break; + + case "controller": { + Node node1 = nodeList.item(i); + AdminControllerData adminControllerData = new AdminControllerData(); + adminControllerData.setJsonp(Boolean.parseBoolean(getNodeAttributeValue(node1, "jsonp"))); + adminControllerData.setMapping(getNodeAttributeValue(node1, "mapping")); + adminControllerData.setName(getNodeAttributeValue(node1, "name")); + adminControllerData.setPkg(getNodeAttributeValue(node1, "package")); + adminControllerData.setResponseBody(Boolean.parseBoolean(getNodeAttributeValue(node1, "responseBody"))); + adminData.setController(adminControllerData); + } + break; + } + } + + + return adminData; + } + + private static String getNodeAttributeValue(Node node, String attr) { + if (node.getAttributes().getNamedItem(attr) != null) { + return node.getAttributes().getNamedItem(attr).getNodeValue(); + } + return null; + } + + private static List<ColumnData> parseColumns(Node node) { + List<ColumnData> list = new ArrayList<>(); + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + Node node1 = nodeList.item(i); + if (node1.getNodeName().equalsIgnoreCase("column")) { + list.add(parseColumn(node1)); + } + } + return list; + } + + private static ColumnData parseColumn(Node node) { + ColumnData columnData = new ColumnData(); + columnData.setTitle(getNodeAttributeValue(node, "title")); + columnData.setProperty(getNodeAttributeValue(node, "property")); + String order = getNodeAttributeValue(node, "order"); + if (order != null) { + columnData.setOrder(Integer.parseInt(order)); + } + + String showType = getNodeAttributeValue(node, "showType"); + if (showType != null) { + columnData.setShowType(Show.ShowType.valueOf(showType)); + } + + columnData.setImgHeight(Integer.parseInt(getNodeAttributeValue(node, "imgHeight"))); + columnData.setImgWidth(Integer.parseInt(getNodeAttributeValue(node, "imgWidth"))); + + + NodeList nodeList = node.getChildNodes(); + if (nodeList != null) { + for (int i = 0; i < nodeList.getLength(); i++) { + FormComponent formComponent = parseFormComponent(nodeList.item(i)); + if (formComponent != null) { + columnData.setComponent(formComponent); + break; + } + } + } + + + return columnData; + } + + + private static FormComponent parseFormComponent(Node node) { + + switch (node.getNodeName()) { + + case "text": { + FormComponentText formComponentText = new FormComponentText(); + formComponentText.setDateFormat(getNodeAttributeValue(node, "dateFormat")); + formComponentText.setDesc(getNodeAttributeValue(node, "desc")); + formComponentText.setInputType(Text.Type.valueOf(getNodeAttributeValue(node, "inputType"))); + String maxLength = getNodeAttributeValue(node, "maxLength"); + String minlength = getNodeAttributeValue(node, "minlength"); + if (maxLength != null) { + formComponentText.setMaxLength(Integer.parseInt(maxLength)); + } + + if (minlength != null) { + formComponentText.setMinLength(Integer.parseInt(minlength)); + } + + formComponentText.setPlaceHolder(getNodeAttributeValue(node, "placeHolder")); + formComponentText.setTextArea(Boolean.parseBoolean(getNodeAttributeValue(node, "isTextArea"))); + + formComponentText.setEnable(Boolean.parseBoolean(getNodeAttributeValue(node, "enable"))); + formComponentText.setNotify(getNodeAttributeValue(node, "notify")); + + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + if (nodeList.item(i).getNodeName().equalsIgnoreCase("verify")) { + formComponentText.setVerify(parseVerify(nodeList.item(i))); + } + } + return formComponentText; + } + case "select": { + FormComponentSelect select = new FormComponentSelect(); + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + switch (nodeList.item(i).getNodeName()) { + case "api": { + select.setApi(parseApi(nodeList.item(i))); + } + break; + case "values": { + select.setValues(parseValues(nodeList.item(i))); + } + break; + case "verify": { + select.setVerify(parseVerify(nodeList.item(i))); + } + break; + } + } + + select.setEnable(Boolean.parseBoolean(getNodeAttributeValue(node, "enable"))); + select.setNotify(getNodeAttributeValue(node, "notify")); + + return select; + } + case "switch": { + FormComponentSwitch formComponentSwitch = new FormComponentSwitch(); + formComponentSwitch.setEnable(Boolean.parseBoolean(getNodeAttributeValue(node, "enable"))); + formComponentSwitch.setNotify(getNodeAttributeValue(node, "notify")); + return formComponentSwitch; + } + case "img": { + FormComponentImg img = new FormComponentImg(); + img.setEditLink(Boolean.parseBoolean(getNodeAttributeValue(node, "editLink"))); + + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + if (nodeList.item(i).getNodeName().equalsIgnoreCase("api")) { + img.setApi(parseApi(nodeList.item(i))); + break; + } + } + + String height = getNodeAttributeValue(node, "height"); + if (height != null) { + img.setHeight(Integer.parseInt(height)); + } + String width = getNodeAttributeValue(node, "width"); + if (width != null) { + img.setWidth(Integer.parseInt(width)); + } + img.setEnable(Boolean.parseBoolean(getNodeAttributeValue(node, "enable"))); + img.setNotify(getNodeAttributeValue(node, "notify")); + return img; + } + case "radioGroup": { + FormComponentRadioGroup radioGroup = new FormComponentRadioGroup(); + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + if (nodeList.item(i).getNodeName().equalsIgnoreCase("values")) { + radioGroup.setValues(parseValues(nodeList.item(i))); + break; + } + } + radioGroup.setEnable(Boolean.parseBoolean(getNodeAttributeValue(node, "enable"))); + radioGroup.setNotify(getNodeAttributeValue(node, "notify")); + return radioGroup; + } + } + return null; + } + + private static VerifyData parseVerify(Node node) { + + if (node == null) { + return null; + } + + VerifyData verifyData = new VerifyData(); + verifyData.setType(FormVerifyType.valueOf(getNodeAttributeValue(node, "type"))); + verifyData.setExpress(getNodeAttributeValue(node, "express")); + verifyData.setNotify(getNodeAttributeValue(node, "notify")); + verifyData.setRequire(Boolean.parseBoolean(getNodeAttributeValue(node, "require"))); + return verifyData; + } + + private static ApiData parseApi(Node node) { + if (node == null) { + return null; + } + ApiData apiData = new ApiData(); + apiData.setPath(getNodeAttributeValue(node, "path")); + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + if (nodeList.item(i).getNodeName().equalsIgnoreCase("params")) { + apiData.setParams(parseValues(nodeList.item(i))); + } + } + return apiData; + } + + private static Map<String, Object> parseValues(Node node) { + if (node == null) { + return null; + } + Map<String, Object> values = new HashMap<>(); + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + if (nodeList.item(i).getNodeName().equalsIgnoreCase("value")) { + values.put(getNodeAttributeValue(nodeList.item(i), "key"), nodeList.item(i).getNodeValue()); + } + } + return values; + } + + + public static void main(String[] args) throws Exception { + GenertorConfig config = XmlConfigParseUtil.parse(new FileInputStream("D:\\workspace\\server\\utils\\src\\test\\test.xml")); + GeneraterManagerV2.getInstance().init("D:\\workspace\\server\\utils\\src\\test\\java", config); + GeneraterManagerV2.getInstance().createWholeFunction(); + System.out.println(config); + } + + +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AddPageData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AddPageData.java new file mode 100644 index 0000000..ca0644c --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AddPageData.java @@ -0,0 +1,44 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin; + +import org.yeshi.utils.generater.vo.xmlconfig.base.ApiData; + +import java.util.List; + +/** + * @author hxh + * @title: ListPageData + * @description: 鏂板椤甸潰 + * @date 2022/3/28 14:08 + */ +public class AddPageData { + private List<ColumnData> columns; + //璇锋眰鎺ュ彛 + private ApiData api; + + //鏂囦欢鍚嶇О + private String fileName; + + public List<ColumnData> getColumns() { + return columns; + } + + public void setColumns(List<ColumnData> columns) { + this.columns = columns; + } + + public ApiData getApi() { + return api; + } + + public void setApi(ApiData api) { + this.api = api; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminControllerData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminControllerData.java new file mode 100644 index 0000000..2a81800 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminControllerData.java @@ -0,0 +1,59 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin; + +/** + * @author hxh + * @title: AdminControllerData + * @description: 绠$悊Controller鏁版嵁 + * @date 2022/3/28 14:23 + */ +public class AdminControllerData { + + private String pkg; + private String name; + private String mapping; + //鏄惁responseBody + private boolean responseBody; + //鎺ュ彛鏄惁jsonp + private boolean jsonp; + + + public String getPkg() { + return pkg; + } + + public void setPkg(String pkg) { + this.pkg = pkg; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getMapping() { + return mapping; + } + + public void setMapping(String mapping) { + this.mapping = mapping; + } + + public boolean isResponseBody() { + return responseBody; + } + + public void setResponseBody(boolean responseBody) { + this.responseBody = responseBody; + } + + public boolean isJsonp() { + return jsonp; + } + + public void setJsonp(boolean jsonp) { + this.jsonp = jsonp; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminData.java new file mode 100644 index 0000000..a454a45 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminData.java @@ -0,0 +1,28 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin; + +/** + * @author hxh + * @title: AdminData + * @description: 绠$悊淇℃伅 + * @date 2022/3/28 14:17 + */ +public class AdminData { + private AdminPageData pages; + private AdminControllerData controller; + + public AdminPageData getPages() { + return pages; + } + + public void setPages(AdminPageData pages) { + this.pages = pages; + } + + public AdminControllerData getController() { + return controller; + } + + public void setController(AdminControllerData controller) { + this.controller = controller; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminPageData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminPageData.java new file mode 100644 index 0000000..de0452b --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/AdminPageData.java @@ -0,0 +1,57 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin; + +/** + * @author hxh + * @title: AdminPageData + * @description: TODO + * @date 2022/3/28 14:31 + */ +public class AdminPageData { + private ListPageData list; + private AddPageData add; + private UpdatePageData update; + //椤甸潰鏂囦欢鐩綍璺緞 + private String pageDir; + //鍔熻兘鍚嶇О + private String title; + + public ListPageData getList() { + return list; + } + + public void setList(ListPageData list) { + this.list = list; + } + + public AddPageData getAdd() { + return add; + } + + public void setAdd(AddPageData add) { + this.add = add; + } + + public UpdatePageData getUpdate() { + return update; + } + + public void setUpdate(UpdatePageData update) { + this.update = update; + } + + public String getPageDir() { + return pageDir; + } + + public void setPageDir(String pageDir) { + this.pageDir = pageDir; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/ColumnData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/ColumnData.java new file mode 100644 index 0000000..8e20c4e --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/ColumnData.java @@ -0,0 +1,86 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin; + +import org.yeshi.utils.generater.annotation.admin.Show; +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; + +/** + * @author hxh + * @title: ColumnData + * @description: 鍒椾俊鎭� + * @date 2022/3/28 14:05 + */ +public class ColumnData { + //鏄剧ず鏍囬 + private String title; + //灞炴�у瓧娈� + private String property; + //鎺掑簭瀛楁 + private Integer order; + + //鏄剧ず绫诲瀷 + private Show.ShowType showType; + + private int imgWidth; + + private int imgHeight; + + //缂栬緫鎺т欢 + private FormComponent component; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getProperty() { + return property; + } + + public void setProperty(String property) { + this.property = property; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public FormComponent getComponent() { + return component; + } + + public void setComponent(FormComponent component) { + this.component = component; + } + + public Show.ShowType getShowType() { + return showType; + } + + public void setShowType(Show.ShowType showType) { + this.showType = showType; + } + + + public int getImgWidth() { + return imgWidth; + } + + public void setImgWidth(int imgWidth) { + this.imgWidth = imgWidth; + } + + public int getImgHeight() { + return imgHeight; + } + + public void setImgHeight(int imgHeight) { + this.imgHeight = imgHeight; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/ListPageData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/ListPageData.java new file mode 100644 index 0000000..ef7c41b --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/ListPageData.java @@ -0,0 +1,85 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin; + +import org.yeshi.utils.generater.vo.xmlconfig.base.ApiData; + +import java.util.List; + +/** + * @author hxh + * @title: ListPageData + * @description: 鍒楄〃椤甸潰 + * @date 2022/3/28 14:08 + */ +public class ListPageData { + private List<ColumnData> columns; + private SearchFormData searchForm; + //璇锋眰鎺ュ彛 + private ApiData api; + + //鏄惁鍙垹闄� + private boolean delete; + //鏄惁鍙紪杈� + private boolean edit; + + //鏂囦欢鍚嶇О + private String fileName; + + //鏄惁鍙垎椤� + private boolean page; + + public List<ColumnData> getColumns() { + return columns; + } + + public void setColumns(List<ColumnData> columns) { + this.columns = columns; + } + + public SearchFormData getSearchForm() { + return searchForm; + } + + public void setSearchForm(SearchFormData searchForm) { + this.searchForm = searchForm; + } + + public ApiData getApi() { + return api; + } + + public void setApi(ApiData api) { + this.api = api; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public boolean isDelete() { + return delete; + } + + public void setDelete(boolean delete) { + this.delete = delete; + } + + public boolean isEdit() { + return edit; + } + + public void setEdit(boolean edit) { + this.edit = edit; + } + + public boolean isPage() { + return page; + } + + public void setPage(boolean page) { + this.page = page; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/SearchFormData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/SearchFormData.java new file mode 100644 index 0000000..99f7ee8 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/SearchFormData.java @@ -0,0 +1,43 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin; + +import java.util.List; + +/** + * @author hxh + * @title: SearchFormData + * @description: 鎼滅储鏉′欢琛ㄥ崟 + * @date 2022/3/28 14:10 + */ +public class SearchFormData { + //鍒� + private List<ColumnData> columns; + //鍖呭悕 + private String pkg; + //绫诲悕绉� + private String name; + + + public List<ColumnData> getColumns() { + return columns; + } + + public void setColumns(List<ColumnData> columns) { + this.columns = columns; + } + + public String getPkg() { + return pkg; + } + + public void setPkg(String pkg) { + this.pkg = pkg; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/UpdatePageData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/UpdatePageData.java new file mode 100644 index 0000000..e5055c0 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/UpdatePageData.java @@ -0,0 +1,44 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin; + +import org.yeshi.utils.generater.vo.xmlconfig.base.ApiData; + +import java.util.List; + +/** + * @author hxh + * @title: ListPageData + * @description: 鏇存柊椤甸潰 + * @date 2022/3/28 14:08 + */ +public class UpdatePageData { + private List<ColumnData> columns; + //璇锋眰鎺ュ彛 + private ApiData api; + + //鏂囦欢鍚嶇О + private String fileName; + + public List<ColumnData> getColumns() { + return columns; + } + + public void setColumns(List<ColumnData> columns) { + this.columns = columns; + } + + public ApiData getApi() { + return api; + } + + public void setApi(ApiData api) { + this.api = api; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentImg.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentImg.java new file mode 100644 index 0000000..920e6de --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentImg.java @@ -0,0 +1,52 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin.form; + +import org.yeshi.utils.generater.vo.xmlconfig.base.ApiData; +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; + +/** + * @author hxh + * @title: FormComponentSelect + * @description: 鍥剧墖鎺т欢 + * @date 2022/3/28 13:56 + */ +public class FormComponentImg extends FormComponent { + + //鍥剧墖涓婁紶閾炬帴 + private ApiData api; + //鏄惁鍙紪杈戝浘鐗囬摼鎺� + private boolean editLink; + private Integer width; + private Integer height; + + public ApiData getApi() { + return api; + } + + public void setApi(ApiData api) { + this.api = api; + } + + public boolean isEditLink() { + return editLink; + } + + public void setEditLink(boolean editLink) { + this.editLink = editLink; + } + + public Integer getWidth() { + return width; + } + + public void setWidth(Integer width) { + this.width = width; + } + + public Integer getHeight() { + return height; + } + + public void setHeight(Integer height) { + this.height = height; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentRadioGroup.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentRadioGroup.java new file mode 100644 index 0000000..3119bdc --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentRadioGroup.java @@ -0,0 +1,26 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin.form; + +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; + +import java.util.List; +import java.util.Map; + +/** + * @author hxh + * @title: FormComponentSelect + * @description: 鍗曢�夋帶浠� + * @date 2022/3/28 13:56 + */ +public class FormComponentRadioGroup extends FormComponent { + //鍐呭甯搁噺鎺ュ彛 + private Map<String, Object> values; + + public Map<String, Object> getValues() { + return values; + } + + public void setValues(Map<String, Object> values) { + this.values = values; + } + +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentSelect.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentSelect.java new file mode 100644 index 0000000..2724359 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentSelect.java @@ -0,0 +1,46 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin.form; + +import org.yeshi.utils.generater.vo.xmlconfig.base.ApiData; +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; +import org.yeshi.utils.generater.vo.xmlconfig.base.VerifyData; + +import java.util.List; +import java.util.Map; + +/** + * @author hxh + * @title: FormComponentSelect + * @description: 閫夋嫨鎺т欢 + * @date 2022/3/28 13:56 + */ +public class FormComponentSelect extends FormComponent { + //鍐呭甯搁噺鎺ュ彛 + private Map<String, Object> values; + //鍐呭鐨凙PI鎺ュ彛 + private ApiData api; + private VerifyData verify; + + public Map<String, Object> getValues() { + return values; + } + + public void setValues(Map<String, Object> values) { + this.values = values; + } + + public ApiData getApi() { + return api; + } + + public void setApi(ApiData api) { + this.api = api; + } + + public VerifyData getVerify() { + return verify; + } + + public void setVerify(VerifyData verify) { + this.verify = verify; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentSwitch.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentSwitch.java new file mode 100644 index 0000000..47d65da --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentSwitch.java @@ -0,0 +1,13 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin.form; + +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; + +/** + * @author hxh + * @title: FormComponentSelect + * @description: 寮�鍏虫帶浠� + * @date 2022/3/28 13:56 + */ +public class FormComponentSwitch extends FormComponent { + +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentText.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentText.java new file mode 100644 index 0000000..0d88632 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/admin/form/FormComponentText.java @@ -0,0 +1,86 @@ +package org.yeshi.utils.generater.vo.xmlconfig.admin.form; + +import org.yeshi.utils.generater.annotation.admin.form.Text; +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; +import org.yeshi.utils.generater.vo.xmlconfig.base.VerifyData; + +/** + * @author hxh + * @title: FormComponentText + * @description: 琛ㄥ崟缁勪欢涔嬫枃鏈粍浠� + * @date 2022/3/28 12:13 + */ +public class FormComponentText extends FormComponent { + private String desc; + private String dateFormat; + private Integer maxLength; + private Integer minLength; + private Text.Type inputType; + private String placeHolder; + private boolean isTextArea; + private VerifyData verify; + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getDateFormat() { + return dateFormat; + } + + public void setDateFormat(String dateFormat) { + this.dateFormat = dateFormat; + } + + public Integer getMaxLength() { + return maxLength; + } + + public void setMaxLength(Integer maxLength) { + this.maxLength = maxLength; + } + + public Integer getMinLength() { + return minLength; + } + + public void setMinLength(Integer minLength) { + this.minLength = minLength; + } + + public Text.Type getInputType() { + return inputType; + } + + public void setInputType(Text.Type inputType) { + this.inputType = inputType; + } + + public String getPlaceHolder() { + return placeHolder; + } + + public void setPlaceHolder(String placeHolder) { + this.placeHolder = placeHolder; + } + + public boolean isTextArea() { + return isTextArea; + } + + public void setTextArea(boolean textArea) { + isTextArea = textArea; + } + + public VerifyData getVerify() { + return verify; + } + + public void setVerify(VerifyData verify) { + this.verify = verify; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/ApiData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/ApiData.java new file mode 100644 index 0000000..1b6db6b --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/ApiData.java @@ -0,0 +1,30 @@ +package org.yeshi.utils.generater.vo.xmlconfig.base; + +import java.util.Map; + +/** + * @author hxh + * @title: ApiConfig + * @description: 鎺ュ彛鏁版嵁 + * @date 2022/3/28 12:08 + */ +public class ApiData { + private String path; + private Map<String, Object> params; + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public Map<String, Object> getParams() { + return params; + } + + public void setParams(Map<String, Object> params) { + this.params = params; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/FormComponent.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/FormComponent.java new file mode 100644 index 0000000..f7b5e2b --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/FormComponent.java @@ -0,0 +1,38 @@ +package org.yeshi.utils.generater.vo.xmlconfig.base; + +/** + * @author hxh + * @title: EditComponent + * @description: 琛ㄥ崟缁勪欢 + * @date 2022/3/28 12:12 + */ +public class FormComponent { + private boolean enable; + private String notify; + private String desc; + + public boolean isEnable() { + return enable; + } + + public void setEnable(boolean enable) { + this.enable = enable; + } + + public String getNotify() { + return notify; + } + + public void setNotify(String notify) { + this.notify = notify; + } + + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/VerifyData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/VerifyData.java new file mode 100644 index 0000000..ae59c47 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/base/VerifyData.java @@ -0,0 +1,52 @@ +package org.yeshi.utils.generater.vo.xmlconfig.base; + +import org.yeshi.utils.generater.entity.admin.FormVerifyType; + +/** + * @author hxh + * @title: VerifyConfig + * @description: 楠岃瘉閰嶇疆 + * @date 2022/3/28 13:47 + */ +public class VerifyData { + //楠岃瘉绫诲瀷 + private FormVerifyType type; + //type涓簉egex鐨勮〃杈惧紡 + private String express; + //鏄惁蹇呴』 + private boolean require; + //鎻愮ず淇℃伅 + private String notify; + + public FormVerifyType getType() { + return type; + } + + public void setType(FormVerifyType type) { + this.type = type; + } + + public String getExpress() { + return express; + } + + public void setExpress(String express) { + this.express = express; + } + + public boolean isRequire() { + return require; + } + + public void setRequire(boolean require) { + this.require = require; + } + + public String getNotify() { + return notify; + } + + public void setNotify(String notify) { + this.notify = notify; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/dao/DaoData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/dao/DaoData.java new file mode 100644 index 0000000..d2f500c --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/dao/DaoData.java @@ -0,0 +1,39 @@ +package org.yeshi.utils.generater.vo.xmlconfig.dao; + +import java.util.List; + +/** + * @author hxh + * @title: DaoData + * @description: Dao鏁版嵁 + * @date 2022/3/28 14:44 + */ +public class DaoData { + private String pkg; + private String mapperDir; + private List<DaoQuery> queryList; + + public String getPkg() { + return pkg; + } + + public void setPkg(String pkg) { + this.pkg = pkg; + } + + public String getMapperDir() { + return mapperDir; + } + + public void setMapperDir(String mapperDir) { + this.mapperDir = mapperDir; + } + + public List<DaoQuery> getQueryList() { + return queryList; + } + + public void setQueryList(List<DaoQuery> queryList) { + this.queryList = queryList; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/dao/DaoQuery.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/dao/DaoQuery.java new file mode 100644 index 0000000..8711600 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/dao/DaoQuery.java @@ -0,0 +1,31 @@ +package org.yeshi.utils.generater.vo.xmlconfig.dao; + +import org.yeshi.utils.generater.annotation.admin.DaoQueryCondition; + +/** + * @author hxh + * @title: DaoQuery + * @description: dao鏉′欢鏌ヨ + * @date 2022/3/28 14:42 + */ +public class DaoQuery { + //瀛楁鍚嶇О + private String name; + private DaoQueryCondition.QueryType queryType; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public DaoQueryCondition.QueryType getQueryType() { + return queryType; + } + + public void setQueryType(DaoQueryCondition.QueryType queryType) { + this.queryType = queryType; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java new file mode 100644 index 0000000..18a72d2 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java @@ -0,0 +1,29 @@ +package org.yeshi.utils.generater.vo.xmlconfig.service; + +/** + * @author hxh + * @title: ExceptionData + * @description: 寮傚父鏁版嵁 + * @date 2022/3/28 14:39 + */ +public class ExceptionData { + + private String pkg; + private String name; + + public String getPkg() { + return pkg; + } + + public void setPkg(String pkg) { + this.pkg = pkg; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/resources/generater/admin/adminController.template b/src/main/resources/generater/admin/adminController.template index 5a7f9a2..4a64762 100644 --- a/src/main/resources/generater/admin/adminController.template +++ b/src/main/resources/generater/admin/adminController.template @@ -18,7 +18,10 @@ import ${entity.clazz}; import ${service.clazz}; import ${query.clazz}; - +<#if responseBody> +<#else> +import java.io.PrintWriter; +</#if> @Controller @RequestMapping("${mapping}") public class ${controllerName} { @@ -28,18 +31,27 @@ @Resource private ${service.name} ${serviceObjName}; - - private String loadPrint(String callback, String root){ + <#macro print data> + <#if responseBody> <#if jsonp> - return JsonUtil.loadJSONP(callback,root); +return JsonUtil.loadJSONP(callback,${data}); <#else> - return root; +return ${data}; </#if> - } + <#else> + <#if jsonp> +out.print(JsonUtil.loadJSONP(callback,${data})); + return; + <#else> +out.print(${data}); + return; + </#if> + </#if> + </#macro> - @ResponseBody + ${responseBody?string("@ResponseBody","")} @RequestMapping("list") - public String list(${query.name} query, int page, int limit, String callback) { + public ${responseBody?string("String","void")} list(${query.name} query, int page, int limit${jsonp?string(", String callback","")}${responseBody?string("",",PrintWriter out")} ) { List<${entity.name}> list = ${serviceObjName}.list(query,page,limit); long count = ${serviceObjName}.count(query); JSONObject data = new JSONObject(); @@ -53,58 +65,58 @@ data.put("list", gson.toJson(list)); data.put("count", count); - return loadPrint(callback,JsonUtil.loadTrueResult(data)); + <@print data="JsonUtil.loadTrueResult(data)" > </@print> } <#if delete> - @ResponseBody + ${responseBody?string("@ResponseBody","")} @RequestMapping("delete") - public String delete(String ids, String callback) { + public ${responseBody?string("String","void")} delete(String ids${jsonp?string(", String callback","")}${responseBody?string("",",PrintWriter out")}) { Type type = new TypeToken<List<${identifyIdType}>>(){}.getType(); List<${identifyIdType}> idList=new Gson().fromJson(ids,type); ${serviceObjName}.delete(idList); - return loadPrint(callback, JsonUtil.loadTrueResult("")); + <@print data="JsonUtil.loadTrueResult(\"\")" > </@print> } </#if> <#if add> - @ResponseBody + ${responseBody?string("@ResponseBody","")} @RequestMapping("add") - public String add(${entity.name} bean, HttpSession session, String callback) { + public ${responseBody?string("String","void")} add(${entity.name} bean, HttpSession session${jsonp?string(", String callback","")}${responseBody?string("",",PrintWriter out")}) { try{ ${serviceObjName}.add(bean); - return loadPrint(callback, JsonUtil.loadTrueResult("")); + <@print data="JsonUtil.loadTrueResult(\"\")" > </@print> }catch(Exception e){ - return loadPrint(callback, JsonUtil.loadFalseResult(e.getMessage())); + <@print data="JsonUtil.loadFalseResult(e.getMessage())" > </@print> } } </#if> - @ResponseBody + ${responseBody?string("@ResponseBody","")} @RequestMapping("get") - public String get(${identifyIdType} id, HttpSession session, String callback) { + public ${responseBody?string("String","void")} get(${identifyIdType} id, HttpSession session${jsonp?string(", String callback","")}${responseBody?string("",",PrintWriter out")}) { ${entity.name} entity = ${serviceObjName}.get(id); if (entity !=null){ - return loadPrint(callback,JsonUtil.loadTrueResult(entity)); + <@print data="JsonUtil.loadTrueResult(entity)" > </@print> } else { - return loadPrint(callback,JsonUtil.loadFalseResult("ID涓嶅瓨鍦�")); + <@print data="JsonUtil.loadFalseResult(\"ID涓嶅瓨鍦╘")" > </@print> } } <#if update> - @ResponseBody + ${responseBody?string("@ResponseBody","")} @RequestMapping("update") - public String update(${entity.name} bean, HttpSession session,String callback) { + public ${responseBody?string("String","void")} update(${entity.name} bean, HttpSession session${jsonp?string(", String callback","")}${responseBody?string("",",PrintWriter out")}) { if (bean.getId() == null) { - return loadPrint(callback, JsonUtil.loadFalseResult("ID涓嶈兘涓虹┖")); + <@print data="JsonUtil.loadFalseResult(\"ID涓嶈兘涓虹┖\")" > </@print> } try{ ${serviceObjName}.update(bean); }catch(Exception e){ - return loadPrint(callback,JsonUtil.loadFalseResult(e.getMessage())); + <@print data="JsonUtil.loadFalseResult(e.getMessage())" > </@print> } - return loadPrint(callback,JsonUtil.loadTrueResult("")); + <@print data="JsonUtil.loadTrueResult(\"\")" > </@print> } </#if> diff --git a/src/main/resources/schemas/generator.dtd b/src/main/resources/schemas/generator.dtd new file mode 100644 index 0000000..63026be --- /dev/null +++ b/src/main/resources/schemas/generator.dtd @@ -0,0 +1,110 @@ +<!-- +鑷姩鍖栦唬鐮佺敓鎴愬櫒锛屽寘鍚嚜鍔ㄧ敓鎴� +--> + + + <!ELEMENT generator-config (dao?,service?,admin?)> + <!ATTLIST generator-config class CDATA #REQUIRED> + <!-- dao閰嶇疆淇℃伅 --> + <!ELEMENT dao (queryList?)> + <!ATTLIST dao mapperDir CDATA #IMPLIED> + <!ATTLIST dao package CDATA #REQUIRED> + <!ELEMENT queryList (query+)> + <!ELEMENT query EMPTY> + <!ATTLIST query name CDATA #REQUIRED> + <!ATTLIST query type (start|end|contains|equal|gt|gte|lt|lte) #REQUIRED> + + + <!ELEMENT service (exception?)> + <!ATTLIST service interPackage CDATA #REQUIRED> + <!ATTLIST service implPackage CDATA #REQUIRED> + <!ATTLIST service queryPackage CDATA #REQUIRED> + <!ELEMENT exception EMPTY> + <!ATTLIST exception package CDATA #REQUIRED> + <!ATTLIST exception name CDATA #IMPLIED> + + + <!--琛ㄥ崟閰嶇疆淇℃伅 --> + <!ELEMENT admin (controller?,pages?)> + + <!ELEMENT controller EMPTY> + <!ATTLIST controller package CDATA #REQUIRED> + <!ATTLIST controller name CDATA #IMPLIED> + <!ATTLIST controller mapping CDATA #REQUIRED> + <!ATTLIST controller responseBody (true|false) "true"> + <!ATTLIST controller jsonp (true|false) "true"> + + + <!ELEMENT pages (list?,add?,update?)> + <!ATTLIST pages title CDATA #REQUIRED> + <!ATTLIST pages pageDir CDATA #REQUIRED> + + <!ELEMENT list (searchForm?,columns,api?)> + <!ATTLIST list fileName CDATA #IMPLIED> + <!ATTLIST list delete (true|false) "true"> + <!ATTLIST list edit (true|false) "true"> + <!ATTLIST list page (true|false) "true"> + + <!ELEMENT columns (column*)> + <!ELEMENT searchForm (columns)> + + <!ELEMENT column (text?|select?|radioGroup?|switch?|img?)> + <!ATTLIST column property CDATA #REQUIRED> + <!ATTLIST column title CDATA #REQUIRED> + <!ATTLIST column order CDATA "0"> + <!ATTLIST column showType (TEXT|IMG|SWITCH) #IMPLIED> + <!ATTLIST column imgWidth CDATA "-1"> + <!ATTLIST column imgHeight CDATA "-1"> + + <!ELEMENT add (column+)> + <!ATTLIST add fileName CDATA #IMPLIED> + <!ELEMENT update (column+)> + <!ATTLIST update fileName CDATA #IMPLIED> + + <!--琛ㄥ崟涓殑text --> + <!ELEMENT text (verify*)> + <!ATTLIST text maxLength CDATA #IMPLIED> + <!ATTLIST text minlength CDATA #IMPLIED> + <!ATTLIST text inputType (TEXT|DATE|DATETIME) #REQUIRED> + <!ATTLIST text dateFormat CDATA #IMPLIED> + <!ATTLIST text placeHolder CDATA ""> + <!ATTLIST text desc CDATA #IMPLIED> + <!ATTLIST text enable (true|false) "true"> + <!ATTLIST text isTextArea (true|false) "false"> + + + <!ELEMENT verify EMPTY> + <!ATTLIST verify type (number|phone|email|date|url|identity|regex|none) #REQUIRED> + <!ATTLIST verify express CDATA #IMPLIED> + <!ATTLIST verify notify CDATA #IMPLIED> + <!ATTLIST verify require (true|false) #IMPLIED> + + <!--琛ㄥ崟涓殑select --> + <!ELEMENT select ((values|api),verify?)> + <!ATTLIST select notify CDATA #IMPLIED> + <!ATTLIST select enable (true|false) "true"> + <!ELEMENT values (value*)> + <!ELEMENT value (#PCDATA)> + <!ATTLIST value key CDATA #REQUIRED> + <!ELEMENT api (params?)> + <!ATTLIST api path CDATA #REQUIRED> + <!ELEMENT params (value+)> + + <!--琛ㄥ崟涓殑radioGroup --> + <!ELEMENT radioGroup (values)> + <!ATTLIST radioGroup enable (true|false) "true"> + + <!--琛ㄥ崟涓殑switch --> + <!ELEMENT switch EMPTY> + <!ATTLIST switch enable (true|false) "true"> + + <!--琛ㄥ崟涓殑img --> + <!ELEMENT img (api?)> + <!ATTLIST img enable (true|false) "true"> + <!ATTLIST img editLink (true|false) "false"> + <!ATTLIST img width CDATA #IMPLIED> + <!ATTLIST img height CDATA #IMPLIED> + + + + diff --git a/src/test/java/com/generater/GeneratorTest.java b/src/test/java/com/generater/GeneratorTest.java index ba1ba09..f7d2b62 100644 --- a/src/test/java/com/generater/GeneratorTest.java +++ b/src/test/java/com/generater/GeneratorTest.java @@ -3,16 +3,14 @@ import org.springframework.data.annotation.Id; import org.yeshi.utils.FileUtil; import org.yeshi.utils.FreemarkerUtils; -import org.yeshi.utils.generater.GeneraterManager; import org.yeshi.utils.generater.GeneraterUtil; import org.yeshi.utils.generater.entity.ClassInfo; import org.yeshi.utils.generater.entity.admin.AdminGeneraterInfo; import org.yeshi.utils.generater.mybatis.Column; import org.yeshi.utils.generater.mybatis.Table; -import org.yeshi.utils.generater.params.AdminGeneraterParams; -import org.yeshi.utils.generater.params.DaoGeneraterParams; -import org.yeshi.utils.generater.params.ServiceGeneraterParams; import org.yeshi.utils.generater.vo.ExceptionVO; +import org.yeshi.utils.generater.vo.xmlconfig.base.FormComponent; +import org.yeshi.utils.generater.vo.xmlconfig.admin.form.FormComponentText; import org.yeshi.utils.generater.vo.dao.MongoDBDaoVO; import org.yeshi.utils.generater.vo.dao.MyBatisDBDaoVO; import org.yeshi.utils.generater.vo.service.ServiceImplInfoVO; @@ -153,6 +151,14 @@ // AdminGeneraterParams adminGeneraterParams=new AdminGeneraterParams("com.generater.temp.controller","D:\\workspace\\server\\utils\\src\\test"); // // GeneraterManager.getInstance().createWholeFunction(new DaoGeneraterParams("com.generater.temp.dao", "D:\\workspace\\server\\utils\\src\\test"), new ServiceGeneraterParams("com.generater.temp.query","com.generater.temp.service","com.generater.temp.service.impl"), adminGeneraterParams); + FormComponent fc=new FormComponentText(); + + System.out.println(fc instanceof FormComponentText); + + FormComponentText text=(FormComponentText) fc; + + System.out.println(text); + } diff --git a/src/test/test.xml b/src/test/test.xml new file mode 100644 index 0000000..00a2986 --- /dev/null +++ b/src/test/test.xml @@ -0,0 +1,88 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!DOCTYPE generator-config PUBLIC "-//yeshitv.com//DTD generator_code 1.0//EN" + "http://192.168.3.122:8848/buwan-web/dtd/generator.dtd"> + +<generator-config class="org.yeshi.utils.generater.TestEntity3"> + <dao package="com.generater.test.mapper" mapperDir="D:/workspace/server/utils/src/test/java/mapper"> + <queryList> + <query name="nickName" type="contains"></query> + </queryList> + </dao> + <service interPackage="com.generater.test.service.inter" implPackage="com.generater.test.service.impl" + queryPackage="com.generater.test.query"> + <exception package="com.generater.test.exception"></exception> + </service> + <admin> + <controller package="com.generater.test.controller.admin" mapping="/test" /> + <pages title="娴嬭瘯" pageDir="D:/workspace/server/utils/src/test/java/html"> + <list fileName="list.html"> + <searchForm> + <columns> + <column property="nickName" title="鏄电О"> + <text inputType="TEXT" maxLength="100"></text> + </column> + </columns> + </searchForm> + + <columns> + <column property="id" title="ID" showType="TEXT"></column> + <column property="nickName" title="鏄电О" showType="TEXT"></column> + <column property="sex" title="鎬у埆" showType="TEXT"></column> + <column property="portrait" title="澶村儚" showType="IMG"></column> + </columns> + </list> + <add fileName="add.html"> + <column property="nickName" title="鏄电О"> + <text inputType="TEXT" dateFormat="" placeHolder=""> + <verify type="regex" express="*" require="true" notify=""></verify> + </text> + </column> + <column property="sex" title="鎬у埆"> + <select> + <values> + <value key="0">鏈煡</value> + <value key="1">鐢�</value> + <value key="2">濂�</value> + </values> + </select> + + + </column> + + <column property="province" title="鐪佷唤"> + <select> + <api path="api/getCountrys"> + <params> + <value key="cq">閲嶅簡</value> + <value key="sc">鍥涘窛</value> + </params> + </api> + <verify type="none" require="true"></verify> + </select> + </column> + + <column property="show" title="鏄惁鏄剧ず"> + <switch></switch> + </column> + + <column property="portrait" title="澶村儚"> + <img enable="false" editLink="true"> + <api path="/api/uploadImg"> + <params> + <value key="type">portrait</value> + </params> + </api> + </img> + </column> + </add> + <update fileName="update.html"> + <column property="nickName" title="鏄电О"> + <text inputType="TEXT"> + <verify type="regex" express="*" require="true" notify=""></verify> + </text> + </column> + </update> + </pages> + + </admin> +</generator-config> \ No newline at end of file -- Gitblit v1.8.0