From b5ee45796943f1ed9c49640613acac3cd4fa2432 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 22 Sep 2022 15:50:39 +0200 Subject: [PATCH] added measure at the level of the result. Changed the way the measures are dumped since the previous serialization was not able to describe in the correct way the current association measure and value for the indicators (for BipFinder) --- .../eu/dnetlib/dhp/oa/model/Indicator.java | 3 +- .../java/eu/dnetlib/dhp/oa/model/Measure.java | 60 ++++++++++--------- .../java/eu/dnetlib/dhp/oa/model/Result.java | 13 ++++ .../dhp/oa/graph/dump/ResultMapper.java | 40 +++++++++---- pom.xml | 2 +- 5 files changed, 76 insertions(+), 42 deletions(-) diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Indicator.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Indicator.java index cce0b29..a627c86 100644 --- a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Indicator.java +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Indicator.java @@ -13,7 +13,6 @@ public class Indicator implements Serializable { @JsonSchema(description = "The measures for that indicator") private List measure; - public String getId() { return id; } @@ -30,7 +29,7 @@ public class Indicator implements Serializable { this.measure = measure; } - public static Indicator newInstance(String id, List measure){ + public static Indicator newInstance(String id, List measure) { Indicator indicator = new Indicator(); indicator.id = id; indicator.measure = measure; diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Measure.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Measure.java index c1ee626..3a210cc 100644 --- a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Measure.java +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Measure.java @@ -1,47 +1,49 @@ + package eu.dnetlib.dhp.oa.model; +import java.io.Serializable; + +import org.apache.commons.lang3.StringUtils; + import com.fasterxml.jackson.annotation.JsonIgnore; import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; -import org.apache.commons.lang3.StringUtils; - -import java.io.Serializable; /** * @author miriam.baglioni * @Date 03/08/22 */ public class Measure implements Serializable { - @JsonSchema(description = "The measure (i.e. class)") - private String key; + @JsonSchema(description = "The measure (i.e. class)") + private String key; - @JsonSchema(description = "The value for that measure") - private String value; + @JsonSchema(description = "The value for that measure") + private String value; - public String getKey() { - return key; - } + public String getKey() { + return key; + } - public void setKey(String key) { - this.key = key; - } + public void setKey(String key) { + this.key = key; + } - public String getValue() { - return value; - } + public String getValue() { + return value; + } - public void setValue(String value) { - this.value = value; - } + public void setValue(String value) { + this.value = value; + } - public static Measure newInstance(String key, String value) { - Measure mes = new Measure(); - mes.key = key; - mes.value = value; - return mes; - } + public static Measure newInstance(String key, String value) { + Measure mes = new Measure(); + mes.key = key; + mes.value = value; + return mes; + } - @JsonIgnore - public boolean isBlank() { - return StringUtils.isBlank(key) && StringUtils.isBlank(value); - } + @JsonIgnore + public boolean isBlank() { + return StringUtils.isBlank(key) && StringUtils.isBlank(value); + } } diff --git a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Result.java b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Result.java index 3d580fd..abcf77c 100644 --- a/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Result.java +++ b/dump-schema/src/main/java/eu/dnetlib/dhp/oa/model/Result.java @@ -4,6 +4,7 @@ package eu.dnetlib.dhp.oa.model; import java.io.Serializable; import java.util.List; +import com.fasterxml.jackson.annotation.JsonInclude; import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; /** @@ -168,6 +169,18 @@ public class Result implements Serializable { @JsonSchema(description = "Timestamp of last update of the record in OpenAIRE") private Long lastupdatetimestamp; + @JsonSchema(description = "Indicators computed for this result, for example UsageCount ones") + private List indicators; + + @JsonInclude(JsonInclude.Include.NON_NULL) + public List getIndicators() { + return indicators; + } + + public void setIndicators(List indicators) { + this.indicators = indicators; + } + public Long getLastupdatetimestamp() { return lastupdatetimestamp; } diff --git a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java index 05b39b2..588d3b4 100644 --- a/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java +++ b/dump/src/main/java/eu/dnetlib/dhp/oa/graph/dump/ResultMapper.java @@ -5,7 +5,8 @@ import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; -import eu.dnetlib.dhp.oa.model.Measure; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.oaf.*; import org.apache.commons.lang3.StringUtils; import eu.dnetlib.dhp.eosc.model.EoscInteroperabilityFramework; @@ -16,8 +17,9 @@ import eu.dnetlib.dhp.oa.model.*; import eu.dnetlib.dhp.oa.model.AccessRight; import eu.dnetlib.dhp.oa.model.Author; import eu.dnetlib.dhp.oa.model.GeoLocation; -import eu.dnetlib.dhp.oa.model.Instance; import eu.dnetlib.dhp.oa.model.Indicator; +import eu.dnetlib.dhp.oa.model.Instance; +import eu.dnetlib.dhp.oa.model.Measure; import eu.dnetlib.dhp.oa.model.OpenAccessRoute; import eu.dnetlib.dhp.oa.model.Result; import eu.dnetlib.dhp.oa.model.community.CfHbKeyValue; @@ -25,8 +27,7 @@ import eu.dnetlib.dhp.oa.model.community.CommunityInstance; import eu.dnetlib.dhp.oa.model.community.CommunityResult; import eu.dnetlib.dhp.oa.model.community.Context; import eu.dnetlib.dhp.oa.model.graph.GraphResult; -import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.oaf.*; + public class ResultMapper implements Serializable { @@ -230,6 +231,22 @@ public class ResultMapper implements Serializable { out.setType(input.getResulttype().getClassid()); + if(Optional.ofNullable(input.getMeasures()).isPresent() && input.getMeasures().size() > 0 && !Constants.DUMPTYPE.EOSC.getType().equals(dumpType)){ + List indicators = new ArrayList<>(); + input.getMeasures() + .forEach( + m -> indicators + .add( + Indicator + .newInstance( + m.getId(), + m.getUnit() + .stream() + .map(u -> Measure.newInstance(u.getKey(), u.getValue())) + .collect(Collectors.toList())))); + out.setIndicators(indicators); + } + if (Constants.DUMPTYPE.EOSC.getType().equals(dumpType)) { if (Optional.ofNullable(input.getEoscifguidelines()).isPresent()) { List gei = input.getEoscifguidelines(); @@ -476,10 +493,15 @@ public class ResultMapper implements Serializable { mes .get() .forEach( - m -> indicators.add(Indicator.newInstance(m.getId(), - m.getUnit().stream() - .map(u -> Measure.newInstance(u.getKey(),u.getValue())) - .collect(Collectors.toList())))); + m -> indicators + .add( + Indicator + .newInstance( + m.getId(), + m.getUnit() + .stream() + .map(u -> Measure.newInstance(u.getKey(), u.getValue())) + .collect(Collectors.toList())))); instance.setIndicators(indicators); } @@ -553,8 +575,6 @@ public class ResultMapper implements Serializable { } - - private static List getUniqueProvenance(List provenance) throws NoAvailableEntityTypeException { Provenance iProv = new Provenance(); diff --git a/pom.xml b/pom.xml index 3446ab3..7f650b4 100644 --- a/pom.xml +++ b/pom.xml @@ -102,7 +102,7 @@ 5.6.1 3.5 11.0.2 - [2.12.2-SCHEMA-NO-DUMP] + [2.12.1] \ No newline at end of file