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}