e2f9f896565087a9e50545fc1452542133ddf061
[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.openecomp.sdc.impl;
22
23 import org.openecomp.sdc.api.IDistributionStatusMessageJsonBuilder;
24 import org.openecomp.sdc.api.consumer.IComponentDoneStatusMessage;
25 import org.openecomp.sdc.api.consumer.IDistributionStatusMessage;
26 import org.openecomp.sdc.api.consumer.IFinalDistrStatusMessage;
27 import org.openecomp.sdc.utils.DistributionStatusEnum;
28
29 import com.google.gson.Gson;
30 import com.google.gson.GsonBuilder;
31
32 public class DistributionStatusMessageJsonBuilderFactory {
33         static Gson gson = new GsonBuilder().setPrettyPrinting().create();
34         
35         public static IDistributionStatusMessageJsonBuilder getSimpleBuilder(IDistributionStatusMessage statusMessage){
36                 DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
37                 
38                 return prepareBuilderFromImpl(message);
39         }
40
41         public static IDistributionStatusMessageJsonBuilder getSimpleBuilder(IComponentDoneStatusMessage statusMessage){
42                 DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
43
44                 return prepareBuilderFromImpl(message);
45         }
46
47         public static IDistributionStatusMessageJsonBuilder getSimpleBuilder(IFinalDistrStatusMessage statusMessage){
48                 DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
49
50                 return prepareBuilderFromImpl(message);
51         }
52         
53         public static IDistributionStatusMessageJsonBuilder getErrorReasonBuilder(IDistributionStatusMessage statusMessage, String errorReason){
54                 DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
55                 message.setErrorReason(errorReason);
56                 
57                 return prepareBuilderFromImpl(message);
58         }
59
60         public static IDistributionStatusMessageJsonBuilder getErrorReasonBuilder(IComponentDoneStatusMessage statusMessage,
61                         String errorReason) {
62                 DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
63                 message.setErrorReason(errorReason);
64                 return prepareBuilderFromImpl(message);
65         }
66         
67         public static IDistributionStatusMessageJsonBuilder getErrorReasonBuilder(IFinalDistrStatusMessage statusMessage,
68                         String errorReason) {
69                 DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
70                 message.setErrorReason(errorReason);
71                 return prepareBuilderFromImpl(message);
72         }
73         
74         static IDistributionStatusMessageJsonBuilder prepareBuilderForNotificationStatus(final String consumerId, final long currentTimeMillis, final String distributionId,
75                         final ArtifactInfoImpl artifactInfo, boolean isNotified){
76                 
77                 final DistributionStatusEnum fakeStatusToReplace = DistributionStatusEnum.DOWNLOAD_OK;
78                 final String jsonRequest = buildDistributionStatusJson(consumerId, currentTimeMillis, distributionId, artifactInfo, fakeStatusToReplace);
79                 
80                 DistributionStatusNotificationEnum notificationStatus = isNotified ? DistributionStatusNotificationEnum.NOTIFIED : DistributionStatusNotificationEnum.NOT_NOTIFIED;
81                 final String changedRequest = jsonRequest.replace(fakeStatusToReplace.name(), notificationStatus.name());
82                 IDistributionStatusMessageJsonBuilder builder = new IDistributionStatusMessageJsonBuilder() {
83                         @Override
84                         public String build() {
85                                 return changedRequest;
86                         }
87                 };
88                 return builder;
89                 
90         }
91
92         private static String buildDistributionStatusJson(final String consumerId,
93                         final long currentTimeMillis, final String distributionId,
94                         final ArtifactInfoImpl artifactInfo,
95                         final DistributionStatusEnum fakeStatusToBeReplaced) {
96                 IDistributionStatusMessage statusMessage = new IDistributionStatusMessage() {
97                         @Override
98                         public long getTimestamp() {
99                                 return currentTimeMillis;
100                         }
101                         
102                         @Override
103                         public DistributionStatusEnum getStatus() {
104                                 
105                                 return fakeStatusToBeReplaced;
106                         }
107                         
108                         @Override
109                         public String getDistributionID() {
110                                 return distributionId;
111                         }
112                         
113                         @Override
114                         public String getConsumerID() {
115                                 return consumerId;
116                         }
117                         
118                         @Override
119                         public String getArtifactURL() {
120                                 return artifactInfo.getArtifactURL();
121                         }
122                 };
123                 
124                 DistributionStatusMessageImpl message = new DistributionStatusMessageImpl(statusMessage);
125                 final String jsonRequest = gson.toJson(message);
126                 return jsonRequest;
127         }
128         
129         private static IDistributionStatusMessageJsonBuilder prepareBuilderFromImpl( DistributionStatusMessageImpl message) {
130                 final String jsonRequest = gson.toJson(message);
131                 IDistributionStatusMessageJsonBuilder builder = new IDistributionStatusMessageJsonBuilder() {
132                         @Override
133                         public String build() {
134                                 return jsonRequest;
135                         }
136                 };
137                 return builder;
138         }
139         
140         private enum DistributionStatusNotificationEnum {
141                 NOTIFIED, NOT_NOTIFIED
142         }
143
144         
145
146         
147         
148 }