--- /dev/null
+/*
+ * 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;
+ }
+}