From 07cc6af3f33e0eec38c526d93fc005633dc5f3a3 Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Mon, 15 Jun 2020 16:21:53 +0200 Subject: [PATCH] SEARCH-2296: Add new "_unit_of_time_quarter" date part field. --- .../java/org/alfresco/solr/AlfrescoSolrDataModel.java | 7 +++++++ .../java/org/alfresco/solr/SolrInformationServer.java | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java index 97f50d702..70ceb8f5a 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java @@ -121,6 +121,7 @@ import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_HOUR_FIELD_SU import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_MINUTE_FIELD_SUFFIX; import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_MONTH_FIELD_SUFFIX; import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_SECOND_FIELD_SUFFIX; +import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_QUARTER_FIELD_SUFFIX; import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_YEAR_FIELD_SUFFIX; /** @@ -171,6 +172,7 @@ public class AlfrescoSolrDataModel implements QueryConstants UNIT_OF_TIME_HOUR, UNIT_OF_TIME_DAY, UNIT_OF_TIME_MONTH, + UNIT_OF_TIME_QUARTER, UNIT_OF_TIME_YEAR } @@ -179,6 +181,7 @@ public class AlfrescoSolrDataModel implements QueryConstants static final String PART_FIELDNAME_PREFIX = "part@sd@"; static final Set DATE_PART_SUFFIXES = Set.of(UNIT_OF_TIME_YEAR_FIELD_SUFFIX, + UNIT_OF_TIME_QUARTER_FIELD_SUFFIX, UNIT_OF_TIME_MONTH_FIELD_SUFFIX, UNIT_OF_TIME_DAY_FIELD_SUFFIX, UNIT_OF_TIME_HOUR_FIELD_SUFFIX, @@ -1132,6 +1135,8 @@ public class AlfrescoSolrDataModel implements QueryConstants return UNIT_OF_TIME_DAY_FIELD_SUFFIX; case UNIT_OF_TIME_MONTH: return UNIT_OF_TIME_MONTH_FIELD_SUFFIX; + case UNIT_OF_TIME_QUARTER: + return UNIT_OF_TIME_QUARTER_FIELD_SUFFIX; case UNIT_OF_TIME_YEAR: return UNIT_OF_TIME_YEAR_FIELD_SUFFIX; default: @@ -1792,6 +1797,8 @@ public class AlfrescoSolrDataModel implements QueryConstants return SpecializedFieldType.UNIT_OF_TIME_DAY; case UNIT_OF_TIME_MONTH_FIELD_SUFFIX: return SpecializedFieldType.UNIT_OF_TIME_MONTH; + case UNIT_OF_TIME_QUARTER_FIELD_SUFFIX: + return SpecializedFieldType.UNIT_OF_TIME_QUARTER; case UNIT_OF_TIME_YEAR_FIELD_SUFFIX: return SpecializedFieldType.UNIT_OF_TIME_YEAR; case FIELD_TRANSFORMATION_STATUS_SUFFIX: diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java index 9c8aa0e78..561200331 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -95,6 +95,7 @@ import java.nio.charset.StandardCharsets; import java.text.DecimalFormat; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; +import java.time.temporal.IsoFields; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -381,6 +382,7 @@ public class SolrInformationServer implements InformationServer private static final String UNIT_OF_TIME_FIELD_INFIX = "_unit_of_time"; public static final String UNIT_OF_TIME_YEAR_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_year"; + public static final String UNIT_OF_TIME_QUARTER_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_quarter"; public static final String UNIT_OF_TIME_MONTH_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_month"; public static final String UNIT_OF_TIME_DAY_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_day"; public static final String UNIT_OF_TIME_HOUR_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_hour"; @@ -2264,7 +2266,8 @@ public class SolrInformationServer implements InformationServer .stream() .filter(field -> field.getField().startsWith("text@sd___@")) .forEach(field -> addStringProperty(valueHolder, field, value, locale)); - } else + } + else { dataModel.getIndexedFieldNamesForProperty(propertyQName).getFields() .forEach(field -> { @@ -3806,6 +3809,7 @@ public class SolrInformationServer implements InformationServer * * @@ -3828,7 +3832,9 @@ public class SolrInformationServer implements InformationServer { String fieldNamePrefix = dataModel.destructuredDateTimePartFieldNamePrefix(sourceFieldName); ZonedDateTime dateTime = ZonedDateTime.parse(value, DateTimeFormatter.ISO_ZONED_DATE_TIME); + consumer.accept(fieldNamePrefix + UNIT_OF_TIME_YEAR_FIELD_SUFFIX, dateTime.getYear()); + consumer.accept(fieldNamePrefix + UNIT_OF_TIME_QUARTER_FIELD_SUFFIX, dateTime.get(IsoFields.QUARTER_OF_YEAR)); consumer.accept(fieldNamePrefix + UNIT_OF_TIME_MONTH_FIELD_SUFFIX, dateTime.getMonth().getValue()); consumer.accept(fieldNamePrefix + UNIT_OF_TIME_DAY_FIELD_SUFFIX, dateTime.getDayOfMonth());