/* * * created: 2006 * * This file is part of Artemis * * Copyright (C) 2006 Genome Research Limited * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ package uk.ac.sanger.artemis.chado; import java.sql.*; import java.util.List; import org.gmod.schema.sequence.Synonym; import org.gmod.schema.sequence.FeatureCvTerm; import org.gmod.schema.cv.CvTerm; /** * Data access object * @see uk.ac.sanger.artemis.chado.JdbcDAO * @see uk.ac.sanger.artemis.chado.IBatisDAO */ public interface ChadoDAO { /** * Return the feature corresponding to this feature_id * * @param id the systematic id * @return the Feature, or null */ public org.gmod.schema.sequence.Feature getFeatureById(int id); /** * Return a features with this systematic id * * @param name the systematic id * @return the Feature, or null */ public org.gmod.schema.sequence.Feature getFeatureByUniqueName(String name); /** * This can be used to get individual features or children. * If Feature.featureloc.srcfeature_id is set this is used * to return the children of that srcfeature_id. * @param feature the feature used to query * @return the List of child Feature objects * @throws SQLException */ public List getFeaturesByLocatedOnFeature(org.gmod.schema.sequence.Feature parent); /** * Return a list of features with any current (ie non-obsolete) name or synonym * * @param name the lookup name * @return a (possibly empty) List of children with this current name */ public List getFeaturesByAnyCurrentName(String name); /** * Return a list of features with this name or synonym (including obsolete names) * * @param name the lookup name * @return a (possibly empty) List of children with this name */ public List getFeaturesByAnyName(String name, String featureType); /** * Return all the FeatureDbXRefs for a given feature, specified by name, or all if * null is passed * * @param uniqueName the uniquename of a Feature, or null for all FeatureDbXRefs * @return a (possibly empty) List */ public List getFeatureDbXRefsByFeatureUniquename(final String uniqueName); /** * Return the list of FeatureSynonyms for a given Feature, specified by name, or all if * null is passed * * @param uniqueName the uniquename of a Feature, or null for all * @return a (possibly empty) List of matching synonyms */ public List getFeatureSynonymsByFeatureUniquename(final String uniqueName); /** * Given a list of distict cvterm_id/type_id's of feature types * that have residues (from getResidueType()) in the given schema * and the schema name return a list of features in the schema * with residues. * @param cvterm_ids list of cvterm_id/type_id's * @param schema schema/organism name or null * @return the List of Feature objects */ public List getResidueFeatures(List cvterm_ids, final String schema); /** * For a schema return the type_id's with residues. * @param schema schema/organism name or null * @return the List of type_id's as String * objects */ public List getResidueType(String schema); /** * Get available schemas (as a List of String * objects). * @return the available schemas */ public List getSchema(); /** * Get the all the CvTerm objects as aList. * @return the full list of cvterm_id and name */ public List getCvTerms(); /** * Return a synonym of the given name and type if it exists * * @param name the name to lookup * @param type the type of the Synonym * @return a Synonym, or null */ public Synonym getSynonymByNameAndCvTerm(String name, CvTerm type); /** * Return a list of FeatureSynonyms which link a given Feature and Synonym * * @param feature the test Feature * @param synonym the test Synonym * @return a (possibly empty) List */ public List getFeatureSynonymsByFeatureAndSynonym( org.gmod.schema.sequence.Feature feature, Synonym synonym); /** * Return the FeatureCvTerm that links a given Feature and CvTerm, * with a given value of 'not' * * @param feature the Feature to test the link for * @param cvTerm the CvTerm to test the link for * @param not test for the not flag in the FeatureCvTerm * @return the Feature, or null */ public FeatureCvTerm getFeatureCvTermByFeatureAndCvTerm( org.gmod.schema.sequence.Feature feature, CvTerm cvTerm, boolean not); public List getOrganisms(); // // WRITE BACK // /** * Merge (update) an already persistent object back to the database * (at the end of the current transaction, or depending upon flush mode). * This method is defined in all the DAOs. It's recommended to call it * through an appropriate one eg SequenceDaoI for FeatureI * @param o The object to merge */ public void merge(Object o); /** * Save the object to the database (at the end of the current transaction, * or depending upon flush mode). This method is defined in all the DAOs. * It's recommended to call it through an appropriate one eg SequenceDaoI * for FeatureI * @param o The object to store */ public void persist(Object o); /** * Remove the object from the database (at the end of the current transaction, * or depending upon flush mode). This method is defined in all the DAOs. * It's recommended to call it through an appropriate one eg SequenceDaoI for * FeatureI * @param o The object to delete */ public void delete(Object o); }