1c0fe5fe5553a87af8aaa6d63e9a678c473edee4
[usecase-ui/intent-analysis.git] /
1 /*
2  * Copyright (C) 2022 CMCC, Inc. and others. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.usecaseui.intentanalysis.intentBaseService.contextService;
17
18 import java.util.ArrayList;
19 import java.util.List;
20 import org.onap.usecaseui.intentanalysis.bean.enums.OperatorType;
21 import org.onap.usecaseui.intentanalysis.bean.models.Condition;
22 import org.onap.usecaseui.intentanalysis.bean.models.Context;
23 import org.onap.usecaseui.intentanalysis.bean.models.Intent;
24 import org.onap.usecaseui.intentanalysis.cllBusinessIntentMgt.CLLBusinessIntentManagementFunction;
25 import org.onap.usecaseui.intentanalysis.intentBaseService.IntentManagementFunction;
26 import org.onap.usecaseui.intentanalysis.service.IntentService;
27 import org.onap.usecaseui.intentanalysis.util.CommonUtil;
28 import org.springframework.beans.factory.annotation.Autowired;
29 import org.springframework.context.ApplicationContext;
30 import org.springframework.stereotype.Service;
31
32 @Service
33 public class IntentContextService {
34
35     @Autowired
36     private IntentService intentService;
37
38     @Autowired
39     ApplicationContext applicationContext;
40
41     public void updateChindIntentContext(Intent originIntent, Intent intent){
42         List<Context> contextList = intent.getIntentContexts();
43
44         Condition condition1 = new Condition();
45         condition1.setConditionId(CommonUtil.getUUid());
46         condition1.setConditionName(originIntent.getIntentName() + "id");
47         condition1.setOperator(OperatorType.EQUALTO);
48         condition1.setConditionValue(originIntent.getIntentId());
49
50         Context context = new Context();
51         context.setContextName("parentIntent info");
52         context.setContextId(CommonUtil.getUUid());
53         List<Condition> conditionList = new ArrayList<>();
54         conditionList.add(condition1);
55         context.setContextConditions(conditionList);
56         contextList.add(context);
57     }
58
59     public void updateParentIntentContext(Intent originIntent, Intent intent){
60         List<Context> contextList = originIntent.getIntentContexts();
61
62         Condition condition1 = new Condition();
63         condition1.setConditionId(CommonUtil.getUUid());
64         condition1.setConditionName(intent.getIntentName() + "id");
65         condition1.setOperator(OperatorType.EQUALTO);
66         condition1.setConditionValue(intent.getIntentId());
67
68         boolean isSubIntentInfoExist = false;
69         for (Context context : contextList) {
70             if (context.getContextName().contains("subIntent info")){
71                 List<Condition> conditionList = context.getContextConditions();
72                 conditionList.add(condition1);
73                 isSubIntentInfoExist = true;
74             }
75         }
76
77         if (isSubIntentInfoExist != true){
78             Context context = new Context();
79             context.setContextName("subIntent info");
80             context.setContextId(CommonUtil.getUUid());
81             List<Condition> conditionList = new ArrayList<>();
82             conditionList.add(condition1);
83             context.setContextConditions(conditionList);
84             contextList.add(context);
85
86         }
87     }
88
89     public void updateIntentOwnerHandlerContext(Intent intent, IntentManagementFunction intentOwner, IntentManagementFunction intentHandler){
90         List<Context> contextList = intent.getIntentContexts();
91
92         Condition condition1 = new Condition();
93         condition1.setConditionId(CommonUtil.getUUid());
94         condition1.setConditionName("owner class name");
95         condition1.setOperator(OperatorType.EQUALTO);
96         condition1.setConditionValue(intentOwner.getClass().getName());
97
98         Context context = new Context();
99         context.setContextName("owner info");
100         context.setContextId(CommonUtil.getUUid());
101         List<Condition> conditionList = new ArrayList<>();
102         conditionList.add(condition1);
103         context.setContextConditions(conditionList);
104         contextList.add(context);
105
106         Condition condition2 = new Condition();
107         condition2.setConditionId(CommonUtil.getUUid());
108         condition2.setConditionName("handler class name");
109         condition2.setOperator(OperatorType.EQUALTO);
110         condition2.setConditionValue(intentHandler.getClass().getName());
111
112         Context context2 = new Context();
113         context2.setContextName("handler info");
114         context2.setContextId(CommonUtil.getUUid());
115         List<Condition> conditionList2 = new ArrayList<>();
116         conditionList2.add(condition2);
117         context2.setContextConditions(conditionList2);
118         contextList.add(context2);
119     }
120
121     public List<Intent> getSubIntentInfoFromContext(Intent originIntent){
122
123         List<Intent> subIntentList = new ArrayList<>();
124         List<Context> contextList = originIntent.getIntentContexts();
125
126         for (Context context : contextList) {
127             if (context.getContextName().contains("subIntent info")){
128                 List<Condition> conditionList = context.getContextConditions();
129                 for (Condition condition : conditionList) {
130                     String subIntentId = condition.getConditionValue();
131                     Intent subInent = intentService.getIntent(subIntentId);
132                     subIntentList.add(subInent);
133                 }
134             }
135         }
136
137         return subIntentList;
138     }
139
140     public IntentManagementFunction getHandlerInfo(Intent intent){
141         List<Context> contextList = intent.getIntentContexts();
142         IntentManagementFunction handler = new IntentManagementFunction();
143
144         for (Context context : contextList) {
145             if (context.getContextName().contains("handler info")) {
146                 List<Condition> conditionList = context.getContextConditions();
147                 String handlerClassName = conditionList.get(0).getConditionValue();
148                 handler = (IntentManagementFunction) applicationContext
149                     .getBean(CLLBusinessIntentManagementFunction.class.getSimpleName());
150             }
151         }
152         return handler;
153     }
154
155     public void deleteSubIntentContext(Intent intent, String deleteIntentId){
156         List<Context> contextList = intent.getIntentContexts();
157         for (Context context : contextList) {
158             if (context.getContextName().contains("subIntent info")) {
159                 List<Condition> conditionList = context.getContextConditions();
160                 for (Condition condition : conditionList) {
161                     if (condition.getConditionValue() == deleteIntentId){
162                         conditionList.remove(condition);
163                     }
164                 }
165             }
166         }
167     }
168
169 }