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
024
025import uk.ac.roslin.ensembl.exception.DAOException;
026import uk.ac.roslin.ensembl.exception.ConfigurationException;
027import uk.ac.roslin.ensembl.exception.EnsemblException;
028import uk.ac.roslin.ensembl.dao.database.DBCollectionSpecies;
029import uk.ac.roslin.ensembl.dao.factory.DAOCollectionFactory;
030import uk.ac.roslin.ensembl.config.EnsemblDBType;
031import uk.ac.roslin.ensembl.model.core.CollectionSpecies;
032import uk.ac.roslin.ensembl.model.database.CollectionDatabase;
033import uk.ac.roslin.ensembl.model.database.DatabaseType;
034
035
036public 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}