diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 63218c9..228a5cc 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -1,6 +1,6 @@ - + mysql true diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_0_1_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_0_1_RELEASE.xml deleted file mode 100644 index 3ce8a98..0000000 --- a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_0_1_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_core_3_2_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_core_3_2_3_RELEASE.xml deleted file mode 100644 index b0f6fab..0000000 --- a/.idea/libraries/Maven__org_springframework_security_spring_security_core_3_2_3_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_config_3_2_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_3_2_3_RELEASE.xml similarity index 55% rename from .idea/libraries/Maven__org_springframework_security_spring_security_config_3_2_3_RELEASE.xml rename to .idea/libraries/Maven__org_springframework_security_spring_security_crypto_3_2_3_RELEASE.xml index 493f408..ca30301 100644 --- a/.idea/libraries/Maven__org_springframework_security_spring_security_config_3_2_3_RELEASE.xml +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_3_2_3_RELEASE.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_web_3_2_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_web_3_2_3_RELEASE.xml deleted file mode 100644 index 0b513ab..0000000 --- a/.idea/libraries/Maven__org_springframework_security_spring_security_web_3_2_3_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/Synergy.iml b/Synergy.iml index a9b4516..6e5cee5 100644 --- a/Synergy.iml +++ b/Synergy.iml @@ -4,10 +4,21 @@ + - - + + + + + + + + + + file://$MODULE_DIR$/src/main/java/org/zjy/synergy/config/PersistenceConfig.java + file://$MODULE_DIR$/src/main/java/org/zjy/synergy/config/ApplicationEntrance.java + @@ -49,10 +60,26 @@ - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/application.properties b/application.properties deleted file mode 100644 index d9ca5d6..0000000 --- a/application.properties +++ /dev/null @@ -1,51 +0,0 @@ -# SPRING CONFIG (ConfigFileApplicationListener) -spring.org.zjy.synergy.config.name=application -spring.org.zjy.synergy.config.location=resources - -# LOGGING -#logging.path=/var/logs -#logging.file=myapp.log -#logging.org.zjy.synergy.config= - -# IDENTITY (ContextIdApplicationContextInitializer) -spring.application.name="Synergy" -spring.application.index= - -# EMBEDDED SERVER CONFIGURATION (ServerProperties) -server.port=8080 - -# SPRING MVC (HttpMapperProperties) -# pretty print JSON -http.mappers.json-pretty-print=false -# sort keys -http.mappers.json-sort-keys=false -spring.view.prefix= /WEB-INF/views -spring.view.suffix= .jsp - -# DATASOURCE (DataSourceAutoConfiguration & AbstractDataSourceConfiguration) -# name of the data source -spring.datasource.name=Mysql -# populate using data.sql -spring.datasource.intialize=false -# a schema resource reference -spring.datasource.schema=synergy -# continue even if can't be initialized -spring.datasource.continueOnError=false -#org.sqlite.JDBC -spring.datasource.driverClassName=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306 -#jdbc:sqlite:database/WebDev.db -spring.datasource.username=zjy -spring.datasource.password=zjy - -# JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration) -# defaults to create-drop for embedded dbs -spring.jpa.hibernate.ddl-auto=create-drop -spring.jpa.show-sql=true -hibernate.format_sql=true -hibernate.use_sql_comments=true -hibernate.dialect=true - -spring.thymeleaf.cache: false -debug: false -security.basic.enabled: false \ No newline at end of file diff --git a/database/create_schema.sql b/database/create_schema.sql index 4cac4a2..31450df 100644 --- a/database/create_schema.sql +++ b/database/create_schema.sql @@ -1,7 +1,7 @@ drop table if exists synergy.bd_authority; CREATE TABLE synergy.bd_authority ( - pk_authority INTEGER PRIMARY KEY NOT NULL, + pk_authority INTEGER PRIMARY KEY NOT NULL auto_increment, fk_role INTEGER NOT NULL, fk_function INTEGER NOT NULL, ts TEXT, diff --git a/pom.xml b/pom.xml index 9165d17..320b309 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,7 @@ + 1.7 ${basedir}/../.. 4.0.2.RELEASE 4.3.4.Final @@ -27,14 +28,21 @@ spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-jetty + + + - + - org.springframework.boot - spring-boot-starter-security + org.springframework.security + spring-security-crypto + ${spring-security.version} @@ -47,6 +55,12 @@ + + + + + + org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/org/zjy/synergy/component/base/Authority.java b/src/main/java/org/zjy/synergy/component/base/Authority.java new file mode 100644 index 0000000..8ed76d1 --- /dev/null +++ b/src/main/java/org/zjy/synergy/component/base/Authority.java @@ -0,0 +1,146 @@ +package org.zjy.synergy.component.base; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.zjy.synergy.entity.JsonResponse; +import org.zjy.synergy.entity.base.AuthorityEntity; +import org.zjy.synergy.entity.base.FunctionTreeNodeEntity; +import org.zjy.synergy.entity.base.RoleEntity; +import org.zjy.synergy.service.base.DataService; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * Created by junyan Zhang on 14-4-15. + */ + +@Controller +public class Authority { + @Autowired + private SessionFactory sessionFactory; + @Autowired + private DataService dataService; + + private String retrieveRoleByName = "from RoleEntity where name = ?"; + private String retrieveAuthority = "select fkFunction from AuthorityEntity where fkRole = :roleId"; + private String retrieveFunctionByAuthority = "from FunctionTreeNodeEntity where pkFunction in (:functions) and dr = 0"; + private String retrieveAllFunction = "from FunctionTreeNodeEntity where dr = 0"; + private String retrieveAuthorityByRoleFunction = "from AuthorityEntity where fkRole = :roleId and fkFunction = :functionId"; + + @RequestMapping(value = "/base/authority", method = RequestMethod.GET) + public String page() { + return "base/authority"; + } + + @SuppressWarnings("unchecked") + @RequestMapping(value = "/base/authority/createRole", method = RequestMethod.POST) + @ResponseBody + public JsonResponse createRole (String roleName) { + Session session = sessionFactory.openSession(); + List roleEntityList = session.createQuery(retrieveRoleByName).setParameter(0, roleName).list(); + if (roleEntityList.size() > 0) + return new JsonResponse(false); + + RoleEntity roleEntity = new RoleEntity(); + roleEntity.setName(roleName); + session.save(roleEntity); + session.flush(); + session.close(); + return new JsonResponse(true); + } + + @RequestMapping(value = "/base/authority/deleteRole", method = RequestMethod.POST) + @ResponseBody + public JsonResponse deleteRole (int roleId) { + Session session = sessionFactory.openSession(); + RoleEntity roleEntity = (RoleEntity)session.get(RoleEntity.class, roleId); + if (roleEntity == null) + return new JsonResponse(false); + + session.delete(roleEntity); + session.flush(); + session.close(); + return new JsonResponse(true); + } + + @SuppressWarnings("unchecked") + @RequestMapping(value = "/base/authority/getAuthority", method = RequestMethod.GET) + @ResponseBody + public JsonResponse getAuthority (int roleId) { + Session session = sessionFactory.openSession(); + List functionList = session.createQuery(retrieveAuthority).setInteger("roleId", roleId).list(); + if (functionList.size() == 0) + return new JsonResponse(true); + + List functionTreeNodeEntityList = session.createQuery(retrieveFunctionByAuthority).setParameterList("functions", functionList).list(); + JsonResponse jsonResponse = new JsonResponse(true); + for (FunctionTreeNodeEntity functionTreeNodeEntity : functionTreeNodeEntityList) { + jsonResponse.addResponseMsg(dataService.entityToJson(functionTreeNodeEntity)); + jsonResponse.setTotal(jsonResponse.getTotal() + 1); + } + return jsonResponse; + } + + @SuppressWarnings("unchecked") + @RequestMapping(value = "/base/authority/getAvailableAuthority", method = RequestMethod.GET) + @ResponseBody + public JsonResponse getAvailableAuthority (int roleId) { + Session session = sessionFactory.openSession(); + Set functionList = new HashSet(session.createQuery(retrieveAuthority).setInteger("roleId", roleId).list()); + + JsonResponse jsonResponse = new JsonResponse(true); + List allFunctionTreeNodeEntity = session.createQuery(retrieveAllFunction).list(); + for (FunctionTreeNodeEntity functionTreeNodeEntity : allFunctionTreeNodeEntity) { + if (!functionList.contains(functionTreeNodeEntity.getPkFunction())) { + jsonResponse.addResponseMsg(dataService.entityToJson(functionTreeNodeEntity)); + jsonResponse.setTotal(jsonResponse.getTotal() + 1); + } + } + session.close(); + return jsonResponse; + } + + @SuppressWarnings("unchecked") + @RequestMapping(value = "/base/authority/addAuthority", method = RequestMethod.POST) + @ResponseBody + public JsonResponse addAuthority (int roleId, int functionId) { + Session session = sessionFactory.openSession(); + JsonResponse jsonResponse = new JsonResponse(true); + List authorityEntityList = session.createQuery(retrieveAuthorityByRoleFunction).setInteger("roleId", roleId).setInteger("functionId", functionId).list(); + if (authorityEntityList.size() > 0) + return jsonResponse; + + AuthorityEntity authorityEntity = new AuthorityEntity(); + authorityEntity.setFkRole(roleId); + authorityEntity.setFkFunction(functionId); + session.save(authorityEntity); + session.flush(); + session.close(); + return jsonResponse; + } + + @SuppressWarnings("unchecked") + @RequestMapping(value = "/base/authority/deleteAuthority", method = RequestMethod.POST) + @ResponseBody + public JsonResponse deleteAuthority (int roleId, int functionId) { + Session session = sessionFactory.openSession(); + JsonResponse jsonResponse = new JsonResponse(true); + List authorityEntityList = session.createQuery(retrieveAuthorityByRoleFunction).setInteger("roleId", roleId).setInteger("functionId", functionId).list(); + if (authorityEntityList.size() == 0) + return new JsonResponse(false); + + for (AuthorityEntity authorityEntity : authorityEntityList) + session.delete(authorityEntity); + + session.flush(); + session.close(); + return jsonResponse; + } +} diff --git a/src/main/java/org/zjy/synergy/config/ApplicationEntrance.java b/src/main/java/org/zjy/synergy/config/ApplicationEntrance.java index 895dd23..748b182 100644 --- a/src/main/java/org/zjy/synergy/config/ApplicationEntrance.java +++ b/src/main/java/org/zjy/synergy/config/ApplicationEntrance.java @@ -21,9 +21,12 @@ import org.springframework.boot.orm.jpa.EntityScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; @@ -34,10 +37,9 @@ import java.util.Map; @EnableAutoConfiguration -@ComponentScan -//@PropertySource("application.properties") +@Configuration +@ComponentScan("org.zjy.synergy") //@EntityScan(basePackages="org.zjy.synergy.entity") -@Controller public class ApplicationEntrance extends WebMvcConfigurerAdapter { public static void main(String[] args) throws Exception { @@ -46,6 +48,16 @@ public static void main(String[] args) throws Exception { "security.user.password=password").run(args); } + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("images/**").addResourceLocations("WEB-INF/images/"); + registry.addResourceHandler("css/**").addResourceLocations("WEB-INF/css/"); + registry.addResourceHandler("js/**").addResourceLocations("WEB-INF/js/"); + registry.addResourceHandler("extjs/**").addResourceLocations("WEB-INF/extjs/"); + //registry.addResourceHandler("extjs5/**").addResourceLocations("WEB-INF/extjs5/"); + //registry.addResourceHandler("views/**").addResourceLocations("WEB-INF/views/"); + } + // @Override // public void addViewControllers(ViewControllerRegistry registry) { // registry.addViewController("/login").setViewName("login"); diff --git a/src/main/java/org/zjy/synergy/config/ApplicationSecurity.java b/src/main/java/org/zjy/synergy/config/ApplicationSecurity.java index 76a7c20..5b5e833 100644 --- a/src/main/java/org/zjy/synergy/config/ApplicationSecurity.java +++ b/src/main/java/org/zjy/synergy/config/ApplicationSecurity.java @@ -1,62 +1,62 @@ package org.zjy.synergy.config; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.core.Ordered; +//import org.springframework.core.annotation.Order; +//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +//import org.springframework.security.config.annotation.web.builders.HttpSecurity; +//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import javax.sql.DataSource; +//import javax.sql.DataSource; /** * Created by junyan Zhang on 14-4-11. */ -@Configuration -@EnableWebSecurity -public class ApplicationSecurity extends WebSecurityConfigurerAdapter { - @Autowired - private DataSource dataSource; - - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { -// auth -// .jdbcAuthentication() -// .dataSource(dataSource) -// .withDefaultSchema() -// .withUser("user").password("password").roles("USER").and() -// .withUser("admin").password("password").roles("USER", "ADMIN"); - } - +//@Configuration +//@EnableWebSecurity +//public class ApplicationSecurity extends WebSecurityConfigurerAdapter { +// @Autowired +// private DataSource dataSource; +// +// @Autowired +// public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { +//// auth +//// .jdbcAuthentication() +//// .dataSource(dataSource) +//// .withDefaultSchema() +//// .withUser("user").password("password").roles("USER").and() +//// .withUser("admin").password("password").roles("USER", "ADMIN"); +// } +// +//// @Configuration +//// @Order(1) +//// public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter { +//// protected void configure(HttpSecurity http) throws Exception { +//// http +//// .antMatcher("/api/**") +//// .authorizeRequests() +//// .anyRequest().hasRole("ADMIN") +//// .and() +//// .httpBasic(); +//// } +//// } +// // @Configuration -// @Order(1) -// public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter { +// @Order(Ordered.LOWEST_PRECEDENCE) +// public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { +// @Override // protected void configure(HttpSecurity http) throws Exception { // http -// .antMatcher("/api/**") -// .authorizeRequests() -// .anyRequest().hasRole("ADMIN") +// .authorizeRequests() +// .anyRequest().fullyAuthenticated() // .and() -// .httpBasic(); +// .formLogin() +// .loginPage("/login") +// .failureUrl("/login?error") +// .permitAll(); // } // } - - @Configuration - @Order(Ordered.LOWEST_PRECEDENCE) - public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { - @Override - protected void configure(HttpSecurity http) throws Exception { - http - .authorizeRequests() - .anyRequest().fullyAuthenticated() - .and() - .formLogin() - .loginPage("/login") - .failureUrl("/login?error") - .permitAll(); - } - } -} \ No newline at end of file +//} \ No newline at end of file diff --git a/src/main/java/org/zjy/synergy/config/PersistenceConfig.java b/src/main/java/org/zjy/synergy/config/PersistenceConfig.java index ead340e..8c90ee4 100644 --- a/src/main/java/org/zjy/synergy/config/PersistenceConfig.java +++ b/src/main/java/org/zjy/synergy/config/PersistenceConfig.java @@ -19,28 +19,10 @@ public class PersistenceConfig { @Autowired private DataSource pooledDataSource; - @Value("hibernate.dialect") - //@Value("${hibernate.dialect}") - private String hibernateDialect; - //@Value("${hibernate.show_sql}") - @Value("hibernate.show_sql") - private String hibernateShowSql; - //@Value("${hibernate.format_sql}") - @Value("hibernate.format_sql") - private String hibernateFormatSql; - //@Value("${hibernate.use_sql_comments}") - @Value("hibernate.use_sql_comments") - private String hibernateUseSqlComments; - @Bean public SessionFactory createSessionFactory () { LocalSessionFactoryBuilder sessionFactoryBuilder = new LocalSessionFactoryBuilder(pooledDataSource); - // some hibernate configurations -// sessionFactoryBuilder.setProperty("hibernate.dialect", hibernateDialect); -// sessionFactoryBuilder.setProperty("hibernate.show_sql", hibernateShowSql); -// sessionFactoryBuilder.setProperty("hibernate.format_sql", hibernateFormatSql); -// sessionFactoryBuilder.setProperty("hibernate.use_sql_comments", hibernateUseSqlComments); // scan all entity classes sessionFactoryBuilder.scanPackages("org.zjy.synergy.entity"); diff --git a/src/main/java/org/zjy/synergy/entity/base/FunctionTreeNodeJson.java b/src/main/java/org/zjy/synergy/entity/base/FunctionTreeNodeJson.java new file mode 100644 index 0000000..3e56c97 --- /dev/null +++ b/src/main/java/org/zjy/synergy/entity/base/FunctionTreeNodeJson.java @@ -0,0 +1,104 @@ +package org.zjy.synergy.entity.base; + +import com.fasterxml.jackson.annotation.JsonInclude; +import org.zjy.synergy.entity.AbstractJsonEntity; + +import javax.persistence.*; + +/** + * Created by junyan Zhang on 14-4-16. + */ + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class FunctionTreeNodeJson extends AbstractJsonEntity{ + private String functionNo; + private String nameEn; + private String nameZh; + private Boolean display; + private Integer nodeIndex; + private String descriptionEn; + private String descriptionZh; + private String file; + private String url; + private Boolean leaf; + + public String getFunctionNo() { + return functionNo; + } + + public void setFunctionNo(String functionNo) { + this.functionNo = functionNo; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getNameZh() { + return nameZh; + } + + public void setNameZh(String nameZh) { + this.nameZh = nameZh; + } + + public Boolean getDisplay() { + return display; + } + + public void setDisplay(Boolean display) { + this.display = display; + } + + public Integer getNodeIndex() { + return nodeIndex; + } + + public void setNodeIndex(Integer nodeIndex) { + this.nodeIndex = nodeIndex; + } + + public String getDescriptionEn() { + return descriptionEn; + } + + public void setDescriptionEn(String descriptionEn) { + this.descriptionEn = descriptionEn; + } + + public String getDescriptionZh() { + return descriptionZh; + } + + public void setDescriptionZh(String descriptionZh) { + this.descriptionZh = descriptionZh; + } + + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Boolean getLeaf() { + return leaf; + } + + public void setLeaf(Boolean leaf) { + this.leaf = leaf; + } +} diff --git a/src/main/java/org/zjy/synergy/entity/base/GridModelJson.java b/src/main/java/org/zjy/synergy/entity/base/TemplateDisplayJson.java similarity index 84% rename from src/main/java/org/zjy/synergy/entity/base/GridModelJson.java rename to src/main/java/org/zjy/synergy/entity/base/TemplateDisplayJson.java index 9843402..36981d6 100644 --- a/src/main/java/org/zjy/synergy/entity/base/GridModelJson.java +++ b/src/main/java/org/zjy/synergy/entity/base/TemplateDisplayJson.java @@ -8,10 +8,9 @@ */ @JsonInclude(JsonInclude.Include.NON_NULL) -public class GridModelJson extends AbstractJsonEntity { +public class TemplateDisplayJson extends AbstractJsonEntity { ; private String name; - private String type; private Integer fieldIndex; private String defaultValue; private String text; @@ -26,14 +25,6 @@ public void setName(String name) { this.name = name; } - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - public Integer getFieldIndex() { return fieldIndex; } diff --git a/src/main/java/org/zjy/synergy/service/base/FunctionService.java b/src/main/java/org/zjy/synergy/service/base/FunctionService.java index 56e5405..98f5362 100644 --- a/src/main/java/org/zjy/synergy/service/base/FunctionService.java +++ b/src/main/java/org/zjy/synergy/service/base/FunctionService.java @@ -29,7 +29,7 @@ public class FunctionService { private AuthorityService authorityService; private Boolean enableFunctionDivCache = false; - private String divIdPrefix = "function"; + private String divIdPrefix = "function_"; private Map functionBodyCache; private Map funcTreeCache; private String webContentsRootPath; @@ -71,7 +71,7 @@ public String getFunctionBody(int functionId) { } catch (NullPointerException e) { logService.error("Get class path error"); } - String appName = propertiesService.getProperty("app.name"); + String appName = propertiesService.getProperty("application.name"); webContentsRootPath = targetPath.substring(0, targetPath.lastIndexOf(appName) + appName.length() + 1); } @@ -80,9 +80,9 @@ public String getFunctionBody(int functionId) { String htmlPath; if (functionTreeNodeEntity != null && functionTreeNodeEntity.getFile() != null) { if (functionTreeNodeEntity.getFile().charAt(0) == '/') - htmlPath = webContentsRootPath + propertiesService.getProperty("app.viewFilePath") + functionTreeNodeEntity.getFile().substring(1); + htmlPath = webContentsRootPath + propertiesService.getProperty("application.viewFilePath") + functionTreeNodeEntity.getFile().substring(1); else - htmlPath = webContentsRootPath + propertiesService.getProperty("app.viewFilePath") + functionTreeNodeEntity.getFile(); + htmlPath = webContentsRootPath + propertiesService.getProperty("application.viewFilePath") + functionTreeNodeEntity.getFile(); } else { logService.error("Get html path error"); return null; diff --git a/src/main/java/org/zjy/synergy/service/base/PropertiesService.java b/src/main/java/org/zjy/synergy/service/base/PropertiesService.java index 2a030ae..c8700bc 100644 --- a/src/main/java/org/zjy/synergy/service/base/PropertiesService.java +++ b/src/main/java/org/zjy/synergy/service/base/PropertiesService.java @@ -21,7 +21,7 @@ public class PropertiesService extends Properties { public PropertiesService() { try { - this.load(new FileInputStream("src/main/webapp/WEB-INF/app.properties")); + this.load(new FileInputStream("src/main/resources/application.properties")); } catch (Exception e) { logger.error("Open properties file error."); } @@ -29,7 +29,7 @@ public PropertiesService() { public int getAppLanguage () { if (appLanguage == 0) { - String appLanguageConfig = this.getProperty("app.language"); + String appLanguageConfig = this.getProperty("application.language"); switch (appLanguageConfig) { case "en": appLanguage = EN; diff --git a/src/main/java/org/zjy/synergy/service/base/TemplateService.java b/src/main/java/org/zjy/synergy/service/base/TemplateService.java index 60ef58d..01c0c9f 100644 --- a/src/main/java/org/zjy/synergy/service/base/TemplateService.java +++ b/src/main/java/org/zjy/synergy/service/base/TemplateService.java @@ -33,6 +33,7 @@ public class TemplateService { private String retrieveTemplatesByModule = "from TemplateEntity where module in (:modules) and dr = 0"; private String retrieveMetadataTemplateById = "from MetadataTemplateEntity where fkTemplate in (:fkTemplate) and dr = 0"; private String retrieveTemplateFieldById = "from TemplateFieldEntity where templateEntity.pkTemplate in (:fkTemplate) and dr = 0"; + private String retrieveMetadataDetail = "from MetadataDetailEntity where pkMetadataDetail = ?"; public TemplateService() { @@ -40,7 +41,6 @@ public TemplateService() { } - @SuppressWarnings(value = {"unchecked"}) public List getTemplateById(int functionId) { // (int userId), userId is not supported now @@ -56,25 +56,39 @@ public List getTemplateById(List templateId) { } Session session = sessionFactory.openSession(); List result = new LinkedList<>(); - List metadataTemplateEntityList = session.createQuery(retrieveMetadataTemplateById).setParameterList("fkTemplate", templateId).list(); - for (MetadataTemplateEntity metadataTemplateEntity : metadataTemplateEntityList) { - if (metadataTemplateEntity.getJsonName() != null) { - GridModelJson gridModelJson = new GridModelJson(); - gridModelJson.setId(metadataTemplateEntity.getPkTemplateField()); - gridModelJson.setName(metadataTemplateEntity.getJsonName()); - gridModelJson.setType(metadataTemplateEntity.getType()); - gridModelJson.setFieldIndex(metadataTemplateEntity.getFieldIndex()); - gridModelJson.setDefaultValue(metadataTemplateEntity.getDefaultValue()); + List templateFieldEntityList = session.createQuery(retrieveTemplateFieldById).setParameterList("fkTemplate", templateId).list(); + for (TemplateFieldEntity templateFieldEntity : templateFieldEntityList) { + TemplateDisplayJson templateDisplayJson = new TemplateDisplayJson(); + if (templateFieldEntity.getFkMetadataDetail() == null) { + templateDisplayJson.setId(templateFieldEntity.getPkTemplateField()); + templateDisplayJson.setName(templateFieldEntity.getName()); + templateDisplayJson.setFieldIndex(templateFieldEntity.getFieldIndex()); + templateDisplayJson.setDefaultValue(templateFieldEntity.getDefaultValue()); + if (propertiesService.getAppLanguage() == PropertiesService.EN) + templateDisplayJson.setText(templateFieldEntity.getTextEn()); + else if (propertiesService.getAppLanguage() == PropertiesService.ZH) + templateDisplayJson.setText(templateFieldEntity.getTextZh()); + else + templateDisplayJson.setText(templateFieldEntity.getTextEn()); + + templateDisplayJson.setDescription(templateFieldEntity.getDescription()); + } else { + MetadataDetailEntity metadataDetail = (MetadataDetailEntity) session + .get(MetadataDetailEntity.class, templateFieldEntity.getFkMetadataDetail()); + templateDisplayJson.setId(templateFieldEntity.getPkTemplateField()); + templateDisplayJson.setName(metadataDetail.getJsonName()); + templateDisplayJson.setFieldIndex(templateFieldEntity.getFieldIndex()); + templateDisplayJson.setDefaultValue(templateFieldEntity.getDefaultValue()); if (propertiesService.getAppLanguage() == PropertiesService.EN) - gridModelJson.setText(metadataTemplateEntity.getTextEn()); + templateDisplayJson.setText(templateFieldEntity.getTextEn()); else if (propertiesService.getAppLanguage() == PropertiesService.ZH) - gridModelJson.setText(metadataTemplateEntity.getTextZh()); + templateDisplayJson.setText(templateFieldEntity.getTextZh()); else - gridModelJson.setText(metadataTemplateEntity.getTextEn()); + templateDisplayJson.setText(templateFieldEntity.getTextEn()); - gridModelJson.setDescription(metadataTemplateEntity.getDescription()); - result.add(gridModelJson); + templateDisplayJson.setDescription(templateFieldEntity.getDescription()); } + result.add(templateDisplayJson); } session.close(); return result; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d9ca5d6..40bc9c5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -19,8 +19,8 @@ server.port=8080 http.mappers.json-pretty-print=false # sort keys http.mappers.json-sort-keys=false -spring.view.prefix= /WEB-INF/views -spring.view.suffix= .jsp +spring.view.prefix=/WEB-INF/views/ +spring.view.suffix=.jsp # DATASOURCE (DataSourceAutoConfiguration & AbstractDataSourceConfiguration) # name of the data source @@ -33,7 +33,7 @@ spring.datasource.schema=synergy spring.datasource.continueOnError=false #org.sqlite.JDBC spring.datasource.driverClassName=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306 +spring.datasource.url=jdbc:mysql://localhost:3306/synergy #jdbc:sqlite:database/WebDev.db spring.datasource.username=zjy spring.datasource.password=zjy @@ -46,6 +46,14 @@ hibernate.format_sql=true hibernate.use_sql_comments=true hibernate.dialect=true -spring.thymeleaf.cache: false -debug: false -security.basic.enabled: false \ No newline at end of file +#spring.thymeleaf.cache: false +#debug: false +#security.basic.enabled: false + +#App configuration +application.name=Synergy +application.language=en +#app.language=zh + +#View files' Path +application.viewFilePath=src/main/webapp/WEB-INF/views/ \ No newline at end of file diff --git a/src/main/resources/images/NU-Logo.png b/src/main/webapp/WEB-INF/images/NU-Logo.png similarity index 100% rename from src/main/resources/images/NU-Logo.png rename to src/main/webapp/WEB-INF/images/NU-Logo.png diff --git a/src/main/resources/images/background.jpg b/src/main/webapp/WEB-INF/images/background.jpg similarity index 100% rename from src/main/resources/images/background.jpg rename to src/main/webapp/WEB-INF/images/background.jpg diff --git a/src/main/resources/images/huskies01.jpg b/src/main/webapp/WEB-INF/images/huskies01.jpg similarity index 100% rename from src/main/resources/images/huskies01.jpg rename to src/main/webapp/WEB-INF/images/huskies01.jpg diff --git a/src/main/resources/images/huskies02.jpg b/src/main/webapp/WEB-INF/images/huskies02.jpg similarity index 100% rename from src/main/resources/images/huskies02.jpg rename to src/main/webapp/WEB-INF/images/huskies02.jpg diff --git a/src/main/webapp/WEB-INF/views/util.js b/src/main/webapp/WEB-INF/js/util.js similarity index 100% rename from src/main/webapp/WEB-INF/views/util.js rename to src/main/webapp/WEB-INF/js/util.js diff --git a/src/main/webapp/WEB-INF/views/base/authority.jsp b/src/main/webapp/WEB-INF/views/base/authority.jsp new file mode 100644 index 0000000..152984c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/base/authority.jsp @@ -0,0 +1,391 @@ + + + + + + + + + + + + Authority Management + + +
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/base/function.jsp b/src/main/webapp/WEB-INF/views/base/function.jsp index aeab5ce..8028daf 100644 --- a/src/main/webapp/WEB-INF/views/base/function.jsp +++ b/src/main/webapp/WEB-INF/views/base/function.jsp @@ -10,7 +10,7 @@ - + Function Management diff --git a/src/main/webapp/WEB-INF/views/login.jsp b/src/main/webapp/WEB-INF/views/base/login.jsp similarity index 97% rename from src/main/webapp/WEB-INF/views/login.jsp rename to src/main/webapp/WEB-INF/views/base/login.jsp index c6d6f7e..55a4d60 100644 --- a/src/main/webapp/WEB-INF/views/login.jsp +++ b/src/main/webapp/WEB-INF/views/base/login.jsp @@ -7,7 +7,7 @@ - + Main @@ -24,7 +24,7 @@ renderTo: Ext.getBody() }); - var templateStore = createTemplateStore(101); + var templateStore = createTemplateStore(200); templateStore.load(); templateStore.on("load", function () { var loginFormPanel = Ext.create('Ext.form.Panel', { diff --git a/src/main/webapp/WEB-INF/views/base/main.jsp b/src/main/webapp/WEB-INF/views/base/main.jsp index 3ff9414..5415368 100644 --- a/src/main/webapp/WEB-INF/views/base/main.jsp +++ b/src/main/webapp/WEB-INF/views/base/main.jsp @@ -15,7 +15,7 @@ Time: 10:13 - + Main diff --git a/src/main/webapp/WEB-INF/views/base/metadata.jsp b/src/main/webapp/WEB-INF/views/base/metadata.jsp index 534cf08..a20ebcb 100644 --- a/src/main/webapp/WEB-INF/views/base/metadata.jsp +++ b/src/main/webapp/WEB-INF/views/base/metadata.jsp @@ -7,7 +7,7 @@ - + Metadata Management diff --git a/src/main/webapp/WEB-INF/views/base/user.jsp b/src/main/webapp/WEB-INF/views/base/user.jsp index 9e44a0c..f8d5543 100644 --- a/src/main/webapp/WEB-INF/views/base/user.jsp +++ b/src/main/webapp/WEB-INF/views/base/user.jsp @@ -10,7 +10,7 @@ - + User Management @@ -142,11 +142,6 @@ name: 'fax' }] }] -// buttons: [{ -// text: 'Save' -// }, { -// text: 'Cancel' -// }] }); var userInfoPanel = Ext.create('Ext.panel.Panel', {