diff --git a/pom.xml b/pom.xml index 5f82f829369a0e53cad70c5eea1804fe10dc0841..51120dec5649e3dee5ec64f7514c6e2c26111f0f 100644 --- a/pom.xml +++ b/pom.xml @@ -47,11 +47,18 @@ <spring-data-jpa.version>1.10.11.RELEASE</spring-data-jpa.version> <spring-boot-starter-actuator.version>1.4.7.RELEASE</spring-boot-starter-actuator.version> <aspectjweaver.version>1.8.9</aspectjweaver.version> - <woken-messages.version>2.1.8</woken-messages.version> + <woken-messages.version>2.2.4</woken-messages.version> <javax-inject.version>1</javax-inject.version> - <akka.version>2.5.8</akka.version> + <akka.version>2.5.9</akka.version> <spring-context.version>4.3.4.RELEASE</spring-context.version> <protobuf-java.version>3.1.0</protobuf-java.version> + + <scala.epoch.version>2.11</scala.epoch.version> + <scala.release.version>2.11.11</scala.release.version> + + <scala.zinc.version>1.1.0</scala.zinc.version> + <scala.plugin.macro.version>2.1.1</scala.plugin.macro.version> + </properties> <repositories> @@ -210,6 +217,19 @@ <artifactId>protobuf-java</artifactId> <version>${protobuf-java.version}</version> </dependency> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-library</artifactId> + <version>${scala.release.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-reflect</artifactId> + <version>${scala.release.version}</version> + <scope>compile</scope> + </dependency> </dependencies> <pluginRepositories> @@ -276,10 +296,13 @@ </execution> </executions> </plugin> + <!-- Disable default compiler. --> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> + <skip>true</skip> + <skipMain>true</skipMain> <source>${java.version}</source> <target>${java.version}</target> </configuration> @@ -321,6 +344,60 @@ <artifactId>sonar-maven-plugin</artifactId> <version>${sonar-maven-plugin.version}</version> </plugin> + <plugin> + <groupId>com.carrotgarden.maven</groupId> + <artifactId>scalor-maven-plugin_2.12</artifactId> + <version>1.0.3.20180115180433</version> + <configuration> + <!-- Required bridge. --> + <defineBridge> + <dependency> + <groupId>org.scala-sbt</groupId> + <artifactId>compiler-bridge_${scala.epoch.version}</artifactId> + <version>${scala.zinc.version}</version> + </dependency> + </defineBridge> + + <!-- Required compiler. --> + <defineCompiler> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-compiler</artifactId> + <version>${scala.release.version}</version> + </dependency> + </defineCompiler> + <definePluginList></definePluginList> + </configuration> + <executions> + <execution> + + <!-- Subset of available. --> + <goals> + + <!-- Setup Eclipse plugin. --> + <goal>eclipse-config</goal> + + <!-- Remove build state cache. --> + <goal>clean-main</goal> + <goal>clean-test</goal> + + <!-- Add compilation sources. --> + <goal>register-main</goal> + <goal>register-test</goal> + + <!-- Compile sources. --> + <goal>compile-main</goal> + <goal>compile-test</goal> + + <!-- Link runtime script. --> + <!--goal>link-scala-js-main</goal> + <goal>link-scala-js-test</goal--> + + </goals> + + </execution> + </executions> + </plugin> </plugins> </build> diff --git a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java index f6fa19a65f99dac8a28d567a4a18b413576a1443..bd597509931962be9e68063441231268bc401855 100644 --- a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java +++ b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java @@ -46,7 +46,7 @@ public class ExperimentActor extends AbstractActor { experiment.setHasServerError(true); experiment.setResult(queryResult.error().get()); } else { - experiment.setResult(queryResult.data().get()); + experiment.setResult(queryResult.data().get().compactPrint()); } experiment.setFinished(Date.from(queryResult.timestamp().toInstant())); experimentRepository.save(experiment); diff --git a/src/main/java/eu/hbp/mip/controllers/MiningApi.java b/src/main/java/eu/hbp/mip/controllers/MiningApi.java index 5d87770ad8a65846e3216f8e26cee34de03cb4ec..97535eceb5232e25ba2bdb7e2753b68cf7d8ccec 100644 --- a/src/main/java/eu/hbp/mip/controllers/MiningApi.java +++ b/src/main/java/eu/hbp/mip/controllers/MiningApi.java @@ -71,10 +71,10 @@ public class MiningApi { Mining mining = new Mining( result.jobId(), result.node(), - result.function(), + result.algorithm(), result.shape(), Date.from(result.timestamp().toInstant()), - result.data().get() + result.data().get().compactPrint() ); return ResponseEntity.ok(gson.toJson(mining.jsonify())); } diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java index 17770f1a50b740f102157d2c0a54c819c860233a..e3eeadaf38b5285a1b10bbc41eca64da1fc33cb9 100644 --- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java +++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java @@ -9,6 +9,7 @@ import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import eu.hbp.mip.configuration.SecurityConfiguration; import eu.hbp.mip.model.Algorithm; import eu.hbp.mip.model.MiningQuery; import eu.hbp.mip.model.Variable; @@ -47,6 +48,8 @@ public class VariablesApi { @Value("#{'${spring.featuresDatasource.main-table:features}'}") private String featuresMainTable; + @Autowired + private SecurityConfiguration securityConfiguration; @ApiOperation(value = "Get variables", response = List.class, responseContainer = "List") @Cacheable("variables") diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java index 5412c38dbb5f5c65a788fde8b9d02039b333e945..2410eecd0a0eb75b673ff74fde02a4816561ca1f 100644 --- a/src/main/java/eu/hbp/mip/model/Experiment.java +++ b/src/main/java/eu/hbp/mip/model/Experiment.java @@ -86,9 +86,9 @@ public class Experiment { */ } - public ExperimentQuery prepareQuery() { + public ExperimentQuery prepareQuery(String user) { if (model == null || model.getQuery() == null) - return new ExperimentQuery(null, null, null, null, null, null); + return new ExperimentQuery(null, null, null, null, null, null, null, null, null, null, null); List<AlgorithmSpec> algorithms = new LinkedList<>(); Type algoList = new TypeToken<LinkedList<eu.hbp.mip.model.Algorithm>>(){}.getType(); @@ -114,8 +114,9 @@ public class Experiment { scala.collection.immutable.List<ValidationSpec> validationsSeq = JavaConversions.asScalaBuffer(validations).toList(); String filters = model.getQuery().getFilters(); + UserId userId = new UserId(user); - return new ExperimentQuery(variablesSeq, covariablesSeq, groupingSeq, filters, algorithmsSeq, validationsSeq); + return new ExperimentQuery(user, variablesSeq, covariablesSeq, groupingSeq, filters, algorithmsSeq, validationsSeq); } diff --git a/src/main/java/eu/hbp/mip/model/Mining.java b/src/main/java/eu/hbp/mip/model/Mining.java index 354fbee53ac0c040ae50f34808f11fece7588970..46cfd6c3ec64b0a7e552cd4f6e210a24a746fc1e 100644 --- a/src/main/java/eu/hbp/mip/model/Mining.java +++ b/src/main/java/eu/hbp/mip/model/Mining.java @@ -8,12 +8,12 @@ public class Mining { private static final Gson gson = new Gson(); - private String jobId; - private String node; - private String function; - private String shape; - private Date timestamp; - private String data; + private final String jobId; + private final String node; + private final String function; + private final String shape; + private final Date timestamp; + private final String data; public Mining(String jobId, String node, String function, String shape, Date timestamp, String data) { this.jobId = jobId; diff --git a/src/main/java/eu/hbp/mip/model/MiningQuery.java b/src/main/java/eu/hbp/mip/model/MiningQuery.java index 41a9cf74cb08de8d6ec427af2a6c98ae2fa837c3..2ef84a8eaa463c4959d4659b27bb615abb026f11 100644 --- a/src/main/java/eu/hbp/mip/model/MiningQuery.java +++ b/src/main/java/eu/hbp/mip/model/MiningQuery.java @@ -1,6 +1,7 @@ package eu.hbp.mip.model; import com.google.gson.Gson; +import eu.hbp.mip.woken.messages.external.UserId; import eu.hbp.mip.woken.messages.external.VariableId; import eu.hbp.mip.utils.TypesConvert; @@ -12,19 +13,25 @@ import java.util.List; */ public class MiningQuery { + private String user; private List<Variable> variables; private List<Variable> covariables; private List<Variable> grouping; private String filters; private Algorithm algorithm; - public MiningQuery() { + public MiningQuery(String user) { + this.user = user; this.variables = new LinkedList<>(); this.covariables = new LinkedList<>(); this.grouping = new LinkedList<>(); this.filters = ""; } + public String getUser() { + return user; + } + public List<Variable> getVariables() { return variables; } @@ -79,8 +86,9 @@ public class MiningQuery { scala.collection.immutable.List<VariableId> variablesSeq = TypesConvert.variablesToVariableIds(variables); scala.collection.immutable.List<VariableId> covariablesSeq = TypesConvert.variablesToVariableIds(covariables); scala.collection.immutable.List<VariableId> groupingSeq = TypesConvert.variablesToVariableIds(grouping); + UserId userId = new UserId(user); - return new eu.hbp.mip.woken.messages.external.MiningQuery( + return new eu.hbp.mip.woken.messages.external.MiningQuery(userId, variablesSeq, covariablesSeq, groupingSeq, filters, scalaAlgorithm); }