[DMAAP-BC] Consolidate bus controller repos
[dmaap/buscontroller.git] / dmaap-bc / src / main / java / org / onap / dmaap / dbcapi / resources / MR_ClusterResource.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * org.onap.dmaap
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.dmaap.dbcapi.resources;
22
23 import io.swagger.annotations.Api;
24 import io.swagger.annotations.ApiOperation;
25 import io.swagger.annotations.ApiResponse;
26 import io.swagger.annotations.ApiResponses;
27
28 import java.util.List;
29
30 import javax.ws.rs.Consumes;
31 import javax.ws.rs.DELETE;
32 import javax.ws.rs.GET;
33 import javax.ws.rs.POST;
34 import javax.ws.rs.PUT;
35 import javax.ws.rs.Path;
36 import javax.ws.rs.PathParam;
37 import javax.ws.rs.Produces;
38 import javax.ws.rs.core.GenericEntity;
39 import javax.ws.rs.core.MediaType;
40 import javax.ws.rs.core.Response;
41 import javax.ws.rs.core.Response.Status;
42
43 import org.onap.dmaap.dbcapi.logging.BaseLoggingClass;
44 import org.onap.dmaap.dbcapi.model.ApiError;
45 import org.onap.dmaap.dbcapi.model.MR_Cluster;
46 import org.onap.dmaap.dbcapi.service.MR_ClusterService;
47
48
49 @Path("/mr_clusters")
50 @Api( value= "MR_Clusters", description = "Endpoint for a Message Router servers in a Cluster configuration" )
51 @Consumes(MediaType.APPLICATION_JSON)
52 @Produces(MediaType.APPLICATION_JSON)
53 @Authorization
54 public class MR_ClusterResource extends BaseLoggingClass {
55
56         private MR_ClusterService mr_clusterService = new MR_ClusterService();
57         private ResponseBuilder responseBuilder = new ResponseBuilder();
58         private RequiredChecker checker = new RequiredChecker();
59                 
60         @GET
61         @ApiOperation( value = "return MR_Cluster details", 
62         notes = "Returns array of  `MR_Cluster` objects.", 
63         response = MR_Cluster.class)
64         @ApiResponses( value = {
65             @ApiResponse( code = 200, message = "Success", response = MR_Cluster.class),
66             @ApiResponse( code = 400, message = "Error", response = ApiError.class )
67         })
68         public Response getMr_Clusters() {
69                 List<MR_Cluster> clusters = mr_clusterService.getAllMr_Clusters();
70
71                 GenericEntity<List<MR_Cluster>> list = new GenericEntity<List<MR_Cluster>>(clusters) {
72         };
73         return responseBuilder.success(list);
74         }
75                 
76         @POST
77         @ApiOperation( value = "return MR_Cluster details", 
78         notes = "Create an  `MR_Cluster` object.", 
79         response = MR_Cluster.class)
80         @ApiResponses( value = {
81             @ApiResponse( code = 200, message = "Success", response = MR_Cluster.class),
82             @ApiResponse( code = 400, message = "Error", response = ApiError.class )
83         })
84         public Response  addMr_Cluster(MR_Cluster cluster) {
85                 ApiError apiError = new ApiError();
86
87                 try {
88                         checker.required( "dcaeLocationName", cluster.getDcaeLocationName());
89                         checker.required( "fqdn", cluster.getFqdn());
90                 } catch( RequiredFieldException rfe ) {
91                         return responseBuilder.error(rfe.getApiError());
92                 }
93                 MR_Cluster mrc =  mr_clusterService.addMr_Cluster(cluster, apiError);
94                 if ( mrc != null && mrc.isStatusValid() ) {
95                         return responseBuilder.success(Status.CREATED.getStatusCode(), mrc);
96                 }
97                 return responseBuilder.error(apiError);
98
99         }
100                 
101         @PUT
102         @ApiOperation( value = "return MR_Cluster details", 
103         notes = "Update an  `MR_Cluster` object, specified by clusterId.", 
104         response = MR_Cluster.class)
105         @ApiResponses( value = {
106             @ApiResponse( code = 200, message = "Success", response = MR_Cluster.class),
107             @ApiResponse( code = 400, message = "Error", response = ApiError.class )
108         })
109         @Path("/{clusterId}")
110         public Response updateMr_Cluster(@PathParam("clusterId") String clusterId, MR_Cluster cluster) {
111                 ApiError apiError = new ApiError();
112
113                 try {
114                         checker.required( "fqdn", clusterId);
115                         checker.required( "dcaeLocationName", cluster.getDcaeLocationName());
116                 } catch( RequiredFieldException rfe ) {
117                         return responseBuilder.error(rfe.getApiError());
118                 }
119                 cluster.setDcaeLocationName(clusterId);
120                 MR_Cluster mrc =  mr_clusterService.updateMr_Cluster(cluster, apiError);
121                 if ( mrc != null && mrc.isStatusValid() ) {
122                         return responseBuilder.success(Status.CREATED.getStatusCode(), mrc);
123                 }
124                 return responseBuilder.error(apiError);
125         }
126                 
127         @DELETE
128         @ApiOperation( value = "return MR_Cluster details", 
129         notes = "Delete an  `MR_Cluster` object, specified by clusterId.", 
130         response = MR_Cluster.class)
131         @ApiResponses( value = {
132             @ApiResponse( code = 204, message = "Success", response = MR_Cluster.class),
133             @ApiResponse( code = 400, message = "Error", response = ApiError.class )
134         })
135         @Path("/{clusterId}")
136         public Response deleteMr_Cluster(@PathParam("clusterId") String id){
137                 ApiError apiError = new ApiError();
138
139                 try {
140                         checker.required( "fqdn", id);
141                 } catch( RequiredFieldException rfe ) {
142                         return responseBuilder.error(rfe.getApiError());
143                 }
144                 mr_clusterService.removeMr_Cluster(id, apiError);
145                 if (apiError.is2xx()) {
146                         return responseBuilder.success(Status.NO_CONTENT.getStatusCode(), null);
147                 } 
148                 return responseBuilder.error(apiError);
149         }
150
151         @GET
152         @ApiOperation( value = "return MR_Cluster details", 
153         notes = "Retrieve an  `MR_Cluster` object, specified by clusterId.", 
154         response = MR_Cluster.class)
155         @ApiResponses( value = {
156             @ApiResponse( code = 200, message = "Success", response = MR_Cluster.class),
157             @ApiResponse( code = 400, message = "Error", response = ApiError.class )
158         })
159         @Path("/{clusterId}")
160         public Response getMR_Cluster(@PathParam("clusterId") String id) {
161                 ApiError apiError = new ApiError();
162
163                 try {
164                         checker.required( "dcaeLocationName", id);
165                 } catch( RequiredFieldException rfe ) {
166                         return responseBuilder.error(rfe.getApiError());
167                 }
168                 MR_Cluster mrc =  mr_clusterService.getMr_Cluster(id, apiError);
169                 if ( mrc != null && mrc.isStatusValid() ) {
170                         return responseBuilder.success(Status.CREATED.getStatusCode(), mrc);
171                 }
172                 return responseBuilder.error(apiError);
173         }
174 }