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 / updateintent / UpdateIntent.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.structurestyle.updateintent;\r
9 \r
10 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
11 import org.opendaylight.nemo.user.tenantmanager.AAA;\r
12 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoUpdateInput;\r
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results;\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.definitions.TemplateDefinition;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstance;\r
21 \r
22 import java.util.List;\r
23 \r
24 /**\r
25  * Created by z00293636 on 2015/8/31.\r
26  */\r
27 public class UpdateIntent {\r
28     private UpdateNode updateNode;\r
29     private UpdateConnection updateConnection;\r
30     private UpdateFlow updateFlow;\r
31     private UpdateOperation updateOperation;\r
32     private UpdateResult updateResult;\r
33     private UpdateTemplateDefinition updateTemplateDefinition;\r
34     private UpdateTemplateInstance updateTemplateInstance;\r
35 \r
36     public UpdateIntent(DataBroker dataBroker, TenantManage tenantManage){\r
37         updateNode = new UpdateNode(dataBroker,tenantManage);\r
38         updateConnection = new UpdateConnection(dataBroker,tenantManage);\r
39         updateFlow = new UpdateFlow(dataBroker,tenantManage);\r
40         updateOperation = new UpdateOperation(dataBroker,tenantManage);\r
41         updateResult = new UpdateResult(dataBroker,tenantManage);\r
42         updateTemplateDefinition = new UpdateTemplateDefinition(dataBroker,tenantManage);\r
43         updateTemplateInstance = new UpdateTemplateInstance(dataBroker,tenantManage);\r
44     }\r
45 \r
46     public String updateIntent(AAA aaa,StructureStyleNemoUpdateInput structureStyleNemoUpdateInput){\r
47         String erroInfo = null;\r
48 \r
49         erroInfo = aaa.checkUser(structureStyleNemoUpdateInput.getUserId());\r
50 \r
51         if (erroInfo != null){\r
52             return erroInfo;\r
53         }\r
54         else{\r
55             if(structureStyleNemoUpdateInput.getObjects() != null){\r
56                 if (structureStyleNemoUpdateInput.getObjects().getNode() != null && erroInfo == null){\r
57                     List<Node> nodeList= structureStyleNemoUpdateInput.getObjects().getNode();\r
58                     for (Node node : nodeList ){\r
59                         erroInfo = updateNode.NodeHandling(structureStyleNemoUpdateInput.getUserId(), node);\r
60                         if (erroInfo != null){\r
61                             break;\r
62                         }\r
63                     }\r
64                 }\r
65                 if (structureStyleNemoUpdateInput.getObjects().getConnection() != null && erroInfo == null){\r
66                     List<Connection> connectionList = structureStyleNemoUpdateInput.getObjects().getConnection();\r
67                     for (Connection connection : connectionList){\r
68                         erroInfo = updateConnection.ConnectionHandling(structureStyleNemoUpdateInput.getUserId(), connection);\r
69                         if (erroInfo != null){\r
70                             break;\r
71                         }\r
72                     }\r
73                 }\r
74 \r
75                 if (structureStyleNemoUpdateInput.getObjects().getFlow() != null && erroInfo == null){\r
76                     List<Flow> flowList = structureStyleNemoUpdateInput.getObjects().getFlow();\r
77                     for (Flow flow : flowList){\r
78                         erroInfo = updateFlow.FlowHandling(structureStyleNemoUpdateInput.getUserId(),flow);\r
79                         if (erroInfo != null) {\r
80                             break;\r
81                         }\r
82                     }\r
83                 }\r
84             }\r
85 \r
86         if (structureStyleNemoUpdateInput.getOperations() != null){\r
87                 if (structureStyleNemoUpdateInput.getOperations().getOperation() != null && erroInfo == null){\r
88                     List<Operation> operationList =structureStyleNemoUpdateInput.getOperations().getOperation();\r
89                     for (Operation operation : operationList){\r
90                         erroInfo = updateOperation.OperationHandling(structureStyleNemoUpdateInput.getUserId(), operation);\r
91                         if (erroInfo !=null){\r
92                             break;\r
93                         }\r
94                     }\r
95                 }\r
96             }\r
97 \r
98         if (structureStyleNemoUpdateInput.getResults() != null){\r
99                 if ( structureStyleNemoUpdateInput.getResults() != null && erroInfo == null){\r
100                     Results results = structureStyleNemoUpdateInput.getResults();\r
101                     erroInfo = updateResult.ResultHandling(structureStyleNemoUpdateInput.getUserId(), results);\r
102                     if (erroInfo != null){\r
103                         //todo\r
104                     }\r
105                 }\r
106             }\r
107         }\r
108 \r
109         if (structureStyleNemoUpdateInput.getTemplateDefinitions()!=null){\r
110             if (structureStyleNemoUpdateInput.getTemplateDefinitions().getTemplateDefinition()!=null && erroInfo == null){\r
111                 List<TemplateDefinition> templateDefinitionList = structureStyleNemoUpdateInput.getTemplateDefinitions().getTemplateDefinition();\r
112                 for (TemplateDefinition templateDefinition : templateDefinitionList ){\r
113                     erroInfo = updateTemplateDefinition.checkTemplateDefinition(structureStyleNemoUpdateInput.getUserId(),templateDefinition);\r
114                     if (erroInfo!=null){\r
115                         break;\r
116                     }\r
117                 }\r
118             }\r
119         }\r
120 \r
121         if (structureStyleNemoUpdateInput.getTemplateInstances()!=null){\r
122             if (structureStyleNemoUpdateInput.getTemplateInstances().getTemplateInstance()!=null && erroInfo ==null){\r
123                 List<TemplateInstance> templateInstanceList = structureStyleNemoUpdateInput.getTemplateInstances().getTemplateInstance();\r
124                 for (TemplateInstance templateInstance : templateInstanceList){\r
125                     erroInfo = updateTemplateInstance.checkTemplateInstance(structureStyleNemoUpdateInput.getUserId(),templateInstance);\r
126                     if (erroInfo!=null){\r
127                         break;\r
128                     }\r
129                 }\r
130             }\r
131         }\r
132      return erroInfo;\r
133     }\r
134 }\r