diff --git a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java index da7cc21f83418f6caccac53f78e13b669c6e2283..19a1fc60630dd8768574b35944ae150d3cb29903 100644 --- a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java +++ b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java @@ -43,7 +43,7 @@ public class ExperimentActor extends UntypedActor { return; } experiment.setResult(queryResult.data().get()); - experiment.setFinished(new Date()); + experiment.setFinished(Date.from(queryResult.timestamp().toInstant())); experimentRepository.save(experiment); LOGGER.info("Experiment "+ uuid +" updated (finished)"); getContext().stop(getSelf()); diff --git a/src/main/java/eu/hbp/mip/controllers/MiningApi.java b/src/main/java/eu/hbp/mip/controllers/MiningApi.java index 46a0857dbd8116f3366eabaeb4addcce964a9752..7b9b395c2d6fe0b9a2144b476dbf9f7cebfb62e8 100644 --- a/src/main/java/eu/hbp/mip/controllers/MiningApi.java +++ b/src/main/java/eu/hbp/mip/controllers/MiningApi.java @@ -4,6 +4,7 @@ import akka.actor.ActorSelection; import akka.actor.ActorSystem; import akka.pattern.Patterns; import akka.util.Timeout; +import eu.hbp.mip.model.Mining; import eu.hbp.mip.woken.messages.external.QueryResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -21,6 +22,7 @@ import scala.concurrent.Future; import scala.concurrent.duration.Duration; import java.io.IOException; +import java.sql.Date; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @@ -64,7 +66,15 @@ public class MiningApi { LOGGER.error(result.error().get()); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("{\"error\":\"" + result.error().get() + "\"}"); } else { - return ResponseEntity.ok(result.data().get()); + Mining mining = new Mining( + result.jobId(), + result.node(), + result.function(), + result.shape(), + Date.from(result.timestamp().toInstant()), + result.data().get() + ); + return ResponseEntity.ok(mining.jsonify()); } } diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java index 7414f3461c9f666556bcb7a6af64fabb5368b741..fa94e45ef1c67835c31531f912182af1d95f9eb3 100644 --- a/src/main/java/eu/hbp/mip/model/Experiment.java +++ b/src/main/java/eu/hbp/mip/model/Experiment.java @@ -12,7 +12,6 @@ import eu.hbp.mip.woken.messages.external.*; import eu.hbp.mip.utils.TypesConvert; import org.hibernate.annotations.Cascade; import scala.collection.JavaConverters; -import scala.collection.Seq; import javax.persistence.*; import java.lang.reflect.Type; diff --git a/src/main/java/eu/hbp/mip/model/Mining.java b/src/main/java/eu/hbp/mip/model/Mining.java new file mode 100644 index 0000000000000000000000000000000000000000..0bb70bf433361e8f0fcf15cbd78cdf2a71bfcd88 --- /dev/null +++ b/src/main/java/eu/hbp/mip/model/Mining.java @@ -0,0 +1,67 @@ +package eu.hbp.mip.model; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import java.util.Date; + +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; + + public Mining(String jobId, String node, String function, String shape, Date timestamp, String data) { + this.jobId = jobId; + this.node = node; + this.function = function; + this.shape = shape; + this.timestamp = timestamp; + this.data = data; + } + + public String getJobId() { + return jobId; + } + + public String getNode() { + return node; + } + + public String getFunction() { + return function; + } + + public String getShape() { + return shape; + } + + public Date getTimestamp() { + return timestamp; + } + + public String getData() { + return data; + } + + public JsonObject jsonify() { + JsonObject exp = gson.toJsonTree(this).getAsJsonObject(); + JsonParser parser = new JsonParser(); + + if (this.data != null) { + exp.remove("data"); + JsonArray jsonResult = parser.parse(this.data).getAsJsonArray(); + exp.add("data", jsonResult); + } + + return exp; + } + +}