import javax.swing.SwingConstants;
import javax.swing.tree.DefaultMutableTreeNode;
-import com.stevesoft.pat.Regex;
-
public class SequenceFetcher extends JPanel implements Runnable
{
JLabel dbeg = new JLabel();
resetDialog();
return;
}
+ // TODO: Refactor to GUI independent code and write tests.
// indicate if successive sources should be merged into one alignment.
boolean addToLast = false;
ArrayList<String> aresultq = new ArrayList<String>(), presultTitle = new ArrayList<String>();
DBRefEntry dbr = new DBRefEntry(), found[] = null;
dbr.setSource(proxy.getDbSource());
dbr.setVersion(null);
- if (proxy.getAccessionValidator() != null)
- {
- Regex vgr = proxy.getAccessionValidator();
- vgr.search(q);
- if (vgr.numSubs() > 0)
- {
- dbr.setAccessionId(vgr.stringMatched(1));
- }
- else
- {
- dbr.setAccessionId(vgr.stringMatched());
- }
- }
- else
- {
- dbr.setAccessionId(q);
- }
+ String accId = DBRefUtils.processQueryToAccessionFor(proxy,
+ q);
+ dbr.setAccessionId(accId);
boolean rfound = false;
for (int r = 0; r < rs.length; r++)
{
import jalview.datamodel.DBRefSource;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
+import jalview.ws.seqfetcher.DbSourceProxy;
import java.util.ArrayList;
import java.util.HashMap;
return ref;
}
+ /**
+ * Extract valid accession strings from a query string. Used by the
+ * SequenceFetcher and DBRefFetcher to create valid accession strings from an
+ * ID string for database sources with a Regex validation field.
+ *
+ * @param proxy
+ * @param q
+ * @return q if proxy.getAccessionValidator()==null, otherwise the matched
+ * region or the first subgroup match from the matched region
+ */
+ public static String processQueryToAccessionFor(DbSourceProxy proxy,
+ String q)
+ {
+ if (proxy.getAccessionValidator() != null)
+ {
+ Regex vgr = proxy.getAccessionValidator();
+ vgr.search(q);
+ if (vgr.numSubs() > 0)
+ {
+ return (vgr.stringMatched(1));
+ }
+ else
+ {
+ return (vgr.stringMatched());
+ }
+ }
+ else
+ {
+ return (q);
+ }
+ }
+
}