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