JAL-3397 impl.IntervalStore and nonc.IntervalStore unified api
[jalview.git] / src / jalview / datamodel / SequenceI.java
index 9e9758c..ca12c83 100755 (executable)
@@ -20,6 +20,7 @@
  */
 package jalview.datamodel;
 
+import jalview.datamodel.Sequence.DBModList;
 import jalview.datamodel.features.SequenceFeaturesI;
 import jalview.util.MapList;
 import jalview.ws.params.InvalidArgumentException;
@@ -113,9 +114,11 @@ public interface SequenceI extends ASequenceI
    * get a range on the sequence as a string
    * 
    * @param start
-   *          position relative to start of sequence including gaps (from 0)
+   *          (inclusive) position relative to start of sequence including gaps
+   *          (from 0)
    * @param end
-   *          position relative to start of sequence including gaps (from 0)
+   *          (exclusive) position relative to start of sequence including gaps
+   *          (from 0)
    * 
    * @return String containing all gap and symbols in specified range
    */
@@ -217,7 +220,7 @@ public interface SequenceI extends ASequenceI
    *          - last column, base 1
    * @return
    */
-  public Range findPositions(int fromColum, int toColumn);
+  public ContiguousI findPositions(int fromColum, int toColumn);
 
   /**
    * Returns an int array where indices correspond to each residue in the
@@ -354,20 +357,17 @@ public interface SequenceI extends ASequenceI
   /**
    * set the array of Database references for the sequence.
    * 
-   * BH 2019.01.25 added throw
+   * BH 2019.02.04 changes param to DBModlist 
    * 
    * @param dbs
- * @throws InvalidArgumentException 
    * @deprecated - use is discouraged since side-effects may occur if DBRefEntry
    *             set are not normalised.
    * @throws InvalidArgumentException if the is not one created by Sequence itself
    */
   @Deprecated
-  public void setDBRefs(List<DBRefEntry> dbs) throws InvalidArgumentException;
+  public void setDBRefs(DBModList<DBRefEntry> dbs);
 
-  public List<DBRefEntry> getDBRefs();
-
-  public void getDBRefsFrom(SequenceI seq);
+  public DBModList<DBRefEntry> getDBRefs();
 
   /**
    * add the given entry to the list of DBRefs for this sequence, or replace a
@@ -386,6 +386,12 @@ public interface SequenceI extends ASequenceI
    */
   public boolean addSequenceFeature(SequenceFeature sf);
 
+  /**
+   * Deletes the feature from the sequence (if found). To be precise, deletes
+   * the first feature {@code f} found where {@code f.equals(sf)}.
+   * 
+   * @param sf
+   */
   public void deleteFeature(SequenceFeature sf);
 
   public void setDatasetSequence(SequenceI seq);
@@ -584,5 +590,45 @@ public interface SequenceI extends ASequenceI
    */
   public int firstResidueOutsideIterator(Iterator<int[]> it);
 
+  /**
+   * @author Bob Hanson 2019.07.30
+   * 
+   * get a 4-byte color, with caching
+   * 
+   */
+  public int getColor(int i);
+
+  /**
+   * @author Bob Hanson 2019.07.30
+   * 
+   * set a 4-byte color, with caching
+   * 
+   */
+  public int setColor(int i, int argb);
+
+  /**
+   * @author Bob Hanson 2019.07.30
+   * 
+   * allows resetting the color cache
+   * 
+   */
+  public void resetColors();
+
+  /**
+   * Answers a (possibly empty) list of features of the specified type that
+   * overlap the specified column position. If parameter {@code result} is not
+   * null, features are appended to it and the (possibly extended) list is
+   * returned.
+   */
+  List<SequenceFeature> findFeatures(int column, String type,
+          List<SequenceFeature> result);
+
+  /**
+   * Answers true if this store contains at least one feature, else false
+   * 
+   * @return
+   */
+  public boolean hasFeatures(String type);
+
 }