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.StatsRequestParameters;
|
||||
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_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.service.cmr.search.SearchService.*;
|
||||
|
||||
import java.time.ZoneId;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Optional;
|
||||
import java.util.TimeZone;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
/**
|
||||
@@ -122,7 +125,7 @@ public class SearchMapper
|
||||
fromFacetRange(sp, searchQuery.getFacetRange());
|
||||
fromScope(sp, searchQuery.getScope(), searchRequestContext);
|
||||
fromLimits(sp, searchQuery.getLimits());
|
||||
|
||||
fromTimezone(sp, searchQuery.getTimezone());
|
||||
return sp;
|
||||
}
|
||||
|
||||
@@ -647,6 +650,28 @@ public class SearchMapper
|
||||
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
|
||||
* @param sp SearchParameters
|
||||
|
@@ -62,9 +62,11 @@ public class SearchQuery
|
||||
private final List<Pivot> pivots;
|
||||
private final List<StatsRequestParameters> stats;
|
||||
private final RangeParameters facetRange;
|
||||
private final String timezone;
|
||||
|
||||
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
|
||||
public SearchQuery(@JsonProperty("query") Query query,
|
||||
@@ -85,7 +87,8 @@ public class SearchQuery
|
||||
@JsonProperty("facetIntervals")IntervalParameters facetIntervals,
|
||||
@JsonProperty("pivots") List<Pivot> pivots,
|
||||
@JsonProperty("stats") List<StatsRequestParameters> stats,
|
||||
@JsonProperty("facetRange") RangeParameters facetRange)
|
||||
@JsonProperty("facetRange") RangeParameters facetRange,
|
||||
@JsonProperty("timezone") String timezone)
|
||||
{
|
||||
this.query = query;
|
||||
this.includeRequest = includeRequest==null?false:includeRequest;
|
||||
@@ -106,6 +109,7 @@ public class SearchQuery
|
||||
this.pivots = pivots;
|
||||
this.stats = stats;
|
||||
this.facetRange = facetRange;
|
||||
this.timezone = timezone;
|
||||
}
|
||||
|
||||
public Query getQuery()
|
||||
@@ -201,5 +205,9 @@ public class SearchQuery
|
||||
{
|
||||
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
|
||||
public void fromFacetFields() throws Exception
|
||||
{
|
||||
@@ -866,7 +910,9 @@ public class SearchMapperTests
|
||||
private SearchQuery minimalQuery()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user