Import VSP with non-standard data types
[sdc.git] / catalog-dao / src / main / java / org / openecomp / sdc / be / dao / jsongraph / JanusGraphDao.java
index 76fddc0..8614f4b 100644 (file)
@@ -587,16 +587,21 @@ public class JanusGraphDao {
     }
 
     private boolean vertexValidForModel(final JanusGraphVertex vertex, final String model) {
-        final Either<List<ImmutablePair<JanusGraphVertex, Edge>>, JanusGraphOperationStatus> modelVertices = getParentVerticies(vertex, GraphEdgeLabels.MODEL_ELEMENT);
+        final String vertexLabel = (String)vertex.property(GraphPropertyEnum.LABEL.getProperty()).value();
+        final VertexTypeEnum vertexType = VertexTypeEnum.getByName(vertexLabel);
+        final GraphEdgeLabels edgeLabel = vertexType.equals(VertexTypeEnum.TOPOLOGY_TEMPLATE) ? GraphEdgeLabels.MODEL : GraphEdgeLabels.MODEL_ELEMENT;
+        final Either<List<ImmutablePair<JanusGraphVertex, Edge>>, JanusGraphOperationStatus> modelVertices = getParentVerticies(vertex, edgeLabel);
 
-        if (modelVertices.isLeft()) {
-            for (ImmutablePair<JanusGraphVertex, Edge> vertexPair : modelVertices.left().value()) {
-                if (model.equals((String)vertexPair.getLeft().property("name").value())) {
-                    return true;
-                }
-            }
+        return modelVertices.isLeft() && modelVertices.left().value().stream().anyMatch(vertexPair -> modelVertexMatchesModel(vertexPair.getLeft(), model));
+    }
+    
+    private boolean modelVertexMatchesModel(final JanusGraphVertex modelVertex, final String model) {
+        if (model.equals((String)modelVertex.property("name").value())) {
+            return true;
         }
-        return false;
+        final Either<List<ImmutablePair<JanusGraphVertex, Edge>>, JanusGraphOperationStatus> derivedModels =
+                        getParentVerticies(modelVertex, GraphEdgeLabels.DERIVED_FROM);
+        return derivedModels.isLeft() && derivedModels.left().value().stream().anyMatch(derivedModel ->modelVertexMatchesModel(derivedModel.left, model));
     }
     
     private Either<List<ImmutablePair<JanusGraphVertex, Edge>>, JanusGraphOperationStatus> getParentVerticies(