AAI-1523 Batch reformat aai-core
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / query / builder / TraversalURIOptimizedQuery.java
index 6a247c2..91d2d08 100644 (file)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.aai.query.builder;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
@@ -30,151 +37,149 @@ import org.onap.aai.introspection.Introspector;
 import org.onap.aai.introspection.Loader;
 import org.onap.aai.schema.enums.ObjectMetadata;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
 public class TraversalURIOptimizedQuery<E> extends TraversalQuery {
 
-       protected Map<Integer, String> stepToAaiUri = new HashMap<>();
-
-       public TraversalURIOptimizedQuery(Loader loader, GraphTraversalSource source) {
-               super(loader, source);
-               optimize = true;
-       }
-
-       public TraversalURIOptimizedQuery(Loader loader, GraphTraversalSource source, Vertex start) {
-               super(loader, source, start);
-               optimize = true;
-       }
-
-       protected TraversalURIOptimizedQuery(GraphTraversal traversal, Loader loader, GraphTraversalSource source, GraphTraversalBuilder gtb) {
-               super(traversal, loader, source, gtb);
-               optimize = true;
-       }
-
-       protected TraversalURIOptimizedQuery(GraphTraversal traversal, Loader loader, GraphTraversalSource source, GraphTraversalBuilder gtb, Map<Integer, String> stepToAaiUri) {
-               super(traversal, loader, source, gtb);
-               optimize = gtb.optimize;
-               this.stepToAaiUri = stepToAaiUri;
-       }
+    protected Map<Integer, String> stepToAaiUri = new HashMap<>();
 
-       @Override
-       protected void executeQuery() {
+    public TraversalURIOptimizedQuery(Loader loader, GraphTraversalSource source) {
+        super(loader, source);
+        optimize = true;
+    }
 
-               this.completeTraversal = this.traversal.asAdmin().clone();
+    public TraversalURIOptimizedQuery(Loader loader, GraphTraversalSource source, Vertex start) {
+        super(loader, source, start);
+        optimize = true;
+    }
 
-               if (this.optimize) {
-                       this.completeTraversal = this.pivotTraversal(this.completeTraversal);
-               }
+    protected TraversalURIOptimizedQuery(GraphTraversal traversal, Loader loader, GraphTraversalSource source,
+            GraphTraversalBuilder gtb) {
+        super(traversal, loader, source, gtb);
+        optimize = true;
+    }
 
-               if (start == null) {
-                       Traversal.Admin admin = source.V().asAdmin();
-                       TraversalHelper.insertTraversal(admin.getEndStep(), completeTraversal, admin);
+    protected TraversalURIOptimizedQuery(GraphTraversal traversal, Loader loader, GraphTraversalSource source,
+            GraphTraversalBuilder gtb, Map<Integer, String> stepToAaiUri) {
+        super(traversal, loader, source, gtb);
+        optimize = gtb.optimize;
+        this.stepToAaiUri = stepToAaiUri;
+    }
 
-                       this.completeTraversal = (Traversal.Admin<Vertex, E>) admin;
+    @Override
+    protected void executeQuery() {
 
-               }
+        this.completeTraversal = this.traversal.asAdmin().clone();
 
-       }
+        if (this.optimize) {
+            this.completeTraversal = this.pivotTraversal(this.completeTraversal);
+        }
 
-       private Traversal.Admin<Vertex,E> pivotTraversal(Traversal.Admin<Vertex, E> traversalAdmin) {
+        if (start == null) {
+            Traversal.Admin admin = source.V().asAdmin();
+            TraversalHelper.insertTraversal(admin.getEndStep(), completeTraversal, admin);
 
-               List<Step> steps = traversalAdmin.getSteps();
+            this.completeTraversal = (Traversal.Admin<Vertex, E>) admin;
 
-               Traversal.Admin<Vertex, E> traversalAdminStart = traversalAdmin.clone();
+        }
 
-               //if we do not have an index or other conditions do no optimization
-               if (stepToAaiUri.isEmpty()) {
-                       return traversalAdmin;
-               }
+    }
 
-               int lastURIStepKey = getLastURIStepKey();
+    private Traversal.Admin<Vertex, E> pivotTraversal(Traversal.Admin<Vertex, E> traversalAdmin) {
 
-               //clean up traversal steps
-               for (int i = 0; i < steps.size(); i++) {
-                       traversalAdminStart.removeStep(0);
-               }
+        List<Step> steps = traversalAdmin.getSteps();
 
-               ((GraphTraversal<Vertex, E>)traversalAdminStart).has(AAIProperties.AAI_URI, stepToAaiUri.get(lastURIStepKey));
-               for (int i = lastURIStepKey; i < steps.size(); i++) {
-                       traversalAdminStart.addStep(steps.get(i));
-               }
+        Traversal.Admin<Vertex, E> traversalAdminStart = traversalAdmin.clone();
 
-               return traversalAdminStart;
-       }
+        // if we do not have an index or other conditions do no optimization
+        if (stepToAaiUri.isEmpty()) {
+            return traversalAdmin;
+        }
 
-       @Override
-       public QueryBuilder<Vertex> createKeyQuery(Introspector obj) {
-               super.createKeyQuery(obj);
+        int lastURIStepKey = getLastURIStepKey();
 
-               if (shouldAddStepUri(obj)) {
-                       Optional<String> uri = getStepUriFromIntrospector(obj);
-                       if (uri.isPresent()) {
-                               if (stepToAaiUri.isEmpty()) {
-                                       stepToAaiUri.put(stepIndex + 1, uri.get());
-                               } else {
-                                       stepToAaiUri.put(stepIndex, uri.get());
-                               }
-                       }
-               } else {
-                       optimize = false;
-                       stepToAaiUri = new HashMap<>();
-               }
-               return (QueryBuilder<Vertex>) this;
-       }
+        // clean up traversal steps
+        for (int i = 0; i < steps.size(); i++) {
+            traversalAdminStart.removeStep(0);
+        }
 
-       private boolean shouldAddStepUri(Introspector obj) {
-               boolean shouldOptimize = optimize;
+        ((GraphTraversal<Vertex, E>) traversalAdminStart).has(AAIProperties.AAI_URI, stepToAaiUri.get(lastURIStepKey));
+        for (int i = lastURIStepKey; i < steps.size(); i++) {
+            traversalAdminStart.addStep(steps.get(i));
+        }
 
-               if (shouldOptimize && start != null) {
-                       shouldOptimize = false;
-               }
+        return traversalAdminStart;
+    }
 
-               if (shouldOptimize && stepToAaiUri.isEmpty() && !obj.isTopLevel()) {
-                       shouldOptimize = false;
-               }
+    @Override
+    public QueryBuilder<Vertex> createKeyQuery(Introspector obj) {
+        super.createKeyQuery(obj);
 
-               if (shouldOptimize && obj.getMetadata(ObjectMetadata.ABSTRACT) != null) {
-                       shouldOptimize = false;
-               }
-
-               return shouldOptimize;
+        if (shouldAddStepUri(obj)) {
+            Optional<String> uri = getStepUriFromIntrospector(obj);
+            if (uri.isPresent()) {
+                if (stepToAaiUri.isEmpty()) {
+                    stepToAaiUri.put(stepIndex + 1, uri.get());
+                } else {
+                    stepToAaiUri.put(stepIndex, uri.get());
+                }
+            }
+        } else {
+            optimize = false;
+            stepToAaiUri = new HashMap<>();
+        }
+        return (QueryBuilder<Vertex>) this;
+    }
 
-       }
+    private boolean shouldAddStepUri(Introspector obj) {
+        boolean shouldOptimize = optimize;
 
-       private Optional<String> getStepUriFromIntrospector(Introspector obj) {
-               String uri = "";
-               try {
-                       uri = obj.getURI();
-               } catch (Exception e) {
-               }
+        if (shouldOptimize && start != null) {
+            shouldOptimize = false;
+        }
 
-               if ("".equals(uri)) {
-                       return Optional.empty();
-               }
+        if (shouldOptimize && stepToAaiUri.isEmpty() && !obj.isTopLevel()) {
+            shouldOptimize = false;
+        }
+
+        if (shouldOptimize && obj.getMetadata(ObjectMetadata.ABSTRACT) != null) {
+            shouldOptimize = false;
+        }
+
+        return shouldOptimize;
+
+    }
+
+    private Optional<String> getStepUriFromIntrospector(Introspector obj) {
+        String uri = "";
+        try {
+            uri = obj.getURI();
+        } catch (Exception e) {
+        }
 
-               if (!stepToAaiUri.isEmpty()) {
-                       uri = stepToAaiUri.get(getLastURIStepKey()) + uri;
-               }
+        if ("".equals(uri)) {
+            return Optional.empty();
+        }
 
-               return Optional.of(uri);
-       }
+        if (!stepToAaiUri.isEmpty()) {
+            uri = stepToAaiUri.get(getLastURIStepKey()) + uri;
+        }
 
-       private int getLastURIStepKey() {
-               return stepToAaiUri.keySet().stream().mapToInt(Integer::intValue).max().getAsInt();
-       }
+        return Optional.of(uri);
+    }
 
-       private Map<Integer, String> getStepToAaiUriWithoutStepGreaterThan(final int index) {
-               return stepToAaiUri.entrySet().stream().filter(kv -> kv.getKey() <= index).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
-       }
+    private int getLastURIStepKey() {
+        return stepToAaiUri.keySet().stream().mapToInt(Integer::intValue).max().getAsInt();
+    }
+
+    private Map<Integer, String> getStepToAaiUriWithoutStepGreaterThan(final int index) {
+        return stepToAaiUri.entrySet().stream().filter(kv -> kv.getKey() <= index)
+                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+    }
 
-       @Override
-       protected QueryBuilder<E> cloneQueryAtStep(int index) {
-               GraphTraversal.Admin<Vertex, E> cloneAdmin = getCloneAdmin(index);
-               return new TraversalURIOptimizedQuery<>(cloneAdmin, loader, source, this, getStepToAaiUriWithoutStepGreaterThan(index));
-       }
+    @Override
+    protected QueryBuilder<E> cloneQueryAtStep(int index) {
+        GraphTraversal.Admin<Vertex, E> cloneAdmin = getCloneAdmin(index);
+        return new TraversalURIOptimizedQuery<>(cloneAdmin, loader, source, this,
+                getStepToAaiUriWithoutStepGreaterThan(index));
+    }
 
 }