62be39503e6ef77df765390146c914fd3c26cdbf
[sdc/sdc-distribution-client.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * sdc-distribution-client
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.sdc.impl;
22
23 import org.onap.sdc.api.IDistributionStatusMessageJsonBuilder;
24 import org.onap.sdc.api.consumer.IComponentDoneStatusMessage;
25 import org.onap.sdc.api.consumer.IDistributionStatusMessage;
26 import org.onap.sdc.api.consumer.IFinalDistrStatusMessage;
27 import org.onap.sdc.utils.DistributionStatusEnum;
28
29 import com.google.gson.Gson;
30 import com.google.gson.GsonBuilder;
31
32 public class DistributionStatusMessageJsonBuilderFactory {
33     private static Gson gson = new GsonBuilder().setPrettyPrinting().create();
34
35     private DistributionStatusMessageJsonBuilderFactory() {
36     }
37
38     public static IDistributionStatusMessageJsonBuilder getSimpleBuilder(IDistributionStatusMessage statusMessage) {
39         DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
40
41         return prepareBuilderFromImpl(message);
42     }
43
44     public static IDistributionStatusMessageJsonBuilder getSimpleBuilder(IComponentDoneStatusMessage statusMessage) {
45         DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
46
47         return prepareBuilderFromImpl(message);
48     }
49
50     public static IDistributionStatusMessageJsonBuilder getSimpleBuilder(IFinalDistrStatusMessage statusMessage) {
51         DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
52
53         return prepareBuilderFromImpl(message);
54     }
55
56     public static IDistributionStatusMessageJsonBuilder getErrorReasonBuilder(IDistributionStatusMessage statusMessage, String errorReason) {
57         DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
58         message.setErrorReason(errorReason);
59
60         return prepareBuilderFromImpl(message);
61     }
62
63     public static IDistributionStatusMessageJsonBuilder getErrorReasonBuilder(IComponentDoneStatusMessage statusMessage,
64                                                                               String errorReason) {
65         DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
66         message.setErrorReason(errorReason);
67         return prepareBuilderFromImpl(message);
68     }
69
70     public static IDistributionStatusMessageJsonBuilder getErrorReasonBuilder(IFinalDistrStatusMessage statusMessage,
71                                                                               String errorReason) {
72         DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
73         message.setErrorReason(errorReason);
74         return prepareBuilderFromImpl(message);
75     }
76
77     static IDistributionStatusMessageJsonBuilder prepareBuilderForNotificationStatus(final String consumerId, final long currentTimeMillis, final String distributionId,
78                                                                                      final ArtifactInfoImpl artifactInfo, boolean isNotified) {
79
80         final DistributionStatusEnum distributionStatus = isNotified ? DistributionStatusEnum.NOTIFIED : DistributionStatusEnum.NOT_NOTIFIED;
81         final String jsonRequest = buildDistributionStatusJson(consumerId, currentTimeMillis, distributionId, artifactInfo, distributionStatus);
82
83         return () -> jsonRequest;
84     }
85
86     private static String buildDistributionStatusJson(final String consumerId,
87                                                       final long currentTimeMillis, final String distributionId,
88                                                       final ArtifactInfoImpl artifactInfo,
89                                                       final DistributionStatusEnum fakeStatusToBeReplaced) {
90         IDistributionStatusMessage statusMessage = new IDistributionStatusMessage() {
91             @Override
92             public long getTimestamp() {
93                 return currentTimeMillis;
94             }
95
96             @Override
97             public DistributionStatusEnum getStatus() {
98
99                 return fakeStatusToBeReplaced;
100             }
101
102             @Override
103             public String getDistributionID() {
104                 return distributionId;
105             }
106
107             @Override
108             public String getConsumerID() {
109                 return consumerId;
110             }
111
112             @Override
113             public String getArtifactURL() {
114                 return artifactInfo.getArtifactURL();
115             }
116         };
117
118         DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
119         return gson.toJson(message);
120     }
121
122     private static IDistributionStatusMessageJsonBuilder prepareBuilderFromImpl(DistributionStatusMessageImpl message) {
123         return () -> gson.toJson(message);
124     }
125 }