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.model.database;
023
024import java.io.File;
025import java.io.IOException;
026import uk.ac.roslin.ensembl.model.core.CollectionOfSpecies;
027import uk.ac.roslin.ensembl.model.core.CollectionSpecies;
028import java.util.Collection;
029import java.util.HashMap;
030import java.util.List;
031import java.util.Properties;
032import java.util.Set;
033import java.util.TreeSet;
034
035import org.biojava3.core.sequence.transcription.TranscriptionEngine;
036import uk.ac.roslin.ensembl.config.DBConnection.DataSource;
037import uk.ac.roslin.ensembl.config.EnsemblComparaDivision;
038import uk.ac.roslin.ensembl.exception.ConfigurationException;
039import uk.ac.roslin.ensembl.exception.DAOException;
040import uk.ac.roslin.ensembl.exception.NonUniqueException;
041import uk.ac.roslin.ensembl.model.core.Species;
042
043public interface Registry {
044
045    public Properties getConfigProperties();
046
047    public DataSource getDatasourceType() ;
048
049    public String findMybatisSchemaForSchemaVersion(DatabaseType type, String schema_version);
050
051    public String getMostRecentEnsemblVersion() ;
052
053    //public DatabaseDAO getDatabaseDAO();
054
055    public Database makeDatabase(String db_name) throws ConfigurationException;
056
057    public ComparisonDatabase getComparaDatabase(EnsemblComparaDivision comparaDivision, String db_version);
058
059    public Database getDatabase(String species_name_or_alias) throws NonUniqueException;
060
061    public Database getDatabase(String species_name_or_alias, String db_version) throws NonUniqueException;
062
063    public Database getDatabase(String species_name_or_alias, DatabaseType database_type, String db_version) throws NonUniqueException;
064
065    public Database getDatabaseForFullName(String fullname) ;
066
067    public TreeSet<? extends Database> getDatabasesByType(DatabaseType type) ;
068
069    public Species getSpeciesByAlias(String alias_or_name) throws NonUniqueException ;
070    
071    public Species getSpeciesByAlias(String alias_or_name, String version) throws NonUniqueException ;
072    
073    public Species getMostRecentSpeciesByAlias(String alias_or_name) throws NonUniqueException ;
074    
075    public Collection<? extends Species> getSetOfSpeciesByAlias(String alias_or_name)  ;
076    
077    public Collection<? extends Species> getSetOfEverySpeciesByAlias(String alias_or_name)  ;
078
079    public Species getSpeciesByEnsemblName(String ensemblName) ;
080
081    public Collection<? extends Species> getSpecies();
082
083    public Collection<? extends CollectionSpecies> getCollectionSpecies();
084
085    //public void addSpecies(String dbStyleName, Species species ) ;
086
087    public CollectionOfSpecies getMostRecentCollection(String name);
088
089    public CollectionOfSpecies getCollection(String name, String dbVersion);
090
091    public Collection<? extends CollectionOfSpecies> getCollectionRegistriesByName(String name) ;
092
093    public Collection<? extends CollectionOfSpecies> getCollectionsByDBVersion(String dbVersion) ;
094
095    public List<? extends CollectionOfSpecies> getCollections() ;
096
097    public int getHighestEnsemblSchemaVersion() throws DAOException, ConfigurationException ;
098
099    public int getHighestReleaseVersion() throws DAOException, ConfigurationException;
100
101
102    //handling aliases
103
104    public String getEnsemblNameForAlias(String alias) throws NonUniqueException;
105
106    public boolean addSessionAlias(String ensembl_genus_species_name, String alias) throws Exception;
107
108    public boolean addSessionAlias(Species sp, String alias) throws Exception ;
109    
110    //Reporting
111
112    public File getRegistryReport() throws IOException;
113    
114    public StringBuilder getBriefRegistryReport();
115    
116    /**
117     * Reports the available database versions for this Registry.
118     * Reports for both initialized or uninitialized Registries.
119     * since v74
120     * @return StringBuilder
121     */
122    public StringBuilder getVersionReport();
123
124    public void setSpeciesMetadata(CoreDatabase database) throws DAOException ;
125
126    public TranscriptionEngine getDefaultTranscriptionEngine();
127
128    public TranscriptionEngine getTranscriptionEngine(Integer codonTable);
129
130    public HashMap<String, String> getRenamedDBs();
131    
132    public boolean isSpeciesInPanHomology(Species querySpecies, String dbVersion);
133    
134    public Set<String> getEnsemblNamesForAliasBeginning(String alias) ;
135    
136    public Set<String> getEnsemblNamesForAliasContaining(String alias) ;
137    
138    public Set<String> getGCAssemblyAccessionsForAliasBeginning(String alias) ;
139    
140    public Set<String> getGCAssemblyAccessionsForAliasContaining(String alias) ;
141    
142    public Set<? extends Species> getSpeciesForAliasBeginning(String alias) ;
143    
144    public Set<? extends Species> getSpeciesForAliasContaining(String alias) ;
145    
146    public Set<? extends CollectionSpecies> getBacterialSpeciesForAliasBeginning(String alias) ;
147    
148    public Set<? extends CollectionSpecies> getBacterialSpeciesForAliasContaining(String alias) ;
149    
150    public Set<? extends CollectionSpecies> getOldStyleBacterialSpeciesForAliasBeginning(String alias) ;
151    
152    public Set<? extends CollectionSpecies> getOldStyleBacterialSpeciesForAliasContaining(String alias)  ;
153}