/*******************************************************************************
 * Copyright 2015 EMBL - European Bioinformatics Institute
 *
 * 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.mousephenotype.cda.db.dao;

/**
 *
 * External data source access manager implementation.
 *
 * @author Gautier Koscielny (EMBL-EBI) <koscieln@ebi.ac.uk>
 * @since February 2012
 */

import org.hibernate.SessionFactory;
import org.mousephenotype.cda.db.pojo.Datasource;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Repository
@Transactional
public class DatasourceDAOImpl extends HibernateDAOImpl implements DatasourceDAO {

	public DatasourceDAOImpl() {
	}


	/**
	 * Creates a new Hibernate coordinate system data access manager.
	 * @param sessionFactory the Hibernate session factory
	 */
	public DatasourceDAOImpl(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	@Transactional(readOnly = true)
	@SuppressWarnings("unchecked")
	public List<Datasource> getAllDatasources() {
		return getCurrentSession().createQuery("from Datasource").list();
	}

	@Transactional(readOnly = true)
	public Datasource getDatasourceByName(String name) {
		return (Datasource) getCurrentSession().createQuery("from Datasource as d where d.name= ?").setString(0, name).uniqueResult();

	}

	@Transactional(readOnly = true)
	public Datasource getDatasourceByShortName(String shortName) {
		return (Datasource) getCurrentSession().createQuery("from Datasource as d where d.shortName= ?").setString(0, shortName).uniqueResult();
	}

	@Transactional(readOnly = true)
	public Datasource getDatasourceById(Integer externalDbId){
		return (Datasource) getCurrentSession().createQuery("from Datasource as d where d.id= ?").setInteger(0, externalDbId).uniqueResult();
	}

}

@@ -1932,19 +1932,24 @@
 e d.name
+ 
 = 
-?
+:name
 %22).setSt
@@ -1953,17 +1953,22 @@
 tString(
-0
+%22name%22
 , name).
@@ -2178,19 +2178,29 @@
 hortName
+ 
 = 
-?
+:shortname
 %22).setSt
@@ -2204,17 +2204,27 @@
 tString(
-0
+%22shortname%22
 , shortN
@@ -2431,11 +2431,24 @@
 d.id
+ 
 = 
-?
+:externaldbid
 %22).s
@@ -2457,17 +2457,30 @@
 Integer(
-0
+%22externaldbid%22
 , extern

replace deprecated positional parameter with named parameters