[EOSC Dump] modifying schema and code for eosc if guidelines to accomodate elements with more than one correspondence
This commit is contained in:
parent
795d4cc1dc
commit
3efb8be533
|
@ -15,7 +15,7 @@ import eu.dnetlib.dhp.oa.model.community.CommunityResult;
|
||||||
public class EoscResult extends CommunityResult {
|
public class EoscResult extends CommunityResult {
|
||||||
|
|
||||||
@JsonSchema(description = "Describes a reference to the EOSC Interoperability Framework (IF) Guidelines")
|
@JsonSchema(description = "Describes a reference to the EOSC Interoperability Framework (IF) Guidelines")
|
||||||
private EoscInteroperabilityFramework eoscIF;
|
private List<EoscInteroperabilityFramework> eoscIF;
|
||||||
|
|
||||||
@JsonSchema(description = "The subject dumped by type associated to the result")
|
@JsonSchema(description = "The subject dumped by type associated to the result")
|
||||||
private Map<String, List<Subject>> subject;
|
private Map<String, List<Subject>> subject;
|
||||||
|
@ -45,11 +45,11 @@ public class EoscResult extends CommunityResult {
|
||||||
this.keywords = keywords;
|
this.keywords = keywords;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EoscInteroperabilityFramework getEoscIF() {
|
public List<EoscInteroperabilityFramework> getEoscIF() {
|
||||||
return eoscIF;
|
return eoscIF;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEoscIF(EoscInteroperabilityFramework eoscIF) {
|
public void setEoscIF(List<EoscInteroperabilityFramework> eoscIF) {
|
||||||
this.eoscIF = eoscIF;
|
this.eoscIF = eoscIF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,28 +56,6 @@ public class ResultMapper implements Serializable {
|
||||||
|
|
||||||
addTypeSpecificInformation(out, input, ort);
|
addTypeSpecificInformation(out, input, ort);
|
||||||
|
|
||||||
// if (Optional.ofNullable(((eu.dnetlib.dhp.schema.oaf.Result) in).getMeasures()).isPresent()) {
|
|
||||||
// String downloads = "";
|
|
||||||
// String views = "";
|
|
||||||
// for (eu.dnetlib.dhp.schema.oaf.Measure m : ((eu.dnetlib.dhp.schema.oaf.Result) in)
|
|
||||||
// .getMeasures()
|
|
||||||
// .stream()
|
|
||||||
// .filter(m -> m.getId().equals("downloads") || m.getId().equals("views"))
|
|
||||||
// .collect(Collectors.toList())) {
|
|
||||||
// if (m.getId().equals("downloads")) {
|
|
||||||
// downloads = m.getUnit().get(0).getValue();
|
|
||||||
// }
|
|
||||||
// if (m.getId().equals("views")) {
|
|
||||||
// views = m.getUnit().get(0).getValue();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// if (downloads != "" && views != "") {
|
|
||||||
// ((EoscResult) out).setIndicator(Indicator.newInstance(downloads, views));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
Optional
|
Optional
|
||||||
.ofNullable(input.getAuthor())
|
.ofNullable(input.getAuthor())
|
||||||
.ifPresent(
|
.ifPresent(
|
||||||
|
@ -269,77 +247,20 @@ public class ResultMapper implements Serializable {
|
||||||
!s.getValue().equalsIgnoreCase("EOSC::RO-crate"))
|
!s.getValue().equalsIgnoreCase("EOSC::RO-crate"))
|
||||||
.map(s -> s.getValue())
|
.map(s -> s.getValue())
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
long eoscSubjectNumber = input
|
|
||||||
.getSubject()
|
|
||||||
.stream()
|
|
||||||
.filter(s -> s.getValue().equalsIgnoreCase("EOSC::RO-crate"))
|
|
||||||
.count();
|
|
||||||
// if (eoscSubjectNumber > 1) {
|
|
||||||
// throw new CardinalityTooHighException(
|
|
||||||
// "EOSC IF in the result has cardinality greater than one. Change dump!");
|
|
||||||
// }
|
|
||||||
if (Optional.ofNullable(input.getEoscifguidelines()).isPresent()) {
|
if (Optional.ofNullable(input.getEoscifguidelines()).isPresent()) {
|
||||||
List<EoscIfGuidelines> gei = input.getEoscifguidelines();
|
((EoscResult) out)
|
||||||
if (gei.size() > 1) {
|
.setEoscIF(input.getEoscifguidelines()
|
||||||
throw new CardinalityTooHighException(
|
|
||||||
"EOSC IF in the result has cardinality greater than one. Change dump!");
|
|
||||||
}
|
|
||||||
if (gei.size() == 1) {
|
|
||||||
EoscIfGuidelines ifra = gei.get(0);
|
|
||||||
((EoscResult) out)
|
|
||||||
.setEoscIF(
|
|
||||||
EoscInteroperabilityFramework
|
|
||||||
.newInstance(
|
|
||||||
ifra.getCode(), ifra.getLabel(), ifra.getUrl(),
|
|
||||||
ifra.getSemanticRelation()));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (eoscSubjectNumber > 0 && Optional.ofNullable(((EoscResult) out).getEoscIF()).isPresent()) {
|
|
||||||
throw new CardinalityTooHighException(
|
|
||||||
"EOSC IF in the result has cardinality greater than one. Change dump!");
|
|
||||||
} else {
|
|
||||||
if (eoscSubjectNumber > 0) {
|
|
||||||
StructuredProperty ifra = input
|
|
||||||
.getSubject()
|
|
||||||
.stream()
|
.stream()
|
||||||
.filter(s -> s.getValue().equalsIgnoreCase("EOSC::RO-crate"))
|
.map(eig -> EoscInteroperabilityFramework.newInstance(eig.getCode(), eig.getLabel(), eig.getUrl(), eig.getSemanticRelation()))
|
||||||
.findFirst()
|
.collect(Collectors.toList()));
|
||||||
.get();
|
|
||||||
((EoscResult) out)
|
|
||||||
.setEoscIF(
|
|
||||||
EoscInteroperabilityFramework
|
|
||||||
.newInstance(
|
|
||||||
ifra.getValue(), ifra.getValue(), "",
|
|
||||||
"compliesWith"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out.setType(input.getResulttype().getClassid());
|
out.setType(input.getResulttype().getClassid());
|
||||||
|
|
||||||
// if (Constants.DUMPTYPE.EOSC.getType().equals(dumpType)) {
|
|
||||||
// if (Optional.ofNullable(input.getEoscifguidelines()).isPresent()) {
|
|
||||||
// List<EoscIfGuidelines> gei = input.getEoscifguidelines();
|
|
||||||
// if (gei.size() > 1) {
|
|
||||||
// throw new CardinalityTooHighException(
|
|
||||||
// "EOSC IF in the result has cardinality greater than one. Change dump!");
|
|
||||||
// }
|
|
||||||
// if (gei.size() == 1) {
|
|
||||||
//
|
|
||||||
// EoscIfGuidelines ifra = gei.get(0);
|
|
||||||
// ((EoscResult) out)
|
|
||||||
// .setEoscIF(
|
|
||||||
// EoscInteroperabilityFramework
|
|
||||||
// .newInstance(
|
|
||||||
// ifra.getCode(), ifra.getLabel(), ifra.getUrl(),
|
|
||||||
// ifra.getSemanticRelation()));
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
if (!Constants.DUMPTYPE.COMPLETE.getType().equals(dumpType)) {
|
if (!Constants.DUMPTYPE.COMPLETE.getType().equals(dumpType)) {
|
||||||
if (!Constants.DUMPTYPE.EOSC.getType().equals(dumpType)) {
|
if (!Constants.DUMPTYPE.EOSC.getType().equals(dumpType)) {
|
||||||
((CommunityResult) out)
|
((CommunityResult) out)
|
||||||
|
|
|
@ -921,10 +921,10 @@ public class DumpJobTest {
|
||||||
|
|
||||||
Assertions.assertEquals(1, verificationDataset.filter("type = 'dataset'").count());
|
Assertions.assertEquals(1, verificationDataset.filter("type = 'dataset'").count());
|
||||||
|
|
||||||
Assertions.assertEquals(1, tmp.filter(d -> d.getEoscIF().getCode().equals("EOSC::Twitter Data")).count());
|
Assertions.assertEquals(1, tmp.filter(d -> d.getEoscIF().stream().anyMatch(c -> c.getCode().equals("EOSC::Twitter Data"))).count());
|
||||||
Assertions.assertEquals(1, tmp.filter(d -> d.getEoscIF().getLabel().equals("EOSC::Twitter Data")).count());
|
Assertions.assertEquals(1, tmp.filter(d -> d.getEoscIF().stream().anyMatch(c -> c.getLabel().equals("EOSC::Twitter Data"))).count());
|
||||||
Assertions.assertEquals(1, tmp.filter(d -> d.getEoscIF().getUrl().equals("")).count());
|
Assertions.assertEquals(1, tmp.filter(d -> d.getEoscIF().stream().anyMatch(c -> c.getUrl().equals(""))).count());
|
||||||
Assertions.assertEquals(1, tmp.filter(d -> d.getEoscIF().getSemanticRelation().equals("compliesWith")).count());
|
Assertions.assertEquals(1, tmp.filter(d -> d.getEoscIF().stream().anyMatch(c -> c.getSemanticRelation().equals("compliesWith"))).count());
|
||||||
|
|
||||||
System.out.println(OBJECT_MAPPER.writeValueAsString(verificationDataset.first()));
|
System.out.println(OBJECT_MAPPER.writeValueAsString(verificationDataset.first()));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue