Upload the ESR server seed code.
[aai/esr-server.git] / esr-core / esr-mgr / src / main / java / org / onap / aai / esr / handle / BaseHandler.java
1 /**
2  * Copyright 2016 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.handle;
17
18 import com.google.gson.Gson;
19
20 import org.onap.aai.esr.dao.BaseDao;
21 import org.onap.aai.esr.dao.DaoManager;
22 import org.onap.aai.esr.entity.db.BaseData;
23 import org.onap.aai.esr.exception.ExtsysException;
24 import org.onap.aai.esr.util.ExtsysDbUtil;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28 import java.util.List;
29 import java.util.Map;
30
31 /**
32  * an abstract class for wrapper class.<br>
33  * provide the common methods to process the DB request
34  * 
35  * @author 10159474
36  */
37 public abstract class BaseHandler<T extends BaseData> {
38   private static final Logger logger = LoggerFactory.getLogger(BaseHandler.class);
39
40   public Gson gson = new Gson();
41
42   /**
43    * create entity.
44    * 
45    * @param data entity
46    * @param resouceType resource type
47    * @return entity
48    * @throws ExtsysException when  DAO exception
49    */
50   @SuppressWarnings({"unchecked", "rawtypes"})
51   public T create(T data, String resouceType) throws ExtsysException {
52     T rtnData = null;
53     boolean check = true;
54     logger.info("BaseHandler:start create data.info:" + ExtsysDbUtil.objectToString(data));
55     try {
56       check = validity(data);
57       if (check) {
58         logger.error("validity check success!");
59       } else {
60         logger.error("validity check failed");
61         throw new ExtsysException("", "validity check failed");
62       }
63     } catch (ExtsysException error) {
64       logger.error("validity check failed,errorMsg:" + error.getErrorMsg());
65       throw error;
66     }
67     try {      
68       data.setId(ExtsysDbUtil.generateId());
69       data.setCreateTime(ExtsysDbUtil.getNowTime());
70       data.setCategory(resouceType);
71       BaseDao dao = DaoManager.getInstance().getDao(resouceType);
72       rtnData = (T) dao.create(data);
73     } catch (ExtsysException error) {
74       logger.error("BaseHandler:error while creating " + resouceType, error);
75       throw error;
76     }
77     logger.info("BaseHandler:create data end.info:" + ExtsysDbUtil.objectToString(data));
78     return rtnData;
79   }
80
81   /**
82    * delete entity.
83    * @param data entity
84    * @param resouceType resource type
85    * @throws ExtsysException  when  DAO exception
86    */
87   @SuppressWarnings({"rawtypes", "unchecked"})
88   public void delete(T data, String resouceType) throws ExtsysException {
89     logger.info("BaseHandler:start delete data.info:" + ExtsysDbUtil.objectToString(data));
90     try {
91       BaseDao dao = DaoManager.getInstance().getDao(resouceType);
92       dao.delete(data);
93     } catch (ExtsysException error) {
94       logger.error("BaseHandler:error while deleting " + resouceType, error);
95       throw error;
96     }
97     logger.info("BaseHandler:delete data end");
98   }
99
100   /**
101    * delete entity by query condition.
102    * @param queryParam query parameter
103    * @param resouceType resource type
104    * @throws ExtsysException when  DAO exception
105    */
106   @SuppressWarnings({"rawtypes", "unchecked"})
107   public void delete(Map<String, String> queryParam, String resouceType) throws ExtsysException {
108     logger.info("BaseHandler:start delete data by condition.info:"
109         + ExtsysDbUtil.objectToString(queryParam));
110     List<T> datas;
111     try {
112       BaseDao dao = DaoManager.getInstance().getDao(resouceType);
113       datas = dao.query(queryParam);
114       for (T data : datas) {
115         delete(data, resouceType);
116       }
117     } catch (ExtsysException error) {
118       logger.error("BaseHandler:error while deleting " + resouceType, error);
119       throw error;
120     }
121
122   }
123
124   /**
125    * update entity.
126    * @param data entity
127    * @param filter update condition
128    * @param resouceType resource type
129    * @throws ExtsysException when  DAO exception
130    */
131   @SuppressWarnings({"rawtypes", "unchecked"})
132   public void update(T data, String filter, String resouceType) throws ExtsysException {
133     logger.info("BaseHandler:start update data .info:" + ExtsysDbUtil.objectToString(data)
134         + " filter:" + filter);
135     try {
136       BaseDao dao = DaoManager.getInstance().getDao(resouceType);
137       data.setId(null);
138       dao.update(data, filter);
139
140     } catch (ExtsysException error) {
141       logger.error("BaseHandler:error while updating " + resouceType, error);
142       throw error;
143     }
144     logger.info("BaseHandler:update data end ");
145   }
146
147   /**
148    * query entity.
149    * @param queryParam query parameter
150    * @param resouceType resource type
151    * @return List entity list
152    * @throws ExtsysException when  DAO exception
153    */
154   @SuppressWarnings({"rawtypes", "unchecked"})
155   public List<T> query(Map<String, String> queryParam, String resouceType) throws ExtsysException {
156     logger.info("BaseHandler:start query data .info:" + ExtsysDbUtil.objectToString(queryParam));
157     List<T> datas = null;
158     try {
159       BaseDao dao = DaoManager.getInstance().getDao(resouceType);
160       datas = dao.query(queryParam);
161
162     } catch (ExtsysException error) {
163       logger.error("BaseHandler:error while querying " + resouceType, error);
164       throw error;
165     }
166     logger.info("BaseHandler: query data end .info:" + ExtsysDbUtil.objectToString(datas));
167     return datas;
168   }
169
170   /** 
171    * query entity.
172    * @param filter query condition
173    * @param resouceType resource type
174    * @return list entity
175    * @throws ExtsysException when  DAO exception
176    */
177   @SuppressWarnings({"rawtypes", "unchecked"})
178   public List<T> unionQuery(String filter, String resouceType) throws ExtsysException {
179     logger.info("BaseHandler:start union query data.fliter:" + filter);
180     List<T> datas = null;
181     try {
182       BaseDao dao = DaoManager.getInstance().getDao(resouceType);
183       datas = dao.unionQuery(filter);
184
185     } catch (ExtsysException error) {
186       logger.error("BaseHandler:error while union querying " + resouceType, error);
187       throw error;
188     }
189     logger.info("BaseHandler:union query data end .info:" + ExtsysDbUtil.objectToString(datas));
190     return datas;
191   }
192
193   /** 
194    * delete entity.
195    * @param filter delete condition
196    * @param resouceType resource type
197    * @return delete entity num
198    * @throws ExtsysException when  DAO exception
199    */
200   @SuppressWarnings({"rawtypes", "unchecked"})
201   public int unionDelete(String filter, String resouceType) throws ExtsysException {
202     logger.info("BaseHandler:start delete query data.fliter:" + filter);
203     int num;
204     try {
205       BaseDao dao = DaoManager.getInstance().getDao(resouceType);
206       num = dao.unionDelete(filter);
207
208     } catch (ExtsysException error) {
209       logger.error("BaseHandler:error while union delete " + resouceType, error);
210       throw error;
211     }
212     logger.info("BaseHandler:union delete data end .num:" + num);
213     return num;
214   }
215
216   /**
217    * check if the esr parameter is correct in the  external system.
218    * @param data esr entity
219    * @return  if esr parameter  correct return true else return false
220    * @throws ExtsysException ExtsysException when external system error
221    */
222   
223   public abstract boolean validity(T data) throws ExtsysException;
224
225 }