diff --git a/pom.xml b/pom.xml index ccfd0ef660d6afc2086d31780f7079ef8c82e6aa..269b56a2860bbd88fbf4118fa18658d888c64f79 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,7 @@ <hibernate-entitymanager.version>4.3.8.Final</hibernate-entitymanager.version> <spring-data-jpa.version>1.10.2.RELEASE</spring-data-jpa.version> <spring-boot-starter-actuator.version>1.4.0.RELEASE</spring-boot-starter-actuator.version> + <aspectjweaver.version>1.8.9</aspectjweaver.version> </properties> <dependencies> @@ -160,6 +161,11 @@ <artifactId>flyway-core</artifactId> <version>${flyway-core.version}</version> </dependency> + <dependency> + <groupId>org.aspectj</groupId> + <artifactId>aspectjweaver</artifactId> + <version>${aspectjweaver.version}</version> + </dependency> </dependencies> <pluginRepositories> diff --git a/src/main/java/eu/hbp/mip/MIPApplication.java b/src/main/java/eu/hbp/mip/MIPApplication.java index 01aa68be5c85641589b3b2fa23d0f054c7201011..ef20c9f9ffd625d0ef82844897455f4f8326fc97 100644 --- a/src/main/java/eu/hbp/mip/MIPApplication.java +++ b/src/main/java/eu/hbp/mip/MIPApplication.java @@ -6,10 +6,8 @@ package eu.hbp.mip; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cache.annotation.EnableCaching; @SpringBootApplication -@EnableCaching public class MIPApplication { public static void main(String[] args) { diff --git a/src/main/java/eu/hbp/mip/configuration/CacheConfiguration.java b/src/main/java/eu/hbp/mip/configuration/CacheConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..b7300fc257fcef4afd29421d8ccef64aeb0a11dd --- /dev/null +++ b/src/main/java/eu/hbp/mip/configuration/CacheConfiguration.java @@ -0,0 +1,13 @@ +package eu.hbp.mip.configuration; + +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Configuration; + +/** + * Created by mirco on 07.11.16. + */ + +@Configuration +@EnableCaching +public class CacheConfiguration { +} diff --git a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java index 475fd93d377ae52242194b3a3639f8bd29a61585..22d92badf263a8431a2efe9ca7eeda5516173f8a 100644 --- a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java +++ b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java @@ -1,15 +1,14 @@ package eu.hbp.mip.configuration; +import eu.hbp.mip.utils.DataUtil; import org.flywaydb.core.Flyway; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.orm.jpa.EntityScan; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; -import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.*; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.orm.jpa.JpaVendorAdapter; @@ -60,6 +59,9 @@ public class PersistenceConfiguration { return new JdbcTemplate(scienceDataSource()); } + @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}") + private String scienceMainTable; + @Bean(name = "entityManagerFactory") @DependsOn("flyway") public LocalContainerEntityManagerFactoryBean entityManagerFactory() { @@ -78,4 +80,10 @@ public class PersistenceConfiguration { return flyway; } + @Bean(name = "dataUtil") + @Scope("singleton") + public DataUtil dataUtil() { + return new DataUtil(scienceJdbcTemplate(), scienceMainTable); + } + } diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java index 57609b5bb4b9515e7a6b28cedbb88c648156ab17..650b8e37ec27ed762bbbb538dfbf44da60805c91 100644 --- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java @@ -17,10 +17,8 @@ import io.swagger.annotations.*; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.*; import java.io.IOException; @@ -55,11 +53,8 @@ public class ModelsApi { private VariableRepository variableRepository; @Autowired - @Qualifier("scienceJdbcTemplate") - private JdbcTemplate scienceJdbcTemplate; - - @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}") - private String scienceMainTable; + @Qualifier("dataUtil") + public DataUtil dataUtil; @ApiOperation(value = "Get models", response = Model.class, responseContainer = "List") @@ -290,7 +285,7 @@ public class ModelsApi { Gson gson = new Gson(); JsonObject jsonModel = gson.fromJson(gson.toJson(model, Model.class), JsonObject.class); jsonModel.get("dataset").getAsJsonObject() - .add("data", new DataUtil(scienceJdbcTemplate, scienceMainTable).getDataFromVariables(allVars)); + .add("data", dataUtil.getDataFromVariables(allVars)); return gson.fromJson(jsonModel, Model.class); } diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java index a0938937a5eaf0da1ea0c5fcffe44ac9b6264a16..d88d8a0b6ff44a8c36203a08fddce67dbe2ac1e7 100644 --- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java @@ -15,9 +15,7 @@ import io.swagger.annotations.*; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -39,11 +37,9 @@ public class RequestsApi { private static final Logger LOGGER = Logger.getLogger(RequestsApi.class); @Autowired - @Qualifier("scienceJdbcTemplate") - private JdbcTemplate scienceJdbcTemplate; + @Qualifier("dataUtil") + public DataUtil dataUtil; - @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}") - private String scienceMainTable; @ApiOperation(value = "Post a request", response = Dataset.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -103,7 +99,7 @@ public class RequestsApi { dataset.add("grouping", gson.toJsonTree(groupings)); dataset.add("header", gson.toJsonTree(covariables)); dataset.add("filter", gson.toJsonTree(filters)); - dataset.add("data", new DataUtil(scienceJdbcTemplate, scienceMainTable).getDataFromVariables(allVars)); + dataset.add("data", dataUtil.getDataFromVariables(allVars)); return ResponseEntity.ok(new Gson().fromJson(dataset, Object.class)); } diff --git a/src/main/java/eu/hbp/mip/controllers/StatsApi.java b/src/main/java/eu/hbp/mip/controllers/StatsApi.java index 3625219cfb722c45899e8d50b75d52836208025c..875e2a8443b2ad383820b4ad02262f65526836de 100644 --- a/src/main/java/eu/hbp/mip/controllers/StatsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/StatsApi.java @@ -15,9 +15,7 @@ import io.swagger.annotations.ApiResponses; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @@ -38,11 +36,9 @@ public class StatsApi { private ArticleRepository articleRepository; @Autowired - @Qualifier("scienceJdbcTemplate") - private JdbcTemplate scienceJdbcTemplate; + @Qualifier("dataUtil") + public DataUtil dataUtil; - @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}") - private String scienceMainTable; @ApiOperation(value = "Get general statistics", response = GeneralStats.class) @ApiResponses(value = {@ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @@ -54,7 +50,7 @@ public class StatsApi { stats.setUsers(userRepository.count()); stats.setArticles(articleRepository.count()); - stats.setVariables(new DataUtil(scienceJdbcTemplate, scienceMainTable).countVariables()); + stats.setVariables(dataUtil.countVariables()); return ResponseEntity.ok(stats); } diff --git a/src/main/java/eu/hbp/mip/utils/DataUtil.java b/src/main/java/eu/hbp/mip/utils/DataUtil.java index 27031ec23c8120051bfe2066c859c4832266e36f..636d8bf450b8da1d46c071eb3a321d92e1d682ae 100644 --- a/src/main/java/eu/hbp/mip/utils/DataUtil.java +++ b/src/main/java/eu/hbp/mip/utils/DataUtil.java @@ -2,7 +2,6 @@ package eu.hbp.mip.utils; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import org.springframework.cache.annotation.Cacheable; import org.springframework.jdbc.core.JdbcTemplate; import java.util.List; @@ -25,7 +24,7 @@ public class DataUtil { this.scienceMainTable = scienceMainTable; } - @Cacheable("varsdata") + // @Cacheable("varsdata") public JsonObject getDataFromVariables(List<String> vars) { JsonObject data = new JsonObject(); @@ -52,7 +51,7 @@ public class DataUtil { return data; } - @Cacheable("colscount") + // @Cacheable("colscount") public long countVariables() { long count = jdbcTemplate.queryForObject( @@ -61,7 +60,7 @@ public class DataUtil { return count; } - @Cacheable("rowscount") + // @Cacheable("rowscount") public long countAdniRows() { long count = jdbcTemplate.queryForObject(