From 31bc085093729d72dc6070bb5ea2302315e345c0 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Mon, 3 Jul 2023 14:19:41 +0200 Subject: [PATCH] date mamagement --- .../importer/CommunityImporterService.java | 19 +++--------- .../utils/CommunityMappingUtils.java | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterService.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterService.java index 006b270c..2bdefc4a 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterService.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterService.java @@ -1,11 +1,8 @@ package eu.dnetlib.openaire.community.importer; -import java.time.LocalDateTime; -import java.time.ZoneId; import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; -import java.util.Date; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -30,6 +27,7 @@ import eu.dnetlib.miscutils.functional.hash.Hashing; import eu.dnetlib.openaire.community.CommunityService; import eu.dnetlib.openaire.community.model.DbOrganization; import eu.dnetlib.openaire.community.repository.DbOrganizationRepository; +import eu.dnetlib.openaire.community.utils.CommunityMappingUtils; import eu.dnetlib.openaire.exporter.exceptions.CommunityException; import eu.dnetlib.openaire.exporter.model.community.CommunityClaimType; import eu.dnetlib.openaire.exporter.model.community.CommunityContentprovider; @@ -49,8 +47,6 @@ import eu.dnetlib.openaire.exporter.model.context.Param; @Service public class CommunityImporterService { - private final static String pattern = "yyyy-MM-dd'T'hh:mm:ss"; - // common private final static String OPENAIRE_ID = "openaireId"; private final static String PIPE_SEPARATOR = "||"; @@ -243,8 +239,8 @@ public class CommunityImporterService { details.setId(c.getId()); details.setShortName(c.getLabel()); - details.setLastUpdateDate(convertToLocalDateTime(c.getLastUpdateDate())); - details.setCreationDate(convertToLocalDateTime(c.getCreationDate())); + details.setLastUpdateDate(CommunityMappingUtils.asLocalDateTime(c.getLastUpdateDate())); + details.setCreationDate(CommunityMappingUtils.asLocalDateTime(c.getCreationDate())); details.setQueryId(c.getId() + PIPE_SEPARATOR + c.getLabel()); details.setType(CommunityType.valueOf(c.getType())); details.setMembership(CommunityMembershipType.open); @@ -287,8 +283,7 @@ public class CommunityImporterService { } if (params.containsKey(CPROFILE_CREATIONDATE)) { try { - final Date d = org.apache.commons.lang3.time.DateUtils.parseDate(asCsv(params.get(CPROFILE_CREATIONDATE)), pattern); - details.setCreationDate(convertToLocalDateTime(d)); + details.setCreationDate(CommunityMappingUtils.asLocalDateTime(asCsv(params.get(CPROFILE_CREATIONDATE)))); } catch (final Exception e) { log.debug("Exception on date format: " + e.getMessage()); } @@ -388,12 +383,6 @@ public class CommunityImporterService { .distinct(); } - private static LocalDateTime convertToLocalDateTime(final Date date) { - return date.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(); - } - protected DbOrganizationRepository getDbOrganizationRepository() { return dbOrganizationRepository; } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/utils/CommunityMappingUtils.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/utils/CommunityMappingUtils.java index dcdfd86b..625eecf3 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/utils/CommunityMappingUtils.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/utils/CommunityMappingUtils.java @@ -1,11 +1,19 @@ package eu.dnetlib.openaire.community.utils; +import java.text.ParseException; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.Arrays; +import java.util.Date; import java.util.List; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import com.google.common.collect.Lists; import eu.dnetlib.openaire.community.model.DbCommunity; import eu.dnetlib.openaire.community.model.DbDatasource; @@ -24,6 +32,10 @@ public class CommunityMappingUtils { public final static String PIPE_SEPARATOR = "||"; + private static final List DATE_PATTERN = Lists.newArrayList("yyyy-MM-dd'T'hh:mm:ss", "yyyy-MM-dd'T'hh:mm:ssXXX", "yyyy-MM-dd'T'hh:mm:ss+00:00"); + + private static final Log log = LogFactory.getLog(CommunityMappingUtils.class); + public static CommunitySummary toCommunitySummary(final DbCommunity c) { final CommunitySummary summary = new CommunitySummary(); populateSummary(summary, c); @@ -215,6 +227,23 @@ public class CommunityMappingUtils { return sc; } + public static LocalDateTime asLocalDateTime(final String s) { + for (final String pattern : DATE_PATTERN) { + try { + final Date res = DateUtils.parseDate(s, pattern); + if (res != null) { return asLocalDateTime(res); } + } catch (final ParseException e) {} + } + log.error("Invalid Date: " + s); + return null; + } + + public static LocalDateTime asLocalDateTime(final Date date) { + return date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + } + private static String[] toStringArray(final List list) { return list != null ? list.toArray(new String[list.size()]) : new String[0]; }