JAL-4028 experiment - THISISAPLACEHOLDER sequences get additional sequence data ...
[jalview.git] / src / jalview / datamodel / features / SequenceFeatures.java
index 8ac4991..4928f18 100644 (file)
@@ -21,6 +21,7 @@
 package jalview.datamodel.features;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -151,8 +152,8 @@ public class SequenceFeatures implements SequenceFeaturesI
       return new ArrayList<>();
     }
 
-    return getAllFeatures(featureTypes.toArray(new String[featureTypes
-            .size()]));
+    return getAllFeatures(
+            featureTypes.toArray(new String[featureTypes.size()]));
   }
 
   /**
@@ -189,6 +190,30 @@ public class SequenceFeatures implements SequenceFeaturesI
    * {@inheritDoc}
    */
   @Override
+  public List<Integer> getFeatureExtent(String... type)
+  {
+    Integer from = 0, to = 0;
+
+    for (FeatureStore featureSet : varargToTypes(type))
+    {
+      if (from == 0)
+      {
+        from = featureSet.getBegin();
+        to = featureSet.getEnd();
+      }
+      else
+      {
+        from = Math.min(from, featureSet.getBegin());
+        to = Math.max(to, featureSet.getEnd());
+      }
+    }
+    return Arrays.asList(from, to);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
   public List<SequenceFeature> getPositionalFeatures(String... type)
   {
     List<SequenceFeature> result = new ArrayList<>();
@@ -320,8 +345,8 @@ public class SequenceFeatures implements SequenceFeaturesI
 
     for (Entry<String, FeatureStore> featureType : featureStore.entrySet())
     {
-      Set<String> featureGroups = featureType.getValue().getFeatureGroups(
-              positionalFeatures);
+      Set<String> featureGroups = featureType.getValue()
+              .getFeatureGroups(positionalFeatures);
       for (String group : groups)
       {
         if (featureGroups.contains(group))
@@ -389,8 +414,9 @@ public class SequenceFeatures implements SequenceFeaturesI
   @Override
   public float getMinimumScore(String type, boolean positional)
   {
-    return featureStore.containsKey(type) ? featureStore.get(type)
-            .getMinimumScore(positional) : Float.NaN;
+    return featureStore.containsKey(type)
+            ? featureStore.get(type).getMinimumScore(positional)
+            : Float.NaN;
   }
 
   /**
@@ -399,8 +425,9 @@ public class SequenceFeatures implements SequenceFeaturesI
   @Override
   public float getMaximumScore(String type, boolean positional)
   {
-    return featureStore.containsKey(type) ? featureStore.get(type)
-            .getMaximumScore(positional) : Float.NaN;
+    return featureStore.containsKey(type)
+            ? featureStore.get(type).getMaximumScore(positional)
+            : Float.NaN;
   }
 
   /**
@@ -414,8 +441,7 @@ public class SequenceFeatures implements SequenceFeaturesI
           final boolean forwardStrand)
   {
     Collections.sort(features,
-            forwardStrand
-                    ? IntervalI.COMPARE_BEGIN_ASC_END_DESC
+            forwardStrand ? IntervalI.COMPARE_BEGIN_ASC_END_DESC
                     : IntervalI.COMPARE_END_DESC);
   }