/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
+ * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *
+ *
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.MutableTreeNode;
-import javax.swing.tree.TreeModel;
+
+import com.stevesoft.pat.Regex;
import jalview.datamodel.*;
import jalview.io.*;
import jalview.util.DBRefUtils;
import jalview.ws.dbsources.das.api.DasSourceRegistryI;
import jalview.ws.seqfetcher.DbSourceProxy;
-
import java.awt.BorderLayout;
public class SequenceFetcher extends JPanel implements Runnable
Thread sf = new Thread(new Runnable()
{
+ @Override
public void run()
{
if (getSequenceFetcherSingleton(guiWindow) != null)
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
+ @Override
public void run()
{
JOptionPane
ok.setText("OK");
ok.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
ok_actionPerformed();
clear.setText("Clear");
clear.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
clear_actionPerformed();
example.setText("Example");
example.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
example_actionPerformed();
close.setText("Close");
close.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
close_actionPerformed(e);
textArea.setLineWrap(true);
textArea.addKeyListener(new KeyAdapter()
{
+ @Override
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ENTER)
database.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
- DbSourceProxy db = null;
try
{
databaseButt.setText(database.getSelectedItem()
+ " others)" : ""));
String eq = database.getExampleQueries();
dbeg.setText("Example query: " + eq);
- replacePunctuation.setEnabled(!(eq != null && eq.indexOf(",") > -1));
+ boolean enablePunct = !(eq != null && eq.indexOf(",") > -1);
+ for (DbSourceProxy dbs : database.getSelectedSources())
+ {
+ if (dbs instanceof jalview.ws.dbsources.das.datamodel.DasSequenceSource)
+ {
+ enablePunct = false;
+ break;
+ }
+ }
+ replacePunctuation.setEnabled(enablePunct);
+
} catch (Exception ex)
{
dbeg.setText("");
public void ok_actionPerformed()
{
- database.setEnabled(false);
+ databaseButt.setEnabled(false);
+ example.setEnabled(false);
textArea.setEnabled(false);
ok.setEnabled(false);
close.setEnabled(false);
private void resetDialog()
{
- database.setEnabled(true);
+ databaseButt.setEnabled(true);
+ example.setEnabled(true);
textArea.setEnabled(true);
ok.setEnabled(true);
close.setEnabled(true);
}
+ @Override
public void run()
{
String error = "";
return;
}
// indicate if successive sources should be merged into one alignment.
- boolean addToLast=false;
+ boolean addToLast = false;
ArrayList<String> aresultq = new ArrayList<String>(), presultTitle = new ArrayList<String>();
ArrayList<AlignmentI> presult = new ArrayList<AlignmentI>(), aresult = new ArrayList<AlignmentI>();
Iterator<DbSourceProxy> proxies = database.getSelectedSources()
{
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);
+ }
boolean rfound = false;
for (int r = 0; r < rs.length; r++)
{
AlignmentI ar = null;
if (isAliSource)
{
- addToLast=false;
+ addToLast = false;
// new window for each result
while (aresult.size() > 0)
{
}
else
{
- String titl=null;
- if (addToLast && presult.size()>0)
+ String titl = null;
+ if (addToLast && presult.size() > 0)
{
- ar=presult.remove(presult.size()-1);
- titl=presultTitle.remove(presultTitle.size()-1);
+ ar = presult.remove(presult.size() - 1);
+ titl = presultTitle.remove(presultTitle.size() - 1);
}
// concatenate all results in one window
while (aresult.size() > 0)
}
;
}
- addToLast=true;
+ addToLast = true;
presult.add(ar);
presultTitle.add(titl);
}
}
- guiWindow.setProgressBar("Finished querying", Thread.currentThread().hashCode());
+ guiWindow.setProgressBar("Finished querying", Thread.currentThread()
+ .hashCode());
}
- guiWindow.setProgressBar((presult.size()>0) ? "Parsing results.":"Processing ..", Thread.currentThread().hashCode());
+ guiWindow.setProgressBar((presult.size() > 0) ? "Parsing results."
+ : "Processing ..", Thread.currentThread().hashCode());
// process results
while (presult.size() > 0)
{
sb.append("Didn't retrieve the following "
+ (nextfetch.size() == 1 ? "query" : nextfetch.size()
+ " queries") + ": \n");
- int l = sb.length(),lr=0;
+ int l = sb.length(), lr = 0;
for (String s : nextfetch)
{
if (l != sb.length())
{
sb.append("; ");
}
- if (lr-sb.length()>40)
+ if (lr - sb.length() > 40)
{
sb.append("\n");
}
title = getDefaultRetrievalTitle();
}
SequenceFeature[] sfs = null;
- for (Enumeration sq = al.getSequences().elements(); sq
- .hasMoreElements();)
+ List<SequenceI> alsqs;
+ synchronized (alsqs = al.getSequences())
{
- if ((sfs = ((SequenceI) sq.nextElement()).getDatasetSequence()
- .getSequenceFeatures()) != null)
+ for (SequenceI sq : alsqs)
{
- if (sfs.length > 0)
+ if ((sfs = (sq).getDatasetSequence().getSequenceFeatures()) != null)
{
- af.setShowSeqFeatures(true);
- break;
+ if (sfs.length > 0)
+ {
+ af.setShowSeqFeatures(true);
+ break;
+ }
}
- }
+ }
}
Desktop.addInternalFrame(af, title, AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
resetDialog();
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
+ @Override
public void run()
{
JOptionPane.showInternalMessageDialog(Desktop.desktop, error,