This is an automated email from the ASF dual-hosted git repository.
nixon 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 aa441de ATLAS-3876 : Relationship Search API not showing correct
approximateCount
aa441de is described below
commit aa441de4f62947b96f6ff387f4d140a2b83c99dc
Author: Pinal Shah <[email protected]>
AuthorDate: Wed Aug 5 09:53:04 2020 +0530
ATLAS-3876 : Relationship Search API not showing correct approximateCount
Signed-off-by: nixonrodrigues <[email protected]>
---
.../org/apache/atlas/type/AtlasStructType.java | 7 +-
.../atlas/discovery/AtlasDiscoveryService.java | 3 +-
.../atlas/discovery/EntityDiscoveryService.java | 156 ++++++-------
.../apache/atlas/discovery/SearchProcessor.java | 4 +-
.../store/graph/v2/EntityGraphRetriever.java | 4 +
.../org/apache/atlas/util/SearchPredicateUtil.java | 254 +++++++++++----------
.../org/apache/atlas/web/rest/DiscoveryREST.java | 7 +-
7 files changed, 218 insertions(+), 217 deletions(-)
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
b/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
index 61ee458..b0d88fc 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
@@ -670,7 +670,7 @@ public class AtlasStructType extends AtlasType {
throw new AtlasBaseException(AtlasErrorCode.UNKNOWN_ATTRIBUTE,
attrName, structDef.getName());
}
- AtlasEntityType getReferencedEntityType(AtlasType type) {
+ static AtlasEntityType getReferencedEntityType(AtlasType type) {
if (type instanceof AtlasArrayType) {
type = ((AtlasArrayType)type).getElementType();
}
@@ -980,6 +980,11 @@ public class AtlasStructType extends AtlasType {
return (relationshipLabel == null) ? getEdgeLabel(qualifiedName) :
relationshipLabel;
}
+ public AtlasEntityType getReferencedEntityType(AtlasTypeRegistry
typeRegistry) throws AtlasBaseException {
+ AtlasType type = typeRegistry.getType(attributeDef.getTypeName());
+ return AtlasStructType.getReferencedEntityType(type);
+ }
+
public static String getQualifiedAttributeName(AtlasStructDef
structDef, String attrName) {
if (isRootType(structDef)) {
return attrName;
diff --git
a/repository/src/main/java/org/apache/atlas/discovery/AtlasDiscoveryService.java
b/repository/src/main/java/org/apache/atlas/discovery/AtlasDiscoveryService.java
index 8657259..4d97a08 100644
---
a/repository/src/main/java/org/apache/atlas/discovery/AtlasDiscoveryService.java
+++
b/repository/src/main/java/org/apache/atlas/discovery/AtlasDiscoveryService.java
@@ -87,11 +87,12 @@ public interface AtlasDiscoveryService {
* @param sortByAttribute sort the result using this attribute name,
default value is 'name'
* @param sortOrder sorting order
* @param excludeDeletedEntities exclude deleted entities in search result.
+ * @param getApproximateCount
* @param limit number of resultant rows (for pagination). [ limit > 0 ]
and [ limit < maxlimit ]. -1 maps to atlas.search.defaultlimit property.
* @param offset offset to the results returned (for pagination). [ offset
>= 0 ]. -1 maps to offset 0.
* @return AtlasSearchResult
*/
- AtlasSearchResult searchRelatedEntities(String guid, String relation,
Set<String> attributes, String sortByAttribute, SortOrder sortOrder, boolean
excludeDeletedEntities, int limit, int offset) throws AtlasBaseException;
+ AtlasSearchResult searchRelatedEntities(String guid, String relation,
Set<String> attributes, String sortByAttribute, SortOrder sortOrder, boolean
excludeDeletedEntities, boolean getApproximateCount, int limit, int offset)
throws AtlasBaseException;
/**
*
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 4b95642..f814345 100644
---
a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
+++
b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
@@ -30,6 +30,7 @@ import org.apache.atlas.model.discovery.*;
import org.apache.atlas.model.discovery.AtlasSearchResult.AtlasFullTextResult;
import org.apache.atlas.model.discovery.AtlasSearchResult.AtlasQueryType;
import
org.apache.atlas.model.discovery.AtlasSearchResult.AttributeSearchResult;
+import org.apache.atlas.model.instance.AtlasEntity;
import org.apache.atlas.model.instance.AtlasEntityHeader;
import org.apache.atlas.model.instance.AtlasObjectId;
import org.apache.atlas.model.profile.AtlasUserSavedSearch;
@@ -49,28 +50,33 @@ import
org.apache.atlas.type.AtlasBuiltInTypes.AtlasObjectIdType;
import org.apache.atlas.type.AtlasStructType.AtlasAttribute;
import org.apache.atlas.util.AtlasGremlinQueryProvider;
import org.apache.atlas.util.AtlasGremlinQueryProvider.AtlasGremlinQuery;
+import org.apache.atlas.util.SearchPredicateUtil;
import org.apache.atlas.util.SearchTracker;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
+import org.apache.commons.collections.Predicate;
+import org.apache.commons.collections4.IteratorUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.inject.Inject;
-import javax.script.Bindings;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
import java.util.*;
import static org.apache.atlas.AtlasErrorCode.*;
import static org.apache.atlas.SortOrder.ASCENDING;
-import static org.apache.atlas.SortOrder.DESCENDING;
import static org.apache.atlas.model.instance.AtlasEntity.Status.ACTIVE;
import static org.apache.atlas.model.instance.AtlasEntity.Status.DELETED;
import static org.apache.atlas.repository.Constants.ASSET_ENTITY_TYPE;
import static org.apache.atlas.repository.Constants.OWNER_ATTRIBUTE;
-import static
org.apache.atlas.util.AtlasGremlinQueryProvider.AtlasGremlinQuery.*;
+import static
org.apache.atlas.util.AtlasGremlinQueryProvider.AtlasGremlinQuery.BASIC_SEARCH_STATE_FILTER;
+import static
org.apache.atlas.util.AtlasGremlinQueryProvider.AtlasGremlinQuery.TO_RANGE_LIST;
@Component
public class EntityDiscoveryService implements AtlasDiscoveryService {
@@ -564,13 +570,14 @@ public class EntityDiscoveryService implements
AtlasDiscoveryService {
@Override
@GraphTransaction
public AtlasSearchResult searchRelatedEntities(String guid, String
relation, Set<String> attributes, String sortBy, SortOrder sortOrder,
- boolean
excludeDeletedEntities, int limit, int offset) throws AtlasBaseException {
+ boolean
excludeDeletedEntities, boolean getApproximateCount, int limit, int offset)
throws AtlasBaseException {
AtlasSearchResult ret = new
AtlasSearchResult(AtlasQueryType.RELATIONSHIP);
if (StringUtils.isEmpty(guid) || StringUtils.isEmpty(relation)) {
throw new AtlasBaseException(AtlasErrorCode.INVALID_PARAMETERS,
"guid: '" + guid + "', relation: '" + relation + "'");
}
+ //validate entity
AtlasVertex entityVertex = entityRetriever.getEntityVertex(guid);
String entityTypeName = GraphHelper.getTypeName(entityVertex);
AtlasEntityType entityType =
typeRegistry.getEntityTypeByName(entityTypeName);
@@ -579,130 +586,111 @@ public class EntityDiscoveryService implements
AtlasDiscoveryService {
throw new
AtlasBaseException(AtlasErrorCode.INVALID_RELATIONSHIP_TYPE, entityTypeName,
guid);
}
- AtlasAttribute attribute = entityType.getAttribute(relation);
+ //validate relation
+ AtlasEntityType endEntityType = null;
+ AtlasAttribute attribute = entityType.getAttribute(relation);
if (attribute == null) {
attribute = entityType.getRelationshipAttribute(relation, null);
}
if (attribute != null) {
- if (attribute.isObjectRef()) {
+ endEntityType = attribute.getReferencedEntityType(typeRegistry);
+
+ if (endEntityType != null) {
relation = attribute.getRelationshipEdgeLabel();
} else {
throw new
AtlasBaseException(AtlasErrorCode.INVALID_RELATIONSHIP_ATTRIBUTE, relation,
attribute.getTypeName());
}
}
+ //validate sortBy attribute
String sortByAttributeName = DEFAULT_SORT_ATTRIBUTE_NAME;
if (StringUtils.isNotEmpty(sortBy)) {
sortByAttributeName = sortBy;
}
- //get entity type of relationship (End vertex entity type) from
relationship label
- Iterator<AtlasEdge> edges =
GraphHelper.getAdjacentEdgesByLabel(entityVertex, AtlasEdgeDirection.BOTH,
relation);
- AtlasEntityType endEntityType = null;
-
- if (edges != null && edges.hasNext()) {
- AtlasEdge relationEdge = edges.next();
- AtlasVertex outVertex = relationEdge.getOutVertex();
- AtlasVertex inVertex = relationEdge.getInVertex();
- String outVertexId = outVertex != null ?
outVertex.getIdForDisplay() : null;
- AtlasVertex endVertex = StringUtils.equals(outVertexId,
entityVertex.getIdForDisplay()) ? inVertex : outVertex;
- String endTypeName = GraphHelper.getTypeName(endVertex);
-
- endEntityType = typeRegistry.getEntityTypeByName(endTypeName);
- }
-
- if (endEntityType == null) {
- ret.setEntities(new ArrayList<>());
-
- if (LOG.isDebugEnabled()) {
- LOG.debug("Invalid relation : {} ", relation);
- }
-
- return ret;
- }
-
- AtlasAttribute sortByAttribute =
endEntityType.getAttribute(sortByAttributeName);
+ if (endEntityType != null) {
+ AtlasAttribute sortByAttribute =
endEntityType.getAttribute(sortByAttributeName);
- if (sortByAttribute == null) {
- sortByAttributeName = null;
- sortOrder = null;
+ if (sortByAttribute == null) {
+ sortByAttributeName = null;
+ sortOrder = null;
- if (LOG.isDebugEnabled()) {
if (StringUtils.isNotEmpty(sortBy)) {
- LOG.debug("Invalid sortBy Attribute {} for entityType {},
Ignoring Sorting", sortBy, endEntityType.getTypeName());
+ LOG.info("Invalid sortBy Attribute {} for entityType {},
Ignoring Sorting", sortBy, endEntityType.getTypeName());
} else {
- LOG.debug("Invalid Default sortBy Attribute {} for
entityType {}, Ignoring Sorting", DEFAULT_SORT_ATTRIBUTE_NAME,
endEntityType.getTypeName());
+ LOG.info("Invalid Default sortBy Attribute {} for
entityType {}, Ignoring Sorting", DEFAULT_SORT_ATTRIBUTE_NAME,
endEntityType.getTypeName());
+ }
+
+ } else {
+ sortByAttributeName = sortByAttribute.getVertexPropertyName();
+
+ if (sortOrder == null) {
+ sortOrder = ASCENDING;
}
}
} else {
- sortByAttributeName = sortByAttribute.getVertexPropertyName();
+ sortOrder = null;
- if (sortOrder == null) {
- sortOrder = ASCENDING;
+ if (StringUtils.isNotEmpty(sortBy)) {
+ LOG.info("Invalid sortBy Attribute {}, Ignoring Sorting",
sortBy);
}
}
- QueryParams params =
QueryParams.getNormalizedParams(limit, offset);
- ScriptEngine scriptEngine = graph.getGremlinScriptEngine();
- Bindings bindings = scriptEngine.createBindings();
- Set<String> states = getEntityStates();
- String relatedEntitiesQuery =
gremlinQueryProvider.getQuery(RELATIONSHIP_SEARCH);
+ //get relationship(end vertices) vertices
+ GraphTraversal gt =
graph.V(entityVertex.getId()).bothE(relation).otherV();
if (excludeDeletedEntities) {
- states.remove(DELETED.toString());
+ gt.has(Constants.STATE_PROPERTY_KEY,
AtlasEntity.Status.ACTIVE.name());
}
- if (sortOrder == ASCENDING) {
- relatedEntitiesQuery +=
gremlinQueryProvider.getQuery(RELATIONSHIP_SEARCH_ASCENDING_SORT);
- bindings.put(SORT_ATTRIBUTE_NAME, sortByAttributeName);
+ if (sortOrder != null) {
+ if (sortOrder == ASCENDING) {
+ gt.order().by(sortByAttributeName, Order.asc);
+ } else {
+ gt.order().by(sortByAttributeName, Order.desc);
+ }
+ }
+
+ gt.range(offset, offset + limit);
- } else if (sortOrder == DESCENDING) {
- relatedEntitiesQuery +=
gremlinQueryProvider.getQuery(RELATIONSHIP_SEARCH_DESCENDING_SORT);
- bindings.put(SORT_ATTRIBUTE_NAME, sortByAttributeName);
+ List<AtlasEntityHeader> resultList = new ArrayList<>();
+ while (gt.hasNext()) {
+ Vertex v = (Vertex) gt.next();
+
+ if (v != null &&
v.property(Constants.GUID_PROPERTY_KEY).isPresent()) {
+ String endVertexGuid =
v.property(Constants.GUID_PROPERTY_KEY).value().toString();
+
resultList.add(entityRetriever.toAtlasEntityHeader(endVertexGuid, attributes));
+ }
}
- relatedEntitiesQuery += gremlinQueryProvider.getQuery(TO_RANGE_LIST);
+ ret.setEntities(resultList);
- bindings.put("g", graph);
- bindings.put("guid", guid);
- bindings.put("relation", relation);
- bindings.put("states", Collections.unmodifiableSet(states));
- bindings.put("startIdx", params.offset());
- bindings.put("endIdx", params.offset() + params.limit());
+ if (ret.getEntities() == null) {
+ ret.setEntities(new ArrayList<>());
+ }
- try {
- Object result = graph.executeGremlinScript(scriptEngine, bindings,
relatedEntitiesQuery, false);
+ //set approximate count
+ //state of the edge and endVertex will be same
+ if (getApproximateCount) {
+ Iterator<AtlasEdge> edges =
GraphHelper.getAdjacentEdgesByLabel(entityVertex, AtlasEdgeDirection.BOTH,
relation);
- if (result instanceof List && CollectionUtils.isNotEmpty((List)
result)) {
- List<?> queryResult = (List) result;
- Object firstElement = queryResult.get(0);
+ if (excludeDeletedEntities) {
+ List<AtlasEdge> edgeList = new ArrayList<>();
+ edges.forEachRemaining(edgeList::add);
- if (firstElement instanceof AtlasVertex) {
- List<AtlasVertex> vertices = (List<AtlasVertex>)
queryResult;
- List<AtlasEntityHeader> resultList = new
ArrayList<>(vertices.size());
+ Predicate activePredicate =
SearchPredicateUtil.getEQPredicateGenerator().generatePredicate
+ (Constants.STATE_PROPERTY_KEY,
AtlasEntity.Status.ACTIVE.name(), String.class);
- for (AtlasVertex vertex : vertices) {
-
resultList.add(entityRetriever.toAtlasEntityHeader(vertex, attributes));
- }
+ CollectionUtils.filter(edgeList, activePredicate);
+ ret.setApproximateCount(edgeList.size());
- ret.setEntities(resultList);
- }
- }
+ } else {
+ ret.setApproximateCount(IteratorUtils.size(edges));
- if (ret.getEntities() == null) {
- ret.setEntities(new ArrayList<>());
}
- } catch (ScriptException e) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Gremlin script execution failed for relationship
search query: {}", relatedEntitiesQuery, e);
- }
-
- throw new AtlasBaseException(AtlasErrorCode.INTERNAL_ERROR,
"Relationship search query failed");
- } finally {
- graph.releaseGremlinScriptEngine(scriptEngine);
}
scrubSearchResults(ret);
diff --git
a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
index 044179d..c5e3d6f 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
@@ -75,7 +75,7 @@ public abstract class SearchProcessor {
public static final String CUSTOM_ATTR_SEARCH_FORMAT =
"\"\\\"%s\\\":\\\"%s\\\"\"";
public static final String CUSTOM_ATTR_SEARCH_FORMAT_GRAPH =
"\"%s\":\"%s\"";
private static final Map<SearchParameters.Operator, String>
OPERATOR_MAP = new HashMap<>();
- private static final Map<SearchParameters.Operator,
VertexAttributePredicateGenerator> OPERATOR_PREDICATE_MAP = new HashMap<>();
+ private static final Map<SearchParameters.Operator,
ElementAttributePredicateGenerator> OPERATOR_PREDICATE_MAP = new HashMap<>();
static
{
@@ -697,7 +697,7 @@ public abstract class SearchProcessor {
Predicate ret = null;
AtlasAttribute attribute =
type.getAttribute(attrName);
- VertexAttributePredicateGenerator predicate =
OPERATOR_PREDICATE_MAP.get(op);
+ ElementAttributePredicateGenerator predicate =
OPERATOR_PREDICATE_MAP.get(op);
if (attribute != null && predicate != null) {
final AtlasType attrType = attribute.getAttributeType();
diff --git
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
index 863a003..00146b1 100644
---
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
+++
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
@@ -201,6 +201,10 @@ public class EntityGraphRetriever {
return toAtlasEntityHeader(getEntityVertex(guid));
}
+ public AtlasEntityHeader toAtlasEntityHeader(String guid, Set<String>
attributes) throws AtlasBaseException {
+ return toAtlasEntityHeader(getEntityVertex(guid), attributes);
+ }
+
public AtlasEntityHeader toAtlasEntityHeader(AtlasVertex entityVertex)
throws AtlasBaseException {
return toAtlasEntityHeader(entityVertex,
Collections.<String>emptySet());
}
diff --git
a/repository/src/main/java/org/apache/atlas/util/SearchPredicateUtil.java
b/repository/src/main/java/org/apache/atlas/util/SearchPredicateUtil.java
index 5069d78..cf158cd 100644
--- a/repository/src/main/java/org/apache/atlas/util/SearchPredicateUtil.java
+++ b/repository/src/main/java/org/apache/atlas/util/SearchPredicateUtil.java
@@ -17,6 +17,8 @@
*/
package org.apache.atlas.util;
+import org.apache.atlas.repository.graphdb.AtlasEdge;
+import org.apache.atlas.repository.graphdb.AtlasElement;
import org.apache.atlas.repository.graphdb.AtlasVertex;
import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2;
import org.apache.atlas.type.AtlasEntityType;
@@ -43,12 +45,12 @@ public class SearchPredicateUtil {
}
};
- public static VertexAttributePredicateGenerator getLTPredicateGenerator() {
+ public static ElementAttributePredicateGenerator getLTPredicateGenerator()
{
if (LOG.isDebugEnabled()) {
LOG.debug("==> getLTPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -88,12 +90,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator getGTPredicateGenerator() {
+ public static ElementAttributePredicateGenerator getGTPredicateGenerator()
{
if (LOG.isDebugEnabled()) {
LOG.debug("==> getGTPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -132,12 +134,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator getLTEPredicateGenerator()
{
+ public static ElementAttributePredicateGenerator
getLTEPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getLTEPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -177,12 +179,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator getGTEPredicateGenerator()
{
+ public static ElementAttributePredicateGenerator
getGTEPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getGTEPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -222,12 +224,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator getEQPredicateGenerator() {
+ public static ElementAttributePredicateGenerator getEQPredicateGenerator()
{
if (LOG.isDebugEnabled()) {
LOG.debug("==> getEQPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -269,12 +271,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator getNEQPredicateGenerator()
{
+ public static ElementAttributePredicateGenerator
getNEQPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getNEQPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -316,12 +318,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getContainsAnyPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getContainsAnyPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getContainsAnyPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -329,7 +331,7 @@ public class SearchPredicateUtil {
if (attrName == null || attrClass == null || attrVal == null
|| !isValid(attrVal, attrClass)) {
ret = ALWAYS_FALSE;
} else {
- ret = new VertexAttributePredicate(attrName, attrClass) {
+ ret = new ElementAttributePredicate(attrName, attrClass) {
@Override
public boolean compareValue(final Object
vertexAttrVal) {
return CollectionUtils.containsAny((Collection)
attrVal, (Collection) vertexAttrVal);
@@ -351,12 +353,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getContainsAllPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getContainsAllPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getContainsAllPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -364,7 +366,7 @@ public class SearchPredicateUtil {
if (attrName == null || attrClass == null || attrVal == null
|| !isValid(attrVal, attrClass)) {
ret = ALWAYS_FALSE;
} else {
- ret = new VertexAttributePredicate(attrName, attrClass) {
+ ret = new ElementAttributePredicate(attrName, attrClass) {
@Override
public boolean compareValue(final Object
vertexAttrVal) {
return ((Collection)
attrVal).containsAll((Collection) vertexAttrVal);
@@ -386,12 +388,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator getINPredicateGenerator() {
+ public static ElementAttributePredicateGenerator getINPredicateGenerator()
{
if (LOG.isDebugEnabled()) {
LOG.debug("==> getINPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -399,7 +401,7 @@ public class SearchPredicateUtil {
if (attrName == null || attrClass == null || attrVal == null
|| !isValid(attrVal, attrClass)) {
ret = ALWAYS_FALSE;
} else {
- ret = new VertexAttributePredicate(attrName, attrClass) {
+ ret = new ElementAttributePredicate(attrName, attrClass) {
@Override
public boolean compareValue(final Object
vertexAttrVal) {
return
((Collection)attrVal).contains(vertexAttrVal);
@@ -422,12 +424,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getRegexPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getRegexPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getRegexPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -451,12 +453,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getLIKEPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getLIKEPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getLIKEPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -480,12 +482,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getStartsWithPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getStartsWithPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getStartsWithPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -509,12 +511,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getEndsWithPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getEndsWithPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getEndsWithPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -538,12 +540,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getContainsPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getContainsPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getContainsPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -554,7 +556,7 @@ public class SearchPredicateUtil {
ret = StringPredicate.getContainsPredicate(attrName,
attrClass, (String)attrVal);
} else if (Collection.class.isAssignableFrom(attrClass)) {
// Check if the provided value is present in the list of
stored values
- ret = new VertexAttributePredicate(attrName, attrClass) {
+ ret = new ElementAttributePredicate(attrName, attrClass) {
@Override
protected boolean compareValue(final Object
vertexAttrVal) {
return ((Collection)
vertexAttrVal).contains(attrVal);
@@ -575,12 +577,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getNotContainsPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getNotContainsPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getNotContainsPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -591,7 +593,7 @@ public class SearchPredicateUtil {
ret = StringPredicate.getNotContainsPredicate(attrName,
attrClass, (String) attrVal);
} else if (Collection.class.isAssignableFrom(attrClass)) {
// Check if the provided value is present in the list of
stored values
- ret = new VertexAttributePredicate(attrName,
attrClass,true) {
+ ret = new ElementAttributePredicate(attrName,
attrClass,true) {
@Override
protected boolean compareValue(final Object
vertexAttrVal) {
return vertexAttrVal == null || !((Collection)
vertexAttrVal).contains(attrVal);
@@ -612,12 +614,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getIsNullPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getIsNullPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getIsNullPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -625,7 +627,7 @@ public class SearchPredicateUtil {
if (attrName == null || attrClass == null) {
ret = ALWAYS_FALSE;
} else {
- ret = new VertexAttributePredicate(attrName, attrClass,
true) {
+ ret = new ElementAttributePredicate(attrName, attrClass,
true) {
@Override
protected boolean compareValue(final Object
vertexAttrVal) {
return vertexAttrVal == null;
@@ -644,12 +646,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getNotNullPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getNotNullPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getNotNullPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -657,7 +659,7 @@ public class SearchPredicateUtil {
if (attrName == null || attrClass == null) {
ret = ALWAYS_FALSE;
} else {
- ret = new VertexAttributePredicate(attrName, attrClass,
true) {
+ ret = new ElementAttributePredicate(attrName, attrClass,
true) {
@Override
protected boolean compareValue(final Object
vertexAttrVal) {
return vertexAttrVal != null;
@@ -676,12 +678,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getNotEmptyPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getNotEmptyPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getNotEmptyPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -689,7 +691,7 @@ public class SearchPredicateUtil {
if (attrName == null || attrClass == null) {
ret = ALWAYS_FALSE;
} else {
- ret = new VertexAttributePredicate(attrName, attrClass,
true) {
+ ret = new ElementAttributePredicate(attrName, attrClass,
true) {
@Override
protected boolean compareValue(final Object
vertexAttrVal) {
boolean ret = false;
@@ -720,12 +722,12 @@ public class SearchPredicateUtil {
return ret;
}
- public static VertexAttributePredicateGenerator
getIsNullOrEmptyPredicateGenerator() {
+ public static ElementAttributePredicateGenerator
getIsNullOrEmptyPredicateGenerator() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getIsNullOrEmptyPredicateGenerator");
}
- VertexAttributePredicateGenerator ret = new
VertexAttributePredicateGenerator() {
+ ElementAttributePredicateGenerator ret = new
ElementAttributePredicateGenerator() {
@Override
public Predicate generatePredicate(final String attrName, final
Object attrVal, final Class attrClass) {
final Predicate ret;
@@ -733,7 +735,7 @@ public class SearchPredicateUtil {
if (attrName == null || attrClass == null) {
ret = ALWAYS_FALSE;
} else {
- ret = new VertexAttributePredicate(attrName, attrClass,
true) {
+ ret = new ElementAttributePredicate(attrName, attrClass,
true) {
@Override
protected boolean compareValue(final Object
vertexAttrVal) {
final boolean ret;
@@ -764,20 +766,20 @@ public class SearchPredicateUtil {
return ret;
}
- public interface VertexAttributePredicateGenerator {
+ public interface ElementAttributePredicateGenerator {
Predicate generatePredicate(String attrName, Object attrVal, Class
attrClass);
}
- static abstract class VertexAttributePredicate implements Predicate {
+ static abstract class ElementAttributePredicate implements Predicate {
final String attrName;
final Class attrClass;
final boolean isNullValid;
- VertexAttributePredicate(String attrName, Class attrClass) {
+ ElementAttributePredicate(String attrName, Class attrClass) {
this(attrName, attrClass, false);
}
- VertexAttributePredicate(String attrName, Class attrClass, boolean
isNullValid) {
+ ElementAttributePredicate(String attrName, Class attrClass, boolean
isNullValid) {
this.attrName = attrName;
this.attrClass = attrClass;
this.isNullValid = isNullValid;
@@ -787,14 +789,14 @@ public class SearchPredicateUtil {
public boolean evaluate(final Object object) {
final boolean ret;
- AtlasVertex vertex = (object instanceof AtlasVertex) ?
(AtlasVertex)object : null;
+ AtlasElement element = (object instanceof AtlasVertex || object
instanceof AtlasEdge) ? (AtlasElement) object : null;
- if (vertex != null) {
+ if (element != null) {
Object attrValue;
if (Collection.class.isAssignableFrom(attrClass)) {
- attrValue = vertex.getPropertyValues(attrName, attrClass);
+ attrValue = element.getPropertyValues(attrName, attrClass);
} else {
- attrValue = AtlasGraphUtilsV2.getProperty(vertex,
attrName, attrClass);
+ attrValue = AtlasGraphUtilsV2.getProperty(element,
attrName, attrClass);
}
ret = (isNullValid || attrValue != null) &&
compareValue(attrValue);
@@ -808,7 +810,7 @@ public class SearchPredicateUtil {
protected abstract boolean compareValue(Object vertexAttrVal);
}
- static abstract class BooleanPredicate extends VertexAttributePredicate {
+ static abstract class BooleanPredicate extends ElementAttributePredicate {
final Boolean value;
BooleanPredicate(String attrName, Class attrClass, Boolean value) {
@@ -822,7 +824,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, Boolean value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, Boolean value) {
return new SearchPredicateUtil.BooleanPredicate(attrName,
attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Boolean) vertexAttrVal).compareTo(value) == 0;
@@ -830,7 +832,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, Boolean value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, Boolean value) {
return new SearchPredicateUtil.BooleanPredicate(attrName,
attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((Boolean)
vertexAttrVal).compareTo(value) != 0;
@@ -839,7 +841,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class ShortPredicate extends VertexAttributePredicate {
+ static abstract class ShortPredicate extends ElementAttributePredicate {
final Short value;
ShortPredicate(String attrName, Class attrClass, Short value) {
@@ -853,7 +855,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, Short value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, Short value) {
return new ShortPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Short) vertexAttrVal).compareTo(value) == 0;
@@ -861,7 +863,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, Short value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, Short value) {
return new ShortPredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((Short)
vertexAttrVal).compareTo(value) != 0;
@@ -869,7 +871,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, Short value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, Short value) {
return new ShortPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Short) vertexAttrVal).compareTo(value) < 0;
@@ -877,7 +879,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, Short value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, Short value) {
return new ShortPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Short) vertexAttrVal).compareTo(value) <= 0;
@@ -885,7 +887,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, Short value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, Short value) {
return new ShortPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Short) vertexAttrVal).compareTo(value) > 0;
@@ -893,7 +895,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, Short value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, Short value) {
return new ShortPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Short) vertexAttrVal).compareTo(value) >= 0;
@@ -902,7 +904,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class IntegerPredicate extends VertexAttributePredicate {
+ static abstract class IntegerPredicate extends ElementAttributePredicate {
final Integer value;
IntegerPredicate(String attrName, Class attrClass, Integer value) {
@@ -916,7 +918,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, Integer value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, Integer value) {
return new IntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Integer) vertexAttrVal).compareTo(value) == 0;
@@ -924,7 +926,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, Integer value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, Integer value) {
return new IntegerPredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((Integer)
vertexAttrVal).compareTo(value) != 0;
@@ -932,7 +934,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, Integer value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, Integer value) {
return new IntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Integer) vertexAttrVal).compareTo(value) < 0;
@@ -940,7 +942,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, Integer value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, Integer value) {
return new IntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Integer) vertexAttrVal).compareTo(value) <= 0;
@@ -948,7 +950,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, Integer value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, Integer value) {
return new IntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Integer) vertexAttrVal).compareTo(value) > 0;
@@ -956,7 +958,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, Integer value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, Integer value) {
return new IntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Integer) vertexAttrVal).compareTo(value) >= 0;
@@ -965,7 +967,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class LongPredicate extends VertexAttributePredicate {
+ static abstract class LongPredicate extends ElementAttributePredicate {
final Long value;
LongPredicate(String attrName, Class attrClass, Long value) {
@@ -979,7 +981,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, Long value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, Long value) {
return new LongPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Long) vertexAttrVal).compareTo(value) == 0;
@@ -987,7 +989,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, Long value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, Long value) {
return new LongPredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((Long)
vertexAttrVal).compareTo(value) != 0;
@@ -995,7 +997,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, Long value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, Long value) {
return new LongPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Long) vertexAttrVal).compareTo(value) < 0;
@@ -1003,7 +1005,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, Long value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, Long value) {
return new LongPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Long) vertexAttrVal).compareTo(value) <= 0;
@@ -1011,7 +1013,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, Long value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, Long value) {
return new LongPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Long) vertexAttrVal).compareTo(value) > 0;
@@ -1019,7 +1021,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, Long value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, Long value) {
return new LongPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Long) vertexAttrVal).compareTo(value) >= 0;
@@ -1028,7 +1030,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class FloatPredicate extends VertexAttributePredicate {
+ static abstract class FloatPredicate extends ElementAttributePredicate {
final Float value;
FloatPredicate(String attrName, Class attrClass, Float value) {
@@ -1042,7 +1044,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, Float value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, Float value) {
return new FloatPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Float) vertexAttrVal).compareTo(value) == 0;
@@ -1050,7 +1052,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, Float value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, Float value) {
return new FloatPredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((Float)
vertexAttrVal).compareTo(value) != 0;
@@ -1058,7 +1060,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, Float value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, Float value) {
return new FloatPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Float) vertexAttrVal).compareTo(value) < 0;
@@ -1066,7 +1068,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, Float value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, Float value) {
return new FloatPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Float) vertexAttrVal).compareTo(value) <= 0;
@@ -1074,7 +1076,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, Float value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, Float value) {
return new FloatPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Float) vertexAttrVal).compareTo(value) > 0;
@@ -1082,7 +1084,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, Float value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, Float value) {
return new FloatPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Float) vertexAttrVal).compareTo(value) >= 0;
@@ -1091,7 +1093,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class DoublePredicate extends VertexAttributePredicate {
+ static abstract class DoublePredicate extends ElementAttributePredicate {
final Double value;
DoublePredicate(String attrName, Class attrClass, Double value) {
@@ -1105,7 +1107,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, Double value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, Double value) {
return new DoublePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Double) vertexAttrVal).compareTo(value) == 0;
@@ -1113,7 +1115,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, Double value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, Double value) {
return new DoublePredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((Double)
vertexAttrVal).compareTo(value) != 0;
@@ -1121,7 +1123,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, Double value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, Double value) {
return new DoublePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Double) vertexAttrVal).compareTo(value) < 0;
@@ -1129,7 +1131,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, Double value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, Double value) {
return new DoublePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Double) vertexAttrVal).compareTo(value) <= 0;
@@ -1137,7 +1139,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, Double value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, Double value) {
return new DoublePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Double) vertexAttrVal).compareTo(value) > 0;
@@ -1145,7 +1147,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, Double value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, Double value) {
return new DoublePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Double) vertexAttrVal).compareTo(value) >= 0;
@@ -1154,7 +1156,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class BytePredicate extends VertexAttributePredicate {
+ static abstract class BytePredicate extends ElementAttributePredicate {
final Byte value;
BytePredicate(String attrName, Class attrClass, Byte value) {
@@ -1168,7 +1170,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, Byte value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, Byte value) {
return new BytePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Byte) vertexAttrVal).compareTo(value) == 0;
@@ -1176,7 +1178,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, Byte value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, Byte value) {
return new BytePredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((Byte)
vertexAttrVal).compareTo(value) != 0;
@@ -1184,7 +1186,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, Byte value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, Byte value) {
return new BytePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Byte) vertexAttrVal).compareTo(value) < 0;
@@ -1192,7 +1194,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, Byte value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, Byte value) {
return new BytePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Byte) vertexAttrVal).compareTo(value) <= 0;
@@ -1200,7 +1202,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, Byte value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, Byte value) {
return new BytePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Byte) vertexAttrVal).compareTo(value) > 0;
@@ -1208,7 +1210,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, Byte value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, Byte value) {
return new BytePredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((Byte) vertexAttrVal).compareTo(value) >= 0;
@@ -1217,7 +1219,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class BigIntegerPredicate extends VertexAttributePredicate
{
+ static abstract class BigIntegerPredicate extends
ElementAttributePredicate {
final BigInteger value;
BigIntegerPredicate(String attrName, Class attrClass, BigInteger
value) {
@@ -1231,7 +1233,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, BigInteger value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, BigInteger value) {
return new BigIntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigInteger) vertexAttrVal).compareTo(value) == 0;
@@ -1239,7 +1241,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, BigInteger value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, BigInteger value) {
return new BigIntegerPredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((BigInteger)
vertexAttrVal).compareTo(value) != 0;
@@ -1247,7 +1249,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, BigInteger value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, BigInteger value) {
return new BigIntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigInteger) vertexAttrVal).compareTo(value) < 0;
@@ -1255,7 +1257,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, BigInteger value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, BigInteger value) {
return new BigIntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigInteger) vertexAttrVal).compareTo(value) <= 0;
@@ -1263,7 +1265,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, BigInteger value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, BigInteger value) {
return new BigIntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigInteger) vertexAttrVal).compareTo(value) > 0;
@@ -1271,7 +1273,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, BigInteger value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, BigInteger value) {
return new BigIntegerPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigInteger) vertexAttrVal).compareTo(value) >= 0;
@@ -1280,7 +1282,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class BigDecimalPredicate extends VertexAttributePredicate
{
+ static abstract class BigDecimalPredicate extends
ElementAttributePredicate {
final BigDecimal value;
BigDecimalPredicate(String attrName, Class attrClass, BigDecimal
value) {
@@ -1294,7 +1296,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, BigDecimal value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, BigDecimal value) {
return new BigDecimalPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigDecimal) vertexAttrVal).compareTo(value) == 0;
@@ -1302,7 +1304,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, BigDecimal value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, BigDecimal value) {
return new BigDecimalPredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((BigDecimal)
vertexAttrVal).compareTo(value) != 0;
@@ -1310,7 +1312,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, BigDecimal value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, BigDecimal value) {
return new BigDecimalPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigDecimal) vertexAttrVal).compareTo(value) < 0;
@@ -1318,7 +1320,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, BigDecimal value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, BigDecimal value) {
return new BigDecimalPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigDecimal) vertexAttrVal).compareTo(value) <= 0;
@@ -1326,7 +1328,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, BigDecimal value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, BigDecimal value) {
return new BigDecimalPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigDecimal) vertexAttrVal).compareTo(value) > 0;
@@ -1334,7 +1336,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, BigDecimal value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, BigDecimal value) {
return new BigDecimalPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((BigDecimal) vertexAttrVal).compareTo(value) >= 0;
@@ -1343,7 +1345,7 @@ public class SearchPredicateUtil {
}
}
- static abstract class StringPredicate extends VertexAttributePredicate {
+ static abstract class StringPredicate extends ElementAttributePredicate {
final String value;
StringPredicate(String attrName, Class attrClass, String value) {
@@ -1357,7 +1359,7 @@ public class SearchPredicateUtil {
this.value = value;
}
- static VertexAttributePredicate getEQPredicate(String attrName, Class
attrClass, String value) {
+ static ElementAttributePredicate getEQPredicate(String attrName, Class
attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((String) vertexAttrVal).compareTo(value) == 0;
@@ -1365,7 +1367,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNEQPredicate(String attrName, Class
attrClass, String value) {
+ static ElementAttributePredicate getNEQPredicate(String attrName,
Class attrClass, String value) {
return new StringPredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || ((String)
vertexAttrVal).compareTo(value) != 0;
@@ -1373,7 +1375,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTPredicate(String attrName, Class
attrClass, String value) {
+ static ElementAttributePredicate getLTPredicate(String attrName, Class
attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((String) vertexAttrVal).compareTo(value) < 0;
@@ -1381,7 +1383,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getLTEPredicate(String attrName, Class
attrClass, String value) {
+ static ElementAttributePredicate getLTEPredicate(String attrName,
Class attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((String) vertexAttrVal).compareTo(value) <= 0;
@@ -1389,7 +1391,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTPredicate(String attrName, Class
attrClass, String value) {
+ static ElementAttributePredicate getGTPredicate(String attrName, Class
attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((String) vertexAttrVal).compareTo(value) > 0;
@@ -1397,7 +1399,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getGTEPredicate(String attrName, Class
attrClass, String value) {
+ static ElementAttributePredicate getGTEPredicate(String attrName,
Class attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((String) vertexAttrVal).compareTo(value) >= 0;
@@ -1405,7 +1407,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getContainsPredicate(String attrName,
Class attrClass, String value) {
+ static ElementAttributePredicate getContainsPredicate(String attrName,
Class attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((String) vertexAttrVal).contains(value);
@@ -1413,7 +1415,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getNotContainsPredicate(String
attrName, Class attrClass, String value) {
+ static ElementAttributePredicate getNotContainsPredicate(String
attrName, Class attrClass, String value) {
return new StringPredicate(attrName, attrClass, value, true) {
protected boolean compareValue(Object vertexAttrVal) {
return vertexAttrVal == null || !((String)
vertexAttrVal).contains(value);
@@ -1421,7 +1423,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getStartsWithPredicate(String
attrName, Class attrClass, String value) {
+ static ElementAttributePredicate getStartsWithPredicate(String
attrName, Class attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((String) vertexAttrVal).startsWith(value);
@@ -1429,7 +1431,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getEndsWithPredicate(String attrName,
Class attrClass, String value) {
+ static ElementAttributePredicate getEndsWithPredicate(String attrName,
Class attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
return ((String) vertexAttrVal).endsWith(value);
@@ -1437,7 +1439,7 @@ public class SearchPredicateUtil {
};
}
- static VertexAttributePredicate getRegexPredicate(String attrName,
Class attrClass, String value) {
+ static ElementAttributePredicate getRegexPredicate(String attrName,
Class attrClass, String value) {
return new StringPredicate(attrName, attrClass, value) {
protected boolean compareValue(Object vertexAttrVal) {
Pattern pattern = Pattern.compile(value,
Pattern.CASE_INSENSITIVE);
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 cdeb912..dd9980a 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
@@ -370,6 +370,7 @@ public class DiscoveryREST {
@QueryParam("sortBy")
String sortByAttribute,
@QueryParam("sortOrder")
SortOrder sortOrder,
@QueryParam("excludeDeletedEntities") boolean excludeDeletedEntities,
+
@QueryParam("getApproximateCount") boolean getApproximateCount,
@QueryParam("limit")
int limit,
@QueryParam("offset")
int offset) throws AtlasBaseException {
Servlets.validateQueryParamLength("guid", guid);
@@ -380,11 +381,11 @@ public class DiscoveryREST {
try {
if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
- perf = AtlasPerfTracer.getPerfTracer(PERF_LOG,
"DiscoveryREST.relatedEntitiesSearchUsingGremlin(" + guid +
- ", " + relation + ", " + sortByAttribute + ", " +
sortOrder + ", " + excludeDeletedEntities + ", " + ", " + limit + ", " + offset
+ ")");
+ perf = AtlasPerfTracer.getPerfTracer(PERF_LOG,
"DiscoveryREST.relatedEntitiesSearch(" + guid +
+ ", " + relation + ", " + sortByAttribute + ", " +
sortOrder + ", " + excludeDeletedEntities + ", " + getApproximateCount + ", " +
limit + ", " + offset + ")");
}
- return discoveryService.searchRelatedEntities(guid, relation,
attributes, sortByAttribute, sortOrder, excludeDeletedEntities, limit, offset);
+ return discoveryService.searchRelatedEntities(guid, relation,
attributes, sortByAttribute, sortOrder, excludeDeletedEntities,
getApproximateCount, limit, offset);
} finally {
AtlasPerfTracer.log(perf);
}