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.util.HashMap;
025import java.util.List;
026import java.util.Set;
027import uk.ac.roslin.ensembl.exception.DAOException;
028import uk.ac.roslin.ensembl.model.ObjectType;
029import uk.ac.roslin.ensembl.model.core.AssembledDNASequence;
030import uk.ac.roslin.ensembl.model.core.Chromosome;
031import uk.ac.roslin.ensembl.model.core.CollectionSpecies;
032import uk.ac.roslin.ensembl.model.core.CoordinateSystem;
033import uk.ac.roslin.ensembl.model.core.Species;
034
035/**
036 *
037 * @author tpaterso
038 */
039public interface CollectionCoreDatabase  extends CollectionDatabase, CoreDatabase {
040
041    public Object getCoreFactory(Species species) ;
042
043    //note these methods mirror the ones in SingleSpeciesCoreDatabase
044    //but takes the required Species parameter
045
046    public CoordinateSystem getChromosomeLevelCS(Species species) throws DAOException;
047
048    public CoordinateSystem getSequenceLevelCS(Species species) throws DAOException;
049
050    public CoordinateSystem getTopLevelCS(Species species) throws DAOException;
051
052    public CoordinateSystem getCSByID(Species species, Integer id) throws DAOException ;
053
054    public CoordinateSystem getBuildCoordSystem(Species species, String featureType) throws DAOException;
055
056    public Set<? extends CoordinateSystem> getCSForFeature(Species sp, ObjectType feature) throws DAOException ;
057
058    public void setBuildLevels(Species species, HashMap<String,String> keyedValues);
059
060    public String getBuildLevel(Species species, String featureKey) throws DAOException ;
061
062    public List<? extends ObjectType> getFeaturesForCS(Species sp, CoordinateSystem coordSys) throws DAOException;
063
064    public Integer getMaxLengthForFeature(Species sp, ObjectType feature, CoordinateSystem cs) throws DAOException ;
065
066    public void addFeatureCS(String featureType, Integer csID, Integer maxLength, Species sp) ;
067    
068    public Chromosome getChromosomeByName(Species species, String name) throws DAOException ;
069
070    public List<? extends Chromosome> getChromosomes(Species species) throws DAOException ;
071    
072    public AssembledDNASequence getFragmentByName(Species species, String name) throws DAOException ;
073
074    public List<? extends AssembledDNASequence> getFragments(Species species) throws DAOException ;
075    
076    public String getAssemblyName(CollectionSpecies species) ;
077   
078    public String getAssemblyAccession(CollectionSpecies species) ;
079    
080//    public void setAssemblyName(CollectionSpecies species, String value);
081//   
082//    public void setAssemblyAccession(CollectionSpecies species, String value);        
083         
084}