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.variation;
023
024import java.util.ArrayList;
025import java.util.List;
026import uk.ac.roslin.ensembl.model.Mapping;
027import uk.ac.roslin.ensembl.model.variation.VariationType;
028
029/**
030 *
031 * @author tpaterso
032 */
033public class VariationMapping extends Mapping {
034    
035    List<VariationType> consequences = new ArrayList<VariationType>();
036    String alleleString;
037    Integer id;
038    
039    public String getAlleleString() {
040        return alleleString;
041    }
042
043    public void setAlleleString(String alleleString) {
044        this.alleleString = alleleString;
045    }
046
047    public List<VariationType> getConsequences() {
048        return consequences;
049    }
050
051    public void setConsequences(List<VariationType> consequences) {
052        this.consequences = consequences;
053    }
054
055    public Integer getId() {
056        return id;
057    }
058
059    public void setId(Integer id) {
060        this.id = id;
061    }
062
063    @Override
064    public VariationMapping getReverseMapping() {
065        if (reverseMapping==null) {
066            VariationMapping.addReverseMapping(this);
067        }
068        return (VariationMapping) reverseMapping;
069    }
070    
071     public static boolean addReverseMapping(VariationMapping originalMapping) {
072        try {
073
074            VariationMapping reverseMapping = new VariationMapping();
075            
076            reverseMapping.setAlleleString(originalMapping.getAlleleString());
077            reverseMapping.setConsequences(originalMapping.getConsequences());
078            reverseMapping.setId(originalMapping.getId());
079            reverseMapping.setReverseMapping(originalMapping);
080
081            reverseMapping.setSource(originalMapping.getTarget());
082            reverseMapping.setTarget(originalMapping.getSource());
083
084            reverseMapping.setSourceCoordinates(originalMapping.getTargetCoordinates());
085            reverseMapping.setTargetCoordinates(originalMapping.getSourceCoordinates());
086
087            reverseMapping.getSource().addMapping(reverseMapping);
088            originalMapping.setReverseMapping(reverseMapping);
089
090        } catch (Exception e) {
091            return false;
092        }
093        return true;
094    }
095
096    
097    
098}