Add AaiSerializer
[dcaegen2/analytics/tca-gen2.git] / dcae-analytics / dcae-analytics-tca-model / src / main / java / org / onap / dcae / analytics / tca / model / util / json / serializer / AaiSerializer.java
1 /*
2  * ==================================================================================
3  * Copyright (C) 2021 Samsung Electronics Intellectual Property. All rights reserved.
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  * ============LICENSE_END===========================================================
17  */
18
19 package org.onap.dcae.analytics.tca.model.util.json.serializer;
20
21 import com.fasterxml.jackson.core.JsonGenerator;
22 import com.fasterxml.jackson.databind.SerializerProvider;
23 import com.fasterxml.jackson.databind.ser.std.StdSerializer;
24 import java.io.IOException;
25 import java.util.ArrayList;
26 import java.util.List;
27 import java.util.Map;
28 import org.onap.dcae.analytics.tca.model.facade.Aai;
29
30 public class AaiSerializer extends StdSerializer<Aai> {
31
32     private static final String SERVER_NAME_KEY = "vserver.vserver-name";
33     private static final String VNF_NAME_KEY = "generic-vnf.vnf-name";
34
35     public AaiSerializer(){
36         this(Aai.class);
37     }
38
39     protected AaiSerializer(Class<Aai> t) {
40         super(t);
41     }
42
43     @Override
44     public void serialize(Aai aai, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
45             throws IOException {
46
47         jsonGenerator.writeStartObject();
48
49         List<String> filters = new ArrayList<>();
50         if (aai.getGenericVNFName() != null) {
51             serializerProvider.defaultSerializeField(VNF_NAME_KEY, aai.getGenericVNFName(), jsonGenerator);
52             filters.add(VNF_NAME_KEY);
53         }
54
55         if (aai.getGenericServerName() != null) {
56             serializerProvider.defaultSerializeField(SERVER_NAME_KEY, aai.getGenericServerName(), jsonGenerator);
57             filters.add(SERVER_NAME_KEY);
58         }
59
60         for (Map.Entry<String, Object> prop : aai.getDynamicProperties().entrySet()) {
61             if (!filters.contains(prop.getKey())) {
62                 serializerProvider.defaultSerializeField(prop.getKey(), prop.getValue(), jsonGenerator);
63             }
64         }
65
66         jsonGenerator.writeEndObject();
67     }
68 }