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.factory;
022    
023    
024    import uk.ac.roslin.ensembl.exception.DAOException;
025    import uk.ac.roslin.ensembl.exception.ConfigurationException;
026    import uk.ac.roslin.ensembl.exception.EnsemblException;
027    import uk.ac.roslin.ensembl.dao.database.DBCollectionDatabase;
028    import uk.ac.roslin.ensembl.dao.database.DBCollectionSpecies;
029    import uk.ac.roslin.ensembl.dao.factory.DAOCollectionFactory;
030    import uk.ac.roslin.ensembl.config.EnsemblDBType;
031    import uk.ac.roslin.ensembl.model.core.CollectionSpecies;
032    import uk.ac.roslin.ensembl.model.database.CollectionDatabase;
033    import uk.ac.roslin.ensembl.model.database.DatabaseType;
034    
035    
036    public abstract class DBDAOCollectionFactory  extends DBDAOSpeciesFactory implements DAOCollectionFactory {
037    
038    
039    
040        public DBDAOCollectionFactory()   {
041            super();
042        }
043    
044        public DBDAOCollectionFactory(CollectionDatabase database, CollectionSpecies species)  throws DAOException {
045    
046            super(database, species);
047    
048        }
049    
050        @Override
051        public DBCollectionSpecies getSpecies() {
052            return (DBCollectionSpecies) species;
053        }
054    
055        public static DBDAOCollectionFactory makeFactory(CollectionDatabase database, CollectionSpecies species)
056            throws EnsemblException {
057    
058                DatabaseType type =  database.getType();
059    
060                if (type.equals(EnsemblDBType.collection_core)) {
061                    return new DBDAOCollectionCoreFactory(database, species);
062                }
063                else if (type.equals(EnsemblDBType.collection_funcgen)) {
064                    return new DBDAOCollectionFuncgenFactory(database, species);
065                }
066                else if (type.equals(EnsemblDBType.collection_variation)) {
067                    return new DBDAOCollectionVariationFactory(database, species);
068                }
069                else {
070                    throw new ConfigurationException("The Factory could not make a DBDAOCollectionFactory of EnsemblDBType: "+type.toString());
071                }
072    
073        }
074    
075        @Override
076        public CollectionDatabase getDatabase() {
077            return (CollectionDatabase) this.database;
078        }
079    }