Code Optimization.
[sdc/sdc-workflow-designer.git] / sdc-workflow-designer-server / src / main / java / org / onap / sdc / workflowdesigner / resources / ExtendActivityResource.java
1 /**
2  * Copyright (c) 2017-2018 ZTE Corporation.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the Apache License, Version 2.0
5  * and the Eclipse Public License v1.0 which both accompany this distribution,
6  * and are available at http://www.eclipse.org/legal/epl-v10.html
7  * and http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Contributors:
10  *     ZTE - initial API and implementation and/or initial documentation
11  */
12
13 package org.onap.sdc.workflowdesigner.resources;
14
15 import java.io.IOException;
16
17 import javax.ws.rs.Consumes;
18 import javax.ws.rs.GET;
19 import javax.ws.rs.Path;
20 import javax.ws.rs.Produces;
21 import javax.ws.rs.QueryParam;
22 import javax.ws.rs.core.MediaType;
23 import javax.ws.rs.core.Response;
24
25 import org.eclipse.jetty.http.HttpStatus;
26 import org.onap.sdc.workflowdesigner.resources.entity.ExtActivityDisplayInfo;
27 import org.onap.sdc.workflowdesigner.resources.entity.ExtendActivity;
28 import org.onap.sdc.workflowdesigner.utils.FileCommonUtils;
29 import org.onap.sdc.workflowdesigner.utils.JsonUtils;
30 import org.onap.sdc.workflowdesigner.utils.RestUtils;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34 import com.codahale.metrics.annotation.Timed;
35
36 import io.swagger.annotations.Api;
37 import io.swagger.annotations.ApiOperation;
38 import io.swagger.annotations.ApiParam;
39 import io.swagger.annotations.ApiResponse;
40 import io.swagger.annotations.ApiResponses;
41
42 /**
43  * Extend Activity Resource.
44  * 
45  */
46 @Path("/ext-activities")
47 @Api(tags = {"Workflow Modeler"})
48 public class ExtendActivityResource {
49   private static final Logger LOGGER = LoggerFactory.getLogger(ExtendActivityResource.class);
50
51   /** */
52   private static final String EXT_ACTIVITIES_DISPLAY_INFO_FILE_NAME =
53       "ext-activities-display-info.json";
54
55   private static final String EXT_ACTIVITIES_FILE_NAME = "ext-activities.json";
56
57   /**
58    * test function.
59    * 
60    * @return Response
61    */
62   @Path("/")
63   @GET
64   @Consumes(MediaType.APPLICATION_JSON)
65   @Produces(MediaType.APPLICATION_JSON)
66   @ApiOperation(value = "Get Extend Activities.", response = ExtendActivity.class,
67       responseContainer = "List")
68   @ApiResponses(value = {
69       @ApiResponse(code = HttpStatus.NOT_FOUND_404, message = "microservice not found",
70           response = String.class),
71       @ApiResponse(code = HttpStatus.UNSUPPORTED_MEDIA_TYPE_415,
72           message = "Unprocessable MicroServiceInfo Entity ", response = String.class),
73       @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "server internal error",
74           response = String.class)})
75   @Timed
76   public Response getExtActivities(@ApiParam(value = "sence") @QueryParam("sence") String sence) {
77
78     try {
79       ExtendActivity[] extActivities = retriveExtActivites(sence);
80       return Response.status(Response.Status.OK).entity(extActivities).build();
81     } catch (IOException e) {
82       LOGGER.error("Get ExtActivities failed.", e);
83       throw RestUtils.newInternalServerErrorException(e);
84     }
85
86   }
87
88   /**
89    * @param sence
90    * @return
91    * @throws IOException
92    */
93   protected ExtendActivity[] retriveExtActivites(String sence) throws IOException {
94     String json = FileCommonUtils.readString(EXT_ACTIVITIES_FILE_NAME);
95     return JsonUtils.fromJson(json, ExtendActivity[].class);
96   }
97
98
99   @Path("/displayInfo")
100   @GET
101   @Consumes(MediaType.APPLICATION_JSON)
102   @Produces(MediaType.APPLICATION_JSON)
103   @ApiOperation(value = "Get Extend Activities DisplayInfo",
104       response = ExtActivityDisplayInfo.class)
105   @ApiResponses(value = {
106       @ApiResponse(code = HttpStatus.NOT_FOUND_404, message = "microservice not found",
107           response = String.class),
108       @ApiResponse(code = HttpStatus.UNSUPPORTED_MEDIA_TYPE_415,
109           message = "Unprocessable MicroServiceInfo Entity ", response = String.class),
110       @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "server internal error",
111           response = String.class)})
112   @Timed
113   public Response getDisplayInfo(@ApiParam(value = "sence") @QueryParam("sence") String sence) {
114     try {
115       ExtActivityDisplayInfo displayInfo = retriveDisplayInfo(sence);
116       return Response.status(Response.Status.OK).entity(displayInfo).build();
117     } catch (IOException e) {
118       LOGGER.error("Get Extend Activities DisplayInfo failed.", e);
119       throw RestUtils.newInternalServerErrorException(e);
120     }
121   }
122
123   /**
124    * @param sence
125    * @return
126    * @throws IOException
127    */
128   private ExtActivityDisplayInfo retriveDisplayInfo(String sence) throws IOException {
129     String json = FileCommonUtils.readString(EXT_ACTIVITIES_DISPLAY_INFO_FILE_NAME);
130     return JsonUtils.fromJson(json, ExtActivityDisplayInfo.class);
131   }
132
133 }