diff --git a/README.md b/README.md new file mode 100644 index 0000000..30235d0 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# UOA Admin Tools + +This service provides method in order to save portal related configuration, +such as pages, plugins, entities etc. Also, it handles the machine cache for each portal +and expose managers information through an external service. + +## Configuration + +- Check [Admin Tools Library](https://code-repo.d4science.org/MaDgIK/uoa-admin-tools-library) + +### Mongo Configuration + + admin-tools.mongodb.host # Required - Host of mongo server - Default: localhost + admin-tools.mongodb.database # Required - Database name + admin-tools.mongodb.username # Optional - Username if needed + admin-tools.mongodb.password # Optional - Password if needed + admin-tools.mongodb.port # Required - Mongo server port - Default: 27017 + +### Managers Configuration + + admin-tools.managers.id # Required - External service URL to get OpenAIRE IDs of users that are managers of a portal. + admin-tools.managers.email # Required - External service URL to get emails of users that are managers of a portal. + + +### Cache Configuration + + admin-tools.cache # Required - URL of machine cache. + +## Run + +Check [Spring boot Documentation](https://code-repo.d4science.org/MaDgIK/Documentation/wiki/Spring-boot) (need Login) diff --git a/deployments.txt b/deployments.txt deleted file mode 100644 index 4605f44..0000000 --- a/deployments.txt +++ /dev/null @@ -1,38 +0,0 @@ -!!!!Check the following for the override properties port - - src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java - - -!! properties here cannot be overwritten in dnet-override.properties - src/main/resources/application.properties - -!!Check dnet-override.properties that have override the properties from: - - src/main/resources/admintools.properties - - -**DEV NEW 05-07-2019** -Replace admintool with admintool.mail on dnet-override properties - - - -***BETA*** - PORT: 8380 - logs: /var/log/dnet/uoa-admin-tools/ - - #spring.data.mongodb.host=beta.services.openaire.eu - #spring.data.mongodb.port=27017 - #spring.data.mongodb.database=openaireconnect - - -***Production*** - - PORT: 8480 - logs: /var/log/dnet/uoa-admin-tools/ - - #spring.data.mongodb.host=services.openaire.eu - #spring.data.mongodb.port=27017 - #spring.data.mongodb.database=openaireconnect - #spring.data.mongodb.username=dnet8480 - #spring.data.mongodb.password=... - diff --git a/pom.xml b/pom.xml index 9c95316..c530d20 100644 --- a/pom.xml +++ b/pom.xml @@ -1,85 +1,52 @@ - - 4.0.0 - uoa-admin-tools - 2.1.4-BETA-SNAPSHOT - war - uoa-admin-tools + + + eu.dnetlib + uoa-spring-boot-parent + 2.0.3 + + 4.0.0 + uoa-admin-tools + 3.0.0-BETA-SNAPSHOT + war + uoa-admin-tools scm:git:gitea@code-repo.d4science.org:MaDgIK/uoa-admin-tools.git - HEAD - - - eu.dnetlib - uoa-spring-boot-parent - 1.0.0 - - - UTF-8 - UTF-8 + HEAD + + + UTF-8 + UTF-8 ${maven.build.timestamp} E MMM dd HH:mm:ss z yyyy - - - - org.springframework.boot - spring-boot-starter-data-mongodb - + + - javax.mail - mail - 1.5.0-b01 + org.springframework.boot + spring-boot-starter-data-mongodb - - - - - - + eu.dnetlib uoa-admin-tools-library - 1.0.13 - - - - io.springfox - springfox-swagger2 - ${swagger-version} - - - - io.springfox - springfox-swagger-ui - ${swagger-version} + 2.0.1 - - + + org.springframework.boot spring-boot-maven-plugin - ${spring-boot-version} eu.dnetlib.uoaadmintools.UoaAdminToolsApplication true - - - - repackage - - - org.apache.maven.plugins maven-war-plugin - 2.6 - - false - - + uoa-admin-tools - + diff --git a/bug_fix_db.js b/scripts/bug_fix_db.js similarity index 100% rename from bug_fix_db.js rename to scripts/bug_fix_db.js diff --git a/init_db.js b/scripts/init_db.js similarity index 100% rename from init_db.js rename to scripts/init_db.js diff --git a/migrateCommunityIn_db.js b/scripts/migrateCommunityIn_db.js similarity index 100% rename from migrateCommunityIn_db.js rename to scripts/migrateCommunityIn_db.js diff --git a/synchronize_dbs.js b/scripts/synchronize_dbs.js similarity index 100% rename from synchronize_dbs.js rename to scripts/synchronize_dbs.js diff --git a/update_db.js b/scripts/update_db.js similarity index 100% rename from update_db.js rename to scripts/update_db.js diff --git a/src/main/java/eu/dnetlib/uoaadmintools/ServletInitializer.java b/src/main/java/eu/dnetlib/uoaadmintools/ServletInitializer.java index 448ff26..68eb81d 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/ServletInitializer.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/ServletInitializer.java @@ -1,7 +1,7 @@ package eu.dnetlib.uoaadmintools; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { diff --git a/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java b/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java index 808e13e..5d8bb32 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java @@ -1,22 +1,15 @@ package eu.dnetlib.uoaadmintools; -import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.uoaadmintools.configuration.GlobalVars; -import eu.dnetlib.uoaadmintools.configuration.properties.APIProperties; -import eu.dnetlib.uoaadmintools.configuration.properties.BrowserCacheConfig; -import eu.dnetlib.uoaadmintools.configuration.properties.ManagersApiConfig; -import eu.dnetlib.uoaadmintools.configuration.properties.MongoConfig; +import eu.dnetlib.uoaadmintools.configuration.properties.Properties; import eu.dnetlib.uoaadmintoolslibrary.UoaAdminToolsLibraryConfiguration; -import eu.dnetlib.uoaauthorizationlibrary.configuration.AuthorizationConfiguration; +import eu.dnetlib.uoaauthorizationlibrary.SecurityConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySources; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.web.client.RestTemplate; @SpringBootApplication(scanBasePackages = {"eu.dnetlib.uoaadmintools"}) @PropertySources({ @@ -25,20 +18,11 @@ import org.springframework.web.client.RestTemplate; @PropertySource("classpath:admintools.properties"), @PropertySource(value = "classpath:dnet-override.properties", ignoreResourceNotFound = true) }) -@EnableConfigurationProperties({MongoConfig.class, ManagersApiConfig.class, BrowserCacheConfig.class, GlobalVars.class, APIProperties.class}) -@Import({AuthorizationConfiguration.class, UoaAdminToolsLibraryConfiguration.class}) +@EnableConfigurationProperties({Properties.class, GlobalVars.class}) +@Import({SecurityConfiguration.class, UoaAdminToolsLibraryConfiguration.class}) public class UoaAdminToolsApplication { public static void main(String[] args) { SpringApplication.run(UoaAdminToolsApplication.class, args); } - - @Bean - RestTemplate restTemplate() { - RestTemplate restTemplate = new RestTemplate(); - MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); - converter.setObjectMapper(new ObjectMapper()); - restTemplate.getMessageConverters().add(converter); - return restTemplate; - } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/GlobalVars.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/GlobalVars.java index 9d2914e..c416716 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/configuration/GlobalVars.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/configuration/GlobalVars.java @@ -4,7 +4,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import java.util.Date; -@ConfigurationProperties("admintool.globalVars") +@ConfigurationProperties("admin-tools.global-vars") public class GlobalVars { public static Date date = new Date(); private Date buildDate; diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/SwaggerConfig.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/SwaggerConfig.java deleted file mode 100644 index a9091bb..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/configuration/SwaggerConfig.java +++ /dev/null @@ -1,108 +0,0 @@ -package eu.dnetlib.uoaadmintools.configuration; - -import eu.dnetlib.uoaadmintools.configuration.properties.APIProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -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 springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.ParameterBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.schema.ModelRef; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.Parameter; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import java.util.Collections; -import java.util.List; - -/** - * Swagger configuration class - */ -@Configuration -@Profile({"swagger"}) -@EnableSwagger2 -public class SwaggerConfig extends WebMvcConfigurerAdapter { - - private final APIProperties apiProperties; - - @Autowired - public SwaggerConfig(APIProperties apiProperties) { - this.apiProperties = apiProperties; - } - - @Bean - public Docket createRestApi() { - return new Docket(DocumentationType.SWAGGER_2) -// .globalOperationParameters(globalParameterList()) - .apiInfo(apiInfo()) - .select() - .apis(RequestHandlerSelectors.basePackage("eu.dnetlib.uoaadmintools.controllers")) - .paths(PathSelectors.any()) - .build(); - } - - @Bean - public Docket createRestApiLibrary() { - return new Docket(DocumentationType.SWAGGER_2) -// .globalOperationParameters(globalParameterList()) - .apiInfo(apiInfo()) - .groupName("Library") - .select() - .apis(RequestHandlerSelectors.basePackage("eu.dnetlib.uoaadmintoolslibrary.controllers")) - .paths(PathSelectors.any()) - .build(); - } - - @Bean - public Docket createRestApiAuthorizationLibrary() { - return new Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo()) - .groupName("Authorization Library") - .select() - .apis(RequestHandlerSelectors.basePackage("eu.dnetlib.uoaauthorizationlibrary.controllers")) - .paths(PathSelectors.any()) - .build(); - } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title(this.apiProperties.getTitle()) - .description(this.apiProperties.getDescription()) - .version(this.apiProperties.getVersion()) - .build(); - } - - private List globalParameterList() { - Parameter authTokenHeader = new ParameterBuilder() - .name("Session") // name of the header - .modelRef(new ModelRef("string")) // data-type of the header - .required(false) - .parameterType("header") - .description("Session ID") - .build(); - return Collections.singletonList(authTokenHeader); - } - - @Override - public void addViewControllers(ViewControllerRegistry registry) { - registry.addRedirectViewController("/v2/api-docs", "/v2/api-docs"); - registry.addRedirectViewController("/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui"); - registry.addRedirectViewController("/swagger-resources/configuration/security", "/swagger-resources/configuration/security"); - registry.addRedirectViewController("/swagger-resources", "/swagger-resources"); - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/swagger-ui.html**").addResourceLocations("classpath:/META-INF/resources/swagger-ui.html"); - registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); - } - -} - diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/mongo/MongoConnection.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/mongo/MongoConnection.java index 790b24e..b097c5b 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/configuration/mongo/MongoConnection.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/configuration/mongo/MongoConnection.java @@ -1,16 +1,17 @@ package eu.dnetlib.uoaadmintools.configuration.mongo; -import com.mongodb.MongoClient; +import com.mongodb.MongoClientSettings; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; -import eu.dnetlib.uoaadmintools.configuration.properties.MongoConfig; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import eu.dnetlib.uoaadmintools.configuration.properties.Mongodb; +import eu.dnetlib.uoaadmintools.configuration.properties.Properties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; -import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.SimpleMongoDbFactory; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import java.util.Collections; @@ -19,28 +20,29 @@ import java.util.Collections; @EnableMongoRepositories(basePackages = {"eu.dnetlib.uoaadmintools.dao", "eu.dnetlib.uoaadmintoolslibrary.dao"}) public class MongoConnection { - @Autowired - private MongoConfig mongoConfig; + private final Mongodb config; - @Bean - @Primary - public MongoDbFactory mongoDbFactory() { - return new SimpleMongoDbFactory(getMongoClient(), mongoConfig.getDatabase()); + @Autowired + public MongoConnection(Properties properties) { + this.config = properties.getMongodb(); } @Bean(name = "mongoTemplate") - @Primary public MongoTemplate getMongoTemplate() { - return new MongoTemplate(mongoDbFactory()); + return new MongoTemplate(getMongoClient(), config.getDatabase()); } private MongoClient getMongoClient() { - if(mongoConfig.getUsername() != null && mongoConfig.getPassword() != null){ - return new MongoClient(Collections.singletonList( - new ServerAddress(mongoConfig.getHost(), mongoConfig.getPort())), - Collections.singletonList(MongoCredential.createCredential(mongoConfig.getUsername(), mongoConfig.getDatabase(), mongoConfig.getPassword().toCharArray()))); - } else { - return new MongoClient(Collections.singletonList(new ServerAddress(mongoConfig.getHost(), mongoConfig.getPort()))); + MongoClientSettings.Builder builder = MongoClientSettings.builder() + .applyToClusterSettings(b -> b.hosts(Collections.singletonList(new ServerAddress(config.getHost(), config.getPort())))); + if(config.getUsername() != null && config.getPassword() != null) { + MongoCredential credential = MongoCredential.createCredential( + config.getUsername(), + config.getDatabase(), + config.getPassword().toCharArray() + ); + builder.credential(credential); } + return MongoClients.create(builder.build()); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/APIProperties.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/APIProperties.java deleted file mode 100644 index 41c16dd..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/APIProperties.java +++ /dev/null @@ -1,38 +0,0 @@ -package eu.dnetlib.uoaadmintools.configuration.properties; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties("api") -public class APIProperties { - - private String title; - private String description; - private String version; - - public APIProperties() { - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/BrowserCacheConfig.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/BrowserCacheConfig.java deleted file mode 100644 index c85c10a..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/BrowserCacheConfig.java +++ /dev/null @@ -1,16 +0,0 @@ -package eu.dnetlib.uoaadmintools.configuration.properties; -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties("admintool.cache") -public class BrowserCacheConfig { - - private String url; - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/ManagersApiConfig.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Managers.java similarity index 69% rename from src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/ManagersApiConfig.java rename to src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Managers.java index b15f10a..ddf0205 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/ManagersApiConfig.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Managers.java @@ -1,9 +1,6 @@ package eu.dnetlib.uoaadmintools.configuration.properties; -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties("admintool.managers.api") -public class ManagersApiConfig { +public class Managers { private String id; private String email; diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/MongoConfig.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Mongodb.java similarity index 85% rename from src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/MongoConfig.java rename to src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Mongodb.java index 1369b49..3119f78 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/MongoConfig.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Mongodb.java @@ -1,9 +1,6 @@ package eu.dnetlib.uoaadmintools.configuration.properties; -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties("admintool.mongodb") -public class MongoConfig { +public class Mongodb { private String host; private String database; diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Properties.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Properties.java new file mode 100644 index 0000000..5bedbdc --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/Properties.java @@ -0,0 +1,34 @@ +package eu.dnetlib.uoaadmintools.configuration.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties("admin-tools") +public class Properties { + private String cache; + private Mongodb mongodb = new Mongodb(); + private Managers managers = new Managers(); + + public String getCache() { + return cache; + } + + public void setCache(String cache) { + this.cache = cache; + } + + public Mongodb getMongodb() { + return mongodb; + } + + public void setMongodb(Mongodb mongodb) { + this.mongodb = mongodb; + } + + public Managers getManagers() { + return managers; + } + + public void setManagers(Managers managers) { + this.managers = managers; + } +} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/AdminToolsCheckDeployController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/AdminToolsCheckDeployController.java index 6a0efba..5bf4b47 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/AdminToolsCheckDeployController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/AdminToolsCheckDeployController.java @@ -1,48 +1,29 @@ package eu.dnetlib.uoaadmintools.controllers; -import com.mongodb.BasicDBObject; -import com.mongodb.CommandResult; -import com.mongodb.DBObject; -import eu.dnetlib.uoaadmintools.configuration.GlobalVars; -import eu.dnetlib.uoaadmintools.configuration.mongo.MongoConnection; -import eu.dnetlib.uoaadmintools.configuration.properties.BrowserCacheConfig; -import eu.dnetlib.uoaadmintools.configuration.properties.ManagersApiConfig; -import eu.dnetlib.uoaadmintools.configuration.properties.MongoConfig; +import eu.dnetlib.uoaadmintools.services.AdminToolsDeployService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import java.util.Date; -import java.util.HashMap; import java.util.Map; @RestController -@CrossOrigin(origins = "*") public class AdminToolsCheckDeployController { private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private MongoConnection mongoConnection; + private final AdminToolsDeployService service; @Autowired - private MongoConfig mongoConfig; + public AdminToolsCheckDeployController(AdminToolsDeployService service) { + this.service = service; + } - @Autowired - private ManagersApiConfig managersApiConfig; - - @Autowired - private BrowserCacheConfig browserCacheConfig; - - @Autowired - private GlobalVars globalVars; - - @RequestMapping(value = {"", "/health_check"}, method = RequestMethod.GET) + @RequestMapping(value = {"", "/", "/health_check"}, method = RequestMethod.GET) public String hello() { log.debug("Hello from uoa-admin-tools!"); return "Hello from uoa-admin-tools!"; @@ -51,39 +32,6 @@ public class AdminToolsCheckDeployController { @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/health_check/advanced", method = RequestMethod.GET) public Map checkEverything() { - Map response = new HashMap<>(); - - MongoTemplate mt = mongoConnection.getMongoTemplate(); - DBObject ping = new BasicDBObject("ping", "1"); - try { - CommandResult answer = mt.getDb().command(ping); - response.put("Mongo try: error", answer.getErrorMessage()); - } catch (Exception e) { - response.put("Mongo catch: error", e.getMessage()); - } - - response.put("admintool.mongodb.database", mongoConfig.getDatabase()); - response.put("admintool.mongodb.host", mongoConfig.getHost()); - response.put("admintool.mongodb.port", mongoConfig.getPort()+""); - response.put("admintool.mongodb.username", mongoConfig.getUsername() == null ? null : "[unexposed value]"); - response.put("admintool.mongodb.password", mongoConfig.getPassword() == null ? null : "[unexposed value]"); -// response.put("Define also", "admintool.mongodb.username, admintool.mongodb.password"); - - response.put("admintool.managers.api.id", managersApiConfig.getId()); - response.put("admintool.managers.api.email", managersApiConfig.getEmail()); - - response.put("admintool.cache.url", browserCacheConfig.getUrl()); - - if(globalVars.date != null) { - response.put("Date of deploy", globalVars.date.toString()); - } - if(globalVars.getBuildDate() != null) { - response.put("Date of build", globalVars.getBuildDate()); - } - if(globalVars.getVersion() != null) { - response.put("Version", globalVars.getVersion()); - } - - return response; + return this.service.getProperties(); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/BrowserCacheController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/BrowserCacheController.java index dc4bb3a..e437cc7 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/BrowserCacheController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/BrowserCacheController.java @@ -1,42 +1,34 @@ package eu.dnetlib.uoaadmintools.controllers; -import eu.dnetlib.uoaadmintools.configuration.properties.BrowserCacheConfig; +import eu.dnetlib.uoaadmintools.configuration.properties.Properties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; @RestController @RequestMapping("/cache") -@CrossOrigin(origins = "*") public class BrowserCacheController { private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private RestTemplate restTemplate; + private final RestTemplate restTemplate; + private final String cache; @Autowired - private BrowserCacheConfig config; + public BrowserCacheController(RestTemplate restTemplate, Properties properties) { + this.restTemplate = restTemplate; + this.cache = properties.getCache(); + } @PreAuthorize("hasAnyAuthority(" + "@AuthorizationService.PORTAL_ADMIN, " + "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/{pid}", method = RequestMethod.GET) - public boolean purge(@PathVariable(value = "pid") String pid) { -// try { - restTemplate.getForEntity(config.getUrl().replace("{community}", pid), String.class); -// } catch(HttpClientErrorException httpClientErrorException) { -// log.debug("Purge browser cache: HttpClientErrorException for "+pid + " - code: " + httpClientErrorException.getStatusCode()); -// return false; -// } catch(ResourceAccessException resourceAccessException) { -// log.debug("Purge browser cache: ResourceAccessException for "+pid); -// return false; -// } catch(Exception exception) { -// log.debug("Purge browser cache: " + exception.getClass() + " for "+pid); -// return false; -// } - return true; + public ResponseEntity purge(@PathVariable(value = "pid") String pid) { + restTemplate.getForEntity(cache.replace("{community}", pid), String.class); + return ResponseEntity.ok(true); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/CommunityController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/CommunityController.java index 52696b0..ac2a710 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/CommunityController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/CommunityController.java @@ -1,17 +1,20 @@ package eu.dnetlib.uoaadmintools.controllers; import eu.dnetlib.uoaadmintools.entities.Layout; -import eu.dnetlib.uoaadmintools.services.*; +import eu.dnetlib.uoaadmintools.services.LayoutService; +import eu.dnetlib.uoaadmintools.services.MenuService; +import eu.dnetlib.uoaadmintools.services.NotificationsService; import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; +import eu.dnetlib.uoaadmintoolslibrary.entities.PortalType; import eu.dnetlib.uoaadmintoolslibrary.entities.fullEntities.PortalResponse; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils; import eu.dnetlib.uoaadmintoolslibrary.services.PageService; import eu.dnetlib.uoaadmintoolslibrary.services.PortalService; +import eu.dnetlib.uoaadmintoolslibrary.utils.MismatchingContentException; +import eu.dnetlib.uoaauthorizationlibrary.authorization.exceptions.http.NotFoundException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -19,167 +22,117 @@ import java.util.List; @RestController @RequestMapping("/community") -@CrossOrigin(origins = "*") public class CommunityController { private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private RolesUtils rolesUtils; - - @Autowired - private LayoutService layoutService; - - @Autowired - private NotificationsService notificationsService; - - @Autowired - private StatisticsService statisticsService; - - @Autowired - private SubscriberService subscriberService; - - @Autowired - private MenuService menuService; + private final LayoutService layoutService; + private final NotificationsService notificationsService; + private final MenuService menuService; @Autowired private PortalService portalService; - @Autowired private PageService pageService; + @Autowired + public CommunityController(LayoutService layoutService, NotificationsService notificationsService, MenuService menuService) { + this.layoutService = layoutService; + this.notificationsService = notificationsService; + this.menuService = menuService; + } + @RequestMapping(value = {""}, method = RequestMethod.GET) - public List getAllCommunities() { - return portalService.getAllPortalsByType("community"); + public ResponseEntity> getAllCommunities() { + return ResponseEntity.ok(portalService.getAllPortalsByType("community")); } @RequestMapping(value = {"/full"}, method = RequestMethod.GET) - public List getAllCommunitiesFull() { - return portalService.getAllPortalsFullByType("community"); + public ResponseEntity> getAllCommunitiesFull() { + return ResponseEntity.ok(portalService.getAllPortalsFullByType("community")); } @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/update", method = RequestMethod.POST) - public PortalResponse updateCommunity(@RequestBody Portal portal) { - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Update Community: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); + public ResponseEntity updateCommunity(@RequestBody Portal portal) { + if (!portal.getType().equals("community")) { + throw new MismatchingContentException("Update Community: Portal with id: " + portal.getId() + " has type: " + portal.getType() + " instead of community"); } - String old_pid = portalService.getPortalById(portal.getId()).getPid(); - String new_pid = portal.getPid(); - PortalResponse portalResponse = portalService.updatePortal(portal); - - if(!old_pid.equals(new_pid)) { - log.debug("update portal pid - old: "+old_pid + " - new: "+new_pid); - statisticsService.updatePid(old_pid, new_pid); - subscriberService.updatePid(old_pid, new_pid); - layoutService.updatePid(old_pid, new_pid); - notificationsService.updatePid(old_pid, new_pid); - menuService.updatePid(old_pid, new_pid); - pageService.updatePid(old_pid, new_pid, portal.getType()); + if (!old_pid.equals(portal.getPid())) { + log.debug("update portal pid - old: " + old_pid + " - new: " + portal.getPid()); + layoutService.updatePid(old_pid, portal); + notificationsService.updatePid(old_pid, portal); + menuService.updatePid(old_pid, portal); + pageService.updatePid(old_pid, portal); } - - return portalResponse; + return ResponseEntity.ok(portalResponse); } @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/save", method = RequestMethod.POST) - public PortalResponse insertCommunity(@RequestBody Portal portal) { - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Save Community: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); + public ResponseEntity insertCommunity(@RequestBody Portal portal) { + if (!portal.getType().equals("community")) { + throw new MismatchingContentException("Save Community: Portal with id: " + portal.getId() + " has type: " + portal.getType() + " instead of community"); } - - PortalResponse portalResponse = portalService.insertPortal(portal); - - statisticsService.createPortalStatistics(portal.getPid()); - subscriberService.createPortalSubscribers(portal.getPid()); - - return portalResponse; + return ResponseEntity.ok(portalService.insertPortal(portal)); } @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/delete", method = RequestMethod.POST) - public Boolean deleteCommunities(@RequestBody List portals) throws Exception { - for (String id: portals) { + public ResponseEntity deleteCommunities(@RequestBody List portals) throws Exception { + for (String id : portals) { Portal portal = portalService.getPortalById(id); - if(portal == null) { - // EXCEPTION - Entity Not Found - throw new ContentNotFoundException("Delete community: Portal with id: " + id + " not found"); + if (!portal.getType().equals("community")) { + throw new MismatchingContentException("Delete Community: Portal with id: " + id + " has type: " + portal.getType() + " instead of community"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Delete Community: Portal with id: "+id+" has type: "+portal.getType()+" instead of community"); - } - String pid = portalService.deletePortal(id); - - statisticsService.deleteByPid(pid); - subscriberService.deletePortalSubscribers(pid); layoutService.deleteByPid(pid); notificationsService.deleteByPid(pid); menuService.deleteMenuByPortalPid(pid); } - - return true; + return ResponseEntity.ok(true); } @RequestMapping(value = "/layouts", method = RequestMethod.GET) - public List getAvailableLayouts() { - return this.layoutService.findAll(); + public ResponseEntity> getAvailableLayouts() { + return ResponseEntity.ok(this.layoutService.findAll()); } @RequestMapping(value = "/{pid}/layout", method = RequestMethod.GET) - public Layout getLayoutForCommunity(@PathVariable(value = "pid") String pid) { - Portal portal = portalService.getPortal(pid); - if(portal == null) { + public ResponseEntity getLayoutForCommunity(@PathVariable(value = "pid") String pid) { + Portal portal = portalService.getPortal(PortalType.community, pid); + if (portal == null) { // EXCEPTION - Entity Not Found - throw new ContentNotFoundException("CommunityController - Get layout: Portal with pid: " + pid + " not found"); + throw new NotFoundException("CommunityController - Get layout: Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("CommunityController - Get layout: Portal with pid: "+pid+" has type: "+portal.getType()+" instead of community"); - } - return layoutService.findByPid(pid); + return ResponseEntity.ok(layoutService.findByPid(pid)); } @PreAuthorize("hasAnyAuthority(" + "@AuthorizationService.PORTAL_ADMIN, " + "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/{pid}/layout", method = RequestMethod.POST) - public Layout updateLayoutForCommunity(@PathVariable(value = "pid") String pid, @RequestBody Layout layout) { - Portal portal = portalService.getPortal(pid); - if(portal == null) { - // EXCEPTION - Entity Not Found - throw new ContentNotFoundException("CommunityController - Update layout: Portal with pid: " + pid + " not found"); + public ResponseEntity updateLayoutForCommunity(@PathVariable(value = "pid") String pid, @RequestBody Layout layout) { + Portal portal = portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("CommunityController - Update layout: Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("CommunityController - Update layout: Portal with pid: "+pid+" has type: "+portal.getType()+" instead of community"); - } - if(!pid.equals(layout.getPortalPid())) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("CommunityController - Update layout: Portal has pid: "+pid+" while layout has portalPid: "+layout.getPortalPid()); - } - return layoutService.save(layout); + layout.setPortalPid(portal.getPid()); + return ResponseEntity.ok(layoutService.save(layout)); } @PreAuthorize("hasAnyAuthority(" + "@AuthorizationService.PORTAL_ADMIN, " + "@AuthorizationService.curator('community'))") @RequestMapping(value = "/{pid}/layout", method = RequestMethod.DELETE) - public boolean deleteLayoutForCommunity(@PathVariable(value = "pid") String pid) { - Portal portal = portalService.getPortal(pid); - if(portal == null) { - // EXCEPTION - Entity Not Found - throw new ContentNotFoundException("CommunityController - Delete layout: Portal with pid: " + pid + " not found"); + public ResponseEntity deleteLayoutForCommunity(@PathVariable(value = "pid") String pid) { + Portal portal = portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("CommunityController - Delete layout: Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("CommunityController - Delete layout: Portal with pid: "+pid+" has type: "+portal.getType()+" instead of community"); - } - return layoutService.deleteByPid(pid); + layoutService.deleteByPid(pid); + return ResponseEntity.ok(true); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/ConnectController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/ConnectController.java index 0edb39a..fae15ab 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/ConnectController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/ConnectController.java @@ -4,13 +4,13 @@ import eu.dnetlib.uoaadmintools.entities.Layout; import eu.dnetlib.uoaadmintools.services.LayoutService; import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; import eu.dnetlib.uoaadmintoolslibrary.entities.fullEntities.PortalResponse; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; import eu.dnetlib.uoaadmintoolslibrary.services.PageService; import eu.dnetlib.uoaadmintoolslibrary.services.PortalService; +import eu.dnetlib.uoaadmintoolslibrary.utils.MismatchingContentException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -18,22 +18,24 @@ import java.util.List; @RestController @RequestMapping("/connect") -@CrossOrigin(origins = "*") public class ConnectController { private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private LayoutService layoutService; + private final LayoutService layoutService; @Autowired private PortalService portalService; - @Autowired private PageService pageService; + @Autowired + public ConnectController(LayoutService layoutService) { + this.layoutService = layoutService; + } + @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/update", method = RequestMethod.POST) - public PortalResponse updateConnect(@RequestBody Portal portal) { + public ResponseEntity updateConnect(@RequestBody Portal portal) { if (!portal.getType().equals("connect")) { // EXCEPTION - MismatchingContent throw new MismatchingContentException("Update Connect: Portal with id: " + portal.getId() + " has type: " + portal.getType() + " instead of connect"); @@ -41,82 +43,72 @@ public class ConnectController { String old_pid = portalService.getPortalById(portal.getId()).getPid(); String new_pid = portal.getPid(); - PortalResponse portalResponse = portalService.updatePortal(portal); - if (!old_pid.equals(new_pid)) { - layoutService.updatePid(old_pid, new_pid); - pageService.updatePid(old_pid, new_pid, portal.getType()); + layoutService.updatePid(old_pid, portal); + pageService.updatePid(old_pid, portal); } - - return portalResponse; + return ResponseEntity.ok(portalResponse); } @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/save", method = RequestMethod.POST) - public PortalResponse insertConnect(@RequestBody Portal portal) { + public ResponseEntity insertConnect(@RequestBody Portal portal) { if (!portal.getType().equals("connect")) { // EXCEPTION - MismatchingContent throw new MismatchingContentException("Save Connect: Portal with id: " + portal.getId() + " has type: " + portal.getType() + " instead of connect"); } - PortalResponse portalResponse = portalService.insertPortal(portal); - return portalResponse; + return ResponseEntity.ok(portalService.insertPortal(portal)); } @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/delete", method = RequestMethod.POST) - public Boolean deleteConnect(@RequestBody List portals) { + public ResponseEntity deleteConnect(@RequestBody List portals) { for (String id : portals) { Portal portal = portalService.getPortalById(id); - if (portal == null) { - // EXCEPTION - Entity Not Found - throw new ContentNotFoundException("Delete connect: Portal with id: " + id + " not found"); - } if (!portal.getType().equals("connect")) { - // EXCEPTION - MismatchingContent throw new MismatchingContentException("Delete Connect: Portal with id: " + id + " has type: " + portal.getType() + " instead of connect"); } - String pid = portalService.deletePortal(id); layoutService.deleteByPid(pid); } - - return true; + return ResponseEntity.ok(true); } // no authorization here, because it is called by server @RequestMapping(value = "/{pid}/layout", method = RequestMethod.GET) - public Layout getLayoutForConnect(@PathVariable(value = "pid") String pid) { - if(!pid.equals("connect") && !pid.equals("default")) { + public ResponseEntity getLayoutForConnect(@PathVariable(value = "pid") String pid) { + if (!pid.equals("connect") && !pid.equals("default")) { // EXCEPTION - MismatchingContent - throw new MismatchingContentException("ConnectController - Get layout: Not accepted pid: "+pid); + throw new MismatchingContentException("ConnectController - Get layout: Not accepted pid: " + pid); } - return layoutService.findByPid(pid); + return ResponseEntity.ok(layoutService.findByPid(pid)); } @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/{pid}/layout", method = RequestMethod.POST) - public Layout updateLayoutForConnect(@PathVariable(value = "pid") String pid, @RequestBody Layout layout) { - if(!pid.equals("connect") && !pid.equals("default")) { + public ResponseEntity updateLayoutForConnect(@PathVariable(value = "pid") String pid, @RequestBody Layout layout) { + if (!pid.equals("connect") && !pid.equals("default")) { // EXCEPTION - MismatchingContent - throw new MismatchingContentException("ConnectController - Update layout: Not accepted pid: "+pid); + throw new MismatchingContentException("ConnectController - Update layout: Not accepted pid: " + pid); } - if(!pid.equals(layout.getPortalPid())) { + if (!pid.equals(layout.getPortalPid())) { // EXCEPTION - MismatchingContent - throw new MismatchingContentException("ConnectController - Update layout: Portal has pid: "+pid+" while layout has portalPid: "+layout.getPortalPid()); + throw new MismatchingContentException("ConnectController - Update layout: Portal has pid: " + pid + " while layout has portalPid: " + layout.getPortalPid()); } - return layoutService.save(layout); + return ResponseEntity.ok(layoutService.save(layout)); } @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/{pid}/layout", method = RequestMethod.DELETE) - public boolean deleteLayoutForConnect(@PathVariable(value = "pid") String pid) { - if(!pid.equals("connect") && !pid.equals("default")) { + public ResponseEntity deleteLayoutForConnect(@PathVariable(value = "pid") String pid) { + if (!pid.equals("connect") && !pid.equals("default")) { // EXCEPTION - MismatchingContent - throw new MismatchingContentException("ConnectController - Delete layout: Not accepted pid: "+pid); + throw new MismatchingContentException("ConnectController - Delete layout: Not accepted pid: " + pid); } - return layoutService.deleteByPid(pid); + layoutService.deleteByPid(pid); + return ResponseEntity.ok(true); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/CuratorController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/CuratorController.java index 02bac7e..4109f74 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/CuratorController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/CuratorController.java @@ -3,71 +3,63 @@ package eu.dnetlib.uoaadmintools.controllers; import eu.dnetlib.uoaadmintools.entities.curator.Curator; import eu.dnetlib.uoaadmintools.entities.curator.CuratorResponse; import eu.dnetlib.uoaadmintools.services.CuratorService; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils; +import eu.dnetlib.uoaadmintoolslibrary.utils.RolesUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController -@CrossOrigin(origins = "*") public class CuratorController { private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private CuratorService curatorService; + private final CuratorService curatorService; + private final RolesUtils rolesUtils; @Autowired - private RolesUtils rolesUtils; + public CuratorController(CuratorService curatorService, RolesUtils rolesUtils) { + this.curatorService = curatorService; + this.rolesUtils = rolesUtils; + } /** * Return a list with curator for a specific community * - * @param pid - * @return */ @RequestMapping(value = "/{pid}/curator", method = RequestMethod.GET) - public List getCurators(@PathVariable String pid) { - return curatorService.getCurators(pid); + public ResponseEntity> getCurators(@PathVariable String pid) { + return ResponseEntity.ok(curatorService.getCurators(pid)); } /** - * Return Curator info of logged in user. + * Return Curator info of logged-in user. * - * @return */ @PreAuthorize("isAuthenticated()") @RequestMapping(value = "/curator", method = RequestMethod.GET) - public Curator getCuratorById() { - Curator curator = curatorService.findById(getId()); - if(curator != null) { - return curator; - } - throw new ContentNotFoundException("No curator found"); + public ResponseEntity getCuratorById() { + return ResponseEntity.ok(curatorService.findById(getId())); } /** * Create or update a curator, base on Curator object given on Request Body. * - * @param curator - * @return */ @PreAuthorize("isAuthenticated()") @RequestMapping(value = "/curator", method = RequestMethod.POST) - public Curator insertCurator(@RequestBody Curator curator) { + public ResponseEntity insertCurator(@RequestBody Curator curator) { curator.setId(getId()); - return curatorService.save(curator); + return ResponseEntity.ok(curatorService.save(curator)); } /** - * Delete all curators for a spedific community. + * Delete all curators for a specific community. * - * @param pid */ @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/{pid}/curator", method = RequestMethod.DELETE) diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/EmailController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/EmailController.java index 291e839..2810288 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/EmailController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/EmailController.java @@ -1,170 +1,104 @@ package eu.dnetlib.uoaadmintools.controllers; -import eu.dnetlib.uoaadmintools.dao.NotificationsDAO; import eu.dnetlib.uoaadmintools.entities.Manager; import eu.dnetlib.uoaadmintools.entities.Notifications; import eu.dnetlib.uoaadmintools.services.ManagerService; -import eu.dnetlib.uoaadmintoolslibrary.dao.PortalDAO; -import eu.dnetlib.uoaadmintoolslibrary.emailSender.EmailSender; +import eu.dnetlib.uoaadmintools.services.NotificationsService; +import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; import eu.dnetlib.uoaadmintoolslibrary.entities.email.Email; import eu.dnetlib.uoaadmintoolslibrary.entities.email.EmailRecaptcha; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.InvalidReCaptchaException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils; -import eu.dnetlib.uoaadmintoolslibrary.recaptcha.VerifyRecaptcha; +import eu.dnetlib.uoaadmintoolslibrary.exceptions.InvalidReCaptchaException; +import eu.dnetlib.uoaadmintoolslibrary.services.EmailService; +import eu.dnetlib.uoaadmintoolslibrary.services.PortalService; +import eu.dnetlib.uoaadmintoolslibrary.utils.RolesUtils; +import eu.dnetlib.uoaauthorizationlibrary.authorization.exceptions.http.NotFoundException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.*; +import java.util.stream.Collectors; @RestController -@CrossOrigin(origins = "*") public class EmailController { private final Logger log = LogManager.getLogger(this.getClass()); + private final EmailService service; + private final RolesUtils rolesUtils; + private final PortalService portalService; + private final ManagerService managerService; + private final NotificationsService notificationsService; + private final EmailService emailService; @Autowired - private EmailSender emailSender; - @Autowired - private NotificationsDAO notificationsDAO; - @Autowired - private PortalDAO portalDAO; - @Autowired - private VerifyRecaptcha verifyRecaptcha; - @Autowired - private ManagerService managerService; - @Autowired - private RolesUtils rolesUtils; + public EmailController(EmailService service, RolesUtils rolesUtils, PortalService portalService, ManagerService managerService, NotificationsService notificationsService, EmailService emailService) { + this.service = service; + this.rolesUtils = rolesUtils; + this.portalService = portalService; + this.managerService = managerService; + this.notificationsService = notificationsService; + this.emailService = emailService; + } @RequestMapping(value = "/contact", method = RequestMethod.POST) - public Boolean contact(@RequestBody EmailRecaptcha form) throws InvalidReCaptchaException { - if(form.getRecaptcha() != null) { - verifyRecaptcha.processResponse(form.getRecaptcha()); - } + public ResponseEntity contact(@RequestBody EmailRecaptcha form) throws InvalidReCaptchaException { + this.service.processResponse(form.getRecaptcha()); Email email = form.getEmail(); - ArrayList sendTo = new ArrayList<>(email.getRecipients()); - return emailSender.send(sendTo, email.getSubject(), email.getBody(), false); + return ResponseEntity.ok(this.service.send(email.getRecipients(), email.getSubject(), email.getBody(), false)); } @RequestMapping(value = "/sendMail", method = RequestMethod.POST) - public Map> sendEmail(@RequestBody Email email, - @RequestParam(required = false) Optional optional) { + public ResponseEntity>> sendEmail(@RequestBody Email email, + @RequestParam(required = false, name = "optional") Optional optional) { String successString = "success"; String failureString = "failure"; Map> mailResults = new HashMap<>(); - boolean bcc = (optional.isPresent())?optional.get():true; - for(String userMail:email.getRecipients()){ - ArrayList sendTo = new ArrayList<>(); - sendTo.add(userMail); - boolean success =emailSender.send(sendTo,email.getSubject(),email.getBody(), bcc); - if(success){ - if(!mailResults.containsKey(successString)) { + boolean bcc = optional.orElse(true); + for (String userMail : email.getRecipients()) { + boolean success = this.service.send(Collections.singletonList(userMail), email.getSubject(), email.getBody(), bcc); + if (success) { + if (!mailResults.containsKey(successString)) { mailResults.put(successString, new ArrayList<>()); } mailResults.get(successString).add(userMail); } else { - if(!mailResults.containsKey(failureString)) { + if (!mailResults.containsKey(failureString)) { mailResults.put(failureString, new ArrayList<>()); } mailResults.get(failureString).add(userMail); } } - return mailResults; - + return ResponseEntity.ok(mailResults); } - @RequestMapping(value = "/notifyNewManager", method = RequestMethod.POST) - public Boolean notifyNewManager(@RequestBody Email email) throws Exception { - String userMail = rolesUtils.getEmail(); - ArrayList sendTo = new ArrayList<>(); - sendTo.add(userMail); - boolean success =emailSender.send(sendTo,email.getSubject(),email.getBody(), true); - return success; + @RequestMapping(value = "/notifyNewManager", method = RequestMethod.POST) + public ResponseEntity notifyNewManager(@RequestBody Email email) throws Exception { + return ResponseEntity.ok(this.service.send(Collections.singletonList(rolesUtils.getEmail()), email.getSubject(), email.getBody(), true)); } @RequestMapping(value = "/notifyManagers/{pid}/{newRoleType}", method = RequestMethod.POST) - public Boolean notifyManagers(@PathVariable(value = "pid") String pid, + public ResponseEntity notifyManagers(@PathVariable(value = "pid") String pid, @PathVariable(value = "newRoleType") String newRoleType, - @RequestBody Email email ) throws Exception { - List notifyrecipients = new ArrayList(); - if(portalDAO.findByPid(pid) == null){ - throw new ContentNotFoundException("Portal not found"); + @RequestBody Email email) throws Exception { + Portal portal = this.portalService.getPortal(pid); + if (portal == null) { + throw new NotFoundException("Portal not found"); } - - Manager[] managers = managerService.getManagers(pid); - List emails = new ArrayList(); - - for(Manager manager:managers){ - String userEmail = manager.getEmail(); - emails.add(userEmail); - - // Do not send the notification to the new manager/ subscriber. - if(userEmail.equals(rolesUtils.getEmail())) { - continue; - } - - Notifications userNotifications = notificationsDAO.findByManagerEmailAndPortalPid(userEmail,pid); - - if(userNotifications == null - || (newRoleType.equals("manager") && userNotifications.getNotifyForNewManagers()) - || (newRoleType.equals("subscriber") && userNotifications.getNotifyForNewSubscribers())){ - notifyrecipients.add(userEmail); - } - } - if(notifyrecipients.size() > 0){ + List emails = Arrays.stream(managerService.getManagers(pid)).map(Manager::getEmail).collect(Collectors.toList()); + List notifyRecipients = emails.stream().filter(address -> !address.equals(rolesUtils.getEmail())).filter(address -> { + Notifications notifications = this.notificationsService.getUserNotifications(portal); + return notifications == null + || (newRoleType.equals("manager") && notifications.getNotifyForNewManagers()) + || (newRoleType.equals("subscriber") && notifications.getNotifyForNewSubscribers()); + }).collect(Collectors.toList()); + if (!notifyRecipients.isEmpty()) { email.setBody(email.getBody().replace("((__managers__))", String.join(", ", emails))); - - return emailSender.send(notifyrecipients,email.getSubject(),email.getBody(), false); - }else{ + return ResponseEntity.ok(emailService.send(notifyRecipients, email.getSubject(), email.getBody(), false)); + } else { log.debug("There are no users to notify "); + return ResponseEntity.ok(true); } - - return true; } -// @RequestMapping(value = "/notifyForNewSubscribers/{pid}", method = RequestMethod.POST) -// public Boolean notifyNewSubscribers(@PathVariable(value = "pid") String pid,@RequestBody Email email ) throws Exception { -// List notifyrecipients = new ArrayList(); -// if(portalDAO.findByPid(pid) == null){ -// throw new ContentNotFoundException("Portal not found"); -// } -// for(String user:email.getRecipients()){ -// Notifications userNotifications = notificationsDAO.findByManagerEmailAndPortalPid(user,pid); -// -// if(userNotifications == null || userNotifications.getNotifyForNewSubscribers()){ -// notifyrecipients.add(user); -// } -// } -// if(notifyrecipients.size() > 0){ -// return emailSender.send(notifyrecipients,email.getSubject(),email.getBody(), false); -// }else{ -// log.debug("There are no users to notify "); -// } -// -// return true; -// } - @RequestMapping(value = "/test", method = RequestMethod.GET) - public String test() throws Exception { - log.debug("Test mail"); - List mails = new ArrayList<>(); - mails.add("argirok@di.uoa.gr"); - mails.add("argirokokogiannaki@gmail.com"); - log.debug("Recipients"+mails); - - Email email = new Email(); - email.setRecipients(mails); - email.setBody("Test body"); - email.setSubject("Test theme"); - String response = ""; - response+=this.notifyManagers("ee", "manager", email); - log.debug("Notify managers "+response); - - response+=" "; - response+=this.notifyManagers("ee", "subscriber", email); - log.debug("Notify for subscr "+response); - return response; - - } - -} \ No newline at end of file +} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/ExploreController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/ExploreController.java index 87edf69..7019917 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/ExploreController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/ExploreController.java @@ -2,13 +2,13 @@ package eu.dnetlib.uoaadmintools.controllers; import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; import eu.dnetlib.uoaadmintoolslibrary.entities.fullEntities.PortalResponse; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; import eu.dnetlib.uoaadmintoolslibrary.services.PageService; import eu.dnetlib.uoaadmintoolslibrary.services.PortalService; +import eu.dnetlib.uoaadmintoolslibrary.utils.MismatchingContentException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -16,7 +16,6 @@ import java.util.List; @RestController @RequestMapping("/explore") -@CrossOrigin(origins = "*") @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") public class ExploreController { private final Logger log = LogManager.getLogger(this.getClass()); @@ -28,49 +27,37 @@ public class ExploreController { private PageService pageService; @RequestMapping(value = "/update", method = RequestMethod.POST) - public PortalResponse updateExplore(@RequestBody Portal portal) { + public ResponseEntity updateExplore(@RequestBody Portal portal) { if(!portal.getType().equals("explore")) { - // EXCEPTION - MismatchingContent throw new MismatchingContentException("Update Explore: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of explore"); } String old_pid = portalService.getPortalById(portal.getId()).getPid(); String new_pid = portal.getPid(); - PortalResponse portalResponse = portalService.updatePortal(portal); - if (!old_pid.equals(new_pid)) { - pageService.updatePid(old_pid, new_pid, portal.getType()); + pageService.updatePid(old_pid, portal); } - return portalResponse; + return ResponseEntity.ok(portalResponse); } @RequestMapping(value = "/save", method = RequestMethod.POST) - public PortalResponse insertExplore(@RequestBody Portal portal) { + public ResponseEntity insertExplore(@RequestBody Portal portal) { if(!portal.getType().equals("explore")) { - // EXCEPTION - MismatchingContent throw new MismatchingContentException("Save Explore: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of explore"); } - PortalResponse portalResponse = portalService.insertPortal(portal); - return portalResponse; + return ResponseEntity.ok(portalService.insertPortal(portal)); } - // cannot handle MismatchingContent @RequestMapping(value = "/delete", method = RequestMethod.POST) - public Boolean deleteExplore(@RequestBody List portals) throws Exception { + public ResponseEntity deleteExplore(@RequestBody List portals) { for (String id : portals) { Portal portal = portalService.getPortalById(id); - if(portal == null) { - // EXCEPTION - Entity Not Found - throw new ContentNotFoundException("Delete Explore: Portal with id: " + id + " not found"); - } if(!portal.getType().equals("explore")) { - // EXCEPTION - MismatchingContent throw new MismatchingContentException("Delete Explore: Portal with id: "+id+" has type: "+portal.getType()+" instead of explore"); } portalService.deletePortal(id); } - - return true; + return ResponseEntity.ok(true); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/MenuController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/MenuController.java index 2120169..a6d9164 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/MenuController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/MenuController.java @@ -1,87 +1,53 @@ package eu.dnetlib.uoaadmintools.controllers; -import eu.dnetlib.uoaadmintools.entities.menu.*; +import eu.dnetlib.uoaadmintools.entities.menu.Menu; +import eu.dnetlib.uoaadmintools.entities.menu.MenuFull; +import eu.dnetlib.uoaadmintools.entities.menu.MenuItem; +import eu.dnetlib.uoaadmintools.entities.menu.MenuItemFull; import eu.dnetlib.uoaadmintools.services.MenuService; -import eu.dnetlib.uoaadmintoolslibrary.dao.PortalDAO; import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils; +import eu.dnetlib.uoaadmintoolslibrary.entities.PortalType; +import eu.dnetlib.uoaadmintoolslibrary.services.PortalService; +import eu.dnetlib.uoaadmintoolslibrary.utils.MismatchingContentException; +import eu.dnetlib.uoaauthorizationlibrary.authorization.exceptions.http.NotFoundException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController -@CrossOrigin(origins = "*") public class MenuController { private final Logger log = LogManager.getLogger(this.getClass()); + private final MenuService menuService; + private final PortalService portalService; @Autowired - private MenuService menuService; - @Autowired - private PortalDAO portalDAO; - @Autowired - private RolesUtils rolesUtils; - - // NOT USED - maybe leave it -//// @PreAuthorize("hasAnyAuthority(" + -//// "@AuthorizationService.PORTAL_ADMIN, " + -//// "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))") -// @RequestMapping(value = "/community/{pid}/menu", method = RequestMethod.GET) -// public List getMenuItems(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException { -// // @RequestParam(value="featured", required=false) String isFeatured -// Portal portal = portalDAO.findByPid(pid); -// if(portal == null){ -// throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); -// } -// if(!portal.getType().equals("community")) { -// // EXCEPTION - MismatchingContent -// throw new MismatchingContentException("Get Notifications: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); -// } -// -// List menuItems = menuService.getMenuItems(pid); -// if(menuItems == null || menuItems.size() == 0){ -// throw new ContentNotFoundException("Menu for community with pid: "+pid+" not found"); -// } -// return menuItems; -// } + public MenuController(MenuService menuService, PortalService portalService) { + this.menuService = menuService; + this.portalService = portalService; + } // OLD endpoint @RequestMapping(value = "/community/{pid}/menu/root/full", method = RequestMethod.GET) - public List getRootMenuItemsFull(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity> getRootMenuItemsFull(@PathVariable(value = "pid") String pid) { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("getMenuItemsFull: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); - } - - List menuItems = menuService.getRootMenuItemsFull(pid); -// if(menuItems == null || menuItems.size() == 0){ -// throw new ContentNotFoundException("Root menu for community with pid: "+pid+" not found"); -// } - return menuItems; + return ResponseEntity.ok(menuService.getRootMenuItemsFull(pid)); } @RequestMapping(value = "/community/{pid}/menu/full", method = RequestMethod.GET) - public MenuFull getMenuFull(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity getMenuFull(@PathVariable(value = "pid") String pid) { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("getMenuItemsFull: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); - } - - MenuFull menu = menuService.getMenuFull(pid); - return menu; + return ResponseEntity.ok(menuService.getMenuFull(pid)); } @PreAuthorize("hasAnyAuthority(" + @@ -89,38 +55,29 @@ public class MenuController { "@AuthorizationService.curator('community')," + "@AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/community/{pid}/menu/update", method = RequestMethod.POST) - public MenuItemFull updateMenuItem(@PathVariable String pid, @RequestBody MenuItemFull menuItemFull) { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity updateMenuItem(@PathVariable String pid, @RequestBody MenuItemFull menuItemFull) { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("updateMenuItem: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); + if (menuItemFull.getIsFeatured() && menuItemFull.getItems() != null && !menuItemFull.getItems().isEmpty()) { + throw new MismatchingContentException("updateMenuItem: MenuItem " + menuItemFull.getId() + " cannot be featured because it has " + menuItemFull.getItems().size() + " sub menu items"); } - if(menuItemFull.getIsFeatured() && menuItemFull.getItems() != null && menuItemFull.getItems().size() > 0) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("updateMenuItem: MenuItem "+menuItemFull.getId()+" cannot be featured because it has "+menuItemFull.getItems().size() + " sub menu items"); - } - if(menuItemFull.getType() == null || + if (menuItemFull.getType() == null || (menuItemFull.getType().equals("internal") && menuItemFull.getRoute() == null) || (menuItemFull.getType().equals("external") && menuItemFull.getUrl() == null)) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("insertMenuItem: A required field is missing in menu item: type="+menuItemFull.getType() - + " - url="+menuItemFull.getUrl() + " - route="+menuItemFull.getRoute()); + throw new MismatchingContentException("insertMenuItem: A required field is missing in menu item: type=" + menuItemFull.getType() + + " - url=" + menuItemFull.getUrl() + " - route=" + menuItemFull.getRoute()); } - if(menuItemFull.getPortalPid() == null) { + if (menuItemFull.getPortalPid() == null) { menuItemFull.setPortalPid(pid); - } else if(!menuItemFull.getPortalPid().equals(pid)) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("updateMenuItem: MenuItem has portalPid: "+menuItemFull.getPortalPid()+" instead of "+pid); + } else if (!menuItemFull.getPortalPid().equals(pid)) { + throw new MismatchingContentException("updateMenuItem: MenuItem has portalPid: " + menuItemFull.getPortalPid() + " instead of " + pid); } - if(menuItemFull.getId() == null) { - // EXCEPTION - MismatchingContent + if (menuItemFull.getId() == null) { throw new MismatchingContentException("updateMenuItem: This MenuItem has no id."); } - - return menuService.updateMenu(menuItemFull, pid); + return ResponseEntity.ok(menuService.updateMenu(menuItemFull, pid)); } @PreAuthorize("hasAnyAuthority(" + @@ -128,38 +85,31 @@ public class MenuController { "@AuthorizationService.curator('community')," + "@AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/community/{pid}/menu/save", method = RequestMethod.POST) - public MenuItemFull insertMenuItem(@PathVariable String pid, @RequestBody MenuItem menuItem) { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity insertMenuItem(@PathVariable String pid, @RequestBody MenuItem menuItem) { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(portal.getType() == null || !portal.getType().equals("community")) { + if (menuItem.getIsFeatured() && menuItem.getItems() != null && !menuItem.getItems().isEmpty()) { // EXCEPTION - MismatchingContent - throw new MismatchingContentException("insertMenuItem: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); + throw new MismatchingContentException("updateMenuItem: MenuItem " + menuItem.getId() + " cannot be featured because it has " + menuItem.getItems().size() + " sub menu items"); } - if(menuItem.getIsFeatured() && menuItem.getItems() != null && menuItem.getItems().size() > 0) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("updateMenuItem: MenuItem "+menuItem.getId()+" cannot be featured because it has "+menuItem.getItems().size() + " sub menu items"); - } - if(menuItem.getType() == null || + if (menuItem.getType() == null || (menuItem.getType().equals("internal") && menuItem.getRoute() == null) || (menuItem.getType().equals("external") && menuItem.getUrl() == null)) { // EXCEPTION - MismatchingContent - throw new MismatchingContentException("insertMenuItem: A required field is missing in menu item: type="+menuItem.getType() - + " - url="+menuItem.getUrl() + " - route="+menuItem.getRoute()); + throw new MismatchingContentException("insertMenuItem: A required field is missing in menu item: type=" + menuItem.getType() + + " - url=" + menuItem.getUrl() + " - route=" + menuItem.getRoute()); } - if(menuItem.getPortalPid() == null) { + if (menuItem.getPortalPid() == null) { menuItem.setPortalPid(pid); - } else if(!menuItem.getPortalPid().equals(pid)) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("insertMenuItem: MenuItem has portalPid: "+menuItem.getPortalPid()+" instead of "+pid); + } else if (!menuItem.getPortalPid().equals(pid)) { + throw new MismatchingContentException("insertMenuItem: MenuItem has portalPid: " + menuItem.getPortalPid() + " instead of " + pid); } - if(menuItem.getId() != null) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("insertMenuItem: MenuItem has already an id: "+menuItem.getId()); + if (menuItem.getId() != null) { + throw new MismatchingContentException("insertMenuItem: MenuItem has already an id: " + menuItem.getId()); } - - return menuService.insertMenuItemInMenu(menuItem, pid); + return ResponseEntity.ok(menuService.insertMenuItemInMenu(menuItem, pid)); } @PreAuthorize("hasAnyAuthority(" + @@ -167,17 +117,12 @@ public class MenuController { "@AuthorizationService.curator('community')," + "@AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/community/{pid}/menu/delete", method = RequestMethod.POST) - public Boolean deleteMenuItem(@PathVariable String pid, @RequestBody String menuItemId) throws Exception { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity deleteMenuItem(@PathVariable String pid, @RequestBody String menuItemId) throws Exception { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("deleteMenuItem: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); - } - - return menuService.deleteMenuItem(menuItemId, pid); + return ResponseEntity.ok(menuService.deleteMenuItem(menuItemId, pid)); } @PreAuthorize("hasAnyAuthority(" + @@ -185,17 +130,12 @@ public class MenuController { "@AuthorizationService.curator('community')," + "@AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/community/{pid}/menu/reorder", method = RequestMethod.POST) - public Boolean reorderMenuItems(@PathVariable String pid, @RequestBody List menuItems) throws Exception { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity reorderMenuItems(@PathVariable String pid, @RequestBody List menuItems) throws Exception { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("reorderMenuItems: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); - } - - return menuService.reorderMenuItems(menuItems, pid); + return ResponseEntity.ok(menuService.reorderMenuItems(menuItems, pid)); } @PreAuthorize("hasAnyAuthority(" + @@ -203,8 +143,8 @@ public class MenuController { "@AuthorizationService.curator('community')," + "@AuthorizationService.manager('community', #pid))") @RequestMapping(value = {"/community/{pid}/menu/toggle"}, method = RequestMethod.POST) - public Menu toggleMenu(@PathVariable(value = "pid") String pid, @RequestParam String status, @RequestParam(value="featured", required=false) String isFeatured) throws Exception { - return menuService.toggleMenu(pid, status, isFeatured); + public ResponseEntity toggleMenu(@PathVariable(value = "pid") String pid, @RequestParam String status, @RequestParam(value = "featured", required = false) String isFeatured) throws Exception { + return ResponseEntity.ok(menuService.toggleMenu(pid, status, isFeatured)); } @PreAuthorize("hasAnyAuthority(" + @@ -212,7 +152,7 @@ public class MenuController { "@AuthorizationService.curator('community')," + "@AuthorizationService.manager('community', #pid))") @RequestMapping(value = {"/community/{pid}/menu/align"}, method = RequestMethod.POST) - public Menu alignMenu(@PathVariable(value = "pid") String pid, @RequestParam String alignment) throws Exception { - return menuService.alignMenu(pid, alignment); + public ResponseEntity alignMenu(@PathVariable(value = "pid") String pid, @RequestParam String alignment) throws Exception { + return ResponseEntity.ok(menuService.alignMenu(pid, alignment)); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/NotificationsController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/NotificationsController.java index ddf021c..c24d3e3 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/NotificationsController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/NotificationsController.java @@ -1,15 +1,15 @@ package eu.dnetlib.uoaadmintools.controllers; -import eu.dnetlib.uoaadmintools.dao.NotificationsDAO; import eu.dnetlib.uoaadmintools.entities.Notifications; -import eu.dnetlib.uoaadmintoolslibrary.dao.PortalDAO; +import eu.dnetlib.uoaadmintools.services.NotificationsService; import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils; +import eu.dnetlib.uoaadmintoolslibrary.entities.PortalType; +import eu.dnetlib.uoaadmintoolslibrary.services.PortalService; +import eu.dnetlib.uoaauthorizationlibrary.authorization.exceptions.http.NotFoundException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -19,79 +19,58 @@ import java.util.List; * Created by argirok on 6/7/2018. */ @RestController -@CrossOrigin(origins = "*") public class NotificationsController { private final Logger log = LogManager.getLogger(this.getClass()); + private final NotificationsService notificationsService; + private final PortalService portalService; + @Autowired - private NotificationsDAO notificationsDAO; - @Autowired - private PortalDAO portalDAO; - @Autowired - private RolesUtils rolesUtils; + public NotificationsController(NotificationsService notificationsService, PortalService portalService) { + this.notificationsService = notificationsService; + this.portalService = portalService; + } @PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)") @RequestMapping(value = "/community/{pid}/notifications/all", method = RequestMethod.GET) - public List getNotifications(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity> getNotifications(@PathVariable(value = "pid") String pid) { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Get Notifications: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); + List notifications = this.notificationsService.getAllNotifications(portal); + if (notifications.isEmpty()) { + throw new NotFoundException("Notifications settings for community with pid: " + pid + " not found"); } - - List notifications = notificationsDAO.findByPortalPid(pid); - if(notifications == null || notifications.size() == 0){ - throw new ContentNotFoundException("Notifications settings for community with pid: "+pid+" not found"); - } - return notifications; + return ResponseEntity.ok(notifications); } @PreAuthorize("hasAnyAuthority(" + "@AuthorizationService.PORTAL_ADMIN, " + "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/community/{pid}/notifications", method = RequestMethod.GET) - public Notifications getNotificationsForUser(@PathVariable(value = "pid") String pid) throws ContentNotFoundException { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity getNotificationsForUser(@PathVariable(value = "pid") String pid) { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Get Notifications: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); + Notifications notifications = this.notificationsService.getUserNotifications(portal); + if (notifications == null) { + throw new NotFoundException("Notifications settings for community with pid: " + pid + " not found for this user."); } - - String email = rolesUtils.getEmail(); - - Notifications notifications = notificationsDAO.findByManagerEmailAndPortalPid(email, pid); - if(notifications == null){ - throw new ContentNotFoundException("Notifications settings for community with pid: "+pid+" and user email: "+email+" not found"); - } - return notifications; + return ResponseEntity.ok(notifications); } @PreAuthorize("hasAnyAuthority(" + "@AuthorizationService.PORTAL_ADMIN, " + "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/community/{pid}/notifications", method = RequestMethod.DELETE) - public void deleteNotification(@PathVariable(value = "pid") String pid) throws ContentNotFoundException { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); - } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Delete Notifications: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); - } - String email = rolesUtils.getEmail(); - Notifications notifications = notificationsDAO.findByManagerEmailAndPortalPid(email,pid); - if(notifications!= null){ - notificationsDAO.delete(notifications.getId()); - }else{ - throw new ContentNotFoundException("Notifications settings for community with pid: "+pid+" and user email: "+email+" not found"); + public void deleteNotification(@PathVariable(value = "pid") String pid) { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } + this.notificationsService.deleteUserNotifications(portal); } @@ -99,36 +78,12 @@ public class NotificationsController { "@AuthorizationService.PORTAL_ADMIN, " + "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))") @RequestMapping(value = "/community/{pid}/notifications", method = RequestMethod.POST) - public Notifications saveNotification(@PathVariable(value = "pid") String pid, @RequestBody Notifications notifications) throws ContentNotFoundException { - Portal portal = portalDAO.findByPid(pid); - if(portal == null){ - throw new ContentNotFoundException("Portal with pid: "+pid+" not found"); + public ResponseEntity saveNotification(@PathVariable(value = "pid") String pid, @RequestBody Notifications notifications) { + Portal portal = this.portalService.getPortal(PortalType.community, pid); + if (portal == null) { + throw new NotFoundException("Portal with pid: " + pid + " not found"); } - if(!portal.getType().equals("community")) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Save Notifications: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community"); - } - - notifications.setManagerEmail(rolesUtils.getEmail()); - notifications.setAaiId(rolesUtils.getAaiId()); - -// if(notifications.getManagerEmail() != null && !notifications.getManagerEmail().isEmpty()){ - Notifications saved = notificationsDAO.findByManagerEmailAndPortalPid(notifications.getManagerEmail(),pid); - log.debug(saved); - if(saved!= null){ - notifications.setId(saved.getId()); - } - - notifications.setPortalPid(pid); - log.debug(notifications); - Notifications savedNotifications = notificationsDAO.save(notifications); - return savedNotifications; -// } else{ -// log.error("Save notifications: No user e-mail specified"); -// return null; -// } - - + return ResponseEntity.ok(this.notificationsService.save(portal, notifications)); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/PortalSubscribersController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/PortalSubscribersController.java deleted file mode 100644 index 86356ae..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/PortalSubscribersController.java +++ /dev/null @@ -1,238 +0,0 @@ -package eu.dnetlib.uoaadmintools.controllers; -import eu.dnetlib.uoaadmintools.dao.PortalSubscribersDAO; -import eu.dnetlib.uoaadmintools.dao.SubscriberDAO; -import eu.dnetlib.uoaadmintools.entities.subscriber.PortalSubscribers; -import eu.dnetlib.uoaadmintoolslibrary.dao.PortalDAO; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.responses.SingleValueWrapperResponse; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import java.util.List; - -/** - * Created by argirok on 2/3/2018. - */ -@RestController -@CrossOrigin(origins = "*") -public class PortalSubscribersController { - @Autowired - PortalSubscribersDAO portalSubscribersDAO; - @Autowired - SubscriberDAO subscriberDAO; - @Autowired - PortalDAO portalDAO; - -// @Autowired -// private SecurityConfig securityConfig; - - private final Logger log = LogManager.getLogger(this.getClass()); - - @RequestMapping(value = "/community/{pid}/subscribers/count", method = RequestMethod.GET) - public SingleValueWrapperResponse getNumberOfSubscribersPerPortal(@PathVariable(value="pid", required = true) String pid) throws ContentNotFoundException { - SingleValueWrapperResponse singleValueWrapperResponse = new SingleValueWrapperResponse(0); - - PortalSubscribers portalSubscribers = portalSubscribersDAO.findByPid(pid); - if(portalSubscribers != null){ - if(portalSubscribers.getSubscribers() != null) { - singleValueWrapperResponse.setValue(portalSubscribers.getSubscribers().size()); - } - }else{ - throw new ContentNotFoundException("Portal Subscribers not found"); - - } - return singleValueWrapperResponse; - } - - @RequestMapping(value = "/community/subscribers", method = RequestMethod.GET) - public List getAllPortalSubscribers(){ - return portalSubscribersDAO.findAll(); - } - - @RequestMapping(value = "/community/{pid}/subscribers", method = RequestMethod.GET) - public PortalSubscribers getSubscribersPerPortal(@PathVariable(value="pid", required = true) String pid) throws ContentNotFoundException { - PortalSubscribers portalSubscribers = portalSubscribersDAO.findByPid(pid); - if(portalSubscribers != null){ - return portalSubscribers; - }else{ - throw new ContentNotFoundException("Portal Subscribers not found"); - - } - - } -// @RequestMapping(value = "/community/{pid}/subscribers", method = RequestMethod.POST) -// public PortalSubscribers addSubscriberInPortal(@PathVariable(value="pid", required = true) String pid, @RequestBody Subscriber subscriber) throws ContentNotFoundException { -// PortalSubscribers portalSubscribers = portalSubscribersDAO.findByPid(pid); -// if(portalSubscribers == null){ -// throw new ContentNotFoundException("Portal Subscribers not found"); -// } -// -// Subscriber savedSubscriber = subscriberDAO.findByEmail(subscriber.getEmail()); -// if(savedSubscriber==null){ -// savedSubscriber = subscriberDAO.save(subscriber); -// } -// for(Subscriber sub: portalSubscribers.getSubscribers()){ -// if(sub.getEmail().equals(subscriber.getEmail())){ -// //already subscribed -// return portalSubscribers; -// } -// } -// //not subscribed yet -// portalSubscribers.getSubscribers().add(savedSubscriber); -// return portalSubscribersDAO.save(portalSubscribers); -// -// } - -// @RequestMapping(value = "/community/{pid}/is-subscriber", method = RequestMethod.GET) -// public Boolean getIsSubscribedToPortal(@PathVariable(value="pid", required = true) String pid, -// //@RequestBody String email, -// @RequestHeader("X-XSRF-TOKEN") String token) throws ContentNotFoundException { -// AuthorizationUtils helper = new AuthorizationUtils(); -// helper.setUserInfoUrl(securityConfig.getUserInfoUrl()); -// UserInfo userInfo = helper.getUserInfo(token); -// -// if(userInfo != null) { -// String email = userInfo.getEmail(); -// PortalSubscribers communitySubscribers = portalSubscribersDAO.findByPid(pid); -// if (communitySubscribers != null) { -// if (communitySubscribers.getSubscribers() != null) { -// for (Subscriber subscriber : communitySubscribers.getSubscribers()) { -// if (subscriber.getEmail().equals(email)) { -// return true; -// } -// } -// } -// } else { -// throw new ContentNotFoundException("Portal Subscribers not found"); -// -// } -// } -// return false; -// } -// -// @RequestMapping(value = "/community/{pid}/subscriber", method = RequestMethod.POST) -// public Boolean addSubscriberInPortal(@PathVariable(value="pid", required = true) String pid, -// @RequestHeader("X-XSRF-TOKEN") String token) throws ContentNotFoundException { -// AuthorizationUtils helper = new AuthorizationUtils(); -// helper.setUserInfoUrl(securityConfig.getUserInfoUrl()); -// UserInfo userInfo = helper.getUserInfo(token); -// -// if(userInfo != null) { -// String email = userInfo.getEmail(); -// Subscriber subscriber = new Subscriber(email); -// -// PortalSubscribers communitySubscribers = portalSubscribersDAO.findByPid(pid); -// if (communitySubscribers == null) { -// throw new ContentNotFoundException("Community Subscribers not found"); -// } -// -// Subscriber savedSubscriber = subscriberDAO.findByEmail(email); -// if (savedSubscriber == null) { -// savedSubscriber = subscriberDAO.save(subscriber); -// } -// for (Subscriber sub : communitySubscribers.getSubscribers()) { -// if (sub.getEmail().equals(subscriber.getEmail())) { -// //already subscribed -// return false; -// } -// } -// //not subscribed yet -// communitySubscribers.getSubscribers().add(savedSubscriber); -// portalSubscribersDAO.save(communitySubscribers); -// return true; -// } -// return false; -// -// } -// @RequestMapping(value = "/community/{pid}/subscriber/delete", method = RequestMethod.POST) -// public Boolean deleteSubscriberFromPortal(@PathVariable(value="pid", required = true) String pid, -// @RequestHeader("X-XSRF-TOKEN") String token) throws ContentNotFoundException { -// AuthorizationUtils helper = new AuthorizationUtils(); -// helper.setUserInfoUrl(securityConfig.getUserInfoUrl()); -// UserInfo userInfo = helper.getUserInfo(token); -// -// if(userInfo != null) { -// String email = userInfo.getEmail(); -// -// PortalSubscribers communitySubscribers = portalSubscribersDAO.findByPid(pid); -// if (communitySubscribers == null) { -// throw new ContentNotFoundException("Community Subscribers not found"); -// } -// -// Iterator subscriberIterator = communitySubscribers.getSubscribers().iterator(); -// while(subscriberIterator.hasNext()) { -// Subscriber subscriber = subscriberIterator.next(); -// if(subscriber.getEmail().equals(email)) { -// subscriberIterator.remove(); -// portalSubscribersDAO.save(communitySubscribers); -// return true; -// } -// } -// } -// return false; -// } -// -// @RequestMapping(value = "/community/{pid}/subscribers", method = RequestMethod.POST) -// public PortalSubscribers addSubscriberInPortalByEmail(@PathVariable(value="pid", required = true) String pid, @RequestBody Subscriber subscriber) throws ContentNotFoundException { -// PortalSubscribers communitySubscribers = portalSubscribersDAO.findByPid(pid); -// if(communitySubscribers == null){ -// throw new ContentNotFoundException("Community Subscribers not found"); -// } -// -// Subscriber savedSubscriber = subscriberDAO.findByEmail(subscriber.getEmail()); -// if(savedSubscriber==null){ -// savedSubscriber = subscriberDAO.save(subscriber); -// } -// for(Subscriber sub:communitySubscribers.getSubscribers()){ -// if(sub.getEmail().equals(subscriber.getEmail())){ -// //already subscribed -// return communitySubscribers; -// } -// } -// //not subscribed yet -// communitySubscribers.getSubscribers().add(savedSubscriber); -// return portalSubscribersDAO.save(communitySubscribers); -// -// } -// @RequestMapping(value = "/community/{pid}/subscribers/delete", method = RequestMethod.POST) -// public PortalSubscribers deleteSubscriberFromPortalByEmail(@PathVariable(value="pid", required = true) String pid, @RequestBody List emails) throws ContentNotFoundException { -// PortalSubscribers communitySubscribers = portalSubscribersDAO.findByPid(pid); -// if(communitySubscribers == null){ -// throw new ContentNotFoundException("Community Subscribers not found"); -// } -// List list = new ArrayList<>(); -// for(Subscriber s:communitySubscribers.getSubscribers()){ -// if(emails.indexOf(s.getEmail())==-1){ -// list.add(s); -// } -// } -// communitySubscribers.setSubscribers(list); -// return portalSubscribersDAO.save(communitySubscribers); -// } -// -// @RequestMapping(value = "/subscriber/communities", method = RequestMethod.GET) -// public List getPortalsPerSubcriber(//@RequestParam(value="email", required = true) String email, -// @RequestHeader("X-XSRF-TOKEN") String token) { -// AuthorizationUtils helper = new AuthorizationUtils(); -// helper.setUserInfoUrl(securityConfig.getUserInfoUrl()); -// UserInfo userInfo = helper.getUserInfo(token); -// -// List list = new ArrayList<>(); -// -// if (userInfo != null) { -// String email = userInfo.getEmail(); -// List communitySubscribers = portalSubscribersDAO.findAll(); -// -// for (PortalSubscribers s : communitySubscribers) { -// for (Subscriber sub : s.getSubscribers()) { -// if (sub.getEmail().equals(email)) { -// list.add(s.getPid()); -// break; -// } -// } -// } -// } -// return list; -// } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/StatisticsController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/StatisticsController.java deleted file mode 100644 index 2e36abc..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/StatisticsController.java +++ /dev/null @@ -1,123 +0,0 @@ -//package eu.dnetlib.uoaadmintools.controllers; -// -//import eu.dnetlib.uoaadmintools.dao.*; -//import eu.dnetlib.uoaadmintools.entities.statistics.*; -//import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -//import org.apache.log4j.Logger; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.web.bind.annotation.*; -// -//import java.util.*; -// -//@RestController -//@CrossOrigin(origins = "*") -//public class StatisticsController { -// private final Logger log = Logger.getLogger(this.getClass()); -// -// @Autowired -// private StatisticsDAO statisticsDAO; -// -// @RequestMapping(value = "/statistics", method = RequestMethod.GET) -// public List getAllStatistics() throws ContentNotFoundException { -// log.info("getAllStatistics"); -// List statistics = statisticsDAO.findAll(); -// if(statistics == null){ -// throw new ContentNotFoundException("Statistics not found"); -// } -// return statistics; -// } -// -// -// -// @RequestMapping(value = "/statistics/{pid}", method = RequestMethod.GET) -// public Statistics getStatistics(@PathVariable(value = "pid") String pid) throws ContentNotFoundException { -// Statistics statistics = statisticsDAO.findByPid(pid); -// if(statistics == null){ -// throw new ContentNotFoundException("Statistics not found"); -// } -// return statistics; -// } -// -// @RequestMapping(value = "/statistics/{id}/toggle", method = RequestMethod.POST) -// public Boolean toggleStatistics(@PathVariable String id) throws Exception { -// Statistics statistics = statisticsDAO.findById(id); -// boolean status = statistics.getIsActive(); -// statistics.setIsActive(!status); -// statisticsDAO.save(statistics); -// return statistics.getIsActive(); -// } -// -// @RequestMapping(value = "/statistics/save", method = RequestMethod.POST) -// public Statistics insertStatistics(@RequestBody Statistics statistics) { -// Statistics savedStatistics = statisticsDAO.save(statistics); -// return savedStatistics; -// } -// -// -// -// @RequestMapping(value = "/statistics/delete", method = RequestMethod.POST) -// public Boolean deleteStatistics(@RequestBody List statistics) throws Exception { -// for (String id: statistics) { -// statisticsDAO.delete(id); -// } -// return true; -// } -// -// -// -// -// @RequestMapping(value = "statistics/{pid}/{entity}/charts", method = RequestMethod.POST) -// public Statistics toggleCharts(@PathVariable(value = "pid") String pid, @PathVariable(value = "entity") String entity, @RequestBody String key, @RequestParam String status, @RequestParam String monitor) throws ContentNotFoundException { -// Statistics statistics = statisticsDAO.findByPid(pid); -// if(statistics == null){ -// throw new ContentNotFoundException("Statistics not found for portal"); -// } -// StatisticsEntity statisticsEntity = statistics.getEntities().get(entity); -// if(statisticsEntity == null ){ -// throw new ContentNotFoundException("Statistics not found for entity"); -// } -// ChartsMap charts = statisticsEntity.getCharts(); -// if(charts == null){ -// throw new ContentNotFoundException("Statistics not found - no charts"); -// } -// StatisticsStatus statisticsStatus= charts.getMap().get(key); -// if(statisticsStatus == null){ -// throw new ContentNotFoundException("Statistics not found for key"); -// } -// if(Boolean.parseBoolean(monitor)){ -// statisticsStatus.setShowInMonitor(Boolean.parseBoolean(status)); -// }else{ -// statisticsStatus.setShowInDashboard(Boolean.parseBoolean(status)); -// } -//// stats.put(key,statisticsStatus); -// return statisticsDAO.save(statistics); -// } -// @RequestMapping(value = "statistics/{pid}/{entity}/numbers", method = RequestMethod.POST) -// public Statistics toggleNumber(@PathVariable(value = "pid") String pid, @PathVariable(value = "entity") String entity, @RequestBody String key, @RequestParam String status, @RequestParam String monitor) throws ContentNotFoundException { -// Statistics statistics = statisticsDAO.findByPid(pid); -// if(statistics == null){ -// throw new ContentNotFoundException("Statistics not found for portal"); -// } -// StatisticsEntity statisticsEntity = statistics.getEntities().get(entity); -// if(statisticsEntity == null ){ -// throw new ContentNotFoundException("Statistics not found for entity"); -// } -// NumbersMap numbers = statisticsEntity.getNumbers(); -// if(numbers == null){ -// throw new ContentNotFoundException("Statistics not found - no numbers"); -// } -// StatisticsStatus statisticsStatus= numbers.getMap().get(key); -// if(statisticsStatus == null){ -// throw new ContentNotFoundException("Statistics not found for key"); -// } -// if(Boolean.parseBoolean(monitor)){ -// statisticsStatus.setShowInMonitor(Boolean.parseBoolean(status)); -// }else{ -// statisticsStatus.setShowInDashboard(Boolean.parseBoolean(status)); -// } -//// stats.put(key,statisticsStatus); -// return statisticsDAO.save(statistics); -// } -// -// -//} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/SubscriberController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/SubscriberController.java deleted file mode 100644 index f42a32b..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/SubscriberController.java +++ /dev/null @@ -1,52 +0,0 @@ -package eu.dnetlib.uoaadmintools.controllers; - -import eu.dnetlib.uoaadmintools.dao.SubscriberDAO; -import eu.dnetlib.uoaadmintools.entities.subscriber.Subscriber; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * Created by argirok on 2/3/2018. - */ -@RestController -@CrossOrigin(origins = "*") -public class SubscriberController { - private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private SubscriberDAO subscriberDAO; - @RequestMapping(value = "/subscriber", method = RequestMethod.GET) - public List getSubscriber() throws ContentNotFoundException { - List list = subscriberDAO.findAll(); - if(list == null){ - throw new ContentNotFoundException("Subscribers not found"); - } - return subscriberDAO.findAll(); - } - @RequestMapping(value = "/subscriber/{email}", method = RequestMethod.GET) - public Subscriber getSubscriber(@PathVariable(value="email", required = true) String email) throws ContentNotFoundException { - Subscriber subscriber = subscriberDAO.findByEmail(email); - if(subscriber == null){ - throw new ContentNotFoundException("Subscribers not found"); - } - return subscriber; - } -// @RequestMapping(value = "/subscriber", method = RequestMethod.POST) -// public Subscriber saveSubscriber(@RequestBody Subscriber subscriber) { -// return subscriberDAO.save(subscriber); -// } -// @RequestMapping(value = "/subscriber/{email}", method = RequestMethod.DELETE) -// public void deleteSubscriber(@PathVariable(value="email", required = true) String email) throws ContentNotFoundException { -// Subscriber subscriber = subscriberDAO.findByEmail(email); -// if(subscriber == null){ -// throw new ContentNotFoundException("Subscribers not found"); -// } -// subscriberDAO.delete(subscriber.getId()); -// -// } - -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/CuratorDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/CuratorDAO.java index a553f0b..3cf47e1 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/CuratorDAO.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/dao/CuratorDAO.java @@ -1,20 +1,10 @@ package eu.dnetlib.uoaadmintools.dao; import eu.dnetlib.uoaadmintools.entities.curator.Curator; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; import java.util.List; -public interface CuratorDAO { - - List findAll(); - - Curator findById(String Id); - - Curator findByEmail(String email); - - Curator save(Curator curator); - - void deleteAll(); - - void delete(String id); -} +@Repository +public interface CuratorDAO extends MongoRepository {} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/LayoutDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/LayoutDAO.java index 7fc718d..572f038 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/LayoutDAO.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/dao/LayoutDAO.java @@ -1,19 +1,13 @@ package eu.dnetlib.uoaadmintools.dao; import eu.dnetlib.uoaadmintools.entities.Layout; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; -public interface LayoutDAO { - List findAll(); - - Layout findById(String Id); - - List findByPortalPid(String portalPid); - - Layout save(Layout layout); - - void deleteAll(); - - void delete(String id); +@Repository +public interface LayoutDAO extends MongoRepository { + Optional findByPortalPid(String portalPid); } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MenuDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MenuDAO.java index d2f3a1a..08f6d28 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MenuDAO.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/dao/MenuDAO.java @@ -2,15 +2,14 @@ package eu.dnetlib.uoaadmintools.dao; import eu.dnetlib.uoaadmintools.entities.menu.Menu; import eu.dnetlib.uoaadmintools.entities.menu.MenuItem; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; -public interface MenuDAO { - List findAll(); - Menu findByPortalPid(String portalPid); - - Menu save(Menu menu); - - void deleteAll(); +@Repository +public interface MenuDAO extends MongoRepository { + Optional findByPortalPid(String portalPid); void deleteByPortalPid(String portalPid); } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MenuItemDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MenuItemDAO.java index 2ef7b86..e59212c 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MenuItemDAO.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/dao/MenuItemDAO.java @@ -1,21 +1,14 @@ package eu.dnetlib.uoaadmintools.dao; import eu.dnetlib.uoaadmintools.entities.menu.MenuItem; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; import java.util.List; -public interface MenuItemDAO { - List findAll(); +@Repository +public interface MenuItemDAO extends MongoRepository { List findByParentItemId(String parentId); - - MenuItem findById(String Id); - List findByPortalPid(String portalPid); List findByParentItemIdAndPortalPid(String parentId, String portalPid); - - MenuItem save(MenuItem menuItem); - - void deleteAll(); - - void delete(String id); } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBCuratorDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBCuratorDAO.java deleted file mode 100644 index a1dd119..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBCuratorDAO.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs; - -import eu.dnetlib.uoaadmintools.dao.CuratorDAO; -import eu.dnetlib.uoaadmintools.entities.curator.Curator; -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.List; - -public interface MongoDBCuratorDAO extends CuratorDAO, MongoRepository { - - List findAll(); - - Curator findById(String Id); - - Curator findByEmail(String email); - - Curator save(Curator curator); - - void deleteAll(); - - void delete(String id); -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBLayoutDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBLayoutDAO.java deleted file mode 100644 index 3fbc39f..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBLayoutDAO.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs; - -import eu.dnetlib.uoaadmintools.dao.LayoutDAO; -import eu.dnetlib.uoaadmintools.entities.Layout; -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.List; - -public interface MongoDBLayoutDAO extends LayoutDAO, MongoRepository { - - List findAll(); - - Layout findById(String Id); - - List findByPortalPid(String portalPid); - - Layout save(Layout layout); - - void deleteAll(); - - void delete(String id); -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBMenuDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBMenuDAO.java deleted file mode 100644 index 80eed45..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBMenuDAO.java +++ /dev/null @@ -1,17 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs; - -import eu.dnetlib.uoaadmintools.dao.MenuDAO; -import eu.dnetlib.uoaadmintools.entities.menu.Menu; -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.List; - -public interface MongoDBMenuDAO extends MenuDAO, MongoRepository { - List findAll(); - Menu findByPortalPid(String portalPid); - - Menu save(Menu menu); - - void deleteAll(); - void deleteByPortalPid(String portalPid); -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBMenuItemDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBMenuItemDAO.java deleted file mode 100644 index 1c7b5a2..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBMenuItemDAO.java +++ /dev/null @@ -1,23 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs; - -import eu.dnetlib.uoaadmintools.dao.MenuItemDAO; -import eu.dnetlib.uoaadmintools.entities.menu.MenuItem; -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.List; - -public interface MongoDBMenuItemDAO extends MenuItemDAO, MongoRepository { - List findAll(); - List findByParentItemId(String parentId); - - MenuItem findById(String Id); - - List findByPortalPid(String portalPid); - List findByParentItemIdAndPortalPid(String parentId, String portalPid); - - MenuItem save(MenuItem menuItem); - - void deleteAll(); - - void delete(String id); -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBNotificationsDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBNotificationsDAO.java deleted file mode 100644 index 9c23c7f..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBNotificationsDAO.java +++ /dev/null @@ -1,27 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs; - -import eu.dnetlib.uoaadmintools.dao.NotificationsDAO; -import eu.dnetlib.uoaadmintools.entities.Notifications; -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.List; - -/** - * Created by argirok on 6/7/2018. - */ -public interface MongoDBNotificationsDAO extends NotificationsDAO, MongoRepository { - List findAll(); - - Notifications findById(String Id); - - Notifications findByManagerEmailAndPortalPid(String managerEmail, String portalPid); - List findByPortalPid(String portalPid); - - Notifications save(Notifications entity); - - void deleteAll(); - - void delete(String id); -} - - diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBPortalSubscribersDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBPortalSubscribersDAO.java deleted file mode 100644 index af2653b..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBPortalSubscribersDAO.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs; - -import eu.dnetlib.uoaadmintools.dao.PortalSubscribersDAO; -import eu.dnetlib.uoaadmintools.entities.subscriber.PortalSubscribers; -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.List; - -public interface MongoDBPortalSubscribersDAO extends PortalSubscribersDAO, MongoRepository { - - List findAll(); - - PortalSubscribers findById(String Id); - - PortalSubscribers findByPid(String Pid); - - PortalSubscribers save(PortalSubscribers portalSubscribers); - - void deleteAll(); - - void delete(String id); -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBStatisticsDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBStatisticsDAO.java deleted file mode 100644 index 446ad61..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBStatisticsDAO.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs; - -import eu.dnetlib.uoaadmintools.dao.StatisticsDAO; -import eu.dnetlib.uoaadmintools.entities.statistics.Statistics; -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.List; - -public interface MongoDBStatisticsDAO extends StatisticsDAO, MongoRepository { - List findAll(); - - Statistics findById(String Id); - - Statistics findByPid(String Pid); - - Statistics save(Statistics statistic); - - void deleteAll(); - - void delete(String id); -} - diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBSubscriberDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBSubscriberDAO.java deleted file mode 100644 index 1b96b66..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/MongoDBDAOs/MongoDBSubscriberDAO.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs; - -import eu.dnetlib.uoaadmintools.dao.SubscriberDAO; -import eu.dnetlib.uoaadmintools.entities.subscriber.Subscriber; -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.List; - -public interface MongoDBSubscriberDAO extends SubscriberDAO, MongoRepository { - - List findAll(); - - Subscriber findById(String Id); - - Subscriber findByEmail(String email); - - Subscriber save(Subscriber subscriber); - - void deleteAll(); - - void delete(String id); -} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/NotificationsDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/NotificationsDAO.java index 99e9250..50d6554 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/NotificationsDAO.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/dao/NotificationsDAO.java @@ -1,23 +1,14 @@ package eu.dnetlib.uoaadmintools.dao; import eu.dnetlib.uoaadmintools.entities.Notifications; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; -/** - * Created by argirok on 6/7/2018. - */ -public interface NotificationsDAO { - List findAll(); - - Notifications findById(String Id); - - Notifications findByManagerEmailAndPortalPid(String managerEmail, String portalPid); +@Repository +public interface NotificationsDAO extends MongoRepository { + Optional findByManagerEmailAndPortalPid(String managerEmail, String portalPid); List findByPortalPid(String portalPid); - - Notifications save(Notifications entity); - - void deleteAll(); - - void delete(String id); } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/PortalSubscribersDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/PortalSubscribersDAO.java deleted file mode 100644 index 88d2b6c..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/PortalSubscribersDAO.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao; - -import eu.dnetlib.uoaadmintools.entities.subscriber.PortalSubscribers; - - -import java.util.List; - -public interface PortalSubscribersDAO { - - List findAll(); - - PortalSubscribers findById(String Id); - - PortalSubscribers findByPid(String Pid); - - PortalSubscribers save(PortalSubscribers portalSubscribers); - - void deleteAll(); - - void delete(String id); -} - diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/StatisticsDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/StatisticsDAO.java deleted file mode 100644 index a8f12ea..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/StatisticsDAO.java +++ /dev/null @@ -1,23 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao; - - -import eu.dnetlib.uoaadmintools.entities.statistics.Statistics; - -import java.util.List; - -/** - * Created by argirok on 5/3/2018. - */ -public interface StatisticsDAO { - List findAll(); - - Statistics findById(String Id); - - Statistics findByPid(String Pid); - - Statistics save(Statistics statistic); - - void deleteAll(); - - void delete(String id); -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/dao/SubscriberDAO.java b/src/main/java/eu/dnetlib/uoaadmintools/dao/SubscriberDAO.java deleted file mode 100644 index 7e3a244..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/dao/SubscriberDAO.java +++ /dev/null @@ -1,21 +0,0 @@ -package eu.dnetlib.uoaadmintools.dao; - -import eu.dnetlib.uoaadmintools.entities.subscriber.Subscriber; - -import java.util.List; - -public interface SubscriberDAO { - - List findAll(); - - Subscriber findById(String Id); - - Subscriber findByEmail(String email); - - Subscriber save(Subscriber subscriber); - - void deleteAll(); - - void delete(String id); -} - diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/ManagerType.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/ManagerType.java new file mode 100644 index 0000000..5d95880 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintools/entities/ManagerType.java @@ -0,0 +1,6 @@ +package eu.dnetlib.uoaadmintools.entities; + +public enum ManagerType { + EMAIL, + ID +} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/Subscriber.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/Subscriber.java deleted file mode 100644 index 5f02b11..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/Subscriber.java +++ /dev/null @@ -1,46 +0,0 @@ -package eu.dnetlib.uoaadmintools.entities; - -import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.data.annotation.Id; - -import java.util.List; - -/** - * Created by argirok on 2/3/2018. - */ -public class Subscriber { - @Id - @JsonProperty("_id") - private String id; - - private String email; - - public Subscriber() {} - public Subscriber(String email) { - this.email = email; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - @Override - public String toString() { - return "Subscriber{" + - "id='" + id + '\'' + - ", email='" + email + '\'' + - '}'; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/ChartsMap.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/ChartsMap.java deleted file mode 100644 index 159cfc0..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/ChartsMap.java +++ /dev/null @@ -1,33 +0,0 @@ -package eu.dnetlib.uoaadmintools.entities.statistics; - -import java.util.HashMap; -import java.util.Map; - -/** - * Created by argirok on 15/3/2018. - */ -public class ChartsMap { - Map map = new HashMap(); - public ChartsMap(){ - map.put("timeline",new StatisticsStatus()); - map.put("graph",new StatisticsStatus()); - map.put("projectTable",new StatisticsStatus()); - map.put("projectColumn",new StatisticsStatus()); - map.put("projectPie",new StatisticsStatus()); - } - - public Map getMap() { - return map; - } - - public void setMap(Map map) { - this.map = map; - } - - @Override - public String toString() { - return "ChartsMap{" + - "entities=" + map + - '}'; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/NumbersMap.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/NumbersMap.java deleted file mode 100644 index 934432c..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/NumbersMap.java +++ /dev/null @@ -1,34 +0,0 @@ -package eu.dnetlib.uoaadmintools.entities.statistics; - -import java.util.HashMap; -import java.util.Map; - -/** - * Created by argirok on 15/3/2018. - */ -public class NumbersMap { - Map map = new HashMap(); - public NumbersMap(){ - map.put("total",new StatisticsStatus()); - map.put("project",new StatisticsStatus()); - map.put("open",new StatisticsStatus()); - map.put("closed",new StatisticsStatus()); - map.put("embargo",new StatisticsStatus()); - map.put("restricted",new StatisticsStatus()); - } - - public Map getMap() { - return map; - } - - public void setMap(Map map) { - this.map = map; - } - - @Override - public String toString() { - return "ChartsMap{" + - "entities=" + map + - '}'; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/Statistics.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/Statistics.java deleted file mode 100644 index f3d232f..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/Statistics.java +++ /dev/null @@ -1,144 +0,0 @@ -package eu.dnetlib.uoaadmintools.entities.statistics; - -import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.data.annotation.Id; - -import java.util.HashMap; -import java.util.Map; - -/** - * Created by argirok on 5/3/2018. - */ -public class Statistics { - @Id - @JsonProperty("_id") - private String id; - private String pid; - private boolean isActive = true; - Map entities = new HashMap(); - public Statistics(String pid){ - this.pid = pid; - this.isActive = true; - entities.put("publication",new StatisticsEntity()); - entities.put("dataset",new StatisticsEntity()); - entities.put("software",new StatisticsEntity()); - entities.put("orp",new StatisticsEntity()); - } - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getPid() { - return pid; - } - - public void setPid(String pid) { - this.pid = pid; - } - - public boolean getIsActive() { - return isActive; - } - - public void setIsActive(boolean isActive) { - this.isActive = isActive; - } - - public Map getEntities() { - return entities; - } - - public void setEntities(Map entities) { - this.entities = entities; - } - - @Override - public String toString() { - return "Statistics{" + - "id='" + id + '\'' + - ", pid='" + pid + '\'' + - ", isActive= "+isActive + - ", entities=" + entities + - '}'; - } - - // private Map statistics; -// -// public Statistics(String pid){ -// this.setPid(pid); -// this.statistics = new HashMap(); -// -// this.statistics.put("publicationsNumber", new StatisticsStatus()); -// this.statistics.put("publicationsProjectNumber", new StatisticsStatus()); -// this.statistics.put("publicationsOpenNumber", new StatisticsStatus()); -// this.statistics.put("publicationsClosedNumber", new StatisticsStatus()); -// this.statistics.put("publicationsEmbargoNumber", new StatisticsStatus()); -// -// this.statistics.put("datasetsNumber", new StatisticsStatus()); -// this.statistics.put("datasetsProjectNumber", new StatisticsStatus()); -// this.statistics.put("datasetsOpenNumber", new StatisticsStatus()); -// this.statistics.put("datasetsClosedNumber", new StatisticsStatus()); -// this.statistics.put("datasetsEmbargoNumber", new StatisticsStatus()); -// -// this.statistics.put("softwareNumber", new StatisticsStatus()); -// this.statistics.put("softwareProjectNumber", new StatisticsStatus()); -// this.statistics.put("softwareOpenNumber", new StatisticsStatus()); -// this.statistics.put("softwareClosedNumber", new StatisticsStatus()); -// this.statistics.put("softwareEmbargoNumber", new StatisticsStatus()); -// -// this.statistics.put("publicationsTimeline", new StatisticsStatus()); -// this.statistics.put("datasetsTimeline", new StatisticsStatus()); -// this.statistics.put("softwareTimeline", new StatisticsStatus()); -// -// -// this.statistics.put("publicationsProjectColumn", new StatisticsStatus()); -// this.statistics.put("publicationsProjectPie", new StatisticsStatus()); -// this.statistics.put("publicationsProjectTable", new StatisticsStatus()); -// -// this.statistics.put("datasetsProjectColumn", new StatisticsStatus()); -// this.statistics.put("datasetsProjectPie", new StatisticsStatus()); -// this.statistics.put("datasetsProjectTable", new StatisticsStatus()); -// -// this.statistics.put("softwareProjectColumn", new StatisticsStatus()); -// this.statistics.put("softwareProjectPie", new StatisticsStatus()); -// this.statistics.put("softwareProjectTable", new StatisticsStatus()); -// -// } -// -// public String getId() { -// return id; -// } -// -// public void setId(String id) { -// this.id = id; -// } -// -// public String getPid() { -// return pid; -// } -// -// public void setPid(String pid) { -// this.pid = pid; -// } -// -// public Map getStatistics() { -// return statistics; -// } -// -// public void setStatistics(Map statistics) { -// this.statistics = statistics; -// } -// -// @Override -// public String toString() { -// return "Statistics{" + -// "id='" + id + '\'' + -// ", pid='" + pid + '\'' + -// ", statistics=" + statistics + -// '}'; -// } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/StatisticsEntity.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/StatisticsEntity.java deleted file mode 100644 index df9ef15..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/StatisticsEntity.java +++ /dev/null @@ -1,33 +0,0 @@ -package eu.dnetlib.uoaadmintools.entities.statistics; - -/** - * Created by argirok on 15/3/2018. - */ -public class StatisticsEntity { - private ChartsMap charts = new ChartsMap(); - private NumbersMap numbers = new NumbersMap(); - - public ChartsMap getCharts() { - return charts; - } - - public void setCharts(ChartsMap charts) { - this.charts = charts; - } - - public NumbersMap getNumbers() { - return numbers; - } - - public void setNumbers(NumbersMap numbers) { - this.numbers = numbers; - } - - @Override - public String toString() { - return "StatisticsEntity{" + - "charts=" + charts + - ", numbers=" + numbers + - '}'; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/StatisticsStatus.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/StatisticsStatus.java deleted file mode 100644 index 5793407..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/statistics/StatisticsStatus.java +++ /dev/null @@ -1,33 +0,0 @@ -package eu.dnetlib.uoaadmintools.entities.statistics; - -/** - * Created by argirok on 5/3/2018. - */ -public class StatisticsStatus { - Boolean showInMonitor = true; - Boolean showInDashboard = false; - - public Boolean getShowInMonitor() { - return showInMonitor; - } - - public void setShowInMonitor(Boolean showInMonitor) { - this.showInMonitor = showInMonitor; - } - - public Boolean getShowInDashboard() { - return showInDashboard; - } - - public void setShowInDashboard(Boolean showInDashboard) { - this.showInDashboard = showInDashboard; - } - - @Override - public String toString() { - return "StatisticsStatus{" + - "showInMonitor=" + showInMonitor + - ", showInDashboard=" + showInDashboard + - '}'; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/subscriber/PortalSubscribers.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/subscriber/PortalSubscribers.java deleted file mode 100644 index 0a92f16..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/subscriber/PortalSubscribers.java +++ /dev/null @@ -1,54 +0,0 @@ -package eu.dnetlib.uoaadmintools.entities.subscriber; - -import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.data.annotation.Id; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by argirok on 2/3/2018. - */ -public class PortalSubscribers { - @Id - @JsonProperty("_id") - private String id; - private String pid; - private List subscribers = new ArrayList(); - private List pendingSubscribers = new ArrayList(); - public PortalSubscribers(String pid){ - this.pid=pid; - } - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getPid() { - return pid; - } - - public void setPid(String pid) { - this.pid = pid; - } - - public List getSubscribers() { - return subscribers; - } - - public void setSubscribers(List subscribers) { - this.subscribers = subscribers; - } - - @Override - public String toString() { - return "PortalSubscribers{" + - "id='" + id + '\'' + - ", pid='" + pid + '\'' + - ", subscribers=" + subscribers + - '}'; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/subscriber/Subscriber.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/subscriber/Subscriber.java deleted file mode 100644 index da9bb2c..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/subscriber/Subscriber.java +++ /dev/null @@ -1,46 +0,0 @@ -package eu.dnetlib.uoaadmintools.entities.subscriber; - -import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.data.annotation.Id; - -import java.util.List; - -/** - * Created by argirok on 2/3/2018. - */ -public class Subscriber { - @Id - @JsonProperty("_id") - private String id; - - private String email; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public Subscriber() {} - public Subscriber(String email) { - this.email = email; - } - - @Override - public String toString() { - return "Subscriber{" + - "id='" + id + '\'' + - ", email='" + email + '\'' + - '}'; - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/AdminToolsDeployService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/AdminToolsDeployService.java new file mode 100644 index 0000000..081f51c --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/AdminToolsDeployService.java @@ -0,0 +1,77 @@ +package eu.dnetlib.uoaadmintools.services; + +import eu.dnetlib.uoaadmintools.configuration.GlobalVars; +import eu.dnetlib.uoaadmintools.configuration.mongo.MongoConnection; +import eu.dnetlib.uoaadmintools.configuration.properties.Managers; +import eu.dnetlib.uoaadmintools.configuration.properties.Mongodb; +import eu.dnetlib.uoaadmintools.configuration.properties.Properties; +import jakarta.annotation.PostConstruct; +import org.bson.Document; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +@Service +public class AdminToolsDeployService { + private final MongoConnection mongoConnection; + private final Mongodb mongodb; + private final Managers managers; + private final String cache; + private final GlobalVars globalVars; + + @Autowired + public AdminToolsDeployService(MongoConnection mongoConnection, Properties properties, GlobalVars globalVars) { + this.mongoConnection = mongoConnection; + this.mongodb = properties.getMongodb(); + this.managers = properties.getManagers(); + this.cache = properties.getCache(); + this.globalVars = globalVars; + } + + @PostConstruct + public void checkProperties() { + if (mongodb.getHost() == null || mongodb.getHost().isEmpty()) { + throw new RuntimeException("admin-tools.mongodb.host is missing!"); + } else if (mongodb.getDatabase() == null || mongodb.getDatabase().isEmpty()) { + throw new RuntimeException("admin-tools.mongodb.database is missing!"); + } else if (managers.getId() == null || managers.getId().isEmpty()) { + throw new RuntimeException("admin-tools.managers.id is missing!"); + } else if (managers.getEmail() == null || managers.getEmail().isEmpty()) { + throw new RuntimeException("admin-tools.managers.email is missing!"); + } else if (cache == null || cache.isEmpty()) { + throw new RuntimeException("admin-tools.cache is missing!"); + } + } + + public Map getProperties() { + Map response = new HashMap<>(); + MongoTemplate mt = mongoConnection.getMongoTemplate(); + Document ping = new Document("ping", 1); + try { + Document answer = mt.executeCommand(ping); + response.put("Mongo try: error", String.valueOf(answer.getDouble("ok") == 1.0)); + } catch (Exception e) { + response.put("Mongo catch: error", e.getMessage()); + } + response.put("admin-tools.mongodb.database", mongodb.getDatabase()); + response.put("admin-tools.mongodb.host", mongodb.getHost()); + response.put("admin-tools.mongodb.port", mongodb.getPort() + ""); + response.put("admin-tools.mongodb.username", mongodb.getUsername() == null ? null : "[unexposed value]"); + response.put("admin-tools.mongodb.password", mongodb.getPassword() == null ? null : "[unexposed value]"); + response.put("admin-tools.managers.id", managers.getId()); + response.put("admin-tools.managers.email", managers.getEmail()); + response.put("admin-tools.cache", cache); + + response.put("Date of deploy", GlobalVars.date.toString()); + if (globalVars.getBuildDate() != null) { + response.put("Date of build", globalVars.getBuildDate()); + } + if (globalVars.getVersion() != null) { + response.put("Version", globalVars.getVersion()); + } + return response; + } +} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/CuratorService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/CuratorService.java index a71d219..495eae6 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/CuratorService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/CuratorService.java @@ -3,8 +3,10 @@ package eu.dnetlib.uoaadmintools.services; import eu.dnetlib.uoaadmintools.dao.CuratorDAO; import eu.dnetlib.uoaadmintools.entities.Manager; +import eu.dnetlib.uoaadmintools.entities.ManagerType; import eu.dnetlib.uoaadmintools.entities.curator.Curator; import eu.dnetlib.uoaadmintools.entities.curator.CuratorResponse; +import eu.dnetlib.uoaauthorizationlibrary.authorization.exceptions.http.NotFoundException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -18,17 +20,19 @@ public class CuratorService { private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private CuratorDAO curatorDAO; + private final CuratorDAO curatorDAO; + private final ManagerService managerService; @Autowired - private ManagerService managerService; - + public CuratorService(CuratorDAO curatorDAO, ManagerService managerService) { + this.curatorDAO = curatorDAO; + this.managerService = managerService; + } public List getCurators(String pid) { List curators = new ArrayList<>(); - for (Manager manager : managerService.getManagers(pid, ManagerService.Type.ID)) { - Curator curator = curatorDAO.findById(parseId(manager.getId())); + for (Manager manager : managerService.getManagers(pid, ManagerType.ID)) { + Curator curator = curatorDAO.findById(parseId(manager.getId())).orElse(null); if (curator != null && curator.isVisible()) { curators.add(new CuratorResponse(curator)); } @@ -37,7 +41,7 @@ public class CuratorService { } public Curator findById(String id) { - return curatorDAO.findById(id); + return curatorDAO.findById(id).orElseThrow(() -> new NotFoundException("Curator with id: " + id + " not found")); } public Curator save(Curator curator) { @@ -45,16 +49,12 @@ public class CuratorService { } public void deleteCurators(String pid) { - for (Manager manager : managerService.getManagers(pid, ManagerService.Type.ID)) { - Curator curator = curatorDAO.findById(parseId(manager.getId())); - if (curator != null) { - curatorDAO.delete(curator.getId()); - } + for (Manager manager : managerService.getManagers(pid, ManagerType.ID)) { + curatorDAO.findById(parseId(manager.getId())).ifPresent(curatorDAO::delete); } } private String parseId(String id) { return id.substring(0 , id.indexOf("@")); } - -} \ No newline at end of file +} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/LayoutService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/LayoutService.java index a110d14..18910d3 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/LayoutService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/LayoutService.java @@ -2,11 +2,11 @@ package eu.dnetlib.uoaadmintools.services; import eu.dnetlib.uoaadmintools.dao.LayoutDAO; import eu.dnetlib.uoaadmintools.entities.Layout; -import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; +import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; +import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.apache.logging.log4j.LogManager; import java.util.List; @@ -14,53 +14,40 @@ import java.util.List; public class LayoutService { private final Logger log = LogManager.getLogger(this.getClass()); + private final LayoutDAO layoutDAO; + @Autowired - private LayoutDAO layoutDAO; + public LayoutService(LayoutDAO layoutDAO) { + this.layoutDAO = layoutDAO; + } public List findAll() { return this.layoutDAO.findAll(); } - public void updatePid(String old_pid, String new_pid) { - log.debug("layout service: updatePid"); - List layouts = layoutDAO.findByPortalPid(old_pid); - for(Layout layout : layouts) { - log.debug("layout service: layout id: " + (layout != null ? layout.getId() : "not found")); - if (layout != null) { - layout.setPortalPid(new_pid); - log.debug("layout layout: new layout pid: " + layout.getPortalPid()); - layoutDAO.save(layout); - log.debug("layout saved!"); - } - } - } - - public boolean deleteByPid(String pid) { - List layouts = layoutDAO.findByPortalPid(pid); - for(Layout layout : layouts) { - if (layout != null) { - if(!pid.equals(layout.getPortalPid())) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Delete layout by pid: Portal has pid: "+pid+" while layout has portalPid: "+layout.getPortalPid()); - } - layoutDAO.delete(layout.getId()); - } - } - return true; - } - public Layout findByPid(String pid) { - List layouts = layoutDAO.findByPortalPid(pid); - if(layouts != null && layouts.size() > 0) { - return layouts.get(0); + return layoutDAO.findByPortalPid(pid).orElse(null); + } + + public void updatePid(String oldPid, Portal portal) { + Layout layout = this.findByPid(oldPid); + if (layout != null) { + layout.setPortalPid(portal.getPid()); + layoutDAO.save(layout); + } + } + + public void deleteByPid(String pid) { + Layout layout = this.findByPid(pid); + if (layout != null) { + layoutDAO.delete(layout); } - return null; } public Layout save(Layout layout) { - List oldLayouts = layoutDAO.findByPortalPid(layout.getPortalPid()); - if(oldLayouts != null && oldLayouts.size() == 1) { - layout.setId(oldLayouts.get(0).getId()); // set existing id to update layout for this pid + Layout old = this.findByPid(layout.getPortalPid()); + if(old != null) { + layout.setId(old.getId()); } return layoutDAO.save(layout); } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/ManagerService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/ManagerService.java index e3c07e3..6de4bea 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/ManagerService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/ManagerService.java @@ -1,9 +1,10 @@ package eu.dnetlib.uoaadmintools.services; -import eu.dnetlib.uoaadmintools.configuration.properties.ManagersApiConfig; +import eu.dnetlib.uoaadmintools.configuration.properties.Managers; +import eu.dnetlib.uoaadmintools.configuration.properties.Properties; import eu.dnetlib.uoaadmintools.entities.Manager; -import eu.dnetlib.uoaadmintools.entities.curator.Response; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; +import eu.dnetlib.uoaadmintools.entities.ManagerType; +import eu.dnetlib.uoaauthorizationlibrary.authorization.exceptions.http.NotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -13,29 +14,27 @@ import org.springframework.web.client.RestTemplate; @Service public class ManagerService { - enum Type { - EMAIL, - ID + private final Managers config; + private final RestTemplate restTemplate; + + @Autowired + public ManagerService(Properties properties, RestTemplate restTemplate) { + this.config = properties.getManagers(); + this.restTemplate = restTemplate; } - @Autowired - private ManagersApiConfig config; - - @Autowired - private RestTemplate restTemplate; - public Manager[] getManagers(String pid) { - return getManagers(pid, Type.EMAIL); + return getManagers(pid, ManagerType.EMAIL); } - public Manager[] getManagers(String pid, Type type) { - String url = (type == Type.EMAIL)?config.getEmail():config.getId(); + public Manager[] getManagers(String pid, ManagerType type) { + String url = (type == ManagerType.EMAIL)?config.getEmail():config.getId(); ResponseEntity responseEntity = restTemplate.getForEntity(url.replace("{community}", pid), Manager[].class); Manager[] managers = responseEntity.getBody(); if (managers != null && responseEntity.getStatusCode() == HttpStatus.OK) { return managers; } else { - throw new ContentNotFoundException("No managers has been found for community " + pid); + throw new NotFoundException("No managers has been found for community " + pid); } } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java index e43423d..77896c6 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java @@ -2,10 +2,10 @@ package eu.dnetlib.uoaadmintools.services; import eu.dnetlib.uoaadmintools.dao.MenuDAO; import eu.dnetlib.uoaadmintools.dao.MenuItemDAO; -import eu.dnetlib.uoaadmintools.entities.Notifications; import eu.dnetlib.uoaadmintools.entities.menu.*; -import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; -import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; +import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; +import eu.dnetlib.uoaadmintoolslibrary.utils.MismatchingContentException; +import eu.dnetlib.uoaauthorizationlibrary.authorization.exceptions.http.NotFoundException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -13,44 +13,43 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @Service public class MenuService { private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private MenuDAO menuDAO; + private final MenuDAO menuDAO; + private final MenuItemDAO menuItemDAO; @Autowired - private MenuItemDAO menuItemDAO; + public MenuService(MenuDAO menuDAO, MenuItemDAO menuItemDAO) { + this.menuDAO = menuDAO; + this.menuItemDAO = menuItemDAO; + } public MenuItem getMenuItem(String id) { - return menuItemDAO.findById(id); + return menuItemDAO.findById(id).orElseThrow(() -> new NotFoundException("Menu item with id: " + id + " not found")); } public MenuItemFull getMenuItemFull(String id) { - return this.getMenuItemFull(id, 1); + return this.getMenuItemFull(id, 1); } public MenuItemFull getMenuItemFull(String id, int maxDepth) { - MenuItem menuItem = menuItemDAO.findById(id); + MenuItem menuItem = getMenuItem(id); MenuItemFull menuItemFull = new MenuItemFull(menuItem); - if(maxDepth == 0) { + if (maxDepth == 0) { menuItemFull.setItems(new ArrayList<>()); - return menuItemFull; + } else { + menuItemFull.setItems(menuItem.getItems().stream().map(item -> this.getMenuItemFull(item, maxDepth - 1)) + .collect(Collectors.toList())); } - - List menuItemsFull = new ArrayList<>(); - for(String menuItemString : menuItem.getItems()) { - menuItemsFull.add(this.getMenuItemFull(menuItemString, maxDepth-1)); - } - menuItemFull.setItems(menuItemsFull); - return menuItemFull; } public List getMenuItemsByParent(String parentId, String portalPid) { - if(portalPid != null) { + if (portalPid != null) { return menuItemDAO.findByParentItemIdAndPortalPid(parentId, portalPid); } else { return menuItemDAO.findByParentItemId(parentId); @@ -60,11 +59,11 @@ public class MenuService { public List getRootMenuItemsFull(String portalPid) { List rootMenuItems = this.getMenuItemsByParent(null, portalPid); List rootMenuItemsFull = new ArrayList<>(); - for(MenuItem rootMenuItem : rootMenuItems) { + for (MenuItem rootMenuItem : rootMenuItems) { MenuItemFull rootMenuItemFull = new MenuItemFull(rootMenuItem); List childrenMenuItemsFull = new ArrayList<>(); - for(String childMenuItemString : rootMenuItem.getItems()) { + for (String childMenuItemString : rootMenuItem.getItems()) { childrenMenuItemsFull.add(this.getMenuItemFull(childMenuItemString)); } rootMenuItemFull.setItems(childrenMenuItemsFull); @@ -76,103 +75,72 @@ public class MenuService { public MenuFull getMenuFull(String portalPid) { MenuFull menuFull = new MenuFull(); - - Menu menu = menuDAO.findByPortalPid(portalPid); - List featuredMenuItems = new ArrayList<>(); - List menuItems = new ArrayList<>(); - - if(menu == null) { + Menu menu = menuDAO.findByPortalPid(portalPid).orElse(null); + menuFull.setPortalPid(portalPid); + if (menu == null) { menuFull.setFeaturedMenuEnabled(true); menuFull.setMenuEnabled(true); menuFull.setFeaturedAlignment(MenuAlignment.CENTER.name()); } else { - for (String menuItemId : menu.getFeaturedMenuItems()) { - featuredMenuItems.add(getFullRootMenuItemById(menuItemId, portalPid, true)); - } - - for (String menuItemId : menu.getMenuItems()) { - menuItems.add(getFullRootMenuItemById(menuItemId, portalPid, false)); - } - + menuFull.setFeaturedMenuItems(menu.getFeaturedMenuItems().stream().map(item -> getFullRootMenuItemById(item, portalPid, true)).collect(Collectors.toList())); + menuFull.setMenuItems(menu.getMenuItems().stream().map(item -> getFullRootMenuItemById(item, portalPid, false)).collect(Collectors.toList())); menuFull.setFeaturedMenuEnabled(menu.getIsFeaturedMenuEnabled()); menuFull.setMenuEnabled(menu.getIsMenuEnabled()); menuFull.setFeaturedAlignment(menu.getFeaturedAlignment()); } - - menuFull.setPortalPid(portalPid); - menuFull.setFeaturedMenuItems(featuredMenuItems); - menuFull.setMenuItems(menuItems); - return menuFull; } - private MenuItemFull getFullRootMenuItemById(String menuItemId, String portalPid, Boolean isFeatured) { - MenuItem rootMenuItem = menuItemDAO.findById(menuItemId); - if(rootMenuItem.getIsFeatured() != isFeatured) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("getFullRootMenuItemById: Menu item should "+(isFeatured ? "" : "not ")+"be featured"); + private MenuItemFull getFullRootMenuItemById(String id, String portalPid, Boolean isFeatured) { + MenuItem rootMenuItem = this.getMenuItem(id); + if (rootMenuItem.getIsFeatured() != isFeatured) { + throw new MismatchingContentException("getFullRootMenuItemById: Menu item should " + (isFeatured ? "" : "not ") + "be featured"); } - if(!rootMenuItem.getPortalPid().equals(portalPid)) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("getFullRootMenuItemById: Menu item with id: "+rootMenuItem.getId()+" has portal pid: "+rootMenuItem.getPortalPid()+" instead of "+portalPid); + if (!rootMenuItem.getPortalPid().equals(portalPid)) { + throw new MismatchingContentException("getFullRootMenuItemById: Menu item with id: " + rootMenuItem.getId() + " has portal pid: " + rootMenuItem.getPortalPid() + " instead of " + portalPid); } - if(rootMenuItem.getParentItemId() != null) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("getFullRootMenuItemById: Menu item should be root (no parentId), but instead parentId: "+rootMenuItem.getParentItemId()); + if (rootMenuItem.getParentItemId() != null) { + throw new MismatchingContentException("getFullRootMenuItemById: Menu item should be root (no parentId), but instead parentId: " + rootMenuItem.getParentItemId()); } - MenuItemFull rootMenuItemFull = new MenuItemFull(rootMenuItem); - - List childrenMenuItemsFull = new ArrayList<>(); - for(String childMenuItemString : rootMenuItem.getItems()) { - childrenMenuItemsFull.add(this.getMenuItemFull(childMenuItemString)); - } - rootMenuItemFull.setItems(childrenMenuItemsFull); + rootMenuItemFull.setItems(rootMenuItem.getItems().stream().map(this::getMenuItemFull).collect(Collectors.toList())); return rootMenuItemFull; } private MenuItemFull insertMenuItem(MenuItem menuItem, String portalPid) { MenuItem parent = null; - if(menuItem.getParentItemId() != null && !menuItem.getParentItemId().equals("")) { + if (menuItem.getParentItemId() != null && !menuItem.getParentItemId().isEmpty()) { parent = getMenuItem(menuItem.getParentItemId()); if (!parent.getPortalPid().equals(portalPid)) { - // EXCEPTION - MismatchingContent - throw new MismatchingContentException("insertMenuItem: parent ("+parent.getParentItemId()+") of MenuItem has portalPid: " + parent.getPortalPid() + " instead of " + portalPid); + throw new MismatchingContentException("insertMenuItem: parent (" + parent.getParentItemId() + ") of MenuItem has portalPid: " + parent.getPortalPid() + " instead of " + portalPid); } } else { menuItem.setParentItemId(null); } - - if(menuItem.getItems() == null) { - List menuItems = new ArrayList(); - menuItem.setItems(menuItems); + if (menuItem.getItems() == null) { + menuItem.setItems(new ArrayList<>()); } menuItemDAO.save(menuItem); - - if(parent != null) { + if (parent != null) { List siblingsOfNew = parent.getItems(); siblingsOfNew.add(menuItem.getId()); parent.setItems(siblingsOfNew); menuItemDAO.save(parent); } - - MenuItemFull menuItemFull = new MenuItemFull(menuItem); + MenuItemFull menuItemFull = new MenuItemFull(menuItem); menuItemFull.setItems(new ArrayList<>()); - - - return menuItemFull; } public MenuItemFull insertMenuItemInMenu(MenuItem menuItem, String portalPid) { MenuItemFull menuItemFull = insertMenuItem(menuItem, portalPid); - Menu menu = menuDAO.findByPortalPid(portalPid); - if(menu == null) { + Menu menu = menuDAO.findByPortalPid(portalPid).orElse(null); + if (menu == null) { menu = new Menu(portalPid); } - if(menuItem.getIsFeatured() && menuItem.getParentItemId() == null) { + if (menuItem.getIsFeatured() && menuItem.getParentItemId() == null) { menu.getFeaturedMenuItems().add(menuItemFull.getId()); - } else if(menuItem.getParentItemId() == null) { + } else if (menuItem.getParentItemId() == null) { menu.getMenuItems().add(menuItemFull.getId()); } menuDAO.save(menu); @@ -195,80 +163,64 @@ public class MenuService { public MenuItemFull updateMenu(MenuItemFull menuItemFull, String portalPid) { menuItemFull = updateMenuItem(menuItemFull); - Menu menu = menuDAO.findByPortalPid(portalPid); - if(menu == null) { - // EXCEPTION - ContentNotFoundException - throw new ContentNotFoundException("updateMenu: No Menu found for portal pid: "+portalPid); - } + Menu menu = menuDAO.findByPortalPid(portalPid).orElseThrow(() -> new NotFoundException("updateMenu: No Menu found for portal pid: " + portalPid)); List featuredMenuItems = menu.getFeaturedMenuItems(); List menuItems = menu.getMenuItems(); if (menuItemFull.getIsFeatured() && menuItemFull.getParentItemId() == null && !featuredMenuItems.contains(menuItemFull.getId())) { featuredMenuItems.add(menuItemFull.getId()); } else if ((!menuItemFull.getIsFeatured() || menuItemFull.getParentItemId() != null) && featuredMenuItems.contains(menuItemFull.getId())) { featuredMenuItems.remove(menuItemFull.getId()); - } else if(!menuItemFull.getIsFeatured() && menuItemFull.getParentItemId() == null && !menuItems.contains(menuItemFull.getId())) { + } else if (!menuItemFull.getIsFeatured() && menuItemFull.getParentItemId() == null && !menuItems.contains(menuItemFull.getId())) { menuItems.add(menuItemFull.getId()); - } else if ((menuItemFull.getIsFeatured() || menuItemFull.getParentItemId() != null) && menuItems.contains(menuItemFull.getId())) { + } else if ((menuItemFull.getIsFeatured() || menuItemFull.getParentItemId() != null)) { menuItems.remove(menuItemFull.getId()); } menuDAO.save(menu); - return menuItemFull; } public Boolean deleteMenuItem(String id, String portalPid) throws Exception { - Menu menu = menuDAO.findByPortalPid(portalPid); - if(menu == null) { - // EXCEPTION - ContentNotFoundException - throw new ContentNotFoundException("deleteMenuItem: No Menu found for portal pid: "+portalPid); - } + Menu menu = menuDAO.findByPortalPid(portalPid).orElseThrow(() -> new NotFoundException("deleteMenuItem: No Menu found for portal pid: " + portalPid)); List featuredMenuItems = menu.getFeaturedMenuItems(); List menuItems = menu.getMenuItems(); - if(featuredMenuItems.contains(id)) { + if (featuredMenuItems.contains(id)) { featuredMenuItems.remove(id); - } else if(menuItems.contains(id)) { + } else { menuItems.remove(id); } menuDAO.save(menu); - -// menuItemDAO.delete(id); - log.debug("delete menu item; "+id); + log.debug("delete menu item; " + id); List menuItemsToDelete = new ArrayList<>(); menuItemsToDelete.add(id); return deleteMenuItems(menuItemsToDelete, portalPid); } public Boolean deleteMenuItems(List menuItems, String portalPid) throws Exception { - if(menuItems == null) { + if (menuItems == null) { return true; } - for (String id: menuItems) { - MenuItem menuItem = menuItemDAO.findById(id); - - if(!portalPid.equals(menuItem.getPortalPid())) { + for (String id : menuItems) { + MenuItem menuItem = this.getMenuItem(id); + if (!portalPid.equals(menuItem.getPortalPid())) { // EXCEPTION - MismatchingContent - throw new MismatchingContentException("Delete Menu Items: MenuItem with id: "+id+" has portalPid: "+menuItem.getPortalPid()+" instead of "+portalPid); + throw new MismatchingContentException("Delete Menu Items: MenuItem with id: " + id + " has portalPid: " + menuItem.getPortalPid() + " instead of " + portalPid); } - deleteMenuItems(menuItem.getItems(), portalPid); - - if(menuItem.getParentItemId() != null && !menuItem.getParentItemId().equals("")) { - MenuItem parent = menuItemDAO.findById(menuItem.getParentItemId()); + if (menuItem.getParentItemId() != null && !menuItem.getParentItemId().isEmpty()) { + MenuItem parent = this.getMenuItem(menuItem.getParentItemId()); List siblingsOfDeleted = parent.getItems(); siblingsOfDeleted.remove(id); parent.setItems(siblingsOfDeleted); menuItemDAO.save(parent); } - - menuItemDAO.delete(id); + menuItemDAO.delete(menuItem); } - return true; } public Boolean deleteMenuByPortalPid(String portalPid) throws Exception { - Menu menu = menuDAO.findByPortalPid(portalPid); - if(menu != null) { + Menu menu = menuDAO.findByPortalPid(portalPid).orElse(null); + if (menu != null) { deleteMenuItems(menu.getMenuItems(), portalPid); deleteMenuItems(menu.getFeaturedMenuItems(), portalPid); menuDAO.deleteByPortalPid(portalPid); @@ -276,60 +228,44 @@ public class MenuService { return true; } - public Boolean reorderMenuItems(List menuItemsFull, String portalPid) { + public Boolean reorderMenuItems(List menuItemsFull, String portalPid) { List menuItemIds = new ArrayList<>(); -// menuItemIds = menuItemsFull.stream().map((MenuItem menuItem) -> menuItem.getId()).collect(Collectors.toList()); - boolean isFeatured = menuItemsFull.get(0).getIsFeatured(); + boolean isFeatured = menuItemsFull.get(0).getIsFeatured(); String parentId = menuItemsFull.get(0).getParentItemId(); - - for (MenuItemFull menuItem: menuItemsFull) { + for (MenuItemFull menuItem : menuItemsFull) { if (!portalPid.equals(menuItem.getPortalPid())) { - // EXCEPTION - MismatchingContent throw new MismatchingContentException("reorderMenuItems: MenuItems for reordering have not the same portalPid"); } - if(menuItem.getIsFeatured() != isFeatured) { - // EXCEPTION - MismatchingContent + if (menuItem.getIsFeatured() != isFeatured) { throw new MismatchingContentException("reorderMenuItems: MenuItems for reordering have not the same isFeatured"); } - if((menuItem.getParentItemId() == null && parentId != null) || (parentId == null && menuItem.getParentItemId() != null) || (parentId != null && !menuItem.getParentItemId().equals(parentId))) { - // EXCEPTION - MismatchingContent + if ((menuItem.getParentItemId() == null && parentId != null) || (parentId == null && menuItem.getParentItemId() != null) || (parentId != null && !menuItem.getParentItemId().equals(parentId))) { throw new MismatchingContentException("reorderMenuItems: MenuItems for reordering have not the same parentItemId"); } menuItemIds.add(menuItem.getId()); - } - - List savedMenuItems; - if(parentId != null) { - MenuItem parent = menuItemDAO.findById(parentId); - savedMenuItems = parent.getItems(); - menuItemIds = this.addSavedMenuItems(savedMenuItems, menuItemIds, menuItemsFull); - parent.setItems(menuItemIds); + if (parentId != null) { + MenuItem parent = this.getMenuItem(parentId); + this.addSavedMenuItems(parent.getItems(), menuItemIds); menuItemDAO.save(parent); - } else if(isFeatured) { - Menu menu = menuDAO.findByPortalPid(portalPid); - savedMenuItems = menu.getFeaturedMenuItems(); - menuItemIds = this.addSavedMenuItems(savedMenuItems, menuItemIds, menuItemsFull); - menu.setFeaturedMenuItems(menuItemIds); + } else if (isFeatured) { + Menu menu = menuDAO.findByPortalPid(portalPid).orElseThrow(() -> new NotFoundException("reorderMenuItems: No Menu found for portalPid: " + portalPid)); + this.addSavedMenuItems(menu.getMenuItems(), menuItemIds); menuDAO.save(menu); } else { - Menu menu = menuDAO.findByPortalPid(portalPid); - savedMenuItems = menu.getMenuItems(); - menuItemIds = this.addSavedMenuItems(savedMenuItems, menuItemIds, menuItemsFull); - menu.setMenuItems(menuItemIds); + Menu menu = menuDAO.findByPortalPid(portalPid).orElseThrow(() -> new NotFoundException("reorderMenuItems: No Menu found for portalPid: " + portalPid)); + this.addSavedMenuItems(menu.getMenuItems(), menuItemIds); menuDAO.save(menu); } - return true; } - private List addSavedMenuItems(List savedMenuItems, List menuItemIds, List menuItemsFull) { + private void addSavedMenuItems(List savedMenuItems, List menuItemIds) { for (String menuId : savedMenuItems) { if (!menuItemIds.contains(menuId)) { menuItemIds.add(menuId); } } - return menuItemIds; } @@ -344,22 +280,20 @@ public class MenuService { menuItem.setPortalPid(menuItemFull.getPortalPid()); menuItem.setParentItemId(menuItemFull.getParentItemId()); menuItem.setIsFeatured(menuItemFull.getIsFeatured()); - List menuItemsFull = menuItemFull.getItems(); List menuItems = new ArrayList(); - if(menuItemsFull != null) { + if (menuItemsFull != null) { for (MenuItemFull childMenuItemFull : menuItemsFull) { menuItems.add(childMenuItemFull.getId()); } } menuItem.setItems(menuItems); - return menuItem; } - public Menu toggleMenu(String pid, String status, String isFeatured) throws Exception { - Menu menu = menuDAO.findByPortalPid(pid); - if(isFeatured != null && Boolean.parseBoolean(isFeatured)) { + public Menu toggleMenu(String pid, String status, String isFeatured) { + Menu menu = menuDAO.findByPortalPid(pid).orElseThrow(() -> new NotFoundException("toggle Menu: No Menu found for portalPid: " + pid)); + if (Boolean.parseBoolean(isFeatured)) { menu.setFeaturedMenuEnabled(Boolean.parseBoolean(status)); } else { menu.setMenuEnabled(Boolean.parseBoolean(status)); @@ -368,28 +302,24 @@ public class MenuService { } public Menu alignMenu(String pid, String alignment) { - Menu menu = menuDAO.findByPortalPid(pid); + Menu menu = menuDAO.findByPortalPid(pid).orElseThrow(() -> new NotFoundException("align Menu: No Menu found for portalPid: " + pid)); menu.setFeaturedAlignment(alignment); - return menuDAO.save(menu); } - public void updatePid(String old_pid, String new_pid) { + public void updatePid(String oldPid, Portal portal) { log.debug("menu service: updatePid"); - Menu menu = menuDAO.findByPortalPid(old_pid); - if(menu != null) { - menu.setPortalPid(new_pid); + Menu menu = menuDAO.findByPortalPid(oldPid).orElse(null); + if (menu != null) { + menu.setPortalPid(portal.getPid()); menuDAO.save(menu); log.debug("menu saved!"); } - - List menuItems = menuItemDAO.findByPortalPid(old_pid); - if(menuItems != null) { - menuItems.forEach(menuItem -> { - menuItem.setPortalPid(new_pid); - menuItemDAO.save(menuItem); - log.debug("menuItem saved!"); - }); - } + List menuItems = menuItemDAO.findByPortalPid(oldPid); + menuItems.forEach(menuItem -> { + menuItem.setPortalPid(portal.getPid()); + menuItemDAO.save(menuItem); + log.debug("menuItem saved!"); + }); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/NotificationsService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/NotificationsService.java index 7442679..7484bd2 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/NotificationsService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/NotificationsService.java @@ -2,6 +2,9 @@ package eu.dnetlib.uoaadmintools.services; import eu.dnetlib.uoaadmintools.dao.NotificationsDAO; import eu.dnetlib.uoaadmintools.entities.Notifications; +import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; +import eu.dnetlib.uoaadmintoolslibrary.utils.RolesUtils; +import eu.dnetlib.uoaauthorizationlibrary.authorization.exceptions.http.NotFoundException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -13,26 +16,56 @@ import java.util.List; public class NotificationsService { private final Logger log = LogManager.getLogger(this.getClass()); - @Autowired - private NotificationsDAO notificationsDAO; + private final NotificationsDAO notificationsDAO; + private final RolesUtils rolesUtils; - public void updatePid(String old_pid, String new_pid) { - log.debug("notifications service: updatePid"); - List notifications = notificationsDAO.findByPortalPid(old_pid); + @Autowired + public NotificationsService(NotificationsDAO notificationsDAO, RolesUtils rolesUtils) { + this.notificationsDAO = notificationsDAO; + this.rolesUtils = rolesUtils; + } + + public Notifications getUserNotifications(Portal portal) { + return this.notificationsDAO.findByManagerEmailAndPortalPid(rolesUtils.getEmail(), portal.getPid()).orElse(null); + } + + public List getAllNotifications(Portal portal) { + return this.notificationsDAO.findByPortalPid(portal.getPid()); + } + + public void deleteUserNotifications(Portal portal) { + Notifications notifications = getUserNotifications(portal); if(notifications != null) { + notificationsDAO.delete(notifications); + } else { + throw new NotFoundException("Notifications settings for community with pid: " + portal.getPid() + " and user email: " + rolesUtils.getEmail() + " not found"); + } + } + + public Notifications save(Portal portal, Notifications notifications) { + Notifications saved = this.getUserNotifications(portal); + if(saved != null) { + notifications.setId(saved.getId()); + } + notifications.setManagerEmail(this.rolesUtils.getEmail()); + notifications.setAaiId(this.rolesUtils.getAaiId()); + notifications.setPortalPid(portal.getPid()); + return notificationsDAO.save(notifications); + } + + public void updatePid(String oldPid, Portal portal) { + log.debug("notifications service: updatePid"); + List notifications = notificationsDAO.findByPortalPid(oldPid); + if (notifications != null) { notifications.forEach(notification -> { - notification.setPortalPid(new_pid); - notificationsDAO.save(notification); - }); + notification.setPortalPid(portal.getPid()); + notificationsDAO.save(notification); + }); log.debug("notifications saved!"); } } public void deleteByPid(String pid) { - // TODO check maybe we can delete by portalId without find first - List notifications = notificationsDAO.findByPortalPid(pid); - if(notifications != null) { - notifications.forEach(notification -> notificationsDAO.delete(notification.getId())); - } + notificationsDAO.deleteAll(notificationsDAO.findByPortalPid(pid)); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/StatisticsService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/StatisticsService.java deleted file mode 100644 index 001445e..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/StatisticsService.java +++ /dev/null @@ -1,40 +0,0 @@ -package eu.dnetlib.uoaadmintools.services; - -import eu.dnetlib.uoaadmintools.dao.StatisticsDAO; -import eu.dnetlib.uoaadmintools.entities.statistics.Statistics; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class StatisticsService { - private final Logger log = LogManager.getLogger(this.getClass()); - - @Autowired - private StatisticsDAO statisticsDAO; - - public void updatePid(String old_pid, String new_pid) { - log.debug("statistics service: updatePid"); - Statistics statistics = statisticsDAO.findByPid(old_pid); - log.debug("statistics service: statistics id: "+(statistics != null ? statistics.getId() : "not found")); - if(statistics != null) { - statistics.setPid(new_pid); - log.debug("statistics service: new statistics pid: " + statistics.getPid()); - statisticsDAO.save(statistics); - log.debug("statistics saved!"); - } - } - - public void createPortalStatistics(String pid) { - Statistics statistics = new Statistics(pid); - statisticsDAO.save(statistics); - } - - public void deleteByPid(String pid) { - Statistics stats = statisticsDAO.findByPid(pid); - if(stats != null) { - statisticsDAO.delete(stats.getId()); - } - } -} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/SubscriberService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/SubscriberService.java deleted file mode 100644 index 235e4a5..0000000 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/SubscriberService.java +++ /dev/null @@ -1,40 +0,0 @@ -package eu.dnetlib.uoaadmintools.services; - -import eu.dnetlib.uoaadmintools.dao.PortalSubscribersDAO; -import eu.dnetlib.uoaadmintools.entities.subscriber.PortalSubscribers; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class SubscriberService { - private final Logger log = LogManager.getLogger(this.getClass()); - - @Autowired - private PortalSubscribersDAO portalSubscribersDAO; - - public void updatePid(String old_pid, String new_pid) { - log.debug("subscriber service: updatePid"); - PortalSubscribers portalSubscribers = portalSubscribersDAO.findByPid(old_pid); - log.debug("subscriber service: portalSubscribers id: "+(portalSubscribers != null ? portalSubscribers.getId() : "not found")); - if(portalSubscribers != null) { - portalSubscribers.setPid(new_pid); - log.debug("subscriber portalSubscribers: new portalSubscribers pid: " + portalSubscribers.getPid()); - portalSubscribersDAO.save(portalSubscribers); - log.debug("portalSubscribers saved!"); - } - } - - public void createPortalSubscribers(String pid) { - PortalSubscribers portalSubscribers = new PortalSubscribers(pid); - portalSubscribersDAO.save(portalSubscribers); - } - - public void deletePortalSubscribers(String pid) { - PortalSubscribers portalSubscribers = portalSubscribersDAO.findByPid(pid); - if(portalSubscribers != null) { - portalSubscribersDAO.delete(portalSubscribers.getId()); - } - } -} diff --git a/src/main/resources/admintools.properties b/src/main/resources/admintools.properties index fee81cb..b296755 100644 --- a/src/main/resources/admintools.properties +++ b/src/main/resources/admintools.properties @@ -1,57 +1,4 @@ -#dev -#admintool.security.userInfoUrl = http://scoobydoo.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/api/users/getUserInfo?accessToken= -#admintool.security.originServer = .di.uoa.gr -#admintool.security.postsAllowed = /contact,/contact/ -admintool.mail.host = smtp.gmail.com -admintool.mail.port = 587 -admintool.mail.auth = true -admintool.mail.from = openaire.test@gmail.com -admintool.mail.username = openaire.test@gmail.com -admintool.mail.password = -admintool.google.secret = 6LcVtFIUAAAAAIlEaz6Am2PBC3j5lHG7vBo6uW4_ -admintool.mongodb.host=localhost -admintool.mongodb.port=27017 -admintool.mongodb.database=openaire_admin -admintool.managers.api.id = http://dl170.madgik.di.uoa.gr:8180/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/community/{community}/managers/id -admintool.managers.api.email = http://dl170.madgik.di.uoa.gr:8180/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/community/{community}/managers/email -admintool.globalVars.buildDate=@timestamp@ -admintool.globalVars.version=@project.version@ -admintool.cache.url = https://beta.{community}.openaire.eu/purge/ - -#beta -#admintool.security.userInfoUrl = https://beta.services.openaire.eu/uoa-user-management/api/users/getUserInfo?accessToken= -#admintool.security.originServer = .openaire.eu -#admintool.security.postsAllowed = /contact,/contact/ -#admintool.mail.host = bwnmail.icm.edu.pl -#admintool.mail.port = 25 -#admintool.mail.auth = false -#admintool.mail.username = no-reply@openaire.eu -#admintool.mail.from = no-reply@beta.openaire.eu -#admintool.mail.password = -#admintool.google.secret = 6LezhVIUAAAAAP97HFoWsqU9R1zLKptnA4YBg8FX -#admintool.mongodb.host=beta.services.openaire.eu -#admintool.mongodb.port=27017 -#admintool.mongodb.database=openaireconnect - - -#production -#admintool.security.userInfoUrl = https://services.openaire.eu/uoa-user-management/api/users/getUserInfo?accessToken= -#admintool.security.originServer = .openaire.eu -#admintool.security.postsAllowed = /contact,/contact/ -#admintool.mail.host = bwnmail.icm.edu.pl -#admintool.mail.port = 25 -#admintool.mail.auth = false -#admintool.mail.username = no-reply@openaire.eu -#admintool.mail.from = no-reply@www.openaire.eu -#admintool.mail.password = -#admintool.google.secret = 6LezhVIUAAAAAP97HFoWsqU9R1zLKptnA4YBg8FX -#admintool.mongodb.host=localhost -#admintool.mongodb.port=27017 -#admintool.mongodb.database=openaireconnect -#admintool.mongodb.username=dnet8480 -#admintool.mongodb.password= - #static properties api.title = Uoa Admin Tools Documentation Swagger -api.description = Uoa Admin Tools is a service which is saving and serving helptexts and dynamic content -api.version = ${project.version} \ No newline at end of file +api.description = Uoa Admin Tools is a service which is saving and serving help-texts and dynamic content +api.version = ${project.version} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9bd7320..deaaeb6 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,19 +1,2 @@ -#mongodb -#beta -#spring.data.mongodb.host=beta.services.openaire.eu -#spring.data.mongodb.port=27017 -#spring.data.mongodb.database=openaireconnect - -#production -#spring.data.mongodb.host=localhost -#spring.data.mongodb.port=27017 -#spring.data.mongodb.database=openaireconnect -#spring.data.mongodb.authentication-database=openaireconnect -#spring.data.mongodb.username=dnet8480 -#spring.data.mongodb.password=... - - -#dev -#spring.data.mongodb.host=localhost -#spring.data.mongodb.port=27017 -#spring.data.mongodb.database=openaire_admin \ No newline at end of file +# temp until refactoring the code in admin tools library +spring.main.allow-circular-references=true diff --git a/src/test/java/eu/dnetlib/uoaadmintools/NotificationsTests.java b/src/test/java/eu/dnetlib/uoaadmintools/NotificationsTests.java deleted file mode 100644 index 2d0e7e5..0000000 --- a/src/test/java/eu/dnetlib/uoaadmintools/NotificationsTests.java +++ /dev/null @@ -1,61 +0,0 @@ -package eu.dnetlib.uoaadmintools; - -import eu.dnetlib.uoaadmintools.dao.*; -import eu.dnetlib.uoaadmintools.entities.Notifications; -import eu.dnetlib.uoaadmintoolslibrary.dao.PortalDAO; -import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class NotificationsTests { - - @Autowired - private PortalDAO communityDAO; - - - @Autowired - private NotificationsDAO notificationsDAO; - - @Test - public void test() { - String mail = "sofie.mpl@gmail.com"; - String id="ni"; - System.out.println(notificationsDAO.findByPortalPid(id)); - - Notifications notifications = notificationsDAO.findByManagerEmailAndPortalPid(mail , id); - if(notifications == null){ - notifications = new Notifications(); - notifications.setPortalPid(id); - notifications.setManagerEmail(mail); - } - notifications.setNotifyForNewManagers(false); - notifications.setNotifyForNewSubscribers(false); - - notificationsDAO.save(notifications); - System.out.println(notificationsDAO.findByPortalPid(id)); - - - - - } - - @Test - public void remove() { - List communities = communityDAO.findAll(); - for(Portal com : communities){ - List notificationsList = notificationsDAO.findByPortalPid(com.getPid()); - for(Notifications notifications:notificationsList){ -// notificationsDAO.delete(notifications.getId()); - } - } - - } - -} diff --git a/src/test/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplicationTests.java b/src/test/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplicationTests.java deleted file mode 100644 index 61163ed..0000000 --- a/src/test/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplicationTests.java +++ /dev/null @@ -1,235 +0,0 @@ -package eu.dnetlib.uoaadmintools; - -import eu.dnetlib.uoaadmintools.dao.*; -import eu.dnetlib.uoaadmintoolslibrary.dao.*; -import eu.dnetlib.uoaadmintoolslibrary.emailSender.EmailSender; -import eu.dnetlib.uoaadmintoolslibrary.entities.Page; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Profile; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.ArrayList; -import java.util.List; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class UoaAdminToolsApplicationTests { - - @Autowired - private PortalDAO communityDAO; - - @Autowired - private EntityDAO entityDAO; - - @Autowired - private PageDAO pageDAO; - - @Autowired - private PageHelpContentDAO pageHelpContentDAO; - - @Autowired - private DivIdDAO divIdDAO; - - @Autowired - private StatisticsDAO statisticsDAO; - - @Autowired - private SubscriberDAO subscriberDAO; - - @Autowired - private PortalSubscribersDAO portalSubscribersDAO; - - @Autowired - private EmailSender emailSender; -/* - - @Test - public void createAllEntities() { - Map entities = new HashMap<>(); - entities.put("Publication", "publication"); - entities.put("Research Data", "dataset"); - entiites.put("Software", "software"); - entities.put("Project", "project"); - entities.put("Organization", "organization"); - entities.put("Content Provider", "datasource"); - - for(entry entr : entities.entrySet()) { - Entity entity = new Entity(); - entity.setName(entr.getKey()); - entity.setPid(entr.getValue()); - entityDAO.save(entity); - } - } - - @Test - public void createAllPages() { - String publication = entityDAO.findByPid("publication").getId(); - String dataset = entityDAO.findByPid("dataset").getId(); - String software = entityDAO.findByPid("software").getId(); - String project = entityDAO.findByPid("project").getId(); - String organization = entityDAO.findByPid("organization").getId(); - String datasource = entityDAO.findByPid("datasource").getId(); - - - Map> pages = new HashMap<>(); - pages.put("Search Publications", new ArrayList<>()); - pages.get("Search Publications").add() - - //entities.add("5a300ee4c97a7d2c000b9e9d"); // Publication - entities.add("5a319f8bc97a7d241ebddf75"); // Research Data - - - Page page = new Page(); - page.setName("Search Research Data"); - page.setRoute("/search/find/datasets"); - page.setType("search"); - page.setEntities(entities); - pageDAO.save(page); - } - - - - @Test - public void deleteAllEntities() { - List entities = entityDAO.findAll(); - for(Entity entity : entities) { - entityDAO.delete(entity.getId()); - } - } - - @Test - public void deleteAllCommunities() { - List communities = communityDAO.findAll(); - for(Community community : communities) { - communityDAO.delete(community.getId()); - } - } - - @Test - public void deleteAllPages() { - List pages = pageDAO.findAll(); - for(Page page : pages) { - pageDAO.delete(page.getId()); - } - } - - @Test - public void deleteAllPageContents() { - List pageHelpContents = pageHelpContentDAO.findAll(); - for(PageHelpContent pageHelpContent : pageHelpContents) { - pageHelpContentDAO.delete(pageHelpContent.getId()); - } - } - - @Test - public void createEntity() { - Entity entity = new Entity(); - entity.setName("Publication"); - entityDAO.save(entity); - } - - @Test - public void createPage() { - List entities = new ArrayList(); - //entities.add("5a300ee4c97a7d2c000b9e9d"); // Publication - entities.add("5a319f8bc97a7d241ebddf75"); // Research Data - - - Page page = new Page(); - page.setName("Search Research Data"); - page.setRoute("/search/find/datasets"); - page.setType("search"); - page.setEntities(entities); - pageDAO.save(page); - } - - @Test - public void createCommunity() { - Map entities = new HashMap(); - //entities.put("5a300ee4c97a7d2c000b9e9d", true); // Publication - entities.put("5a319f8bc97a7d241ebddf75", false); // Research Data - //entities.put("5a3064f9c97a7d4964408ee0", false); // Software - //entities.put("5a30652ec97a7d4964408ee1", false); // Organization - //entities.put("5a306539c97a7d4964408ee2", false); // Project - //entities.put("5a30654dc97a7d4964408ee3", false); // Content Provider - - Map pages = new HashMap(); - //pages.put("5a30191ac97a7d3a7fa77362", true); // Search Publications - pages.put("5a31a4cac97a7d28468f0f5c", false); // Search Research Data - //pages.put("5a30657ac97a7d4964408ee4", false); // Search Software - //pages.put("5a30eeffc97a7d74234434ad", false); // Search Organizations - //pages.put("5a30efd9c97a7d7609b77ca5", false); // Search Projects - //pages.put("5a30f08bc97a7d7609b77ca7", false); // Search Content Providers - - //pages.put("5a300f19c97a7d2c6e084b9f", false); // Test - - Community community = new Community(); - community.setName("Test Community"); - community.setEntities(entities); - community.setPages(pages); - communityDAO.save(community); - } -*/ - - @Test - public void contextLoads() { - } - -// @Test -// public void createStatistics() { -// statisticsDAO.deleteAll(); -// List communities = communityDAO.findAll(); -// for(Community c:communities){ -// -// String pid = c.getPid(); -// System.out.println("Community :" +pid); -// Statistics stats = statisticsDAO.findByPid(pid); -// if(stats == null){ -// Statistics statistics = new Statistics(pid); -// statisticsDAO.save(statistics); -// System.out.println("Saved stats for :" +pid); -// } -// } -// -// } - -// @Test -// public void deleteStatistics() { -// statisticsDAO.deleteAll(); -// } - @Test - public void createCommunitySubscribers() { - -// List communities = communityDAO.findAll(); -// for(Community c:communities){ -// String pid = c.getPid(); -// System.out.println("Community :" +pid); -// PortalSubscribers communitySubscribers= portalSubscribersDAO.findByPid(pid); -// if(communitySubscribers == null){ -// communitySubscribers = new PortalSubscribers(pid); -// portalSubscribersDAO.save(communitySubscribers); -// System.out.println("Saved community subscribers for :" +pid); -// } -// } - } - -// @Test -// public void testPages() { -// -// System.out.println( pageDAO.findByConnect(false).size()); -// for (Page p: pageDAO.findByConnect(false) ){ -// System.out.println(p.getRoute()+" Con: "+p.getConnect()+" Op: "+p.getOpenaire()); -// } -// } - - @Test - public void test() { - String mail = "kgalouni@di.uoa.gr"; - List mails = new ArrayList<>(); - mails.add(mail); - emailSender.send(mails, "Test Subject", "Test Body", false); - } -}