com.wso2telco.services.dep.sandbox.dao.hibernate.HibernateProvisioningDAO.java Source code

Java tutorial

Introduction

Here is the source code for com.wso2telco.services.dep.sandbox.dao.hibernate.HibernateProvisioningDAO.java

Source

/*******************************************************************************
 * Copyright  (c) 2015-2016, WSO2.Telco Inc. (http://www.wso2telco.com) All Rights Reserved.
 * 
 * WSO2.Telco Inc. licences this file to you 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 com.wso2telco.services.dep.sandbox.dao.hibernate;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.persistence.NoResultException;

import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;

import com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO;
import com.wso2telco.services.dep.sandbox.dao.model.custom.ListProvisionedDTO;
import com.wso2telco.services.dep.sandbox.dao.model.domain.ManageNumber;
import com.wso2telco.services.dep.sandbox.dao.model.domain.ProvisionAllService;
import com.wso2telco.services.dep.sandbox.dao.model.domain.ProvisionMSISDNServicesMap;
import com.wso2telco.services.dep.sandbox.dao.model.domain.ProvisionRequestLog;
import com.wso2telco.services.dep.sandbox.dao.model.domain.ProvisionResponseMessage;
import com.wso2telco.services.dep.sandbox.dao.model.domain.ProvisionedServices;
import com.wso2telco.services.dep.sandbox.dao.model.domain.Status;
import com.wso2telco.services.dep.sandbox.dao.model.domain.User;
import com.wso2telco.services.dep.sandbox.util.ProvisioningStatusCodes;

/**
 * @author WSO2.Telco
 *
 */

public class HibernateProvisioningDAO extends AbstractDAO implements ProvisioningDAO {

    {
        LOG = LogFactory.getLog(HibernateProvisioningDAO.class);
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#
     * saveProvisionRequestLog
     * (com.wso2telco.services.dep.sandbox.dao.model.domain.ProvisionRequestLog)
     */
    public void saveProvisionRequestLog(ProvisionRequestLog provisionRequestLog) throws Exception {
        try {
            saveOrUpdate(provisionRequestLog);
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in saveProvisionRequestLog " + ex);
            throw ex;
        }

    }

