Adding definitions info on migrated licenses

This commit is contained in:
Thomas Georgios Giannos 2023-12-19 16:37:54 +02:00
parent f9a47f2de7
commit aa648cda1d
2 changed files with 47 additions and 15 deletions

View File

@ -6,10 +6,14 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.MapType; import com.fasterxml.jackson.databind.type.MapType;
import com.fasterxml.jackson.databind.type.TypeFactory; import com.fasterxml.jackson.databind.type.TypeFactory;
import eu.eudat.commons.JsonHandlingService; import eu.eudat.commons.JsonHandlingService;
import eu.eudat.commons.XmlHandlingService;
import eu.eudat.commons.enums.*; import eu.eudat.commons.enums.*;
import eu.eudat.commons.types.dmp.DmpBlueprintValueEntity; import eu.eudat.commons.types.dmp.DmpBlueprintValueEntity;
import eu.eudat.commons.types.dmp.DmpContactEntity; import eu.eudat.commons.types.dmp.DmpContactEntity;
import eu.eudat.commons.types.dmp.DmpPropertiesEntity; import eu.eudat.commons.types.dmp.DmpPropertiesEntity;
import eu.eudat.commons.types.reference.DefinitionEntity;
import eu.eudat.commons.types.reference.FieldEntity;
import eu.eudat.convention.ConventionService;
import eu.eudat.data.DmpEntity; import eu.eudat.data.DmpEntity;
import eu.eudat.data.DmpReferenceEntity; import eu.eudat.data.DmpReferenceEntity;
import eu.eudat.data.ReferenceEntity; import eu.eudat.data.ReferenceEntity;
@ -23,6 +27,7 @@ import gr.cite.tools.exception.MyApplicationException;
import gr.cite.tools.logging.LoggerService; import gr.cite.tools.logging.LoggerService;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -34,20 +39,22 @@ public class DmpMigrationService {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(DmpMigrationService.class)); private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(DmpMigrationService.class));
private final DatabaseRepository databaseRepository; private final DatabaseRepository databaseRepository;
private final JsonHandlingService jsonHandlingService; private final JsonHandlingService jsonHandlingService;
private final EntityManager entityManager; private final EntityManager entityManager;
private final ConventionService conventionService;
private final QueryFactory queryFactory; private final XmlHandlingService xmlHandlingService;
private final Environment environment;
private static final int PageSize = 500; private static final int PageSize = 500;
private static final boolean TestMode = false; private static final boolean TestMode = false;
public DmpMigrationService(DatabaseRepository databaseRepository, JsonHandlingService jsonHandlingService, EntityManager entityManager, QueryFactory queryFactory) { public DmpMigrationService(DatabaseRepository databaseRepository, JsonHandlingService jsonHandlingService, EntityManager entityManager, ConventionService conventionService, XmlHandlingService xmlHandlingService, Environment environment) {
this.databaseRepository = databaseRepository; this.databaseRepository = databaseRepository;
this.jsonHandlingService = jsonHandlingService; this.jsonHandlingService = jsonHandlingService;
this.entityManager = entityManager; this.entityManager = entityManager;
this.queryFactory = queryFactory; this.conventionService = conventionService;
this.xmlHandlingService = xmlHandlingService;
this.environment = environment;
} }
public void migrate() throws JsonProcessingException, NoSuchFieldException, IllegalAccessException { public void migrate() throws JsonProcessingException, NoSuchFieldException, IllegalAccessException {
@ -179,7 +186,7 @@ public class DmpMigrationService {
if (model.getExtraProperties() != null) { if (model.getExtraProperties() != null) {
if (model.getExtraProperties().containsKey("license") && model.getExtraProperties().get("license") != null) { if (model.getExtraProperties().containsKey("license") && model.getExtraProperties().get("license") != null) {
Object license = model.getExtraProperties().get("license"); Object license = model.getExtraProperties().get("license");
HashMap<String, String> licenseMap = jsonHandlingService.mapFromJson(jsonHandlingService.toJson(license)); HashMap<String, String> licenseMap = this.jsonHandlingService.mapFromJson(this.jsonHandlingService.toJson(license));
ReferenceEntity referenceEntity = new ReferenceEntity(); ReferenceEntity referenceEntity = new ReferenceEntity();
String licensePid; String licensePid;
if (licenseMap.containsKey("pid") && licenseMap.get("pid") != null) { if (licenseMap.containsKey("pid") && licenseMap.get("pid") != null) {
@ -190,35 +197,59 @@ public class DmpMigrationService {
continue; continue;
boolean licenseExists = collectedLicenses.contains(licensePid); boolean licenseExists = collectedLicenses.contains(licensePid);
if (!licenseExists) { if (!licenseExists) {
DefinitionEntity definitionEntity = new DefinitionEntity();
List<FieldEntity> fields = new ArrayList<>();
if (licenseMap.containsKey("name")) { if (licenseMap.containsKey("name")) {
referenceEntity.setLabel(licenseMap.get("name")); referenceEntity.setLabel(licenseMap.get("name"));
} }
if (licenseMap.containsKey("uri")) { if (licenseMap.containsKey("uri")) {
referenceEntity.setSource(licenseMap.get("uri")); referenceEntity.setReference(licenseMap.get("uri"));
if (!this.conventionService.isNullOrEmpty(licenseMap.get("uri"))){
FieldEntity fieldEntity = new FieldEntity();
fieldEntity.setCode("uri");
fieldEntity.setDataType(ReferenceFieldDataType.Text);
fieldEntity.setValue(licenseMap.get("uri"));
fields.add(fieldEntity);
}
}
if (licenseMap.containsKey("tag")) {
if (!this.conventionService.isNullOrEmpty(licenseMap.get("tag"))){
FieldEntity fieldEntity = new FieldEntity();
fieldEntity.setCode("tag");
fieldEntity.setDataType(ReferenceFieldDataType.Text);
fieldEntity.setValue(licenseMap.get("tag"));
fields.add(fieldEntity);
}
}
if (licenseMap.containsKey("hint")) {
if (!this.conventionService.isNullOrEmpty(licenseMap.get("hint"))){
FieldEntity fieldEntity = new FieldEntity();
fieldEntity.setCode("hint");
fieldEntity.setDataType(ReferenceFieldDataType.Text);
fieldEntity.setValue(licenseMap.get("hint"));
fields.add(fieldEntity);
}
} }
if (licenseMap.containsKey("abbreviation")) { if (licenseMap.containsKey("abbreviation")) {
referenceEntity.setAbbreviation(licenseMap.get("abbreviation")); referenceEntity.setAbbreviation(licenseMap.get("abbreviation"));
} }
if (licenseMap.containsKey("source") && licenseMap.get("source") != null) {
logger.debug("License found with source '{}'", licenseMap.get("source"));
}
if (licenseMap.containsKey("created") && licenseMap.get("created") != null) { if (licenseMap.containsKey("created") && licenseMap.get("created") != null) {
referenceEntity.setUpdatedAt(Instant.parse(licenseMap.get("created"))); referenceEntity.setUpdatedAt(Instant.parse(licenseMap.get("created")));
} else { } else {
referenceEntity.setCreatedAt(Instant.now()); referenceEntity.setCreatedAt(item.getCreated() == null ? Instant.now() : item.getCreated().toInstant());
} }
if (licenseMap.containsKey("modified") && licenseMap.get("modified") != null) { if (licenseMap.containsKey("modified") && licenseMap.get("modified") != null) {
referenceEntity.setUpdatedAt(Instant.parse(licenseMap.get("modified"))); referenceEntity.setUpdatedAt(Instant.parse(licenseMap.get("modified")));
} else { } else {
referenceEntity.setUpdatedAt(Instant.now()); referenceEntity.setUpdatedAt(item.getModified() == null ? Instant.now() : item.getModified().toInstant());
} }
// if (licenseMap.containsKey("tag") && licenseMap.get("tag") != null && !"Open Definition".equals(licenseMap.get("tag"))) {
// logger.debug("License found with tag '{}'", licenseMap.get("tag"));
// }
referenceEntity.setId(UUID.randomUUID()); referenceEntity.setId(UUID.randomUUID());
referenceEntity.setSourceType(ReferenceSourceType.External); referenceEntity.setSourceType(ReferenceSourceType.External);
referenceEntity.setSource(this.environment.getProperty("migration.default-license-source", "null"));
referenceEntity.setType(ReferenceType.Licenses); referenceEntity.setType(ReferenceType.Licenses);
referenceEntity.setIsActive(IsActive.Active); referenceEntity.setIsActive(IsActive.Active);
definitionEntity.setFields(fields);
referenceEntity.setDefinition(this.xmlHandlingService.toXmlSafe(definitionEntity));
collectedLicenses.add(licensePid); collectedLicenses.add(licensePid);
licenseIdByName.put(licensePid, referenceEntity.getId()); licenseIdByName.put(licensePid, referenceEntity.getId());

View File

@ -4,6 +4,7 @@ server.tomcat.max-connections = 10000
logging.file=/logs/spring-boot-logging.log logging.file=/logs/spring-boot-logging.log
spring.profiles.active=devel spring.profiles.active=devel
eu.eudat.logic.proxy.allowed.host=https://eestore.paas2.uninett.no eu.eudat.logic.proxy.allowed.host=https://eestore.paas2.uninett.no
migration.default-license-source=opendefinition
####################Metrics############## ####################Metrics##############
management.endpoint.metrics.enabled=true management.endpoint.metrics.enabled=true