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