9792467715ecea176c1fd383e127d176f3be9951
[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 fakeStatusToReplace = DistributionStatusEnum.DOWNLOAD_OK;
81         final String jsonRequest = buildDistributionStatusJson(consumerId, currentTimeMillis, distributionId, artifactInfo, fakeStatusToReplace);
82
83         DistributionStatusNotificationEnum notificationStatus = isNotified ? DistributionStatusNotificationEnum.NOTIFIED : DistributionStatusNotificationEnum.NOT_NOTIFIED;
84         final String changedRequest = jsonRequest.replace(fakeStatusToReplace.name(), notificationStatus.name());
85         IDistributionStatusMessageJsonBuilder builder = new IDistributionStatusMessageJsonBuilder() {
86             @Override
87             public String build() {
88                 return changedRequest;
89             }
90         };
91         return builder;
92
93     }
94
95     private static String buildDistributionStatusJson(final String consumerId,
96                                                       final long currentTimeMillis, final String distributionId,
97                                                       final ArtifactInfoImpl artifactInfo,
98                                                       final DistributionStatusEnum fakeStatusToBeReplaced) {
99         IDistributionStatusMessage statusMessage = new IDistributionStatusMessage() {
100             @Override
101             public long getTimestamp() {
102                 return currentTimeMillis;
103             }
104
105             @Override
106             public DistributionStatusEnum getStatus() {
107
108                 return fakeStatusToBeReplaced;
109             }
110
111             @Override
112             public String getDistributionID() {
113                 return distributionId;
114             }
115
116             @Override
117             public String getConsumerID() {
118                 return consumerId;
119             }
120
121             @Override
122             public String getArtifactURL() {
123                 return artifactInfo.getArtifactURL();
124             }
125         };
126
127         DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
128         final String jsonRequest = gson.toJson(message);
129         return jsonRequest;
130     }
131
132     private static IDistributionStatusMessageJsonBuilder prepareBuilderFromImpl(DistributionStatusMessageImpl message) {
133         final String jsonRequest = gson.toJson(message);
134         IDistributionStatusMessageJsonBuilder builder = new IDistributionStatusMessageJsonBuilder() {
135             @Override
136             public String build() {
137                 return jsonRequest;
138             }
139         };
140         return builder;
141     }
142
143     private enum DistributionStatusNotificationEnum {
144         NOTIFIED, NOT_NOTIFIED
145     }
146
147
148 }