mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged 5.2.N (5.2.2) to HEAD (5.2)
137044 gjames: Merged searchrep (5.2.1) to 5.2.N (5.2.1) 136707 gjames: SEARCH-348: Adding timezone to search api git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@137559 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -61,6 +61,7 @@ import org.alfresco.service.cmr.search.SearchParameters.SortDefinition;
|
|||||||
import org.alfresco.service.cmr.search.SearchParameters.SortDefinition.SortType;
|
import org.alfresco.service.cmr.search.SearchParameters.SortDefinition.SortType;
|
||||||
import org.alfresco.service.cmr.search.StatsRequestParameters;
|
import org.alfresco.service.cmr.search.StatsRequestParameters;
|
||||||
import org.alfresco.util.ParameterCheck;
|
import org.alfresco.util.ParameterCheck;
|
||||||
|
import sun.util.calendar.ZoneInfo;
|
||||||
|
|
||||||
import static org.alfresco.rest.api.Nodes.PARAM_INCLUDE_ALLOWABLEOPERATIONS;
|
import static org.alfresco.rest.api.Nodes.PARAM_INCLUDE_ALLOWABLEOPERATIONS;
|
||||||
import static org.alfresco.rest.api.Nodes.PARAM_INCLUDE_ASSOCIATION;
|
import static org.alfresco.rest.api.Nodes.PARAM_INCLUDE_ASSOCIATION;
|
||||||
@@ -70,10 +71,12 @@ import static org.alfresco.rest.api.Nodes.PARAM_INCLUDE_ASPECTNAMES;
|
|||||||
import static org.alfresco.rest.api.Nodes.PARAM_INCLUDE_PROPERTIES;
|
import static org.alfresco.rest.api.Nodes.PARAM_INCLUDE_PROPERTIES;
|
||||||
import static org.alfresco.service.cmr.search.SearchService.*;
|
import static org.alfresco.service.cmr.search.SearchService.*;
|
||||||
|
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.TimeZone;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -122,7 +125,7 @@ public class SearchMapper
|
|||||||
fromFacetRange(sp, searchQuery.getFacetRange());
|
fromFacetRange(sp, searchQuery.getFacetRange());
|
||||||
fromScope(sp, searchQuery.getScope(), searchRequestContext);
|
fromScope(sp, searchQuery.getScope(), searchRequestContext);
|
||||||
fromLimits(sp, searchQuery.getLimits());
|
fromLimits(sp, searchQuery.getLimits());
|
||||||
|
fromTimezone(sp, searchQuery.getTimezone());
|
||||||
return sp;
|
return sp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -647,6 +650,28 @@ public class SearchMapper
|
|||||||
sp.setHighlight(highlight);
|
sp.setHighlight(highlight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates and sets the timezone
|
||||||
|
* @param sp SearchParameters
|
||||||
|
* @param timezone a valid java.time.ZoneId
|
||||||
|
*/
|
||||||
|
public void fromTimezone(SearchParameters sp, String timezone)
|
||||||
|
{
|
||||||
|
if (timezone!= null && !timezone.isEmpty())
|
||||||
|
{
|
||||||
|
ZoneId validZoneId = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
validZoneId = ZoneId.of(timezone);
|
||||||
|
sp.setTimezone(validZoneId.toString());
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Invalid timezone "+timezone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SearchParameters from the Limits object
|
* SearchParameters from the Limits object
|
||||||
* @param sp SearchParameters
|
* @param sp SearchParameters
|
||||||
|
@@ -62,9 +62,11 @@ public class SearchQuery
|
|||||||
private final List<Pivot> pivots;
|
private final List<Pivot> pivots;
|
||||||
private final List<StatsRequestParameters> stats;
|
private final List<StatsRequestParameters> stats;
|
||||||
private final RangeParameters facetRange;
|
private final RangeParameters facetRange;
|
||||||
|
private final String timezone;
|
||||||
|
|
||||||
public static final SearchQuery EMPTY = new SearchQuery(null, null, null, null, null, null,
|
public static final SearchQuery EMPTY = new SearchQuery(null, null, null, null, null, null,
|
||||||
null,null, null, null, null,null, null, null, null, null, null, null,null);
|
null,null, null, null, null,null, null, null, null,
|
||||||
|
null, null, null,null, null);
|
||||||
|
|
||||||
@JsonCreator
|
@JsonCreator
|
||||||
public SearchQuery(@JsonProperty("query") Query query,
|
public SearchQuery(@JsonProperty("query") Query query,
|
||||||
@@ -85,7 +87,8 @@ public class SearchQuery
|
|||||||
@JsonProperty("facetIntervals")IntervalParameters facetIntervals,
|
@JsonProperty("facetIntervals")IntervalParameters facetIntervals,
|
||||||
@JsonProperty("pivots") List<Pivot> pivots,
|
@JsonProperty("pivots") List<Pivot> pivots,
|
||||||
@JsonProperty("stats") List<StatsRequestParameters> stats,
|
@JsonProperty("stats") List<StatsRequestParameters> stats,
|
||||||
@JsonProperty("facetRange") RangeParameters facetRange)
|
@JsonProperty("facetRange") RangeParameters facetRange,
|
||||||
|
@JsonProperty("timezone") String timezone)
|
||||||
{
|
{
|
||||||
this.query = query;
|
this.query = query;
|
||||||
this.includeRequest = includeRequest==null?false:includeRequest;
|
this.includeRequest = includeRequest==null?false:includeRequest;
|
||||||
@@ -106,6 +109,7 @@ public class SearchQuery
|
|||||||
this.pivots = pivots;
|
this.pivots = pivots;
|
||||||
this.stats = stats;
|
this.stats = stats;
|
||||||
this.facetRange = facetRange;
|
this.facetRange = facetRange;
|
||||||
|
this.timezone = timezone;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Query getQuery()
|
public Query getQuery()
|
||||||
@@ -201,5 +205,9 @@ public class SearchQuery
|
|||||||
{
|
{
|
||||||
return facetRange;
|
return facetRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getTimezone()
|
||||||
|
{
|
||||||
|
return timezone;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -511,6 +511,50 @@ public class SearchMapperTests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void fromTimezone() throws Exception
|
||||||
|
{
|
||||||
|
SearchParameters searchParameters = new SearchParameters();
|
||||||
|
//Doesn't error
|
||||||
|
searchMapper.fromTimezone(searchParameters, null);
|
||||||
|
searchMapper.fromTimezone(searchParameters, "");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
searchMapper.fromTimezone(searchParameters, "nonsense");
|
||||||
|
fail();
|
||||||
|
} catch (IllegalArgumentException iae)
|
||||||
|
{
|
||||||
|
assertTrue(iae.getLocalizedMessage().contains("Invalid timezone"));
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
searchMapper.fromTimezone(searchParameters, "GMT+25");
|
||||||
|
fail();
|
||||||
|
} catch (IllegalArgumentException iae)
|
||||||
|
{
|
||||||
|
assertTrue(iae.getLocalizedMessage().contains("Invalid timezone"));
|
||||||
|
}
|
||||||
|
|
||||||
|
searchMapper.fromTimezone(searchParameters, "America/New_York");
|
||||||
|
assertEquals("America/New_York", searchParameters.getTimezone());
|
||||||
|
searchMapper.fromTimezone(searchParameters, "America/Denver");
|
||||||
|
assertEquals("America/Denver", searchParameters.getTimezone());
|
||||||
|
searchMapper.fromTimezone(searchParameters, "America/Los_Angeles");
|
||||||
|
assertEquals("America/Los_Angeles", searchParameters.getTimezone());
|
||||||
|
searchMapper.fromTimezone(searchParameters, "Europe/Madrid");
|
||||||
|
assertEquals("Europe/Madrid", searchParameters.getTimezone());
|
||||||
|
searchMapper.fromTimezone(searchParameters, "GMT+1");
|
||||||
|
assertEquals("GMT+01:00", searchParameters.getTimezone());
|
||||||
|
searchMapper.fromTimezone(searchParameters, "GMT-9");
|
||||||
|
assertEquals("GMT-09:00", searchParameters.getTimezone());
|
||||||
|
searchMapper.fromTimezone(searchParameters, "GMT+08:00");
|
||||||
|
assertEquals("GMT+08:00", searchParameters.getTimezone());
|
||||||
|
searchMapper.fromTimezone(searchParameters, "GMT-12:00");
|
||||||
|
assertEquals("GMT-12:00", searchParameters.getTimezone());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fromFacetFields() throws Exception
|
public void fromFacetFields() throws Exception
|
||||||
{
|
{
|
||||||
@@ -866,7 +910,9 @@ public class SearchMapperTests
|
|||||||
private SearchQuery minimalQuery()
|
private SearchQuery minimalQuery()
|
||||||
{
|
{
|
||||||
Query query = new Query("cmis", "foo", "");
|
Query query = new Query("cmis", "foo", "");
|
||||||
SearchQuery sq = new SearchQuery(query, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,null);
|
SearchQuery sq = new SearchQuery(query, null, null, null, null, null, null, null,
|
||||||
|
null, null, null, null, null, null, null, null,
|
||||||
|
null, null,null, null);
|
||||||
return sq;
|
return sq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user