/** * Copyright 2016 ZTE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onap.aai.esr.handle; import com.google.gson.Gson; import org.onap.aai.esr.dao.BaseDao; import org.onap.aai.esr.dao.DaoManager; import org.onap.aai.esr.entity.db.BaseData; import org.onap.aai.esr.exception.ExtsysException; import org.onap.aai.esr.util.ExtsysDbUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; import java.util.Map; /** * an abstract class for wrapper class.
* provide the common methods to process the DB request * * @author 10159474 */ public abstract class BaseHandler { private static final Logger logger = LoggerFactory.getLogger(BaseHandler.class); public Gson gson = new Gson(); /** * create entity. * * @param data entity * @param resouceType resource type * @return entity * @throws ExtsysException when DAO exception */ @SuppressWarnings({"unchecked", "rawtypes"}) public T create(T data, String resouceType) throws ExtsysException { T rtnData = null; boolean check = true; logger.info("BaseHandler:start create data.info:" + ExtsysDbUtil.objectToString(data)); try { check = validity(data); if (check) { logger.error("validity check success!"); } else { logger.error("validity check failed"); throw new ExtsysException("", "validity check failed"); } } catch (ExtsysException error) { logger.error("validity check failed,errorMsg:" + error.getErrorMsg()); throw error; } try { data.setId(ExtsysDbUtil.generateId()); data.setCreateTime(ExtsysDbUtil.getNowTime()); data.setCategory(resouceType); BaseDao dao = DaoManager.getInstance().getDao(resouceType); rtnData = (T) dao.create(data); } catch (ExtsysException error) { logger.error("BaseHandler:error while creating " + resouceType, error); throw error; } logger.info("BaseHandler:create data end.info:" + ExtsysDbUtil.objectToString(data)); return rtnData; } /** * delete entity. * @param data entity * @param resouceType resource type * @throws ExtsysException when DAO exception */ @SuppressWarnings({"rawtypes", "unchecked"}) public void delete(T data, String resouceType) throws ExtsysException { logger.info("BaseHandler:start delete data.info:" + ExtsysDbUtil.objectToString(data)); try { BaseDao dao = DaoManager.getInstance().getDao(resouceType); dao.delete(data); } catch (ExtsysException error) { logger.error("BaseHandler:error while deleting " + resouceType, error); throw error; } logger.info("BaseHandler:delete data end"); } /** * delete entity by query condition. * @param queryParam query parameter * @param resouceType resource type * @throws ExtsysException when DAO exception */ @SuppressWarnings({"rawtypes", "unchecked"}) public void delete(Map queryParam, String resouceType) throws ExtsysException { logger.info("BaseHandler:start delete data by condition.info:" + ExtsysDbUtil.objectToString(queryParam)); List datas; try { BaseDao dao = DaoManager.getInstance().getDao(resouceType); datas = dao.query(queryParam); for (T data : datas) { delete(data, resouceType); } } catch (ExtsysException error) { logger.error("BaseHandler:error while deleting " + resouceType, error); throw error; } } /** * update entity. * @param data entity * @param filter update condition * @param resouceType resource type * @throws ExtsysException when DAO exception */ @SuppressWarnings({"rawtypes", "unchecked"}) public void update(T data, String filter, String resouceType) throws ExtsysException { logger.info("BaseHandler:start update data .info:" + ExtsysDbUtil.objectToString(data) + " filter:" + filter); try { BaseDao dao = DaoManager.getInstance().getDao(resouceType); data.setId(null); dao.update(data, filter); } catch (ExtsysException error) { logger.error("BaseHandler:error while updating " + resouceType, error); throw error; } logger.info("BaseHandler:update data end "); } /** * query entity. * @param queryParam query parameter * @param resouceType resource type * @return List entity list * @throws ExtsysException when DAO exception */ @SuppressWarnings({"rawtypes", "unchecked"}) public List query(Map queryParam, String resouceType) throws ExtsysException { logger.info("BaseHandler:start query data .info:" + ExtsysDbUtil.objectToString(queryParam)); List datas = null; try { BaseDao dao = DaoManager.getInstance().getDao(resouceType); datas = dao.query(queryParam); } catch (ExtsysException error) { logger.error("BaseHandler:error while querying " + resouceType, error); throw error; } logger.info("BaseHandler: query data end .info:" + ExtsysDbUtil.objectToString(datas)); return datas; } /** * query entity. * @param filter query condition * @param resouceType resource type * @return list entity * @throws ExtsysException when DAO exception */ @SuppressWarnings({"rawtypes", "unchecked"}) public List unionQuery(String filter, String resouceType) throws ExtsysException { logger.info("BaseHandler:start union query data.fliter:" + filter); List datas = null; try { BaseDao dao = DaoManager.getInstance().getDao(resouceType); datas = dao.unionQuery(filter); } catch (ExtsysException error) { logger.error("BaseHandler:error while union querying " + resouceType, error); throw error; } logger.info("BaseHandler:union query data end .info:" + ExtsysDbUtil.objectToString(datas)); return datas; } /** * delete entity. * @param filter delete condition * @param resouceType resource type * @return delete entity num * @throws ExtsysException when DAO exception */ @SuppressWarnings({"rawtypes", "unchecked"}) public int unionDelete(String filter, String resouceType) throws ExtsysException { logger.info("BaseHandler:start delete query data.fliter:" + filter); int num; try { BaseDao dao = DaoManager.getInstance().getDao(resouceType); num = dao.unionDelete(filter); } catch (ExtsysException error) { logger.error("BaseHandler:error while union delete " + resouceType, error); throw error; } logger.info("BaseHandler:union delete data end .num:" + num); return num; } /** * check if the esr parameter is correct in the external system. * @param data esr entity * @return if esr parameter correct return true else return false * @throws ExtsysException ExtsysException when external system error */ public abstract boolean validity(T data) throws ExtsysException; }