diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java index 0dd28c1d6c4fde45164d9077aa5c9be3c90f57fb..378bb5126c27b68a138dc5be07bec1c0b13f8145 100644 --- a/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java +++ b/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java @@ -18,7 +18,7 @@ public class ExperimentDTO { private UUID uuid; private String name; - private String createdBy; + private UserDTO createdBy; private Date created; private Date updated; private Date finished; @@ -41,7 +41,7 @@ public class ExperimentDTO { this.created = experimentDAO.getCreated(); this.updated = experimentDAO.getUpdated(); this.finished = experimentDAO.getFinished(); - this.createdBy = experimentDAO.getCreatedBy().getUsername(); + this.createdBy = new UserDTO(experimentDAO.getCreatedBy()); this.name = experimentDAO.getName(); if(includeResult){ this.result = JsonConverters.convertJsonStringToObject(String.valueOf(experimentDAO.getResult()), new ArrayList<>().getClass()); diff --git a/src/main/java/eu/hbp/mip/models/DTOs/UserDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/UserDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..7550807246c05be32e70f67c544124aa96f5d292 --- /dev/null +++ b/src/main/java/eu/hbp/mip/models/DTOs/UserDTO.java @@ -0,0 +1,31 @@ +package eu.hbp.mip.models.DTOs; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.google.gson.annotations.SerializedName; +import eu.hbp.mip.models.DAOs.ExperimentDAO; +import eu.hbp.mip.models.DAOs.UserDAO; +import eu.hbp.mip.utils.JsonConverters; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class UserDTO { + + @SerializedName("username") + private String username; + + @SerializedName("fullname") + private String fullname; + + public UserDTO(){ + + } + + public UserDTO(UserDAO userdao) { + this.username = userdao.getUsername(); + this.fullname = userdao.getFullname(); + } +} + diff --git a/src/main/resources/db/migration/V7_1__NewExperimentResultFormat.sql b/src/main/resources/db/migration/V7_1__NewExperimentResultFormat.sql index d124f94583046e2ddbab071fb38ca48e1c71f03e..e1d5f12c4ce1dd9107f3a4cb1927664cfe971feb 100644 --- a/src/main/resources/db/migration/V7_1__NewExperimentResultFormat.sql +++ b/src/main/resources/db/migration/V7_1__NewExperimentResultFormat.sql @@ -1 +1,15 @@ -UPDATE experiment SET result = result::json #>>'{0,result}' WHERE (algorithm::json->>'type') <> 'workflow'; \ No newline at end of file +CREATE OR REPLACE FUNCTION ISJSON(p_json text) + RETURNS boolean +AS +$$ +BEGIN + RETURN (p_json::json is not null); +EXCEPTION + WHEN others THEN + RETURN false; +END; +$$ +language plpgsql +immutable; +UPDATE experiment SET result = result::json #>>'{0,result}' WHERE (algorithm::json->>'type') <> 'workflow' and ISJSON(result); +UPDATE experiment SET result = '', status = 'error' WHERE NOT ISJSON(result);