001/**
002 * Copyright (C) 2010-2015 The Roslin Institute <contact andy.law@roslin.ed.ac.uk>
003 *
004 * This file is part of JEnsembl: a Java API to Ensembl data sources developed by the
005 * Bioinformatics Group at The Roslin Institute, The Royal (Dick) School of
006 * Veterinary Studies, University of Edinburgh.
007 *
008 * Project hosted at: http://jensembl.sourceforge.net
009 *
010 * This is free software: you can redistribute it and/or modify
011 * it under the terms of the GNU General Public License (version 3) as published by
012 * the Free Software Foundation.
013 *
014 * This software is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 *
019 * You should have received a copy of the GNU General Public License
020 * in this software distribution. If not, see: http://opensource.org/licenses/gpl-3.0.html
021 */
022package uk.ac.roslin.ensembl.dao.database.coreaccess;
023
024import uk.ac.roslin.ensembl.exception.DAOException;
025import java.util.ArrayList;
026import java.util.List;
027import org.apache.ibatis.session.SqlSession;
028import uk.ac.roslin.ensembl.dao.coreaccess.ProteinFeatureDAO;
029import uk.ac.roslin.ensembl.datasourceaware.core.DAProteinFeature;
030import uk.ac.roslin.ensembl.dao.factory.DAOCollectionCoreFactory;
031import uk.ac.roslin.ensembl.dao.factory.DAOSingleSpeciesCoreFactory;
032import uk.ac.roslin.ensembl.mapper.core.ProteinFeatureMapper;
033
034
035public class DBProteinFeatureDAO extends DBCoreObjectDAO implements ProteinFeatureDAO {
036
037    public DBProteinFeatureDAO() {
038        super();
039    }
040
041    public DBProteinFeatureDAO(DAOSingleSpeciesCoreFactory factory) {
042        super(factory);
043    }
044
045    public DBProteinFeatureDAO(DAOCollectionCoreFactory factory)  {
046        super(factory);
047    }
048
049    @Override
050    public List<DAProteinFeature> getProteinFeaturesByTranslationID(int translationID) throws DAOException {
051
052        List<DAProteinFeature> outList = new ArrayList<DAProteinFeature>();
053
054        if ( translationID==0) {
055            return outList;
056        }
057
058        
059
060        SqlSession session = null;
061
062        try {
063            session = this.getFactory().getNewSqlSession();
064            ProteinFeatureMapper mapper = session.getMapper(ProteinFeatureMapper.class);
065            outList = mapper.getProteinFeaturesByTranslationID(translationID);
066        } catch (Exception e) {
067            throw new DAOException("Failed to call getProteinFeaturesByTranslationID", e);
068        } finally {
069            if (session != null) {
070                session.close();
071            }
072        }
073
074        if (outList != null && ! outList.isEmpty()) {
075            for (DAProteinFeature pf : outList) {
076                    pf.setDaoFactory(daoFactory);
077            }
078        }
079        return outList;
080    }
081
082    
083}