/**
 * Revenue Settlement and Sharing System GE
 * Copyright (C) 2011-2014, Javier Lucio - lucio@tid.es
 * Telefonica Investigacion y Desarrollo, S.A.
 *
 * Copyright (C) 2015, CoNWeT Lab., Universidad Politécnica de Madrid
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

package es.tid.fiware.rss.dao.impl;

import java.util.Collections;
import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import es.tid.fiware.rss.dao.ObCountryDao;
import es.tid.fiware.rss.model.BmObCountry;
import es.tid.fiware.rss.model.BmObCountryId;

/**
 * 
 */
@Repository
public class ObCountryDaoImpl extends GenericDaoImpl<BmObCountry, BmObCountryId> implements ObCountryDao {

    /**
     * Variable to print the trace.
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(ObCountryDaoImpl.class);

    /*
     * (non-Javadoc)
     * 
     * @see es.tid.greta.bmms.dao.impl.GenericDaoImpl#getDomainClass()
     */
    @Override
    protected final Class<BmObCountry> getDomainClass() {
        return BmObCountry.class;
    }

    /*
     * (non-Javadoc)
     * 
     * @see es.tid.greta.bmms.dao.ObCountryDao#listByPricePointYn(java.lang.String)
     */
    @Override
    public final List<BmObCountry> listByPricePointYn(final String flag) {
        String hql = "from BmObCountry c where c.tcPricepointsYn = '" + flag + "'";
        return this.listObCountryQuery(hql);
    }

    /* Private Methods */

    /**
     * Method executes HQL query.
     * 
     * @param hql
     *            String with HQL query
     * @return resultList
     */
    private List<BmObCountry> listObCountryQuery(final String hql) {
        ObCountryDaoImpl.LOGGER.debug(hql);
        // @SuppressWarnings("rawtypes")
        List list = this.getSession().createQuery(hql).list();
        // entityManager.createQuery(hql).getResultList();
        // @SuppressWarnings("unchecked")
        List<BmObCountry> resultList = Collections.checkedList(list, BmObCountry.class);
        return resultList;
    }

    /*
     * (non-Javadoc)
     * 
     * @see es.tid.greta.bmms.dao.ObCountryDao#getBmObByITUData(java.lang.String)
     */
    @Override
    public final BmObCountry getBmObByITUData(final String txMncItuT212) {
        String hql = "from BmObCountry c where c.txMncItuT212 = '" + txMncItuT212 + "'";
        List<BmObCountry> list = (List<BmObCountry>) this.getSession().createQuery(hql).list();
        List<BmObCountry> resultList = Collections.checkedList(list, BmObCountry.class);
        if (resultList.size() == 1) {
            return resultList.get(0);
        }
        return null;
    }

}

@@ -1891,32 +1891,33 @@
    %7D%0A%0A    /*
+*
 %0A     * 
 (non-Javadoc
@@ -1908,152 +1908,61 @@
   * 
-(non-Javadoc)%0A     * %0A     * @see es.tid.greta.bmms.dao.ObCountryDao#listByPricePointYn(java.lang.String)%0A     */%0A    @Override%0A    public final
+%0A     * @param hql%0A     * @return%0A     */%0A    private
  Lis
@@ -1984,22 +1984,22 @@
 list
-ByPricePointYn
+ObCountryQuery
 (fin
@@ -2008,20 +2008,19 @@
  String 
-flag
+hql
 ) %7B%0A    
@@ -2027,169 +2027,251 @@
     
-String hql = %22from BmObCountry c where c.tcPricepointsYn = '%22 + flag + %22'%22;%0A        return this.listObCountryQuery(hql
+ObCountryDaoImpl.LOGGER.debug(hql);%0A%0A        List%3CBmObCountry%3E list = this.getSession().createQuery(hql).list();%0A        List%3CBmObCountry%3E resultList = Collections.checkedList(list, BmObCountry.class
 );%0A
+%0A
     
-%7D%0A%0A
     
-/* Private Methods */
+return resultList;%0A    %7D
 %0A%0A    /*
 *%0A  
@@ -2266,25 +2266,24 @@
 %0A%0A    /*
-*
 %0A     * 
 Method e
@@ -2278,146 +2278,152 @@
   * 
-Method executes HQL query.%0A     * %0A     * @param hql%0A     *            String with HQL query%0A  
+(non-Javadoc)%0A     * %0A     * @see es.tid.greta.bmms.dao.ObCountryDao#listByPricePointYn(java.lang.String)%0A     */%0A
    
-*
  @
-return resultList%0A     */%0A    private
+Override%0A    public final
  Lis
@@ -2437,38 +2437,38 @@
 ountry%3E list
-ObCountryQuery
+ByPricePointYn
 (final Strin
@@ -2461,35 +2461,36 @@
 Yn(final String 
-hql
+flag
 ) %7B%0A        ObCo
@@ -2489,363 +2489,127 @@
     
-ObCountryDaoImpl.LOGGER.debug(hql);%0A        // @SuppressWarnings(%22rawtypes%22)%0A        List list = this.getSession().createQuery(hql).list();%0A        // entityManager.createQuery(hql).getResultList();%0A        // @SuppressWarnings(%22unchecked%22)%0A        List%3CBmObCountry%3E resultList = Collections.checkedList(list, BmObCountry.class);%0A        return resultList
+String hql = %22from BmObCountry c where c.tcPricepointsYn = '%22 + flag + %22'%22;%0A        return this.listObCountryQuery(hql)
 ;%0A  
@@ -2947,167 +2947,52 @@
 ry%3E 
-list = (List%3CBmObCountry%3E) this.getSession().createQuery(hql).list();%0A        List%3CBmObCountry%3E resultList = Collections.checkedList(list, BmObCountry.class
+resultList = this.listObCountryQuery(hql
 );%0A
+%0A
     

Fix problems in ObCountryDaoImpl