/* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * * Created on May 22, 2007 * */ package org.biojava.dasobert.feature; import java.awt.Color; public abstract class AbstractSegment implements Segment,Cloneable { int start ; int end ; String name ; Color color ; FeatureTrack parent ; String txtColor ; String note; public abstract Object clone(); /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#toString() */ public String toString() { String str = "Segment: " +name + " " +start + " " + end ; if ( ( note != null ) && ( ! note.equals("null"))) if ( note.length() >40) str += note.substring(0,39)+"..."; else str += note; return str ; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#getNote() */ public String getNote() { return note; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#setNote(java.lang.String) */ public void setNote(String note) { this.note = note; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#setStart(int) */ public void setStart(int strt) {start = strt ; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#getStart() */ public int getStart() {return start ;} /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#setEnd(int) */ public void setEnd(int ed) { end = ed;} /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#getEnd() */ public int getEnd() { return end;} /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#setName(java.lang.String) */ public void setName(String nam) { name = nam;} /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#getName() */ public String getName() { return name ; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#setColor(java.awt.Color) */ public void setColor(Color col) { color = col; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#getColor() */ public Color getColor() { return color ; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#setParent(org.biojava.spice.feature.Feature) */ public void setParent(FeatureTrack f) { parent = f;} /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#getParent() */ public FeatureTrack getParent(){ return parent;} /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#setTxtColor(java.lang.String) */ public void setTxtColor(String str) { txtColor = str; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#getTxtColor() */ public String getTxtColor() { return txtColor;} /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#overlaps(int) */ public boolean overlaps(int seqPosition){ if ( ( getStart() <= seqPosition) && ( getEnd() >= seqPosition)){ return true; } return false; } /* (non-Javadoc) * @see org.biojava.spice.feature.SegmentIF#overlaps(org.biojava.spice.feature.Segment) */ public boolean overlaps(Segment segment){ if (! (this.start <= this.end )) throw new IndexOutOfBoundsException("start > end for segment" + this); if ( ! (segment.getStart() <= segment.getEnd() )) throw new IndexOutOfBoundsException("start > end for segment" + segment); // start must be in region of other if ( this.start >= segment.getStart()){ if ( this.start <= segment.getEnd()){ return true; } } // or end must be in region of other.. if ( this.end >= segment.getStart() ) { if ( this.end <= segment.getEnd()){ return true; } } if ( this.start <= segment.getStart() ) { if ( this.end >= segment.getEnd() ) { return true; } } return false; } }