Skip to content
Snippets Groups Projects
Commit 23206169 authored by Ludovic Claude's avatar Ludovic Claude
Browse files

Update woken-messages to 2.3.0

parent 2b7c3ab7
No related branches found
No related tags found
No related merge requests found
......@@ -47,7 +47,7 @@
<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.2.4</woken-messages.version>
<woken-messages.version>2.3.0</woken-messages.version>
<javax-inject.version>1</javax-inject.version>
<akka.version>2.5.9</akka.version>
<spring-context.version>4.3.4.RELEASE</spring-context.version>
......@@ -366,7 +366,7 @@
<version>${scala.release.version}</version>
</dependency>
</defineCompiler>
<definePluginList></definePluginList>
<definePluginList/>
</configuration>
<executions>
<execution>
......
package eu.hbp.mip.akka;
import akka.actor.AbstractActor;
import eu.hbp.mip.woken.messages.external.QueryResult;
import eu.hbp.mip.woken.messages.query.QueryResult;
import eu.hbp.mip.model.Experiment;
import eu.hbp.mip.repositories.ExperimentRepository;
import org.apache.log4j.Logger;
......
......@@ -19,8 +19,8 @@ import eu.hbp.mip.repositories.ExperimentRepository;
import eu.hbp.mip.repositories.ModelRepository;
import eu.hbp.mip.utils.HTTPUtil;
import eu.hbp.mip.utils.JSONUtil;
import eu.hbp.mip.woken.messages.external.MethodsQuery$;
import eu.hbp.mip.woken.messages.external.MethodsResponse;
import eu.hbp.mip.woken.messages.query.MethodsQuery$;
import eu.hbp.mip.woken.messages.query.MethodsResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
......@@ -82,10 +82,10 @@ public class ExperimentApi {
private ExperimentRepository experimentRepository;
@Autowired
public ActorSystem actorSystem;
private ActorSystem actorSystem;
@Autowired
public String wokenRefPath;
private String wokenRefPath;
@ApiOperation(value = "Send a request to the workflow to run an experiment", response = Experiment.class)
......@@ -303,8 +303,10 @@ public class ExperimentApi {
}
private void sendExperiment(Experiment experiment) throws MalformedURLException {
User user = securityConfiguration.getUser();
// this runs in the background. For future optimization: use a thread pool
final eu.hbp.mip.woken.messages.external.ExperimentQuery experimentQuery = experiment.prepareQuery();
final eu.hbp.mip.woken.messages.query.ExperimentQuery experimentQuery = experiment.prepareQuery(user.getUsername());
LOGGER.info("Akka is trying to reach remote " + wokenRefPath);
ActorSelection wokenActor = actorSystem.actorSelection(wokenRefPath);
......
......@@ -6,7 +6,7 @@ import akka.pattern.Patterns;
import akka.util.Timeout;
import com.google.gson.Gson;
import eu.hbp.mip.model.Mining;
import eu.hbp.mip.woken.messages.external.QueryResult;
import eu.hbp.mip.woken.messages.query.QueryResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.log4j.Logger;
......
......@@ -12,6 +12,7 @@ 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.User;
import eu.hbp.mip.model.Variable;
import io.swagger.annotations.*;
import org.apache.log4j.Logger;
......@@ -151,13 +152,15 @@ public class VariablesApi {
) {
LOGGER.info("Get query for histograms");
User user = securityConfiguration.getUser();
String sqlQuery = String.format(
"SELECT histogram_groupings FROM meta_variables where upper(target_table)='%s'", featuresMainTable.toUpperCase());
SqlRowSet data = metaJdbcTemplate.queryForRowSet(sqlQuery);
data.next();
String histogramGroupings = data.getString("histogram_groupings");
MiningQuery query = new MiningQuery();
MiningQuery query = new MiningQuery(user.getUsername());
query.addVariable(new Variable(code));
List<String> newGroups = Arrays.asList(histogramGroupings.split(","));
List<Variable> groupings = query.getGrouping();
......
package eu.hbp.mip.model;
import ch.chuv.lren.mip.portal.WokenConversions;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.annotations.Expose;
import com.google.gson.reflect.TypeToken;
import eu.hbp.mip.woken.messages.external.ExperimentQuery;
import eu.hbp.mip.woken.messages.external.*;
import eu.hbp.mip.woken.messages.datasets.DatasetId;
import eu.hbp.mip.woken.messages.query.ExperimentQuery;
import eu.hbp.mip.woken.messages.query.*;
import eu.hbp.mip.utils.TypesConvert;
import eu.hbp.mip.woken.messages.query.filters.FilterRule;
import eu.hbp.mip.woken.messages.variables.FeatureIdentifier;
import org.hibernate.annotations.Cascade;
import scala.None$;
import scala.Option;
import scala.collection.JavaConversions;
import javax.persistence.*;
......@@ -104,19 +110,28 @@ public class Experiment {
validations.add(new ValidationSpec(v.getCode(), TypesConvert.algoParamsToScala(v.getParameters())));
}
scala.collection.immutable.List<VariableId> variablesSeq =
TypesConvert.variablesToVariableIds(model.getQuery().getVariables());
scala.collection.immutable.List<VariableId> covariablesSeq =
TypesConvert.variablesToVariableIds(model.getQuery().getCovariables());
scala.collection.immutable.List<VariableId> groupingSeq =
TypesConvert.variablesToVariableIds(model.getQuery().getGrouping());
scala.collection.immutable.List<FeatureIdentifier> variablesSeq =
TypesConvert.variablesToIdentifiers(model.getQuery().getVariables());
scala.collection.immutable.List<FeatureIdentifier> covariablesSeq =
TypesConvert.variablesToIdentifiers(model.getQuery().getCovariables());
scala.collection.immutable.List<FeatureIdentifier> groupingSeq =
TypesConvert.variablesToIdentifiers(model.getQuery().getGrouping());
scala.collection.immutable.List<AlgorithmSpec> algorithmsSeq = JavaConversions.asScalaBuffer(algorithms).toList();
scala.collection.immutable.List<ValidationSpec> validationsSeq = JavaConversions.asScalaBuffer(validations).toList();
String filters = model.getQuery().getFilters();
// TODO - set values
WokenConversions conv = new WokenConversions();
scala.collection.immutable.Set<DatasetId> trainingDatasets = conv.toDatasets("");
scala.collection.immutable.Set<DatasetId> testingDatasets = conv.toDatasets("");
scala.collection.immutable.Set<DatasetId> validationDatasets = conv.toDatasets("");
String filtersJson = model.getQuery().getFilters();
Option<FilterRule> filters = conv.toFilterRule(filtersJson);
UserId userId = new UserId(user);
return new ExperimentQuery(user, variablesSeq, covariablesSeq, groupingSeq, filters, algorithmsSeq, validationsSeq);
return new ExperimentQuery(userId, variablesSeq, covariablesSeq, groupingSeq, filters,
trainingDatasets, testingDatasets, algorithmsSeq, validationDatasets,
validationsSeq, None$.empty());
}
......
package eu.hbp.mip.model;
import ch.chuv.lren.mip.portal.WokenConversions;
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;
import eu.hbp.mip.woken.messages.datasets.DatasetId;
import eu.hbp.mip.woken.messages.query.UserId;
import eu.hbp.mip.woken.messages.query.filters.FilterRule;
import eu.hbp.mip.woken.messages.variables.FeatureIdentifier;
import scala.Option;
import java.util.LinkedList;
import java.util.List;
......@@ -78,18 +82,27 @@ public class MiningQuery {
this.algorithm = algorithm;
}
public eu.hbp.mip.woken.messages.external.MiningQuery prepareQuery() {
public eu.hbp.mip.woken.messages.query.MiningQuery prepareQuery() {
eu.hbp.mip.woken.messages.external.AlgorithmSpec scalaAlgorithm = new eu.hbp.mip.woken.messages.external.AlgorithmSpec(
eu.hbp.mip.woken.messages.query.AlgorithmSpec scalaAlgorithm = new eu.hbp.mip.woken.messages.query.AlgorithmSpec(
algorithm.getCode(), TypesConvert.algoParamsToScala(algorithm.getParameters()));
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);
scala.collection.immutable.List<FeatureIdentifier> variablesSeq =
TypesConvert.variablesToIdentifiers(getVariables());
scala.collection.immutable.List<FeatureIdentifier> covariablesSeq =
TypesConvert.variablesToIdentifiers(getCovariables());
scala.collection.immutable.List<FeatureIdentifier> groupingSeq =
TypesConvert.variablesToIdentifiers(getGrouping());
UserId userId = new UserId(user);
return new eu.hbp.mip.woken.messages.external.MiningQuery(userId,
variablesSeq, covariablesSeq, groupingSeq, filters, scalaAlgorithm);
// TODO - set values
WokenConversions conv = new WokenConversions();
scala.collection.immutable.Set<DatasetId> datasets = conv.toDatasets("");
String filtersJson = getFilters();
Option<FilterRule> filters = conv.toFilterRule(filtersJson);
return new eu.hbp.mip.woken.messages.query.MiningQuery(userId,
variablesSeq, covariablesSeq, groupingSeq, filters, datasets, scalaAlgorithm);
}
@Override
......
package eu.hbp.mip.utils;
import eu.hbp.mip.woken.messages.external.CodeValue;
import eu.hbp.mip.woken.messages.external.VariableId;
import eu.hbp.mip.woken.messages.query.CodeValue;
import eu.hbp.mip.woken.messages.variables.FeatureIdentifier;
import eu.hbp.mip.woken.messages.variables.VariableId;
import eu.hbp.mip.model.AlgorithmParam;
import eu.hbp.mip.model.Variable;
import scala.collection.JavaConversions;
......@@ -15,8 +16,8 @@ import java.util.stream.Collectors;
*/
public class TypesConvert {
public static scala.collection.immutable.List<VariableId> variablesToVariableIds(List<Variable> vars) {
List<VariableId> varIds = new LinkedList<>();
public static scala.collection.immutable.List<FeatureIdentifier> variablesToIdentifiers(List<Variable> vars) {
List<FeatureIdentifier> varIds = new LinkedList<>();
for (Variable v: vars) {
varIds.add(new VariableId(v.getCode()));
}
......
package ch.chuv.lren.mip.portal
import eu.hbp.mip.woken.messages.datasets.DatasetId
import eu.hbp.mip.woken.messages.query.filters.FilterRule
import eu.hbp.mip.woken.messages.query.filters.queryFiltersProtocol._
import org.springframework.stereotype.Component
import spray.json._
@Component
class WokenConversions {
def toFilterRule(json: String): Option[FilterRule] = Some(json).map(_.parseJson.convertTo[FilterRule])
def toDatasets(commaSeparatedSets: String): Set[DatasetId] = commaSeparatedSets match {
case "" => Set()
case _ => commaSeparatedSets.split(",").map(DatasetId).toSet
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment