8a97783b2691373a13df41405de1411d11ba5e5d
[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 org.apache.commons.collections.CollectionUtils;
19 import org.onap.usecaseui.intentanalysis.bean.enums.OperatorType;
20 import org.onap.usecaseui.intentanalysis.bean.models.Condition;
21 import org.onap.usecaseui.intentanalysis.bean.models.Context;
22 import org.onap.usecaseui.intentanalysis.bean.models.Intent;
23 import org.onap.usecaseui.intentanalysis.cllBusinessIntentMgt.CLLBusinessIntentManagementFunction;
24 import org.onap.usecaseui.intentanalysis.intentBaseService.IntentManagementFunction;
25 import org.onap.usecaseui.intentanalysis.service.IntentService;
26 import org.onap.usecaseui.intentanalysis.util.CommonUtil;
27 import org.springframework.beans.factory.annotation.Autowired;
28 import org.springframework.context.ApplicationContext;
29 import org.springframework.stereotype.Service;
30
31 import java.util.ArrayList;
32 import java.util.List;
33
34 @Service
35 public class IntentContextService {
36
37     @Autowired
38     private IntentService intentService;
39
40     @Autowired
41     ApplicationContext applicationContext;
42
43     public void updateChindIntentContext(Intent originIntent, Intent intent){
44         List<Context> contextList = intent.getIntentContexts();
45         if (CollectionUtils.isEmpty(contextList)) {
46             contextList = new ArrayList<>();
47         }
48         Condition condition1 = new Condition();
49         condition1.setConditionId(CommonUtil.getUUid());
50         condition1.setConditionName(originIntent.getIntentName() + "id");
51         condition1.setOperator(OperatorType.EQUALTO);
52         condition1.setConditionValue(originIntent.getIntentId());
53
54         Context context = new Context();
55         context.setContextName("parentIntent info");
56         context.setContextId(CommonUtil.getUUid());
57         List<Condition> conditionList = new ArrayList<>();
58         conditionList.add(condition1);
59         context.setContextConditions(conditionList);
60         contextList.add(context);
61         intent.setIntentContexts(contextList);
62
63     }
64
65     public void updateParentIntentContext(Intent originIntent, Intent intent){
66         List<Context> contextList = originIntent.getIntentContexts();
67         if (CollectionUtils.isEmpty(contextList)) {
68             contextList = new ArrayList<>();
69         }
70
71         Condition condition1 = new Condition();
72         condition1.setConditionId(CommonUtil.getUUid());
73         condition1.setConditionName(intent.getIntentName() + "id");
74         condition1.setOperator(OperatorType.EQUALTO);
75         condition1.setConditionValue(intent.getIntentId());
76
77         boolean isSubIntentInfoExist = false;
78         for (Context context : contextList) {
79             if (context.getContextName().contains("subIntent info")){
80                 List<Condition> conditionList = context.getContextConditions();
81                 if (CollectionUtils.isEmpty(conditionList)) {
82                     conditionList = new ArrayList<>();
83                 }
84                 conditionList.add(condition1);
85                 context.setContextConditions(conditionList);
86                 isSubIntentInfoExist = true;
87             }
88         }
89
90         if (isSubIntentInfoExist != true){
91             Context context = new Context();
92             context.setContextName("subIntent info");
93             context.setContextId(CommonUtil.getUUid());
94             List<Condition> conditionList = new ArrayList<>();
95             conditionList.add(condition1);
96             context.setContextConditions(conditionList);
97             contextList.add(context);
98             originIntent.setIntentContexts(contextList);
99         }
100     }
101
102     public void updateIntentOwnerHandlerContext(Intent intent, IntentManagementFunction intentOwner, IntentManagementFunction intentHandler){
103         List<Context> contextList = intent.getIntentContexts();
104         if (CollectionUtils.isEmpty(contextList)){
105             contextList = new ArrayList<>();
106         }
107
108         Condition condition1 = new Condition();
109         condition1.setConditionId(CommonUtil.getUUid());
110         condition1.setConditionName("owner class name");
111         condition1.setOperator(OperatorType.EQUALTO);
112         condition1.setConditionValue(intentOwner.getClass().getName());
113
114         Context context = new Context();
115         context.setContextName("owner info");
116         context.setContextId(CommonUtil.getUUid());
117         List<Condition> conditionList = new ArrayList<>();
118         conditionList.add(condition1);
119         context.setContextConditions(conditionList);
120         contextList.add(context);
121
122         Condition condition2 = new Condition();
123         condition2.setConditionId(CommonUtil.getUUid());
124         condition2.setConditionName("handler class name");
125         condition2.setOperator(OperatorType.EQUALTO);
126         condition2.setConditionValue(intentHandler.getClass().getName());
127
128         Context context2 = new Context();
129         context2.setContextName("handler info");
130         context2.setContextId(CommonUtil.getUUid());
131         List<Condition> conditionList2 = new ArrayList<>();
132         conditionList2.add(condition2);
133         context2.setContextConditions(conditionList2);
134         contextList.add(context2);
135
136         intent.setIntentContexts(contextList);
137     }
138
139     public List<Intent> getSubIntentInfoFromContext(Intent originIntent){
140         List<Intent> subIntentList = new ArrayList<>();
141         //form db
142       //  List<Context> contextList = originIntent.getIntentContexts();
143         Intent dbIntent = intentService.getIntent(originIntent.getIntentId());
144         List<Context> contextList = dbIntent.getIntentContexts();
145         for (Context context : contextList) {
146             if (context.getContextName().contains("subIntent info")){
147                 List<Condition> conditionList = context.getContextConditions();
148                 for (Condition condition : conditionList) {
149                     String subIntentId = condition.getConditionValue();
150                     Intent subInent = intentService.getIntent(subIntentId);
151                     subIntentList.add(subInent);
152                 }
153             }
154         }
155         return subIntentList;
156     }
157
158     public IntentManagementFunction getHandlerInfo(Intent intent){
159         List<Context> contextList = intent.getIntentContexts();
160         IntentManagementFunction handler = new IntentManagementFunction();
161
162         for (Context context : contextList) {
163             if (context.getContextName().contains("handler info")) {
164                 List<Condition> conditionList = context.getContextConditions();
165                 String handlerClassName = conditionList.get(0).getConditionValue();
166                 handler = (IntentManagementFunction) applicationContext
167                     .getBean(CLLBusinessIntentManagementFunction.class.getSimpleName());
168             }
169         }
170         return handler;
171     }
172
173     public void deleteSubIntentContext(Intent intent, String deleteIntentId){
174         List<Context> contextList = intent.getIntentContexts();
175         for (Context context : contextList) {
176             if (context.getContextName().contains("subIntent info")) {
177                 List<Condition> conditionList = context.getContextConditions();
178                 for (Condition condition : conditionList) {
179                     if (condition.getConditionValue() == deleteIntentId){
180                         conditionList.remove(condition);
181                     }
182                 }
183             }
184         }
185     }
186
187 }