Adding nemo engine.
[nemo.git] / nemo-impl / src / main / java / org / opendaylight / nemo / user / vnspacemanager / instancecheck / OperationInstanceCheck.java
1 /*\r
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
9 \r
10 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
18 \r
19 import java.util.List;\r
20 \r
21 /**\r
22  * Created by z00293636 on 2015/9/10.\r
23  */\r
24 public class OperationInstanceCheck {\r
25     private TenantManage tenantManage;\r
26 \r
27     public OperationInstanceCheck(TenantManage tenantManage)\r
28     {\r
29         this.tenantManage = tenantManage;\r
30     }\r
31 \r
32     public String checkOperationInstance(UserId userId, Operation operation)\r
33     {\r
34         String errorInfo = null;\r
35 \r
36         tenantManage.fetchVNSpace(userId);\r
37 \r
38         User user = tenantManage.getUser();\r
39         if (user != null)\r
40         {\r
41             if (operation.getTargetObject() != null && user.getObjects() == null)\r
42             {\r
43                 errorInfo = "There are no objects in data store.";\r
44             }\r
45             if (operation.getTargetObject() != null && user.getObjects() != null)\r
46             {\r
47                 Objects objects = user.getObjects();\r
48                 Boolean targetExist = false;\r
49 \r
50                if (objects.getNode() != null )\r
51                {\r
52                    List<Node> nodeList = objects.getNode();\r
53                    for (Node node:nodeList)\r
54                    {\r
55                        if (node.getNodeId().getValue().equals(operation.getTargetObject().getValue()))\r
56                        {\r
57                            targetExist = true;\r
58                            break;\r
59                        }\r
60                    }\r
61                }\r
62                 if (objects.getConnection() != null)\r
63                 {\r
64                     List<Connection> connectionList = objects.getConnection();\r
65                     for (Connection connection : connectionList)\r
66                     {\r
67                         if (connection.getConnectionId().getValue().equals(operation.getTargetObject().getValue()))\r
68                         {\r
69                             targetExist = true;\r
70                             break;\r
71                         }\r
72                     }\r
73                 }\r
74                 if (objects.getFlow() != null)\r
75                 {\r
76                     List<Flow> flowList = objects.getFlow();\r
77                     for (Flow flow : flowList)\r
78                     {\r
79                         if (flow.getFlowId().getValue().equals(operation.getTargetObject().getValue()))\r
80                         {\r
81                             targetExist = true;\r
82                             break;\r
83                         }\r
84                     }\r
85                 }\r
86                 if (!targetExist)\r
87                 {\r
88                     errorInfo ="The target object is not included in vn space.";\r
89                 }\r
90             }\r
91             else\r
92             {\r
93                 if (user.getOperations() != null)\r
94                 {\r
95                     if (user.getOperations().getOperation() != null)\r
96                     {\r
97                         List<Operation> operationList = tenantManage.getUser().getOperations().getOperation();\r
98                         for (Operation operation1 : operationList)\r
99                         {\r
100                             if (operation1.getOperationId().equals(operation.getOperationId()))\r
101                             {\r
102                                 if (!operation1.getOperationName().equals(operation.getOperationName()))\r
103                                 {\r
104                                     errorInfo = "The operation name should not be changed.";\r
105                                     break;\r
106                                 }\r
107                             }\r
108                         }\r
109                     }\r
110                 }\r
111             }\r
112         }\r
113         else\r
114         {\r
115             if (operation.getTargetObject() != null)\r
116             {\r
117                 errorInfo = "There are no objects in data store.";\r
118             }\r
119         }\r
120         return errorInfo;\r
121     }\r
122 }\r