    /*
     * (non-Javadoc)
     * 
     * @see com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#
     * getApplicableProvisionServices(java.lang.String, java.lang.String, int,
     * int)
     */
    public List<ProvisionAllService> getApplicableProvisionServices(String number, String username, int offset,
            int limit) throws Exception {
        Session session = getSession();
        List<ProvisionAllService> applicableServiceList = new ArrayList<ProvisionAllService>();

        try {
            StringBuilder hqlQueryBuilder = new StringBuilder();
            hqlQueryBuilder.append("select pas ");
            hqlQueryBuilder
                    .append("from ProvisionAllService pas,ProvisionMSISDNServicesMap pmsm,ManageNumber mn,User u ");
            hqlQueryBuilder.append("where u.userName = :userName ");
            hqlQueryBuilder.append("and u.id = mn.user.id ");
            hqlQueryBuilder.append("and mn.id = pmsm.msisdnId.id ");
            hqlQueryBuilder.append("and pmsm.servicesId.id = pas.id ");
            hqlQueryBuilder.append("and mn.Number = :number ");

            Query query = session.createQuery(hqlQueryBuilder.toString());

            query.setParameter("userName", username);
            query.setParameter("number", number);
            if (offset > 0) {
                query.setFirstResult(offset);
            }

            if (limit > 0) {
                query.setMaxResults(limit);
            }

            applicableServiceList = (List<ProvisionAllService>) query.getResultList();
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getApplicableProvisionServices " + ex);
            throw ex;
        }

        return applicableServiceList;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#
     * getActiveProvisionedServices(java.lang.String, java.lang.String, int,
     * int)
     */
    public List<ListProvisionedDTO> getActiveProvisionedServices(String msisdn, String username, int offset,
            int limit) throws Exception {
        Session session = getSession();
        List<ListProvisionedDTO> resultSet = null;
        StringBuilder hql = new StringBuilder();

        hql.append(" SELECT");
        hql.append(
                " services.serviceCode AS serviceCode,services.description AS description,prservice.createdDate AS createdDate,services.tag AS tag,services.value AS value");
        hql.append(" FROM");
        hql.append(" ManageNumber AS num,");
        hql.append(" ProvisionMSISDNServicesMap AS map,");
        hql.append(" ProvisionedServices AS prservice,");
        hql.append(" Status AS stat,");
        hql.append(" ProvisionAllService AS services,");
        hql.append(" User AS user");
        hql.append(" WHERE num.Number = :number");
        hql.append(" AND user.userName= :username");
        hql.append(" AND user.id = num.user.id");
        hql.append(" AND user.id = services.user.id");
        hql.append(" AND map.msisdnId.id = num.id");
        hql.append(" AND map.id = prservice.msisdnServiceMap.id");
        hql.append(" AND map.servicesId.id = services.id");
        hql.append(" AND stat.id = prservice.status.id");
        hql.append(" AND stat.code= :status");

        try {
            Query query = session.createQuery(hql.toString());

            query.setParameter("status", ProvisioningStatusCodes.PRV_PROVISION_SUCCESS.toString());
            query.setParameter("number", msisdn);
            query.setParameter("username", username);

            if (offset > 0) {
                query.setFirstResult(offset);
            }

            if (limit > 0) {
                query.setMaxResults(limit);
            }

            resultSet = query.setResultTransformer(Transformers.aliasToBean(ListProvisionedDTO.class))
                    .getResultList();
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getActiveProvisionedServices " + ex);
            throw ex;
        }
        return resultSet;
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#getErrorResponse
     * (java.lang.String, java.lang.String, java.lang.String)
     */
    public ProvisionResponseMessage getErrorResponse(String msisdn, String username, String serviceCode)
            throws Exception {

        Session session = getSession();
        ProvisionResponseMessage expectedErrorList = null;
        StringBuilder hql = new StringBuilder();

        hql.append(" SELECT");
        hql.append(" response");
        hql.append(" FROM");
        hql.append(" ProvisionResponseMessage AS response,");
        hql.append(" ManageNumber AS number,");
        hql.append(" ProvisionExpectedMessage AS expect,");
        hql.append(" ProvisionAllService AS service,");
        hql.append(" User AS user");
        hql.append(" WHERE");
        hql.append(" number.Number = :msisdn AND");
        hql.append(" user.userName= :username AND");
        hql.append(" user.id = number.user AND");
        hql.append(" user.id = service.user AND");
        hql.append(" service.serviceCode = :code AND");
        hql.append(" number.id = expect.msisdnId AND");
        hql.append(" service.id = expect.servicesId AND");
        hql.append(" expect.requestType = :type AND");
        hql.append(" expect.messageId = response.id");

        try {

            Query query = session.createQuery(hql.toString());

            query.setParameter("msisdn", msisdn);
            query.setParameter("username", username);
            query.setParameter("code", serviceCode);
            query.setParameter("type", "DELETE");

            expectedErrorList = (ProvisionResponseMessage) query.uniqueResult();
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getErrorResponse " + ex);
            throw ex;
        }
        return expectedErrorList;
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#getAlreadyProvisioned
     * (java.lang.String, java.lang.String, java.lang.String)
     */
    public ProvisionedServices getAlreadyProvisioned(String msisdn, String userName, String serviceCode)
            throws Exception {

        Session session = getSession();
        ProvisionedServices provisionedCheckList = null;
        StringBuilder hql = new StringBuilder();

        hql.append(" SELECT");
        hql.append(" prservice");
        hql.append(" FROM");
        hql.append(" ProvisionedServices AS prservice,");
        hql.append(" ManageNumber AS number,");
        hql.append(" ProvisionAllService AS service,");
        hql.append(" User AS user,");
        hql.append(" ProvisionMSISDNServicesMap AS map,");
        hql.append(" Status AS stat");
        hql.append(" WHERE");
        hql.append(" number.Number = :msisdn AND");
        hql.append(" user.userName= :username AND");
        hql.append(" user.id = number.user AND");
        hql.append(" user.id = service.user AND");
        hql.append(" service.serviceCode = :code AND");
        hql.append(" map.servicesId = service.id AND");
        hql.append(" map.msisdnId = number.id AND");
        hql.append(" map.id = prservice.msisdnServiceMap AND");
        hql.append(" stat.id = prservice.status AND");
        hql.append(" stat.code= :status");

        try {

            Query query = session.createQuery(hql.toString());

            query.setParameter("status", ProvisioningStatusCodes.PRV_PROVISION_SUCCESS.toString());
            query.setParameter("msisdn", msisdn);
            query.setParameter("username", userName);
            query.setParameter("code", serviceCode);

            provisionedCheckList = (ProvisionedServices) query.uniqueResult();

        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getAlreadyProvisioned " + ex);
            throw ex;
        }

        return provisionedCheckList;

    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#updateDeleteStatus
     * (com.wso2telco.services.dep.sandbox.dao.model.domain.ProvisionedServices)
     */
    public void updateDeleteStatus(ProvisionedServices prvDeletePending) throws Exception {
        try {
            super.saveOrUpdate(prvDeletePending);
        } catch (Exception ex) {
            LOG.error(ex);
            LOG.error("###PROVISION### Error in updateDeleteStatus " + ex);
        }

    }

    public void saveProvisionService(ProvisionAllService provisionAllService) throws Exception {
        try {
            saveOrUpdate(provisionAllService);
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in saveProvisionService " + ex);
            throw ex;
        }

    }

    public List<ProvisionAllService> getProvisionServices(int userid) throws Exception {
        Session session = getSession();
        List<ProvisionAllService> serviceList = new ArrayList<ProvisionAllService>();
        try {
            StringBuilder hqlQueryBuilder = new StringBuilder();
            hqlQueryBuilder.append("from ProvisionAllService pas ");
            hqlQueryBuilder.append("where pas.user.id = :id");

            Query query = session.createQuery(hqlQueryBuilder.toString());
            query.setParameter("id", userid);
            serviceList = (List<ProvisionAllService>) query.getResultList();
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getProvisionServices " + ex);
            throw ex;
        }
        return serviceList;
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#getTransactionStatus
     * ()
     */
    public List<Status> getTransactionStatus() throws Exception {

        Session session = getSession();
        List<Status> statusList = null;
        try {
            statusList = (List<Status>) session.createQuery("from Status ").getResultList();

        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getTransactionStatus " + ex);
            throw ex;
        }
        return statusList;

    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#getNumber(java.
     * lang.String, java.lang.String)
     */
    @Override
    public ManageNumber getNumber(String number, String username) throws Exception {
        Session session = getSession();
        ManageNumber userNumber = null;

        try {
            StringBuilder hqlQueryBuilder = new StringBuilder();
            hqlQueryBuilder.append("from ManageNumber where Number = :number ");
            hqlQueryBuilder.append(" and user.userName=:userName");

            Query query = session.createQuery(hqlQueryBuilder.toString());

            query.setParameter("number", number);
            query.setParameter("userName", username);

            userNumber = (ManageNumber) query.getSingleResult();

        } catch (NoResultException e) {
            return null;
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getNumber", ex);
            throw ex;
        }

        return userNumber;

    }

    /*
     * (non-Javadoc)
     * 
     * @see com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#getNumber()
     */
    @Override
    public ProvisionAllService getProvisionService(String serviceCode, String ServiceName, User user)
            throws Exception {
        Session session = getSession();
        ProvisionAllService provisionService = null;
        Map<String, String> parameterMap = new HashMap<>();

        try {
            StringBuilder hqlQueryBuilder = new StringBuilder();
            hqlQueryBuilder.append("from ProvisionAllService service where ");
            hqlQueryBuilder.append(" service.user = :user");
            hqlQueryBuilder.append(" and ");

            if (serviceCode != null) {
                hqlQueryBuilder.append("lower(service.serviceCode) = :serviceCode");
                parameterMap.put("serviceCode", serviceCode.toLowerCase());
            }

            if (serviceCode != null && ServiceName != null) {
                hqlQueryBuilder.append(" and");
                hqlQueryBuilder.append(" lower(service.serviceName) = :serviceName");
                parameterMap.put("serviceName", ServiceName.toLowerCase());
            } else if (ServiceName != null) {
                hqlQueryBuilder.append(" lower(service.serviceName) = :serviceName");
                parameterMap.put("serviceName", ServiceName.toLowerCase());
            }

            Query query = session.createQuery(hqlQueryBuilder.toString());

            Set<Entry<String, String>> entrySet = parameterMap.entrySet();

            for (Entry<String, String> entry : entrySet) {
                query.setParameter(entry.getKey(), entry.getValue());
            }

            query.setParameter("user", user);

            provisionService = (ProvisionAllService) query.getSingleResult();
        } catch (NoResultException e) {
            return null;
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getProvisionService", ex);
            throw ex;
        }

        return provisionService;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#
     * getProvisionedService()
     */
    @Override
    public ProvisionedServices getAlreadyProvisionedService(User user, List<String> statusCodes,
            ProvisionAllService provisionService, String phoneNumber) throws Exception {
        Session session = getSession();
        ProvisionedServices provisionedService = null;

        try {
            StringBuilder hqlQueryBuilder = new StringBuilder();
            hqlQueryBuilder.append("select provisionedService ");
            hqlQueryBuilder.append(" from ProvisionedServices provisionedService,");
            hqlQueryBuilder.append(" Status status,");
            hqlQueryBuilder.append(" ProvisionMSISDNServicesMap map,");
            hqlQueryBuilder.append(" ManageNumber AS number,");
            hqlQueryBuilder.append(" ProvisionAllService provisionServices,");
            hqlQueryBuilder.append(" User user ");
            hqlQueryBuilder.append(" where ");
            hqlQueryBuilder.append(" provisionedService.status.id = status.id");
            hqlQueryBuilder.append(" AND provisionedService.msisdnServiceMap.id = map.id");
            hqlQueryBuilder.append(" AND map.msisdnId.id = number.id");
            hqlQueryBuilder.append(" AND map.servicesId.id = provisionServices.id");
            hqlQueryBuilder.append(" AND number.user.id = user.id");
            hqlQueryBuilder.append(" AND number.user = :spUser");
            hqlQueryBuilder.append(" AND status.code in (:statusCodeList)");
            hqlQueryBuilder.append(" AND number.Number = :phoneNumber");
            hqlQueryBuilder.append(" AND provisionServices.id = :provisionServiceId");

            Query query = session.createQuery(hqlQueryBuilder.toString());

            query.setParameter("spUser", user);
            query.setParameterList("statusCodeList", statusCodes);
            query.setParameter("phoneNumber", phoneNumber);
            query.setParameter("provisionServiceId", provisionService.getId());

            provisionedService = (ProvisionedServices) query.getSingleResult();
        } catch (NoResultException e) {
            return null;
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getAlreadyProvisionedService", ex);
            throw ex;
        }

        return provisionedService;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#
     * getStatusFromStatusCode
     * (com.wso2telco.services.dep.sandbox.util.ProvisioningStatusCodes)
     */
    public Status getStatusFromStatusCode(ProvisioningStatusCodes statusCode) throws Exception {
        Session session = getSession();
        Status status = null;

        try {
            StringBuilder hqlQueryBuilder = new StringBuilder();
            hqlQueryBuilder.append("from Status where code = :statusCode");

            Query query = session.createQuery(hqlQueryBuilder.toString());
            query.setParameter("statusCode", statusCode.toString());

            status = (Status) query.getSingleResult();
        } catch (NoResultException e) {
            return null;
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getStatusFromStatusCode", ex);
            throw ex;
        }

        return status;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#
     * getProvisionMsisdnService(com.wso2telco.services.dep.sandbox.dao.model.
     * domain.ManageNumber,
     * com.wso2telco.services.dep.sandbox.dao.model.domain.ProvisionAllService)
     */
    @Override
    public ProvisionMSISDNServicesMap getProvisionMsisdnService(ManageNumber number, ProvisionAllService service)
            throws Exception {
        Session session = getSession();
        ProvisionMSISDNServicesMap serviceMapEntry = null;

        try {
            StringBuilder hqlQueryBuilder = new StringBuilder();

            hqlQueryBuilder.append("from ProvisionMSISDNServicesMap serviceMap");
            hqlQueryBuilder.append(" where ");
            hqlQueryBuilder.append(" serviceMap.msisdnId = :number ");
            hqlQueryBuilder.append(" and serviceMap.servicesId = :service ");
            hqlQueryBuilder.append(" and serviceMap.msisdnId.status = '1'");

            Query query = session.createQuery(hqlQueryBuilder.toString());

            query.setParameter("number", number);
            query.setParameter("service", service);

            serviceMapEntry = (ProvisionMSISDNServicesMap) query.getSingleResult();

        } catch (NoResultException e) {
            return null;
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in getProvisionMsisdnService", ex);
            throw ex;
        }

        return serviceMapEntry;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#
     * saveProvisionedService(com.wso2telco.services.dep.sandbox.dao.model.
     * domain.ProvisionedServices)
     */
    @Override
    public void saveProvisionedService(ProvisionedServices provisionedService) throws Exception {
        try {
            saveOrUpdate(provisionedService);
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in saveProvisionRequestLog " + ex);
            throw ex;
        }

    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * com.wso2telco.services.dep.sandbox.dao.ProvisioningDAO#checkClientCorrelator
     * (java.lang.String, java.lang.String, java.lang.String, java.lang.String)
     */
    public ProvisionedServices checkClientCorrelator(String msisdn, String userName, String serviceCode,
            String clientCorrelator) throws Exception {
        Session session = getSession();
        ProvisionedServices provisionedCheckList = null;
        StringBuilder hql = new StringBuilder();

        hql.append(" SELECT");
        hql.append(" prservice");
        hql.append(" FROM");
        hql.append(" ProvisionedServices AS prservice,");
        hql.append(" ManageNumber AS number,");
        hql.append(" ProvisionAllService AS service,");
        hql.append(" User AS user,");
        hql.append(" ProvisionMSISDNServicesMap AS map,");
        hql.append(" Status AS stat");
        hql.append(" WHERE");
        hql.append(" number.Number = :msisdn AND");
        hql.append(" user.userName= :username AND");
        hql.append(" user.id = number.user.id AND");
        hql.append(" user.id = service.user.id AND");
        hql.append(" service.serviceCode = :code AND");
        hql.append(" map.servicesId.id = service.id AND");
        hql.append(" map.msisdnId.id = number.id AND");
        hql.append(" map.id = prservice.msisdnServiceMap.id AND");
        hql.append(" stat.id = prservice.status.id AND");
        hql.append(" prservice.clientCorrelator= :clientCorrelator AND");
        hql.append(" ( stat.code= :status1 OR stat.code= :status2 )");

        try {
            Query query = session.createQuery(hql.toString());
            query.setParameter("status1", ProvisioningStatusCodes.PRV_DELETE_SUCCESS.toString());
            query.setParameter("status2", ProvisioningStatusCodes.PRV_DELETE_PENDING.toString());
            query.setParameter("msisdn", msisdn);
            query.setParameter("username", userName);
            query.setParameter("code", serviceCode);
            query.setParameter("clientCorrelator", clientCorrelator);

            provisionedCheckList = (ProvisionedServices) query.uniqueResult();
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in checkClientCorrelator " + ex);
            throw ex;
        }
        return provisionedCheckList;
    }

    public ProvisionedServices checkProvisionClientCorrelator(String msisdn, String userName, String serviceCode,
            String clientCorrelator) throws Exception {
        Session session = getSession();
        ProvisionedServices provisionedCheckList = null;
        StringBuilder hql = new StringBuilder();

        hql.append(" SELECT");
        hql.append(" prservice");
        hql.append(" FROM");
        hql.append(" ProvisionedServices AS prservice,");
        hql.append(" ManageNumber AS number,");
        hql.append(" ProvisionAllService AS service,");
        hql.append(" User AS user,");
        hql.append(" ProvisionMSISDNServicesMap AS map,");
        hql.append(" Status AS stat");
        hql.append(" WHERE");
        hql.append(" number.Number = :msisdn AND");
        hql.append(" user.userName= :username AND");
        hql.append(" user.id = number.user.id AND");
        hql.append(" user.id = service.user.id AND");
        hql.append(" service.serviceCode = :code AND");
        hql.append(" map.servicesId.id = service.id AND");
        hql.append(" map.msisdnId.id = number.id AND");
        hql.append(" map.id = prservice.msisdnServiceMap.id AND");
        hql.append(" stat.id = prservice.status.id AND");
        hql.append(" prservice.clientCorrelator= :clientCorrelator AND");
        hql.append(" stat.code= :status1 ");

        try {
            Query query = session.createQuery(hql.toString());
            query.setParameter("status1", ProvisioningStatusCodes.PRV_DELETE_SUCCESS.toString());
            //query.setParameter("status2", ProvisioningStatusCodes.PRV_DELETE_PENDING.toString());
            query.setParameter("msisdn", msisdn);
            query.setParameter("username", userName);
            query.setParameter("code", serviceCode);
            query.setParameter("clientCorrelator", clientCorrelator);

            provisionedCheckList = (ProvisionedServices) query.uniqueResult();
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in checkClientCorrelator " + ex);
            throw ex;
        }
        return provisionedCheckList;
    }

    @Override
    public void saveServiceForMsisdn(ProvisionMSISDNServicesMap map) throws Exception {
        try {
            saveOrUpdate(map);
        } catch (Exception ex) {
            LOG.error("###PROVISION### Error in saveServiceForMsisdn " + ex);
            throw ex;
        }
    }

}