You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by pi...@apache.org on 2021/09/16 04:15:09 UTC
[atlas] branch master updated: ATLAS-4422 : Quick Search: Provide
sorting
This is an automated email from the ASF dual-hosted git repository.
pinal pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/master by this push:
new 98b43fc ATLAS-4422 : Quick Search: Provide sorting
98b43fc is described below
commit 98b43fc9d70afce4cd226bd1e3439ee7a76a3467
Author: Pinal Shah <pi...@freestoneinfotech.com>
AuthorDate: Mon Sep 13 23:51:50 2021 +0530
ATLAS-4422 : Quick Search: Provide sorting
Signed-off-by: Pinal Shah <pi...@freestoneinfotech.com>
---
.../model/discovery/QuickSearchParameters.java | 25 +++++++++++++-
.../atlas/discovery/EntityDiscoveryService.java | 2 ++
.../atlas/discovery/AtlasDiscoveryServiceTest.java | 38 ++++++++++++++++++++++
.../org/apache/atlas/web/rest/DiscoveryREST.java | 21 ++++++++----
4 files changed, 79 insertions(+), 7 deletions(-)
diff --git a/intg/src/main/java/org/apache/atlas/model/discovery/QuickSearchParameters.java b/intg/src/main/java/org/apache/atlas/model/discovery/QuickSearchParameters.java
index 9e5e977..79f5aae 100644
--- a/intg/src/main/java/org/apache/atlas/model/discovery/QuickSearchParameters.java
+++ b/intg/src/main/java/org/apache/atlas/model/discovery/QuickSearchParameters.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import org.apache.atlas.SortOrder;
import org.apache.atlas.model.discovery.SearchParameters.FilterCriteria;
import java.io.Serializable;
@@ -47,6 +48,8 @@ public class QuickSearchParameters implements Serializable {
private int offset;
private int limit;
private Set<String> attributes;
+ private String sortBy;
+ private SortOrder sortOrder;
/**
* for framework use.
@@ -61,7 +64,9 @@ public class QuickSearchParameters implements Serializable {
boolean excludeDeletedEntities,
int offset,
int limit,
- Set<String> attributes) {
+ Set<String> attributes,
+ String sortBy,
+ SortOrder sortOrder) {
this.query = query;
this.typeName = typeName;
this.entityFilters = entityFilters;
@@ -70,6 +75,8 @@ public class QuickSearchParameters implements Serializable {
this.offset = offset;
this.limit = limit;
this.attributes = attributes;
+ this.sortBy = sortBy;
+ this.sortOrder = sortOrder;
}
public String getQuery() {
@@ -135,4 +142,20 @@ public class QuickSearchParameters implements Serializable {
public void setAttributes(Set<String> attributes) {
this.attributes = attributes;
}
+
+ public String getSortBy() {
+ return sortBy;
+ }
+
+ public void setSortBy(String sortBy) {
+ this.sortBy = sortBy;
+ }
+
+ public SortOrder getSortOrder() {
+ return sortOrder;
+ }
+
+ public void setSortOrder(SortOrder sortOrder) {
+ this.sortOrder = sortOrder;
+ }
}
diff --git a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
index 5b3b948..8fbc22f 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
@@ -920,6 +920,8 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
searchParameters.setOffset(quickSearchParameters.getOffset());
searchParameters.setEntityFilters(quickSearchParameters.getEntityFilters());
searchParameters.setAttributes(quickSearchParameters.getAttributes());
+ searchParameters.setSortBy(quickSearchParameters.getSortBy());
+ searchParameters.setSortOrder(quickSearchParameters.getSortOrder());
return searchParameters;
}
diff --git a/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java b/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java
index 5e47295..8c257d8 100644
--- a/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java
+++ b/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java
@@ -859,6 +859,44 @@ public class AtlasDiscoveryServiceTest extends BasicTestSetup {
}
@Test
+ public void searchWithEntityQuickSearchSortAsc() throws AtlasBaseException {
+ QuickSearchParameters params = new QuickSearchParameters();
+ params.setTypeName("hive_table");
+ params.setQuery("sales");
+ params.setExcludeDeletedEntities(true);
+ params.setLimit(3);
+ params.setSortBy("owner");
+ params.setSortOrder(SortOrder.ASCENDING);
+
+ AtlasQuickSearchResult searchResult = discoveryService.quickSearch(params);
+ List<AtlasEntityHeader> list = searchResult.getSearchResults().getEntities();
+
+ Assert.assertTrue(CollectionUtils.isNotEmpty(list));
+ Assert.assertTrue(list.size() == 3);
+ Assert.assertTrue(list.get(0).getAttribute("owner").toString().equalsIgnoreCase("Jane BI"));
+ Assert.assertTrue(list.get(1).getAttribute("owner").toString().equalsIgnoreCase("Joe"));
+ }
+
+ @Test
+ public void searchWithEntityQuickSearchSortDesc() throws AtlasBaseException {
+ QuickSearchParameters params = new QuickSearchParameters();
+ params.setTypeName("hive_table");
+ params.setQuery("sales");
+ params.setExcludeDeletedEntities(true);
+ params.setLimit(3);
+ params.setSortBy("name");
+ params.setSortOrder(SortOrder.DESCENDING);
+
+ AtlasQuickSearchResult searchResult = discoveryService.quickSearch(params);
+ List<AtlasEntityHeader> list = searchResult.getSearchResults().getEntities();
+
+ Assert.assertTrue(CollectionUtils.isNotEmpty(list));
+ Assert.assertTrue(list.size() == 3);
+ Assert.assertTrue(list.get(0).getDisplayText().equalsIgnoreCase("time_dim"));
+ Assert.assertTrue(list.get(1).getDisplayText().equalsIgnoreCase("sales_fact_monthly_mv"));
+ }
+
+ @Test
public void searchRelatedEntitiesSortAsc() throws AtlasBaseException {
String guid = gethiveTableSalesFactGuid();
diff --git a/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java b/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
index e4c74a9..287b611 100644
--- a/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
+++ b/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
@@ -606,11 +606,13 @@ public class DiscoveryREST {
@Path("/quick")
@GET
@Timed
- public AtlasQuickSearchResult quickSearch(@QueryParam("query") String query,
- @QueryParam("typeName") String typeName,
- @QueryParam("excludeDeletedEntities") boolean excludeDeletedEntities,
- @QueryParam("offset") int offset,
- @QueryParam("limit") int limit) throws AtlasBaseException {
+ public AtlasQuickSearchResult quickSearch(@QueryParam("query") String query,
+ @QueryParam("typeName") String typeName,
+ @QueryParam("excludeDeletedEntities") boolean excludeDeletedEntities,
+ @QueryParam("offset") int offset,
+ @QueryParam("limit") int limit,
+ @QueryParam("sortBy") String sortByAttribute,
+ @QueryParam("sortOrder") SortOrder sortOrder) throws AtlasBaseException {
@@ -633,7 +635,9 @@ public class DiscoveryREST {
excludeDeletedEntities,
offset,
limit,
- null); // attributes
+ null, // attributes
+ sortByAttribute,
+ sortOrder);
return discoveryService.quickSearch(quickSearchParameters);
} finally {
@@ -673,6 +677,11 @@ public class DiscoveryREST {
throw new AtlasBaseException(AtlasErrorCode.INVALID_SEARCH_PARAMS);
}
+ if (StringUtils.isEmpty(quickSearchParameters.getTypeName()) &&
+ (StringUtils.isNotEmpty(quickSearchParameters.getSortBy()))) {
+ throw new AtlasBaseException(AtlasErrorCode.BAD_REQUEST, "SortBy specified without Type name");
+ }
+
validateSearchParameters(quickSearchParameters);
return discoveryService.quickSearch(quickSearchParameters);