package org.genedb.crawl.mappers; import java.util.Date; import java.util.List; import org.apache.ibatis.annotations.Param; import org.genedb.crawl.model.BlastPair; import org.genedb.crawl.model.Cvterm; import org.genedb.crawl.model.Feature; import org.genedb.crawl.model.LocatedFeature; import org.genedb.crawl.model.HierarchyGeneFetchResult; import org.genedb.crawl.model.HierarchyRelation; import org.genedb.crawl.model.Statistic; public interface FeaturesMapper { //int getFeatureID(String uniquename); List<HierarchyGeneFetchResult> getGeneForFeature(@Param("features") List<String> features ); List<HierarchyRelation> getRelationshipsParents(@Param("feature") String feature, @Param("relationships") List<Cvterm> relationships ); List<HierarchyRelation> getRelationshipsChildren(@Param("feature") String feature, @Param("relationships") List<Cvterm> relationships ); List<Feature> coordinates(@Param("features") List<String> features, @Param("region") String region ); List<Feature> synonyms(@Param("features") List<String> features, @Param("types") List<String> types ); List<Feature> properties(@Param("features") List<String> features, @Param("types") List<String> types ); List<Feature> pubs (@Param("features") List<String> features); List<Feature> dbxrefs (@Param("features") List<String> features); List<Feature> terms (@Param("features") List<String> features, @Param("cvs") List<String> cvs); List<Feature> orthologues(@Param("features") List<String> features); List<Feature> clusters(@Param("features") List<String> features); List<Feature> synonymsLike( @Param("term") String term, @Param("regex") Boolean regex, @Param("region") String region); List<Feature> featuresLike( @Param("term") String term, @Param("regex") Boolean regex, @Param("region") String region); List<Feature> withproperty( @Param("value") String value, @Param("regex") Boolean regex, @Param("region") String region, @Param("type") String type); List<Feature> withterm( @Param("cvterm") String cvterm, @Param("cv") String cv, @Param("regex") Boolean regex, @Param("region") String region); List<Feature> timelastmodified( @Param("date") Date date, @Param("organism_id") Integer organism_id, @Param("types") List<String> types, @Param("exclude") boolean exclude); List<Feature> annotationModified( @Param("date") Date date, @Param("organism_id") Integer organism_id, @Param("region") String region); List<Statistic> annotationModifiedStatistics(@Param("date") Date date, @Param("organism_id") Integer organism_id, @Param("region") String region); List<BlastPair> blastPairs( @Param("f1") String f1, @Param("start1") int start1, @Param("end1") int end1, @Param("f2") String f2, @Param("start2") int start2, @Param("end2") int end2, @Param("length") Integer length, @Param("normscore") Double normscore); // this method should return any features that are located on regular features // e.g. orthologues, but also domains... // TODO think about whether this is better implemented with a less chado-ish // interface - e.g. feature/domains // we already have features/orthologues done this way public List<LocatedFeature> locations(@Param("region") String region); }