Divide the MSB source codes into two repos
[msb/apigateway.git] / apiroute / apiroute-service / src / main / java / org / onap / msb / apiroute / wrapper / service / IuiRouteService.java
1 package org.onap.msb.apiroute.wrapper.service;
2
3 import org.onap.msb.apiroute.api.IuiRouteInfo;
4 import org.onap.msb.apiroute.api.RouteServer;
5 import org.onap.msb.apiroute.wrapper.dao.DAOFactory;
6 import org.onap.msb.apiroute.wrapper.dao.route.IRouteDAO;
7 import org.onap.msb.apiroute.wrapper.dao.route.bean.Metadata;
8 import org.onap.msb.apiroute.wrapper.dao.route.bean.Node;
9 import org.onap.msb.apiroute.wrapper.dao.route.bean.RouteInfo;
10 import org.onap.msb.apiroute.wrapper.dao.route.bean.Spec;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13
14 import java.util.ArrayList;
15 import java.util.Calendar;
16 import java.util.List;
17
18
19 public class IuiRouteService {
20     private static final Logger LOGGER = LoggerFactory.getLogger(CustomRouteService.class);
21
22     private static final IuiRouteService instance = new IuiRouteService();
23     private IRouteDAO routeDAO = DAOFactory.getRouteDAO();
24
25     private IuiRouteService() {
26     }
27
28     public static IuiRouteService getInstance() {
29         return instance;
30     }
31
32     public void saveIuiRouteService2Redis(IuiRouteInfo iuiRouteInfo, String routeKey) throws Exception {
33         if(iuiRouteInfo ==null){
34             throw new Exception("input apiRouteInfo to be saved is null!");
35         }
36         RouteInfo routeInfo = IuiRouteAdapter.toRouteInfo(iuiRouteInfo);
37         routeDAO.saveRoute(routeKey, routeInfo);
38     }
39
40     public long deleteIuiRouteService2Redis(String routeKey) throws Exception {
41         return routeDAO.deleteRoute(routeKey);
42     }
43
44     public long deleteMultiIuiRouteService2Redis(String routeKeyPattern) throws Exception {
45         return routeDAO.deleteMultiRoute(routeKeyPattern);
46     }
47
48     public IuiRouteInfo getIuiRouteInstance(String routeKey) throws Exception {
49         IuiRouteInfo iuiRouteInfo = null;
50         RouteInfo routeInfo = null;
51         routeInfo = routeDAO.queryRoute(routeKey);
52         if(routeInfo!=null) {
53             iuiRouteInfo = IuiRouteAdapter.fromRouteInfo(routeInfo);
54         }
55         return iuiRouteInfo;
56     }
57
58     public List<IuiRouteInfo> getMultiIuiRouteInstances(String apiRedisKeyPattern) throws Exception {
59         List<IuiRouteInfo> iuiRouteList = new ArrayList<>();
60         List<RouteInfo> routeInfoList = routeDAO.queryMultiRoute(apiRedisKeyPattern);
61         for (RouteInfo routeInfo : routeInfoList) {
62             if (routeInfo != null) {
63                 IuiRouteInfo iuiRouteInfo = IuiRouteAdapter.fromRouteInfo(routeInfo);;
64                 iuiRouteList.add(iuiRouteInfo);
65             }
66         }
67         return iuiRouteList;
68     }
69
70     public void updateIuiRouteStatus2Redis(String routeKey,String status) throws Exception {
71         RouteInfo routeInfo = routeDAO.queryRoute(routeKey);
72         if(routeInfo != null){
73             routeInfo.setStatus(status);
74             routeDAO.saveRoute(routeKey,routeInfo);
75         }else{
76             throw new Exception("service to be updated is not exist! Update failed");
77         }
78     }
79
80 }
81
82 class IuiRouteAdapter {
83     public static RouteInfo toRouteInfo(IuiRouteInfo iuiRouteInfo) {
84         RouteInfo routeInfo = new RouteInfo();
85         routeInfo.setStatus(iuiRouteInfo.getStatus());
86
87
88         Spec spec = new Spec();
89         spec.setVisualRange(iuiRouteInfo.getVisualRange());
90         spec.setUrl(iuiRouteInfo.getUrl().trim());
91         spec.setPublish_port(iuiRouteInfo.getPublish_port());
92         spec.setHost(iuiRouteInfo.getHost());
93         spec.setConsulServiceName(iuiRouteInfo.getConsulServiceName());
94         spec.setUseOwnUpstream(iuiRouteInfo.getUseOwnUpstream());
95         spec.setPublish_protocol(iuiRouteInfo.getPublishProtocol());
96         spec.setEnable_ssl(iuiRouteInfo.isEnable_ssl());
97         spec.setControl(iuiRouteInfo.getControl());
98         RouteServer[] routeServers = iuiRouteInfo.getServers();
99         List<Node> nodeList = new ArrayList<>();
100         for (RouteServer server: routeServers){
101             Node node = new Node();
102             node.setIp(server.getIp());
103             node.setPort(Integer.parseInt(server.getPort()));
104             node.setWeight(server.getWeight());
105             nodeList.add(node);
106         }
107         spec.setNodes(nodeList.toArray(new Node[]{}));
108         routeInfo.setSpec(spec);
109
110         Metadata metadata = new Metadata();
111         metadata.setName(iuiRouteInfo.getServiceName());
112         metadata.setNamespace(iuiRouteInfo.getNamespace());
113         Calendar now = Calendar.getInstance();
114         now.set(Calendar.MILLISECOND, 0);
115         metadata.setUpdateTimestamp(now.getTime());
116         routeInfo.setMetadata(metadata);
117         return routeInfo;
118     }
119
120     public static IuiRouteInfo fromRouteInfo(RouteInfo routeInfo) {
121         IuiRouteInfo iuiRouteInfo = new IuiRouteInfo();
122         iuiRouteInfo.setStatus(routeInfo.getStatus());
123
124         Spec spec = routeInfo.getSpec();
125         iuiRouteInfo.setVisualRange(spec.getVisualRange());
126         iuiRouteInfo.setUrl(spec.getUrl());
127         iuiRouteInfo.setPublish_port(spec.getPublish_port());
128         iuiRouteInfo.setHost(spec.getHost());
129         iuiRouteInfo.setConsulServiceName(spec.getConsulServiceName());
130         iuiRouteInfo.setUseOwnUpstream(spec.getUseOwnUpstream());
131         iuiRouteInfo.setPublishProtocol(spec.getPublish_protocol());
132         iuiRouteInfo.setEnable_ssl(spec.isEnable_ssl());
133         iuiRouteInfo.setControl(spec.getControl());
134         Node[] nodes = spec.getNodes();
135         List<RouteServer> routeServerList = new ArrayList<>();
136         for (Node node: nodes){
137             RouteServer routeServer = new RouteServer();
138             routeServer.setIp(node.getIp());
139             routeServer.setPort(String.valueOf(node.getPort()));
140             routeServer.setWeight(node.getWeight());
141             routeServerList.add(routeServer);
142         }
143         iuiRouteInfo.setServers(routeServerList.toArray(new RouteServer[]{}));
144
145         Metadata metadata = routeInfo.getMetadata();
146         iuiRouteInfo.setServiceName(metadata.getName());
147         iuiRouteInfo.setNamespace(metadata.getNamespace());
148
149         return iuiRouteInfo;
150     }
151 }