CmHandle delete is failing with InternalServerError: Null key is not allowed - add...
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / impl / events / lcm / LcmEventsCreator.java
1 /*
2  * ============LICENSE_START=======================================================
3  * Copyright (C) 2022-2023 Nordix Foundation
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *       http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.cps.ncmp.api.impl.events.lcm;
22
23 import java.util.UUID;
24 import lombok.Getter;
25 import lombok.NoArgsConstructor;
26 import lombok.RequiredArgsConstructor;
27 import lombok.Setter;
28 import lombok.extern.slf4j.Slf4j;
29 import org.onap.cps.ncmp.api.impl.utils.EventDateTimeFormatter;
30 import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
31 import org.onap.cps.ncmp.events.lcm.v1.Event;
32 import org.onap.cps.ncmp.events.lcm.v1.LcmEvent;
33 import org.onap.cps.ncmp.events.lcm.v1.LcmEventHeader;
34 import org.onap.cps.ncmp.events.lcm.v1.Values;
35 import org.springframework.stereotype.Component;
36
37
38 /**
39  * LcmEventsCreator to create LcmEvent based on relevant operation.
40  */
41 @Slf4j
42 @Component
43 @RequiredArgsConstructor
44 public class LcmEventsCreator {
45
46     private final LcmEventHeaderMapper lcmEventHeaderMapper;
47
48     /**
49      * Populate Lifecycle Management Event.
50      *
51      * @param cmHandleId                  cm handle identifier
52      * @param targetNcmpServiceCmHandle   target ncmp service cmhandle
53      * @param existingNcmpServiceCmHandle existing ncmp service cmhandle
54      * @return Populated LcmEvent
55      */
56     public LcmEvent populateLcmEvent(final String cmHandleId, final NcmpServiceCmHandle targetNcmpServiceCmHandle,
57             final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
58         return createLcmEvent(cmHandleId, targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
59     }
60
61     /**
62      * Populate Lifecycle Management Event Header.
63      *
64      * @param cmHandleId                  cm handle identifier
65      * @param targetNcmpServiceCmHandle   target ncmp service cmhandle
66      * @param existingNcmpServiceCmHandle existing ncmp service cmhandle
67      * @return Populated LcmEventHeader
68      */
69     public LcmEventHeader populateLcmEventHeader(final String cmHandleId,
70             final NcmpServiceCmHandle targetNcmpServiceCmHandle,
71             final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
72         return createLcmEventHeader(cmHandleId, targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
73     }
74
75     private LcmEvent createLcmEvent(final String cmHandleId, final NcmpServiceCmHandle targetNcmpServiceCmHandle,
76             final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
77         final LcmEventType lcmEventType =
78                 LcmEventsCreatorHelper.determineEventType(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
79         final LcmEvent lcmEvent = lcmEventHeader(cmHandleId, lcmEventType);
80         lcmEvent.setEvent(
81                 lcmEventPayload(cmHandleId, targetNcmpServiceCmHandle, existingNcmpServiceCmHandle, lcmEventType));
82         return lcmEvent;
83     }
84
85     private LcmEventHeader createLcmEventHeader(final String cmHandleId,
86             final NcmpServiceCmHandle targetNcmpServiceCmHandle,
87             final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
88         final LcmEventType lcmEventType =
89                 LcmEventsCreatorHelper.determineEventType(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
90         final LcmEvent lcmEventWithHeaderInformation = lcmEventHeader(cmHandleId, lcmEventType);
91         return lcmEventHeaderMapper.toLcmEventHeader(lcmEventWithHeaderInformation);
92     }
93
94     private Event lcmEventPayload(final String eventCorrelationId, final NcmpServiceCmHandle targetNcmpServiceCmHandle,
95             final NcmpServiceCmHandle existingNcmpServiceCmHandle, final LcmEventType lcmEventType) {
96         final Event event = new Event();
97         event.setCmHandleId(eventCorrelationId);
98         final CmHandleValuesHolder cmHandleValuesHolder =
99                 LcmEventsCreatorHelper.determineEventValues(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle,
100                         lcmEventType);
101         event.setOldValues(cmHandleValuesHolder.getOldValues());
102         event.setNewValues(cmHandleValuesHolder.getNewValues());
103
104         return event;
105     }
106
107     private LcmEvent lcmEventHeader(final String eventCorrelationId, final LcmEventType lcmEventType) {
108         final LcmEvent lcmEvent = new LcmEvent();
109         lcmEvent.setEventId(UUID.randomUUID().toString());
110         lcmEvent.setEventCorrelationId(eventCorrelationId);
111         lcmEvent.setEventTime(EventDateTimeFormatter.getCurrentIsoFormattedDateTime());
112         lcmEvent.setEventSource("org.onap.ncmp");
113         lcmEvent.setEventType(lcmEventType.getEventType());
114         lcmEvent.setEventSchema("org.onap.ncmp:cmhandle-lcm-event");
115         lcmEvent.setEventSchemaVersion("1.0");
116         return lcmEvent;
117     }
118
119     @NoArgsConstructor
120     @Getter
121     @Setter
122     static class CmHandleValuesHolder {
123
124         private Values oldValues;
125         private Values newValues;
126     }
127
128 }