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.datasourceaware.compara; 023 024import java.util.ArrayList; 025import java.util.List; 026import java.util.TreeSet; 027import uk.ac.roslin.ensembl.dao.factory.DAOComparaFactory; 028import uk.ac.roslin.ensembl.datasourceaware.DAObject; 029import uk.ac.roslin.ensembl.datasourceaware.core.DAGene; 030import uk.ac.roslin.ensembl.model.compara.HomologyRelationship; 031import uk.ac.roslin.ensembl.model.compara.HomologyType; 032import uk.ac.roslin.ensembl.model.core.Species; 033import uk.ac.roslin.ensembl.model.relationship.RelationshipType; 034 035 036public class DAHomologyRelationship extends DAObject implements HomologyRelationship<DAGene> { 037 038 public DAHomologyRelationship() { 039 super(); 040 } 041 042// public DAHomologyRelationship(DAOComparaFactory factory) { 043// //super(factory); 044// } 045 046 private HomologyType type = null; 047 private String lastCommonAncestor = ""; 048 private TreeSet<DAGene> members = new TreeSet<DAGene>(DAObject.daComparator); 049 050 public TreeSet<DAGene> getMembers() { 051 return members; 052 } 053 054 public HomologyType getType() { 055 return this.type; 056 } 057 058 public void setType(HomologyType type) { 059 this.type = type; 060 } 061 062 public String getLastCommonAncestor() { 063 return this.lastCommonAncestor; 064 } 065 066 @Override 067 public List<Species> getSpecies() { 068 069 List<Species> spp = new ArrayList<Species>( ); 070 071 for (DAGene g: members) { 072 if (g.getSpecies()!= null && !spp.contains(g.getSpecies()) ) { 073 spp.add(g.getSpecies()); 074 } 075 } 076 return spp; 077 } 078 079 public void setLastCommonAncestor(String lastCommonAncestor) { 080 this.lastCommonAncestor = lastCommonAncestor; 081 } 082 083 public HomologyType getRelationshipType() { 084 return this.type; 085 } 086 087 public void setRelationshipType(RelationshipType type) { 088 this.type = (HomologyType) type; 089 } 090}