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.factory;
023
024import java.util.HashMap;
025import org.slf4j.Logger;
026import org.slf4j.LoggerFactory;
027import uk.ac.roslin.ensembl.dao.database.DBAnalysisDAO;
028import uk.ac.roslin.ensembl.dao.factory.DAOCollectionFuncgenFactory;
029import uk.ac.roslin.ensembl.datasourceaware.DAAnalysis;
030import uk.ac.roslin.ensembl.exception.DAOException;
031import uk.ac.roslin.ensembl.model.core.CollectionSpecies;
032import uk.ac.roslin.ensembl.model.database.CollectionDatabase;
033
034
035public class DBDAOCollectionFuncgenFactory  extends  DBDAOCollectionFactory implements DAOCollectionFuncgenFactory {
036    
037    
038    private HashMap<Integer, DAAnalysis> analyses;
039    final static Logger LOGGER = LoggerFactory.getLogger(DBDAOCollectionFuncgenFactory.class);
040    
041    public DBDAOCollectionFuncgenFactory() {
042
043        super();
044
045    }
046    public DBDAOCollectionFuncgenFactory(CollectionDatabase database, CollectionSpecies species)  throws DAOException {
047        super(database,species);
048    }
049
050//not implemented yet
051//    @Override
052//    public DBCollectionFuncgenDatabase getDatabase() {
053//        return (DBCollectionFuncgenDatabase) this.database;
054//    }
055    
056   @Override
057    public DBAnalysisDAO getAnalysisDAO()  throws DAOException{
058        return new DBAnalysisDAO(this);
059    }      
060    
061    @Override
062    public DAAnalysis getAnalysis(Integer id) {
063        if (analyses==null) {
064            this.fetchAnalyses();
065        }
066        return analyses.get(id);
067    }
068
069    private void fetchAnalyses() {
070        try {
071            this.analyses = this.getAnalysisDAO().getAnalyses();
072        } catch (DAOException ex) {
073            //at the moment we are just consuming this here
074            LOGGER.info("Factory failed to retrieve Analyses for its Database", ex);
075            analyses = new HashMap<Integer, DAAnalysis>();
076        }   
077    }    
078}