Added new feeds/sync API
[dmaap/dbcapi.git] / src / main / java / org / onap / dmaap / dbcapi / resources / FeedResource.java
index a7b4f73..6df135d 100644 (file)
@@ -56,7 +56,10 @@ import org.onap.dmaap.dbcapi.service.FeedService;
 @Produces(MediaType.APPLICATION_JSON)
 @Authorization
 public class FeedResource extends BaseLoggingClass {
-       
+
+       private ResponseBuilder responseBuilder = new ResponseBuilder();
+       private RequiredChecker checker = new RequiredChecker();
+
        @GET
        @ApiOperation( value = "return Feed details", 
        notes = "Returns array of  `Feed` objects.", 
@@ -68,16 +71,13 @@ public class FeedResource extends BaseLoggingClass {
        public Response getFeeds(
                        @QueryParam("feedName") String feedName,
                        @QueryParam("version") String version,
-                       @QueryParam("match") String match
-                       ) {
-
-               ApiService resp = new ApiService();
+                       @QueryParam("match") String match) {
 
                FeedService feedService = new FeedService();
                List<Feed> nfeeds =  feedService.getAllFeeds( feedName, version, match );
                GenericEntity<List<Feed>> list = new GenericEntity<List<Feed>>(nfeeds) {
         };
-        return resp.success(list);
+        return responseBuilder.success(list);
        }
        
 
@@ -92,19 +92,18 @@ public class FeedResource extends BaseLoggingClass {
        })
        public Response addFeed( 
                        @WebParam(name = "feed") Feed feed,
-                       @QueryParam("useExisting") String useExisting
-                       ) {
+                       @QueryParam("useExisting") String useExisting) {
 
                ApiService resp = new ApiService();
 
                try {
-                       resp.required( "feedName", feed.getFeedName(), "");
-                       resp.required( "feedVersion", feed.getFeedVersion(), "");
-                       resp.required( "owner", feed.getOwner(), "" );
-                       resp.required( "asprClassification", feed.getAsprClassification(), "" );
+                       checker.required( "feedName", feed.getFeedName());
+                       checker.required( "feedVersion", feed.getFeedVersion());
+                       checker.required( "owner", feed.getOwner());
+                       checker.required( "asprClassification", feed.getAsprClassification());
                } catch ( RequiredFieldException rfe ) {
-                       logger.debug( resp.toString() );
-                       return resp.error();    
+                       logger.debug( rfe.getApiError().toString() );
+                       return responseBuilder.error(rfe.getApiError());
                }
                
                
@@ -113,28 +112,28 @@ public class FeedResource extends BaseLoggingClass {
                if ( nfeed == null ) {
                        nfeed =  feedService.addFeed( feed, resp.getErr() );
                        if ( nfeed != null ) {
-                               return resp.success(nfeed);
+                               return responseBuilder.success(nfeed);
                        } else {
                                logger.error( "Unable to create: " + feed.getFeedName() + ":" + feed.getFeedVersion());
 
-                               return resp.error();                    
+                               return responseBuilder.error(resp.getErr());
                        }
                } else if ( nfeed.getStatus() == DmaapObject_Status.DELETED ) {
                        feed.setFeedId( nfeed.getFeedId());
                        nfeed =  feedService.updateFeed(feed, resp.getErr());
                        if ( nfeed != null ) {
-                               return resp.success(nfeed);
+                               return responseBuilder.success(nfeed);
                        } else {
                                logger.info( "Unable to update: " + feed.getFeedName() + ":" + feed.getFeedVersion());
 
-                               return resp.error();    
+                               return responseBuilder.error(resp.getErr());
                        }
                } else if ( (useExisting != null) && ("true".compareToIgnoreCase( useExisting ) == 0)) {
-                       return resp.success(nfeed);
+                       return responseBuilder.success(nfeed);
                }
 
                resp.setCode(Status.CONFLICT.getStatusCode());
-               return resp.error();
+               return responseBuilder.error(resp.getErr());
        }
        
        @PUT
@@ -148,22 +147,21 @@ public class FeedResource extends BaseLoggingClass {
        @Path("/{id}")
        public Response updateFeed( 
                        @PathParam("id") String id,
-                       @WebParam(name = "feed") Feed feed 
-                       ) {
+                       @WebParam(name = "feed") Feed feed) {
 
                FeedService feedService = new FeedService();
                ApiService resp = new ApiService();
 
                try {
-                       resp.required( "feedId", id, "");
+                       checker.required( "feedId", id);
                } catch ( RequiredFieldException rfe ) {
-                       logger.debug( resp.toString() );
-                       return resp.error();    
+                       logger.debug( rfe.getApiError().toString() );
+                       return responseBuilder.error(rfe.getApiError());
                }
 
                Feed nfeed = feedService.getFeed( id, resp.getErr() );
                if ( nfeed == null || nfeed.getStatus() == DmaapObject_Status.DELETED ) {
-                       return resp.notFound();                                         
+                       return responseBuilder.notFound();
                }
        
                //  we assume there is no updates allowed for pubs and subs objects via this api...             
@@ -174,11 +172,11 @@ public class FeedResource extends BaseLoggingClass {
                
                nfeed =  feedService.updateFeed(nfeed, resp.getErr());
                if ( nfeed != null ) {
-                       return resp.success(nfeed);
+                       return responseBuilder.success(nfeed);
                } else {
                        logger.info( "Unable to update: " + feed.getFeedName() + ":" + feed.getFeedVersion());
 
-                       return resp.error();    
+                       return responseBuilder.error(resp.getErr());
                }
        }
        
@@ -201,15 +199,15 @@ public class FeedResource extends BaseLoggingClass {
                Feed nfeed =  feedService.getFeed( id, resp.getErr() );
                if ( nfeed == null ) {
                        resp.setCode(Status.NOT_FOUND.getStatusCode());
-                       return resp.error();
+                       return responseBuilder.error(resp.getErr());
                }
                nfeed = feedService.removeFeed( nfeed, resp.getErr() );
                if ( nfeed == null || nfeed.getStatus() == DmaapObject_Status.DELETED ) {
-                       return resp.success(Status.NO_CONTENT.getStatusCode(), null);
+                       return responseBuilder.success(Status.NO_CONTENT.getStatusCode(), null);
                }
                logger.info( "Unable to delete: " + id + ":" + nfeed.getFeedVersion());
 
-               return resp.error();
+               return responseBuilder.error(resp.getErr());
        }
 
        @GET
@@ -230,8 +228,40 @@ public class FeedResource extends BaseLoggingClass {
                Feed nfeed =  feedService.getFeed( id, resp.getErr() );
                if ( nfeed == null ) {
                        resp.setCode(Status.NOT_FOUND.getStatusCode());
-                       return resp.error();
+                       return responseBuilder.error(resp.getErr());
                }
-               return resp.success(nfeed);
+               return responseBuilder.success(nfeed);
        }
+       
+       @PUT
+       @ApiOperation( value = "sync feeds to existing DR",
+       notes = "When Bus Controller is deployed after DR, then it is possible"
+                       + "that DR has previous provisioning data that needs to be imported"
+                       + "into Bus Controller.",
+       response = Feed.class )
+       @ApiResponses( value =  {
+                       @ApiResponse( code = 200, message = "Success", response = Feed.class),
+                       @ApiResponse( code = 400, message = "Error", response = ApiError.class )
+       })
+       @Path( "/sync")
+       public Response syncFeeds ( 
+                       @QueryParam("hard") String hardParam
+                       ) {
+               ApiService resp = new ApiService();
+               
+               FeedService feedService = new FeedService();
+               boolean hard = false;
+               if (  hardParam != null && hardParam.equalsIgnoreCase("true")) {
+                       hard = true;
+               }
+               feedService.sync( hard, resp.getErr() );
+               if ( resp.getErr().is2xx()) {   
+                       List<Feed> nfeeds =  feedService.getAllFeeds();
+                       GenericEntity<List<Feed>> list = new GenericEntity<List<Feed>>(nfeeds) {
+                       };
+                       return responseBuilder.success(list);
+               }
+               return responseBuilder.error(resp.getErr());
+       }
+       
 }