Clover icon

Coverage Report

  1. Project Clover database Mon Sep 2 2024 17:57:51 BST
  2. Package jalview.datamodel

File VisibleContigsIterator.java

 

Coverage histogram

../../img/srcFileCovDistChart10.png
0% of files have more coverage

Code metrics

12
31
4
1
114
75
11
0.35
7.75
4
2.75

Classes

Class Line # Actions
VisibleContigsIterator 32 31 11
1.0100%
 

Contributing tests

This file is covered by 45 tests. .

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
7    * Jalview is free software: you can redistribute it and/or
8    * modify it under the terms of the GNU General Public License
9    * as published by the Free Software Foundation, either version 3
10    * of the License, or (at your option) any later version.
11    *
12    * Jalview is distributed in the hope that it will be useful, but
13    * WITHOUT ANY WARRANTY; without even the implied warranty
14    * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15    * PURPOSE. See the GNU General Public License for more details.
16    *
17    * You should have received a copy of the GNU General Public License
18    * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19    * The Jalview Authors are detailed in the 'AUTHORS' file.
20    */
21    package jalview.datamodel;
22   
23    import java.util.ArrayList;
24    import java.util.Iterator;
25    import java.util.List;
26   
27    /**
28    * An iterator which iterates over visible regions in a range. Provides a
29    * special "endsAtHidden" indicator to allow callers to determine if the final
30    * visible column is adjacent to a hidden region.
31    */
 
32    public class VisibleContigsIterator implements Iterator<int[]>
33    {
34    private List<int[]> vcontigs = new ArrayList<>();
35   
36    private int currentPosition = 0;
37   
38    private boolean endsAtHidden = false;
39   
 
40  3232 toggle VisibleContigsIterator(int start, int end, List<int[]> hiddenColumns)
41    {
42  3232 if (hiddenColumns != null && hiddenColumns.size() > 0)
43    {
44  1076 int vstart = start;
45  1076 int hideStart;
46  1076 int hideEnd;
47   
48  1076 for (int[] region : hiddenColumns)
49    {
50  1725 endsAtHidden = false;
51  1725 hideStart = region[0];
52  1725 hideEnd = region[1];
53   
54    // navigate to start
55  1725 if (hideEnd < vstart)
56    {
57  450 continue;
58    }
59  1275 if (hideStart > vstart)
60    {
61  754 if (end - 1 > hideStart - 1)
62    {
63  579 int[] contig = new int[] { vstart, hideStart - 1 };
64  579 vcontigs.add(contig);
65  579 endsAtHidden = true;
66    }
67    else
68    {
69  175 int[] contig = new int[] { vstart, end - 1 };
70  175 vcontigs.add(contig);
71    }
72    }
73  1275 vstart = hideEnd + 1;
74   
75    // exit if we're past the end
76  1275 if (vstart >= end)
77    {
78  650 break;
79    }
80    }
81   
82  1076 if (vstart < end)
83    {
84  426 int[] contig = new int[] { vstart, end - 1 };
85  426 vcontigs.add(contig);
86  426 endsAtHidden = false;
87    }
88    }
89    else
90    {
91  2156 int[] contig = new int[] { start, end - 1 };
92  2156 vcontigs.add(contig);
93    }
94    }
95   
 
96  693280 toggle @Override
97    public boolean hasNext()
98    {
99  693358 return (currentPosition < vcontigs.size());
100    }
101   
 
102  3336 toggle @Override
103    public int[] next()
104    {
105  3336 int[] result = vcontigs.get(currentPosition);
106  3336 currentPosition++;
107  3336 return result;
108    }
109   
 
110  520 toggle public boolean endsAtHidden()
111    {
112  520 return endsAtHidden;
113    }
114    }