From: amwaterhouse Date: Thu, 25 Jan 2007 16:00:21 +0000 (+0000) Subject: 1.1 enabled X-Git-Tag: Release_2_3~444 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=a1e45ca742b795ce3e38cca47805d3d52ea0f66e;p=jalview.git 1.1 enabled --- diff --git a/src/jalview/analysis/Finder.java b/src/jalview/analysis/Finder.java index c385ac8..479c8561 100644 --- a/src/jalview/analysis/Finder.java +++ b/src/jalview/analysis/Finder.java @@ -1,273 +1,273 @@ -package jalview.analysis; -import java.util.Vector; - -import jalview.datamodel.*; - -public class Finder { - /** - * Implements the search algorithms for the Find dialog box. - */ - SearchResults searchResults; - AlignmentI alignment; - jalview.datamodel.SequenceGroup selection=null; - Vector idMatch=null; - boolean caseSensitive=false; - boolean findAll=false; - com.stevesoft.pat.Regex regex=null; - /** - * hold's last-searched position between calles to find(false) - */ - int seqIndex=0,resIndex=0; - public Finder(AlignmentI alignment, SequenceGroup selection) { - this.alignment=alignment; - this.selection = selection; - } - - public Finder(AlignmentI alignment, SequenceGroup selectionGroup, int seqIndex, int resIndex) { - this(alignment, selectionGroup); - this.seqIndex=seqIndex; - this.resIndex=resIndex; - } - - public boolean find(String searchString) { - boolean hasResults=false; - if(!caseSensitive) - searchString = searchString.toUpperCase(); - regex = new com.stevesoft.pat.Regex(searchString); - searchResults = new SearchResults(); - idMatch = new Vector(); - Sequence seq; - String item = null; - boolean found = false; - - ////// is the searchString a residue number? - try - { - int res = Integer.parseInt(searchString); - found = true; - if (selection == null || selection.getSize() < 1) - { - seq = (Sequence) alignment.getSequenceAt(0); - } - else - { - seq = (Sequence) (selection.getSequenceAt(0)); - } - - searchResults.addResult(seq, res, res); - hasResults=true; - } - catch (NumberFormatException ex) - { - } - - /////////////////////////////////////////////// - - int end = alignment.getHeight(); - - - if (selection != null) - { - if ((selection.getSize() < 1) || - ((selection.getEndRes() - selection.getStartRes()) < 2)) - { - selection = null; - } - } - - while (!found && (seqIndex < end)) - { - seq = (Sequence) alignment.getSequenceAt(seqIndex); - - if ((selection != null) && !selection.getSequences(null).contains(seq)) - { - seqIndex++; - resIndex = 0; - - continue; - } - - item = seq.getSequenceAsString(); - // JBPNote - check if this toUpper which is present in the application implementation makes a difference - //if(!caseSensitive) - // item = item.toUpperCase(); - - if ((selection != null) && - (selection.getEndRes() < alignment.getWidth()-1)) - { - item = item.substring(0, selection.getEndRes() + 1); - } - - ///Shall we ignore gaps???? - JBPNote: Add Flag for forcing this or not - StringBuffer noGapsSB = new StringBuffer(); - int insertCount = 0; - Vector spaces = new Vector(); - - for (int j = 0; j < item.length(); j++) - { - if (!jalview.util.Comparison.isGap(item.charAt(j))) - { - noGapsSB.append(item.charAt(j)); - spaces.add(new Integer(insertCount)); - } - else - { - insertCount++; - } - } - - String noGaps = noGapsSB.toString(); - - for (int r = resIndex; r < noGaps.length(); r++) - { - - if (regex.searchFrom(noGaps, r)) - { - resIndex = regex.matchedFrom(); - - if ((selection != null) && - ((resIndex + - Integer.parseInt(spaces.get(resIndex).toString())) < selection.getStartRes())) - { - continue; - } - - - int sres = seq.findPosition(resIndex + - Integer.parseInt(spaces.elementAt(resIndex) - .toString())); - int eres = seq.findPosition(regex.matchedTo() - 1 + - Integer.parseInt(spaces.elementAt(regex.matchedTo() - - 1).toString())); - - searchResults.addResult(seq, sres, eres); - hasResults=true; - if (!findAll) - { - // thats enough, break and display the result - found = true; - resIndex++; - - break; - } - - r = resIndex; - } - else - { - break; - } - } - - if (!found) - { - seqIndex++; - resIndex = 0; - } - } - - for (int id = 0; id < alignment.getHeight(); id++) - { - if (regex.search(alignment.getSequenceAt(id).getName())) - { - idMatch.add(alignment.getSequenceAt(id)); - hasResults=true; - } - } - return hasResults; - } - /** - * @return the alignment - */ - public AlignmentI getAlignment() { - return alignment; - } - /** - * @param alignment the alignment to set - */ - public void setAlignment(AlignmentI alignment) { - this.alignment = alignment; - } - /** - * @return the caseSensitive - */ - public boolean isCaseSensitive() { - return caseSensitive; - } - /** - * @param caseSensitive the caseSensitive to set - */ - public void setCaseSensitive(boolean caseSensitive) { - this.caseSensitive = caseSensitive; - } - /** - * @return the findAll - */ - public boolean isFindAll() { - return findAll; - } - /** - * @param findAll the findAll to set - */ - public void setFindAll(boolean findAll) { - this.findAll = findAll; - } - /** - * @return the selection - */ - public jalview.datamodel.SequenceGroup getSelection() { - return selection; - } - /** - * @param selection the selection to set - */ - public void setSelection(jalview.datamodel.SequenceGroup selection) { - this.selection = selection; - } - /** - * @return the idMatch - */ - public Vector getIdMatch() { - return idMatch; - } - /** - * @return the regex - */ - public com.stevesoft.pat.Regex getRegex() { - return regex; - } - /** - * @return the searchResults - */ - public SearchResults getSearchResults() { - return searchResults; - } - - /** - * @return the resIndex - */ - public int getResIndex() { - return resIndex; - } - - /** - * @param resIndex the resIndex to set - */ - public void setResIndex(int resIndex) { - this.resIndex = resIndex; - } - - /** - * @return the seqIndex - */ - public int getSeqIndex() { - return seqIndex; - } - - /** - * @param seqIndex the seqIndex to set - */ - public void setSeqIndex(int seqIndex) { - this.seqIndex = seqIndex; - } -} +package jalview.analysis; +import java.util.Vector; + +import jalview.datamodel.*; + +public class Finder { + /** + * Implements the search algorithms for the Find dialog box. + */ + SearchResults searchResults; + AlignmentI alignment; + jalview.datamodel.SequenceGroup selection=null; + Vector idMatch=null; + boolean caseSensitive=false; + boolean findAll=false; + com.stevesoft.pat.Regex regex=null; + /** + * hold's last-searched position between calles to find(false) + */ + int seqIndex=0,resIndex=0; + public Finder(AlignmentI alignment, SequenceGroup selection) { + this.alignment=alignment; + this.selection = selection; + } + + public Finder(AlignmentI alignment, SequenceGroup selectionGroup, int seqIndex, int resIndex) { + this(alignment, selectionGroup); + this.seqIndex=seqIndex; + this.resIndex=resIndex; + } + + public boolean find(String searchString) { + boolean hasResults=false; + if(!caseSensitive) + searchString = searchString.toUpperCase(); + regex = new com.stevesoft.pat.Regex(searchString); + searchResults = new SearchResults(); + idMatch = new Vector(); + Sequence seq; + String item = null; + boolean found = false; + + ////// is the searchString a residue number? + try + { + int res = Integer.parseInt(searchString); + found = true; + if (selection == null || selection.getSize() < 1) + { + seq = (Sequence) alignment.getSequenceAt(0); + } + else + { + seq = (Sequence) (selection.getSequenceAt(0)); + } + + searchResults.addResult(seq, res, res); + hasResults=true; + } + catch (NumberFormatException ex) + { + } + + /////////////////////////////////////////////// + + int end = alignment.getHeight(); + + + if (selection != null) + { + if ((selection.getSize() < 1) || + ((selection.getEndRes() - selection.getStartRes()) < 2)) + { + selection = null; + } + } + + while (!found && (seqIndex < end)) + { + seq = (Sequence) alignment.getSequenceAt(seqIndex); + + if ((selection != null) && !selection.getSequences(null).contains(seq)) + { + seqIndex++; + resIndex = 0; + + continue; + } + + item = seq.getSequenceAsString(); + // JBPNote - check if this toUpper which is present in the application implementation makes a difference + //if(!caseSensitive) + // item = item.toUpperCase(); + + if ((selection != null) && + (selection.getEndRes() < alignment.getWidth()-1)) + { + item = item.substring(0, selection.getEndRes() + 1); + } + + ///Shall we ignore gaps???? - JBPNote: Add Flag for forcing this or not + StringBuffer noGapsSB = new StringBuffer(); + int insertCount = 0; + Vector spaces = new Vector(); + + for (int j = 0; j < item.length(); j++) + { + if (!jalview.util.Comparison.isGap(item.charAt(j))) + { + noGapsSB.append(item.charAt(j)); + spaces.addElement(new Integer(insertCount)); + } + else + { + insertCount++; + } + } + + String noGaps = noGapsSB.toString(); + + for (int r = resIndex; r < noGaps.length(); r++) + { + + if (regex.searchFrom(noGaps, r)) + { + resIndex = regex.matchedFrom(); + + if ((selection != null) && + ((resIndex + + Integer.parseInt(spaces.elementAt(resIndex).toString())) < selection.getStartRes())) + { + continue; + } + + + int sres = seq.findPosition(resIndex + + Integer.parseInt(spaces.elementAt(resIndex) + .toString())); + int eres = seq.findPosition(regex.matchedTo() - 1 + + Integer.parseInt(spaces.elementAt(regex.matchedTo() - + 1).toString())); + + searchResults.addResult(seq, sres, eres); + hasResults=true; + if (!findAll) + { + // thats enough, break and display the result + found = true; + resIndex++; + + break; + } + + r = resIndex; + } + else + { + break; + } + } + + if (!found) + { + seqIndex++; + resIndex = 0; + } + } + + for (int id = 0; id < alignment.getHeight(); id++) + { + if (regex.search(alignment.getSequenceAt(id).getName())) + { + idMatch.addElement(alignment.getSequenceAt(id)); + hasResults=true; + } + } + return hasResults; + } + /** + * @return the alignment + */ + public AlignmentI getAlignment() { + return alignment; + } + /** + * @param alignment the alignment to set + */ + public void setAlignment(AlignmentI alignment) { + this.alignment = alignment; + } + /** + * @return the caseSensitive + */ + public boolean isCaseSensitive() { + return caseSensitive; + } + /** + * @param caseSensitive the caseSensitive to set + */ + public void setCaseSensitive(boolean caseSensitive) { + this.caseSensitive = caseSensitive; + } + /** + * @return the findAll + */ + public boolean isFindAll() { + return findAll; + } + /** + * @param findAll the findAll to set + */ + public void setFindAll(boolean findAll) { + this.findAll = findAll; + } + /** + * @return the selection + */ + public jalview.datamodel.SequenceGroup getSelection() { + return selection; + } + /** + * @param selection the selection to set + */ + public void setSelection(jalview.datamodel.SequenceGroup selection) { + this.selection = selection; + } + /** + * @return the idMatch + */ + public Vector getIdMatch() { + return idMatch; + } + /** + * @return the regex + */ + public com.stevesoft.pat.Regex getRegex() { + return regex; + } + /** + * @return the searchResults + */ + public SearchResults getSearchResults() { + return searchResults; + } + + /** + * @return the resIndex + */ + public int getResIndex() { + return resIndex; + } + + /** + * @param resIndex the resIndex to set + */ + public void setResIndex(int resIndex) { + this.resIndex = resIndex; + } + + /** + * @return the seqIndex + */ + public int getSeqIndex() { + return seqIndex; + } + + /** + * @param seqIndex the seqIndex to set + */ + public void setSeqIndex(int seqIndex) { + this.seqIndex = seqIndex; + } +}