package org.onap.aai.edges;
-import static com.jayway.jsonpath.Criteria.where;
-import static com.jayway.jsonpath.Filter.filter;
-
+import com.jayway.jsonpath.Criteria;
import com.jayway.jsonpath.Filter;
import com.jayway.jsonpath.Predicate;
private EdgeType type;
private boolean isPrivate;
+ private static final String TO_ONLY = "ToOnly";
+ private static final String FROM_ONLY = "FromOnly";
+
public static class Builder {
- private static final String TO_ONLY = "ToOnly";
- private static final String FROM_ONLY = "FromOnly";
// required
private String nodeA;
// will cover from A to B case
List<Predicate> criteriaFromTo = new ArrayList<>();
// Special logic to allow for A to B case only
- if (("FromOnly").equals(builder.getSecondNodeType())) {
+ if ((FROM_ONLY).equals(builder.getSecondNodeType())) {
criteriaFromTo.add(buildToFromPart(builder.getFirstNodeType(), null));
} else {
criteriaFromTo.add(buildToFromPart(builder.getFirstNodeType(), builder.getSecondNodeType()));
// will cover from B to A case - must be separate bc jsonpath won't let me OR predicates >:C
List<Predicate> criteriaToFrom = new ArrayList<>();
// Special logic to allow for B to A case only
- if (("ToOnly").equals(builder.getFirstNodeType())) {
+ if ((TO_ONLY).equals(builder.getFirstNodeType())) {
criteriaToFrom.add(buildToFromPart(null, builder.getSecondNodeType()));
} else {
criteriaToFrom.add(buildToFromPart(builder.getSecondNodeType(), builder.getFirstNodeType()));
criteriaFromTo.add(typePred);
criteriaToFrom.add(typePred);
}
- Predicate privatePredicate = where("private").is(String.valueOf(isPrivate));
+ Predicate privatePredicate = Criteria.where("private").is(String.valueOf(isPrivate));
if (isPrivate) {
criteriaFromTo.add(privatePredicate);
criteriaFromTo.add(directionPred);
criteriaToFrom.add(directionPred);
}
- if (("ToOnly").equals(builder.getFirstNodeType())) {
- this.filter = filter(criteriaToFrom);
- } else if (("FromOnly").equals(builder.getSecondNodeType())) {
- this.filter = filter(criteriaFromTo);
+ if ((TO_ONLY).equals(builder.getFirstNodeType())) {
+ this.filter = Filter.filter(criteriaToFrom);
+ } else if ((FROM_ONLY).equals(builder.getSecondNodeType())) {
+ this.filter = Filter.filter(criteriaFromTo);
} else {
- this.filter = filter(criteriaFromTo).or(filter(criteriaToFrom));
+ this.filter = Filter.filter(criteriaFromTo).or(Filter.filter(criteriaToFrom));
}
}
Predicate p;
if (to == null) {
- p = where(EdgeField.FROM.toString()).is(from);
+ p = Criteria.where(EdgeField.FROM.toString()).is(from);
} else if (from == null) {
- p = where(EdgeField.TO.toString()).is(to);
+ p = Criteria.where(EdgeField.TO.toString()).is(to);
} else {
- p = where(EdgeField.FROM.toString()).is(from).and(EdgeField.TO.toString()).is(to);
+ p = Criteria.where(EdgeField.FROM.toString()).is(from).and(EdgeField.TO.toString()).is(to);
}
return p;
}
private Predicate addLabel(String label) {
- return where(EdgeField.LABEL.toString()).is(label);
+ return Criteria.where(EdgeField.LABEL.toString()).is(label);
}
private Predicate addType(EdgeType type) {
if (type == EdgeType.COUSIN) {
- return where(EdgeProperty.CONTAINS.toString()).is(AAIDirection.NONE.toString());
+ return Criteria.where(EdgeProperty.CONTAINS.toString()).is(AAIDirection.NONE.toString());
} else { // equals TREE
- return where(EdgeProperty.CONTAINS.toString()).ne(AAIDirection.NONE.toString());
+ return Criteria.where(EdgeProperty.CONTAINS.toString()).ne(AAIDirection.NONE.toString());
}
}
private Predicate addDirection(AAIDirection direction) {
if (direction == AAIDirection.OUT) {
- return where(EdgeField.DIRECTION.toString()).in(AAIDirection.OUT.toString(), AAIDirection.BOTH.toString());
+ return Criteria.where(EdgeField.DIRECTION.toString()).in(AAIDirection.OUT.toString(), AAIDirection.BOTH.toString());
} else if (direction == AAIDirection.IN) {
- return where(EdgeField.DIRECTION.toString()).in(AAIDirection.IN.toString(), AAIDirection.BOTH.toString());
+ return Criteria.where(EdgeField.DIRECTION.toString()).in(AAIDirection.IN.toString(), AAIDirection.BOTH.toString());
} else if (direction == AAIDirection.BOTH) {
- return where(EdgeField.DIRECTION.toString()).is(AAIDirection.BOTH.toString());
+ return Criteria.where(EdgeField.DIRECTION.toString()).is(AAIDirection.BOTH.toString());
} else if (direction == AAIDirection.NONE) {
- return where(EdgeField.DIRECTION.toString()).is(AAIDirection.NONE.toString());
+ return Criteria.where(EdgeField.DIRECTION.toString()).is(AAIDirection.NONE.toString());
}
- return where(EdgeField.DIRECTION.toString()).is(AAIDirection.NONE.toString());
+ return Criteria.where(EdgeField.DIRECTION.toString()).is(AAIDirection.NONE.toString());
}
/**
* Provides the JsonPath filter for actually querying the edge rule schema files
- *
+ *
* @return Filter
*/
public Filter getFilter() {
/**
* So the Ingestor knows which version of the rules to search
- *
+ *
* @return the Version
*/
public Optional<SchemaVersion> getVersion() {
sb.append(", isPrivate: ");
sb.append(isPrivate);
- if (v.isPresent()) {
- sb.append(", for version: ").append(v.get().toString()).append(".");
- }
+ v.ifPresent(schemaVersion -> sb.append(", for version: ").append(schemaVersion.toString()).append("."));
return sb.toString();
}
@Override
public int hashCode() {
- if (v.isPresent()) {
- return Objects.hash(v.get(), nodeA, nodeB, label, direction, type, isPrivate);
- } else {
- return Objects.hash(nodeA, nodeB, label, direction, type, isPrivate);
- }
+ return v.map(schemaVersion -> Objects.hash(schemaVersion, nodeA, nodeB, label, direction, type, isPrivate))
+ .orElseGet(() -> Objects.hash(nodeA, nodeB, label, direction, type, isPrivate));
}
}