Change the way of fetching data from datastore and write user's intents into datastor...
[nemo.git] / nemo-impl / src / main / java / org / opendaylight / nemo / user / vnspacemanager / structurestyle / deleteintent / DeleteNode.java
index b924deb9f3f9aabfcf257a85aa7676a2f966804d..d95aad5b3b0a21efe0528363da9689a8ad9c8694 100644 (file)
@@ -7,27 +7,14 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
 \r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
 \r
 import java.util.List;\r
 \r
@@ -35,83 +22,74 @@ import java.util.List;
  * Created by z00293636 on 2015/9/2.\r
  */\r
 public class DeleteNode {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private static final Logger LOG = LoggerFactory.getLogger(DeleteNode.class);\r
-    private DeleteConnection deleteConnection;\r
 \r
     public DeleteNode(DataBroker dataBroker, TenantManage tenantManage){\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
-        deleteConnection = new DeleteConnection(dataBroker, tenantManage);\r
     }\r
 \r
     public String DeleNodeHandling(UserId userId,NodeId nodeId){\r
-        String errorInfo = null;\r
-        Boolean NodeInstanceExist = false;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-        if (user != null){\r
-            if (user.getObjects() != null){\r
-                if (user.getObjects().getNode() != null){\r
-                    List<Node> nodeList = tenantManage.getUser().getObjects().getNode();\r
-                    for (Node node : nodeList){\r
-                        if (node.getNodeId().equals(nodeId)){\r
-                            NodeInstanceExist = true;\r
-                            DeleteNodeInstance(userId,nodeId);\r
+        Boolean nodeExist = false;\r
 \r
-                            if (user.getObjects().getConnection()!=null) {\r
-                                Boolean nodeconn = false;\r
-                                List<Connection> connectionList = user.getObjects().getConnection();\r
-                                for (Connection connection : connectionList){\r
-                                    if (connection.getEndNode() != null){\r
-                                        for (EndNode endNode : connection.getEndNode()){\r
-                                            if (endNode.getNodeId().equals(nodeId)){\r
-                                                nodeconn = true;\r
-                                            }\r
-                                        }\r
-                                        if (nodeconn){\r
-                                            errorInfo = deleteConnection.DeleteConnectionHandling(userId,connection.getConnectionId());\r
-                                        }\r
-                                    }\r
-                                }\r
-                            }\r
+        if (tenantManage.getNode(userId)!=null){\r
+            if (tenantManage.getNode(userId).containsKey(nodeId)){\r
+                nodeExist = true;\r
+                tenantManage.getNode(userId).remove(nodeId);\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,nodeId.getValue()));\r
+            }\r
+        }\r
+        if (tenantManage.getNodeDataStore(userId)!=null){\r
+            if (tenantManage.getNodeDataStore(userId).containsKey(nodeId)){\r
+                nodeExist = true;\r
+                tenantManage.setUserDeleteIntent(userId, NEMOConstants.node,nodeId.getValue());\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,nodeId.getValue()));\r
+            }\r
+        }\r
+        if (!nodeExist){\r
+            return "The node instance " +nodeId.getValue()+" is not exist.";\r
+        }\r
+        else {\r
+            if (tenantManage.getConnection(userId)!=null){\r
+                for (Connection connection : tenantManage.getConnection(userId).values()){\r
+                    List<EndNode> endNodeList = connection.getEndNode();\r
+                    for (EndNode endNode :endNodeList){\r
+                        if (endNode.getNodeId().equals(nodeId)){\r
+                            tenantManage.getConnection(userId).remove(connection.getConnectionId());\r
+                            tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,connection.getConnectionId().getValue()));\r
+                            break;\r
                         }\r
                     }\r
-                    if (!NodeInstanceExist) {\r
-                        errorInfo = "The node instance " +nodeId.getValue()+" is not exist.Could not be deleted";\r
-                    }\r
                 }\r
-                else{\r
-                    errorInfo = "There are no nodes instances in data store.";\r
+            }\r
+            if (tenantManage.getConnectionDataStore(userId)!=null){\r
+                for (Connection connection : tenantManage.getConnectionDataStore(userId).values()){\r
+                    List<EndNode> endNodeList = connection.getEndNode();\r
+                    for (EndNode endNode :endNodeList){\r
+                        if (endNode.getNodeId().equals(nodeId)){\r
+                            tenantManage.setUserDeleteIntent(userId,NEMOConstants.connection,connection.getConnectionId().getValue());\r
+                            tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,connection.getConnectionId().getValue()));\r
+                            break;\r
+                        }\r
+                    }\r
                 }\r
             }\r
-        }\r
-        else{\r
-            errorInfo = "There are no user in data store.";\r
-        }\r
-\r
-        return errorInfo;\r
-    }\r
-\r
-    private void DeleteNodeInstance(UserId userId,NodeId nodeId){\r
-        WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-        UserKey userKey = new UserKey(userId);\r
-        NodeKey nodeKey = new NodeKey(nodeId);\r
-\r
-        InstanceIdentifier<Node> nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build();\r
-        t.delete(LogicalDatastoreType.CONFIGURATION, nodeid);\r
-        CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-        Futures.addCallback(f, new FutureCallback<Void>() {\r
-            @Override\r
-            public void onFailure(Throwable t) {\r
-                LOG.error("Could not write endpoint base container", t);\r
+            if (tenantManage.getOperation(userId)!=null){\r
+                for (Operation operation : tenantManage.getOperation(userId).values()){\r
+                    if (operation.getTargetObject().getValue().equals(nodeId.getValue())){\r
+                        tenantManage.getOperation(userId).remove(operation.getOperationId());\r
+                        tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operation.getOperationId().getValue()));\r
+                    }\r
+                }\r
             }\r
-\r
-            @Override\r
-            public void onSuccess(Void result) {\r
+            if (tenantManage.getOperationDataStore(userId)!=null){\r
+                for (Operation operation : tenantManage.getOperationDataStore(userId).values()){\r
+                    if (operation.getTargetObject().getValue().equals(nodeId.getValue())){\r
+                        tenantManage.setUserDeleteIntent(userId,NEMOConstants.operation,operation.getOperationId().getValue());\r
+                        tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operation.getOperationId().getValue()));\r
+                    }\r
+                }\r
             }\r
-        });\r
+        }\r
+        return null;\r
     }\r
 }\r