2 * Copyright (C) 2022 CMCC, Inc. and others. All rights reserved.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package org.onap.usecaseui.intentanalysis.intentBaseService.contextService;
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;
31 import java.util.ArrayList;
32 import java.util.List;
35 public class IntentContextService {
38 private IntentService intentService;
41 ApplicationContext applicationContext;
43 public void updateChindIntentContext(Intent originIntent, Intent intent){
44 List<Context> contextList = intent.getIntentContexts();
45 if (CollectionUtils.isEmpty(contextList)) {
46 contextList = new ArrayList<>();
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());
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);
65 public void updateParentIntentContext(Intent originIntent, Intent intent){
66 List<Context> contextList = originIntent.getIntentContexts();
67 if (CollectionUtils.isEmpty(contextList)) {
68 contextList = new ArrayList<>();
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());
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<>();
84 conditionList.add(condition1);
85 context.setContextConditions(conditionList);
86 isSubIntentInfoExist = true;
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);
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<>();
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());
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);
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());
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);
136 intent.setIntentContexts(contextList);
139 public List<Intent> getSubIntentInfoFromContext(Intent originIntent){
140 List<Intent> subIntentList = new ArrayList<>();
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);
155 return subIntentList;
158 public IntentManagementFunction getHandlerInfo(Intent intent){
159 List<Context> contextList = intent.getIntentContexts();
160 IntentManagementFunction handler = new IntentManagementFunction();
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());
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);