Sonar Critical Fix
[dcaegen2/analytics/tca.git] / dcae-analytics-cdap-plugins / src / main / java / org / openecomp / dcae / apod / analytics / cdap / plugins / utils / DMaaPSourceConfigMapper.java
1 /*\r
2  * ===============================LICENSE_START======================================\r
3  *  dcae-analytics\r
4  * ================================================================================\r
5  *    Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  *  Licensed under the Apache License, Version 2.0 (the "License");\r
8  *  you may not use this file except in compliance with the License.\r
9  *   You may obtain a copy of the License at\r
10  *\r
11  *          http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  *  Unless required by applicable law or agreed to in writing, software\r
14  *  distributed under the License is distributed on an "AS IS" BASIS,\r
15  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  *  See the License for the specific language governing permissions and\r
17  *  limitations under the License.\r
18  *  ============================LICENSE_END===========================================\r
19  */\r
20 \r
21 package org.openecomp.dcae.apod.analytics.cdap.plugins.utils;\r
22 \r
23 import com.google.common.base.Function;\r
24 import org.openecomp.dcae.apod.analytics.cdap.plugins.domain.config.dmaap.DMaaPMRSourcePluginConfig;\r
25 import org.openecomp.dcae.apod.analytics.dmaap.domain.config.DMaaPMRSubscriberConfig;\r
26 \r
27 import javax.annotation.Nonnull;\r
28 \r
29 import static org.openecomp.dcae.apod.analytics.cdap.common.utils.ValidationUtils.isEmpty;\r
30 import static org.openecomp.dcae.apod.analytics.cdap.common.utils.ValidationUtils.isPresent;\r
31 \r
32 /**\r
33  * Function that converts {@link DMaaPMRSourcePluginConfig} to {@link DMaaPMRSubscriberConfig}\r
34  * <p>\r
35  * @author Rajiv Singla . Creation Date: 1/18/2017.\r
36  */\r
37 public class DMaaPSourceConfigMapper implements Function<DMaaPMRSourcePluginConfig, DMaaPMRSubscriberConfig> {\r
38 \r
39     /**\r
40      * Static factory method to map {@link DMaaPMRSourcePluginConfig} to {@link DMaaPMRSubscriberConfig}\r
41      *\r
42      * @param pluginConfig DMaaP MR Souce Plugin Config\r
43      *\r
44      * @return DMaaP MR Subscriber Config\r
45      */\r
46     public static DMaaPMRSubscriberConfig map(final DMaaPMRSourcePluginConfig pluginConfig) {\r
47         return new DMaaPSourceConfigMapper().apply(pluginConfig);\r
48     }\r
49 \r
50     /**\r
51      * Converts {@link DMaaPMRSourcePluginConfig} to {@link DMaaPMRSubscriberConfig} object\r
52      *\r
53      * @param sourcePluginConfig DMaaP MR Source Plugin Config\r
54      *\r
55      * @return DMaaP MR Subscriber Config\r
56      */\r
57     @Nonnull\r
58     @Override\r
59     public DMaaPMRSubscriberConfig apply(@Nonnull DMaaPMRSourcePluginConfig sourcePluginConfig) {\r
60 \r
61         // Create a new subscriber settings builder\r
62         final String hostName = sourcePluginConfig.getHostName();\r
63         final String topicName = sourcePluginConfig.getTopicName();\r
64         if (isEmpty(hostName) || isEmpty(topicName)) {\r
65             throw new IllegalStateException("DMaaP MR Source Host Name and Topic Name must be present");\r
66         }\r
67         final DMaaPMRSubscriberConfig.Builder subscriberConfigBuilder = new DMaaPMRSubscriberConfig.Builder(\r
68                 hostName, topicName);\r
69 \r
70         // Setup up any optional subscriber parameters if they are present\r
71         final Integer subscriberHostPortNumber = sourcePluginConfig.getPortNumber();\r
72         if (subscriberHostPortNumber != null) {\r
73             subscriberConfigBuilder.setPortNumber(subscriberHostPortNumber);\r
74         }\r
75 \r
76         final String subscriberProtocol = sourcePluginConfig.getProtocol();\r
77         if (isPresent(subscriberProtocol)) {\r
78             subscriberConfigBuilder.setProtocol(subscriberProtocol);\r
79         }\r
80 \r
81         final String subscriberUserName = sourcePluginConfig.getUserName();\r
82         if (isPresent(subscriberUserName)) {\r
83             subscriberConfigBuilder.setUserName(subscriberUserName);\r
84         }\r
85 \r
86         final String subscriberUserPassword = sourcePluginConfig.getUserPassword();\r
87         if (isPresent(subscriberUserPassword)) {\r
88             subscriberConfigBuilder.setUserPassword(subscriberUserPassword);\r
89         }\r
90 \r
91         final String subscriberContentType = sourcePluginConfig.getContentType();\r
92         if (isPresent(subscriberContentType)) {\r
93             subscriberConfigBuilder.setContentType(subscriberContentType);\r
94         }\r
95 \r
96         final String subscriberConsumerId = sourcePluginConfig.getConsumerId();\r
97         if (isPresent(subscriberConsumerId)) {\r
98             subscriberConfigBuilder.setConsumerId(subscriberConsumerId);\r
99         }\r
100 \r
101         final String subscriberConsumerGroup = sourcePluginConfig.getConsumerGroup();\r
102         if (isPresent(subscriberConsumerGroup)) {\r
103             subscriberConfigBuilder.setConsumerGroup(subscriberConsumerGroup);\r
104         }\r
105 \r
106         final Integer subscriberTimeoutMS = sourcePluginConfig.getTimeoutMS();\r
107         if (subscriberTimeoutMS != null) {\r
108             subscriberConfigBuilder.setTimeoutMS(subscriberTimeoutMS);\r
109         }\r
110         final Integer subscriberMessageLimit = sourcePluginConfig.getMessageLimit();\r
111         if (subscriberMessageLimit != null) {\r
112             subscriberConfigBuilder.setMessageLimit(subscriberMessageLimit);\r
113         }\r
114 \r
115         // return Subscriber config\r
116         return subscriberConfigBuilder.build();\r
117     }\r
118 }\r