From af7c7a2edc4eb7c8db9b9159e3e85eb36d921a88 Mon Sep 17 00:00:00 2001 From: Katerina Date: Fri, 28 Jun 2024 13:23:22 +0300 Subject: [PATCH] Added in Utils methods that initialize the validation profiles based on the guidelines provided --- .../controllers/ValidationController.java | 71 +++------------- .../utils/CustomStringArrayType.java | 80 ------------------- .../validatorapi/utils/PrefixInitializer.java | 17 ++++ .../utils/ProfileInitializer.java | 31 +++++++ 4 files changed, 61 insertions(+), 138 deletions(-) delete mode 100644 src/main/java/eu/dnetlib/validatorapi/utils/CustomStringArrayType.java diff --git a/src/main/java/eu/dnetlib/validatorapi/controllers/ValidationController.java b/src/main/java/eu/dnetlib/validatorapi/controllers/ValidationController.java index 94586c1..e2894a0 100644 --- a/src/main/java/eu/dnetlib/validatorapi/controllers/ValidationController.java +++ b/src/main/java/eu/dnetlib/validatorapi/controllers/ValidationController.java @@ -2,7 +2,7 @@ package eu.dnetlib.validatorapi.controllers; import eu.dnetlib.validator2.validation.XMLApplicationProfile; import eu.dnetlib.validator2.validation.guideline.Guideline; -import eu.dnetlib.validator2.validation.guideline.openaire.*; +import eu.dnetlib.validator2.validation.guideline.openaire.AbstractOpenAireProfile; import eu.dnetlib.validatorapi.entities.*; import eu.dnetlib.validatorapi.exceptions.ValidationException; import eu.dnetlib.validatorapi.repositories.SummaryValidationJobRepository; @@ -12,6 +12,8 @@ import eu.dnetlib.validatorapi.repositories.ValidationResultRepository; import eu.dnetlib.validatorapi.routes.FairOaiPmhRoute2; import eu.dnetlib.validatorapi.routes.SimpleOaiPmhRoute; import eu.dnetlib.validatorapi.utils.CheckCertificate; +import eu.dnetlib.validatorapi.utils.PrefixInitializer; +import eu.dnetlib.validatorapi.utils.ProfileInitializer; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.ProducerTemplate; @@ -79,8 +81,8 @@ public class ValidationController { @RequestParam(name="set", required = false) String set, @RequestParam(name="metadataPrefix", defaultValue = "oai_dc") String metadataPrefix, @RequestParam(name="batchsize", defaultValue = "50") int batchSize) { - AbstractOpenAireProfile profile = initializeOpenAireProfile(guidelinesProfileName); - AbstractOpenAireProfile fairProfile = initializeFairProfile(guidelinesProfileName); + AbstractOpenAireProfile profile = ProfileInitializer.initializeOpenAireProfile(guidelinesProfileName); + AbstractOpenAireProfile fairProfile = ProfileInitializer.initializeFairProfile(guidelinesProfileName); if (profile == null && fairProfile == null) { log.error("Exception: No valid guidelines"); new Exception("Validation Job stopped unexpectedly. No valid guidelines were provided."); @@ -193,9 +195,9 @@ public class ValidationController { @RequestParam(name="numberOfRecords", defaultValue = "10") int numberOfRecords, @RequestParam(name="set", required = false) Optional set) { - AbstractOpenAireProfile profile = initializeOpenAireProfile(guidelinesProfileName); - AbstractOpenAireProfile fairProfile = initializeFairProfile(guidelinesProfileName); - String metadataPrefix = initializeMetadataPrefix(guidelinesProfileName); + AbstractOpenAireProfile profile = ProfileInitializer.initializeOpenAireProfile(guidelinesProfileName); + AbstractOpenAireProfile fairProfile = ProfileInitializer.initializeFairProfile(guidelinesProfileName); + String metadataPrefix = PrefixInitializer.initializeMetadataPrefix(guidelinesProfileName); if (profile == null && fairProfile == null) { log.error("Exception: No valid guidelines " + guidelinesProfileName + "."); @@ -401,54 +403,7 @@ public class ValidationController { return "-"; } - private AbstractOpenAireProfile initializeOpenAireProfile(String guidelinesProfileName) { - System.out.println("GUIDELINES " + guidelinesProfileName); - - if (guidelinesProfileName.equals("OpenAIRE Guidelines for Data Archives Profile v2")) { - return new DataArchiveGuidelinesV2Profile(); - - } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v3")) { - return new LiteratureGuidelinesV3Profile(); - - } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v4")) { - return new LiteratureGuidelinesV4Profile(); - - } else if (guidelinesProfileName.equals("OpenAIRE FAIR Guidelines for Data Repositories Profile")) {//in case they give only fair. TODO: is ti possible? - return new FAIR_Data_GuidelinesProfile(); - } - - return null; - } - - private String initializeMetadataPrefix(String guidelinesProfileName) { - - if (guidelinesProfileName.equals("OpenAIRE Guidelines for Data Archives Profile v2") || - guidelinesProfileName.equals("OpenAIRE FAIR Guidelines for Data Repositories Profile")) { - return "oai_datacite"; - - } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v3")) { - return "oai_dc"; - - } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v4")) { - return "oai_openaire"; - } - - return null; - } - - - private AbstractOpenAireProfile initializeFairProfile(String guidelinesProfileName) { - if (guidelinesProfileName.equals("OpenAIRE Guidelines for Data Archives Profile v2")) { - return new FAIR_Data_GuidelinesProfile(); - - } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v4")) { - return new FAIR_Literature_GuidelinesV4Profile(); - - } - - return null; - } private Document parseResponse(InputStream stream) @@ -481,8 +436,8 @@ public class ValidationController { List resultRules = null; List fairRules = null; - AbstractOpenAireProfile profile = initializeOpenAireProfile(guidelinesProfileName); - AbstractOpenAireProfile fairProfile = initializeFairProfile(guidelinesProfileName); + AbstractOpenAireProfile profile = ProfileInitializer.initializeOpenAireProfile(guidelinesProfileName); + AbstractOpenAireProfile fairProfile = ProfileInitializer.initializeFairProfile(guidelinesProfileName); validationJob.guidelines = profile.name(); validationJobRepository.save(validationJob); @@ -581,9 +536,9 @@ public class ValidationController { //@RequestParam(name="metadataPrefix", defaultValue = "oai_dc") String metadataPrefix ) { - AbstractOpenAireProfile profile = initializeOpenAireProfile(guidelinesProfileName); - AbstractOpenAireProfile fairProfile = initializeFairProfile(guidelinesProfileName); - String metadataPrefix = initializeMetadataPrefix(guidelinesProfileName); + AbstractOpenAireProfile profile = ProfileInitializer.initializeOpenAireProfile(guidelinesProfileName); + AbstractOpenAireProfile fairProfile = ProfileInitializer.initializeFairProfile(guidelinesProfileName); + String metadataPrefix = PrefixInitializer.initializeMetadataPrefix(guidelinesProfileName); String endpoint = "oaipmh://"+baseURL + "?verb=ListRecords&metadataPrefix=" + metadataPrefix; ProducerTemplate producerTemplate = camelContext.createProducerTemplate(); diff --git a/src/main/java/eu/dnetlib/validatorapi/utils/CustomStringArrayType.java b/src/main/java/eu/dnetlib/validatorapi/utils/CustomStringArrayType.java deleted file mode 100644 index 4502055..0000000 --- a/src/main/java/eu/dnetlib/validatorapi/utils/CustomStringArrayType.java +++ /dev/null @@ -1,80 +0,0 @@ -package eu.dnetlib.validatorapi.utils; - -import org.hibernate.HibernateException; -import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.usertype.UserType; - -import java.io.Serializable; -import java.sql.*; -import java.util.Arrays; - -public class CustomStringArrayType implements UserType { - @Override - public int[] sqlTypes() { - return new int[]{Types.ARRAY}; - } - - @Override - public Class returnedClass() { - return String[].class; - } - - @Override - public boolean equals(Object o1, Object o2) throws HibernateException { - if (o1 instanceof String[] && o2 instanceof String[]) { - return Arrays.deepEquals((String[])o1, (String[])o2); - } else { - return false; - } - } - - @Override - public int hashCode(Object o) throws HibernateException { - return Arrays.hashCode((String[])o); - } - - @Override - public Object nullSafeGet(ResultSet resultSet, String[] names, - SharedSessionContractImplementor sharedSessionContractImplementor, Object o) - throws HibernateException, SQLException { - Array array = resultSet.getArray(names[0]); - return array != null ? array.getArray() : null; - } - - @Override - public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index, - SharedSessionContractImplementor sharedSessionContractImplementor) throws HibernateException, SQLException { - if (value != null && preparedStatement != null) { - Array array = sharedSessionContractImplementor.connection().createArrayOf("text", (String[])value); - preparedStatement.setArray(index, array); - } else { - preparedStatement.setNull(index, sqlTypes()[0]); - } - } - - @Override - public Object deepCopy(Object o) throws HibernateException { - String[] a = (String[])o; - return Arrays.copyOf(a, a.length); - } - - @Override - public boolean isMutable() { - return false; - } - - @Override - public Serializable disassemble(Object o) throws HibernateException { - return (Serializable) o; - } - - @Override - public Object assemble(Serializable serializable, Object o) throws HibernateException { - return serializable; - } - - @Override - public Object replace(Object o, Object o1, Object o2) throws HibernateException { - return o; - } -} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/validatorapi/utils/PrefixInitializer.java b/src/main/java/eu/dnetlib/validatorapi/utils/PrefixInitializer.java index 24e8304..fe79f23 100644 --- a/src/main/java/eu/dnetlib/validatorapi/utils/PrefixInitializer.java +++ b/src/main/java/eu/dnetlib/validatorapi/utils/PrefixInitializer.java @@ -1,4 +1,21 @@ package eu.dnetlib.validatorapi.utils; public class PrefixInitializer { + + public static String initializeMetadataPrefix(String guidelinesProfileName) { + + if (guidelinesProfileName.equals("OpenAIRE Guidelines for Data Archives Profile v2") || + guidelinesProfileName.equals("OpenAIRE FAIR Guidelines for Data Repositories Profile")) { + return "oai_datacite"; + + } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v3")) { + return "oai_dc"; + + } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v4")) { + return "oai_openaire"; + } + + return null; + } + } diff --git a/src/main/java/eu/dnetlib/validatorapi/utils/ProfileInitializer.java b/src/main/java/eu/dnetlib/validatorapi/utils/ProfileInitializer.java index 1f6d607..9da6b66 100644 --- a/src/main/java/eu/dnetlib/validatorapi/utils/ProfileInitializer.java +++ b/src/main/java/eu/dnetlib/validatorapi/utils/ProfileInitializer.java @@ -1,4 +1,35 @@ package eu.dnetlib.validatorapi.utils; +import eu.dnetlib.validator2.validation.guideline.openaire.*; + public class ProfileInitializer { + + public static AbstractOpenAireProfile initializeOpenAireProfile(String guidelinesProfileName) { + + if (guidelinesProfileName.equals("OpenAIRE Guidelines for Data Archives Profile v2")) { + return new DataArchiveGuidelinesV2Profile(); + + } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v3")) { + return new LiteratureGuidelinesV3Profile(); + + } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v4")) { + return new LiteratureGuidelinesV4Profile(); + + } else if (guidelinesProfileName.equals("OpenAIRE FAIR Guidelines for Data Repositories Profile")) {//in case they give only fair. TODO: is ti possible? + return new FAIR_Data_GuidelinesProfile(); + } + + return null; + } + + public static AbstractOpenAireProfile initializeFairProfile(String guidelinesProfileName) { + if (guidelinesProfileName.equals("OpenAIRE Guidelines for Data Archives Profile v2")) { + return new FAIR_Data_GuidelinesProfile(); + + } else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v4")) { + return new FAIR_Literature_GuidelinesV4Profile(); + } + + return null; + } }