e1ab9709ddea1c7f5966e8d9d564f426c7d9c4d8
[aai/esr-server.git] / esr-mgr / src / main / java / org / onap / aai / esr / wrapper / EmsManagerWrapper.java
1 /**
2  * Copyright 2017 ZTE Corporation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.aai.esr.wrapper;
17
18 import java.util.ArrayList;
19
20 import javax.ws.rs.core.Response;
21
22 import org.onap.aai.esr.entity.rest.EmsRegisterInfo;
23 import org.onap.aai.esr.exception.ExceptionUtil;
24 import org.onap.aai.esr.exception.ExtsysException;
25 import org.onap.aai.esr.externalservice.aai.ExternalSystemProxy;
26 import org.onap.aai.esr.util.EmsManagerUtil;
27 import org.onap.aai.esr.entity.aai.EsrEmsDetail;
28 import org.onap.aai.esr.entity.aai.EsrEmsList;
29 import org.onap.aai.esr.entity.aai.EsrSystemInfo;
30 import org.onap.aai.esr.entity.rest.CommonRegisterResponse;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34 import com.google.gson.Gson;
35
36 public class EmsManagerWrapper {
37   private static EmsManagerWrapper emsManagerWrapper;
38   private static final Logger LOG = LoggerFactory.getLogger(EmsManagerWrapper.class);
39   private static EmsManagerUtil emsManagerUtil = new EmsManagerUtil();
40
41   /**
42    * get VnfmManagerWrapper instance.
43    * @return ems manager wrapper instance
44    */
45   public static EmsManagerWrapper getInstance() {
46     if (emsManagerWrapper == null) {
47       emsManagerWrapper = new EmsManagerWrapper();
48     }
49     return emsManagerWrapper;
50   }
51   
52   public Response registerEms(EmsRegisterInfo emsRegisterInfo) {
53     CommonRegisterResponse result = new CommonRegisterResponse();
54     EsrEmsDetail esrEmsDetail = new EsrEmsDetail();
55     esrEmsDetail = emsManagerUtil.emsRegisterInfo2EsrEms(emsRegisterInfo);
56     String emsId = esrEmsDetail.getEmsId();
57     try {
58       ExternalSystemProxy.registerEms(emsId, esrEmsDetail);
59       result.setId(emsId);
60       return Response.ok(result).build();
61     } catch (ExtsysException e) {
62       LOG.error("Register EMS failed !", e);
63       throw ExceptionUtil.buildExceptionResponse(e.getMessage());
64     }
65   }
66
67   public Response updateEms(EmsRegisterInfo emsRegisterInfo, String emsId) {
68     CommonRegisterResponse result = new CommonRegisterResponse();
69     EsrEmsDetail esrEmsDetail = new EsrEmsDetail();
70     esrEmsDetail = getNewEsrEmsDetail(emsRegisterInfo, emsId);
71     try {
72       ExternalSystemProxy.registerEms(emsId, esrEmsDetail);
73       result.setId(emsId);
74       return Response.ok(result).build();
75     } catch (ExtsysException e) {
76       LOG.error("Update VNFM failed !", e);
77       throw ExceptionUtil.buildExceptionResponse(e.getMessage());
78     }
79   }
80   
81   public Response queryEmsList() {
82     ArrayList<EmsRegisterInfo> emsList = new ArrayList<EmsRegisterInfo>();
83     EsrEmsList esrEms = new EsrEmsList();
84     try {
85       String esrEmsStr = ExternalSystemProxy.queryEmsList();
86       esrEms = new Gson().fromJson(esrEmsStr, EsrEmsList.class);
87       LOG.info("Response from AAI by query EMS list: " + esrEms);
88       emsList = getEmsDetailList(esrEms);
89       return Response.ok(emsList).build();
90     } catch (ExtsysException e) {
91       LOG.error("Query EMS list failed !", e);
92       return Response.ok(emsList).build();
93     }
94   }
95   
96   public Response queryEmsById(String emsId) {
97     EmsRegisterInfo ems;
98     ems = queryEmsDetail(emsId);
99     if (ems != null) {
100       return Response.ok(ems).build();
101     } else {
102       return Response.ok(ems).build();
103     }
104   }
105   
106   public Response delEms(String emsId) {
107     EsrEmsDetail esrEmsDetail = new EsrEmsDetail();
108     esrEmsDetail = queryEsrEmsDetail(emsId);
109     String resourceVersion = esrEmsDetail.getResourceVersion();
110     try {
111       ExternalSystemProxy.deleteEms(emsId, resourceVersion);
112       return Response.noContent().build();
113     } catch (ExtsysException e) {
114       LOG.error(
115           "Delete EMS from A&AI failed! EMS ID: " + emsId + "resouce-version:" + resourceVersion,
116           e);
117       throw ExceptionUtil.buildExceptionResponse(e.getMessage());
118     }
119   }
120
121   private EmsRegisterInfo queryEmsDetail(String emsId) {
122     EmsRegisterInfo emsRegisterInfo = new EmsRegisterInfo();
123     EsrEmsDetail esrEmsDetail = new EsrEmsDetail();
124     try {
125       String esrEmsStr = ExternalSystemProxy.queryEmsDetail(emsId);
126       LOG.info("Response from AAI by query EMS: " + esrEmsStr);
127       esrEmsDetail = new Gson().fromJson(esrEmsStr, EsrEmsDetail.class);
128       emsRegisterInfo = emsManagerUtil.EsrEms2EmsRegisterInfo(esrEmsDetail);
129     } catch (ExtsysException e) {
130       LOG.error("Query EMS detail failed! EMS ID: " + emsId, e);
131     }
132     return emsRegisterInfo;
133   }
134   
135   private ArrayList<EmsRegisterInfo> getEmsDetailList(EsrEmsList esrEms) {
136     ArrayList<EmsRegisterInfo> emsInfoList = new ArrayList<EmsRegisterInfo>();
137     EmsRegisterInfo emsInfo = new EmsRegisterInfo();
138     for (int i = 0; i < esrEms.getEsrEms().size(); i++) {
139       String emsId = esrEms.getEsrEms().get(i).getEmsId();
140       emsInfo = queryEmsDetail(emsId);
141       if (emsInfo != null) {
142         emsInfoList.add(emsInfo);
143       }
144     }
145     return emsInfoList;
146   }
147   
148   private EsrEmsDetail queryEsrEmsDetail (String emsId) {
149     EsrEmsDetail esrEmsDetail = new EsrEmsDetail();
150     try {
151       String esrEmsStr = ExternalSystemProxy.queryEmsDetail(emsId);
152       LOG.info("Response from AAI by query EMS: " + esrEmsStr);
153       esrEmsDetail = new Gson().fromJson(esrEmsStr, EsrEmsDetail.class);
154     } catch (ExtsysException e) {
155       LOG.error("Query EMS detail failed! EMS ID: " + emsId, e);
156     }
157     return esrEmsDetail;
158   }
159   
160   private EsrEmsDetail getNewEsrEmsDetail(EmsRegisterInfo emsRegisterInfo, String emsId) {
161     EsrEmsDetail esrEmsDetail = new EsrEmsDetail();
162     ArrayList<EsrSystemInfo> newEsrSysInfoList = new ArrayList<EsrSystemInfo>();
163     EsrSystemInfo newEsrSystemInfo = new EsrSystemInfo();
164     EsrEmsDetail oriEsrEmsDetail = new EsrEmsDetail();
165     ArrayList<EsrSystemInfo> oriEsrSysInfoList = new ArrayList<EsrSystemInfo>();
166     EsrSystemInfo originalEsrSystemInfo = new EsrSystemInfo();
167     
168     oriEsrEmsDetail = queryEsrEmsDetail(emsId);
169     esrEmsDetail = emsManagerUtil.emsRegisterInfo2EsrEms(emsRegisterInfo);
170     String emsResourceVersion = oriEsrEmsDetail.getResourceVersion();
171     esrEmsDetail.setResourceVersion(emsResourceVersion);
172     esrEmsDetail.setEmsId(emsId);
173     newEsrSysInfoList = esrEmsDetail.getEsrSystemInfoList().getEsrSystemInfo();
174     oriEsrSysInfoList = oriEsrEmsDetail.getEsrSystemInfoList().getEsrSystemInfo();
175     for (int i = 0; i < oriEsrSysInfoList.size(); i++) {
176       originalEsrSystemInfo = oriEsrSysInfoList.get(i);
177       for (int j = 0; j < newEsrSysInfoList.size(); j++) {
178         newEsrSystemInfo = newEsrSysInfoList.get(j);
179         if (originalEsrSystemInfo.getSystemType().equals(newEsrSystemInfo.getSystemType())) {
180           esrEmsDetail.getEsrSystemInfoList().getEsrSystemInfo().get(j)
181               .setResouceVersion(originalEsrSystemInfo.getResouceVersion());
182           esrEmsDetail.getEsrSystemInfoList().getEsrSystemInfo().get(j)
183               .setEsrSystemInfoId(originalEsrSystemInfo.getEsrSystemInfoId());
184           break;
185         }
186       }
187     }
188     return esrEmsDetail;
189   }
190 }