updated jalview version of dasobert 1.53e client and added Das Sequence Source discov...
[jalview.git] / src / org / biojava / dasobert / feature / AbstractSegment.java
diff --git a/src/org/biojava/dasobert/feature/AbstractSegment.java b/src/org/biojava/dasobert/feature/AbstractSegment.java
new file mode 100644 (file)
index 0000000..daa7f75
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ *                  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;
+       }
+}