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    import uk.ac.roslin.ensembl.exception.DAOException;
024    import uk.ac.roslin.ensembl.exception.ConfigurationException;
025    import uk.ac.roslin.ensembl.exception.EnsemblException;
026    import uk.ac.roslin.ensembl.dao.factory.DAOSingleSpeciesFactory;
027    import uk.ac.roslin.ensembl.config.EnsemblDBType;
028    import uk.ac.roslin.ensembl.model.database.DatabaseType;
029    import uk.ac.roslin.ensembl.model.database.SingleSpeciesDatabase;
030    
031    
032    public abstract class DBDAOSingleSpeciesFactory  extends DBDAOSpeciesFactory implements DAOSingleSpeciesFactory {
033    
034        protected String genus_species;
035    
036        public DBDAOSingleSpeciesFactory() {
037            super();
038        }
039        public DBDAOSingleSpeciesFactory(SingleSpeciesDatabase database)  throws DAOException {
040            super(database);
041            this.setGenus_Species(database.getDbSpeciesName());
042        }
043    
044    
045        @Override
046        public void setGenus_Species(String genus_species) {
047            this.genus_species = genus_species;
048        }
049    
050        @Override
051        public String getGenus_Species() {
052            return genus_species;
053        }
054    
055        public static DBDAOSingleSpeciesFactory makeFactory(SingleSpeciesDatabase database) throws EnsemblException {
056    
057             DatabaseType type =  database.getType();
058    
059                if (type.equals(EnsemblDBType.core)) {
060                    return new DBDAOSingleSpeciesCoreFactory(database);
061                }
062                else if (type.equals(EnsemblDBType.funcgen)) {
063                    return new DBDAOSingleSpeciesFuncgenFactory(database);
064                }
065                else if (type.equals(EnsemblDBType.variation)) {
066                    return new DBDAOSingleSpeciesVariationFactory(database);
067                }
068                else {
069                    throw new ConfigurationException("The Factory could not make a DBDAOSingleSpeciesFactory of EnsemblDBType: "+type.toString());
070                }
071    
072         }
073    
074        @Override
075        public SingleSpeciesDatabase getDatabase() {
076            return (SingleSpeciesDatabase) this.database;
077        }
078    }