/*
-
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
package jalview.gui;
+import jalview.bin.Jalview;
import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.DBRefSource;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
+import jalview.fts.api.FTSData;
+import jalview.fts.api.FTSDataColumnI;
+import jalview.fts.api.FTSRestClientI;
+import jalview.fts.core.FTSRestRequest;
+import jalview.fts.core.FTSRestResponse;
+import jalview.fts.service.pdb.PDBFTSRestClient;
import jalview.jbgui.GStructureChooser;
-import jalview.jbgui.PDBDocFieldPreferences;
import jalview.structure.StructureSelectionManager;
import jalview.util.MessageManager;
-import jalview.ws.dbsources.PDBRestClient;
-import jalview.ws.dbsources.PDBRestClient.PDBDocField;
-import jalview.ws.uimodel.PDBRestRequest;
-import jalview.ws.uimodel.PDBRestResponse;
-import jalview.ws.uimodel.PDBRestResponse.PDBResponseSummary;
+import jalview.ws.DBRefFetcher;
+import jalview.ws.sifts.SiftsSettings;
import java.awt.event.ItemEvent;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.Vector;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
*
*/
@SuppressWarnings("serial")
-public class StructureChooser extends GStructureChooser
+public class StructureChooser extends GStructureChooser implements
+ IProgressIndicator
{
private boolean structuresDiscovered = false;
private IProgressIndicator progressIndicator;
- private Collection<PDBResponseSummary> discoveredStructuresSet;
+ private Collection<FTSData> discoveredStructuresSet;
- private PDBRestRequest lastPdbRequest;
+ private FTSRestRequest lastPdbRequest;
- private PDBRestClient pdbRestCleint;
+ private FTSRestClientI pdbRestCleint;
private String selectedPdbFileName;
private boolean isValidPBDEntry;
-
public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
AlignmentPanel ap)
{
*/
public void init()
{
+ if (!Jalview.isHeadlessMode())
+ {
+ progressBar = new ProgressBar(this.statusPanel, this.statusBar);
+ }
+
Thread discoverPDBStructuresThread = new Thread(new Runnable()
{
@Override
public void fetchStructuresMetaData()
{
long startTime = System.currentTimeMillis();
- Collection<PDBDocField> wantedFields = PDBDocFieldPreferences
+ pdbRestCleint = PDBFTSRestClient.getInstance();
+ Collection<FTSDataColumnI> wantedFields = pdbDocFieldPrefs
.getStructureSummaryFields();
- discoveredStructuresSet = new LinkedHashSet<PDBResponseSummary>();
+ discoveredStructuresSet = new LinkedHashSet<FTSData>();
HashSet<String> errors = new HashSet<String>();
for (SequenceI seq : selectedSequences)
{
- PDBRestRequest pdbRequest = new PDBRestRequest();
+ FTSRestRequest pdbRequest = new FTSRestRequest();
pdbRequest.setAllowEmptySeq(false);
pdbRequest.setResponseSize(500);
- pdbRequest.setFieldToSearchBy("(text:");
+ pdbRequest.setFieldToSearchBy("(");
pdbRequest.setWantedFields(wantedFields);
pdbRequest.setSearchTerm(buildQuery(seq) + ")");
pdbRequest.setAssociatedSequence(seq);
- pdbRestCleint = new PDBRestClient();
- PDBRestResponse resultList;
+ FTSRestResponse resultList;
try
{
resultList = pdbRestCleint.executeRequest(pdbRequest);
if (discoveredStructuresSet != null
&& !discoveredStructuresSet.isEmpty())
{
- tbl_summary.setModel(PDBRestResponse.getTableModel(lastPdbRequest,
+ getResultTable().setModel(
+ FTSRestResponse.getTableModel(lastPdbRequest,
discoveredStructuresSet));
structuresDiscovered = true;
noOfStructuresFound = discoveredStructuresSet.size();
if (seq.getDatasetSequence() != null
&& seq.getDatasetSequence().getAllPDBEntries() != null)
{
- for (PDBEntry pdbEntry : seq.getDatasetSequence().getAllPDBEntries())
+ for (PDBEntry pdbEntry : seq.getDatasetSequence()
+ .getAllPDBEntries())
{
if (pdbEntry.getFile() != null)
{
tbl_local_pdb.setModel(tableModelx);
}
-
/**
* Builds a query string for a given sequences using its DBRef entries
*
public static String buildQuery(SequenceI seq)
{
- HashSet<String> seqRefs = new LinkedHashSet<String>();
- String seqName = seq.getName();
- String[] names = seqName.toLowerCase().split("\\|");
- for (String name : names)
- {
- // System.out.println("Found name : " + name);
- name.trim();
- if (isValidSeqName(name))
- {
- seqRefs.add(name);
- }
- }
+ boolean isPDBRefsFound = false;
+ boolean isUniProtRefsFound = false;
+ StringBuilder queryBuilder = new StringBuilder();
+ Set<String> seqRefs = new LinkedHashSet<String>();
if (seq.getAllPDBEntries() != null)
{
{
if (isValidSeqName(entry.getId()))
{
- seqRefs.add(entry.getId());
+ queryBuilder.append("pdb_id:")
+ .append(entry.getId().toLowerCase())
+ .append(" OR ");
+ isPDBRefsFound = true;
+ // seqRefs.add(entry.getId());
}
}
}
- if (seq.getDBRef() != null && seq.getDBRef().length != 0)
+ if (seq.getDBRefs() != null && seq.getDBRefs().length != 0)
{
- int count = 0;
- for (DBRefEntry dbRef : seq.getDBRef())
+ for (DBRefEntry dbRef : seq.getDBRefs())
{
if (isValidSeqName(getDBRefId(dbRef)))
{
- seqRefs.add(getDBRefId(dbRef));
- }
- ++count;
- if (count > 10)
- {
- break;
+ if (dbRef.getSource().equalsIgnoreCase(DBRefSource.UNIPROT))
+ {
+ queryBuilder.append("uniprot_accession:")
+ .append(getDBRefId(dbRef))
+ .append(" OR ");
+ queryBuilder.append("uniprot_id:").append(getDBRefId(dbRef))
+ .append(" OR ");
+ isUniProtRefsFound = true;
+ }
+ else if (dbRef.getSource().equalsIgnoreCase(DBRefSource.PDB))
+ {
+
+ queryBuilder.append("pdb_id:")
+ .append(getDBRefId(dbRef).toLowerCase())
+ .append(" OR ");
+ isPDBRefsFound = true;
+ }
+ else
+ {
+ seqRefs.add(getDBRefId(dbRef));
+ }
}
}
}
- StringBuilder queryBuilder = new StringBuilder();
- for (String seqRef : seqRefs)
+ if (!isPDBRefsFound && !isUniProtRefsFound)
{
- queryBuilder.append("text:").append(seqRef).append(" OR ");
+ String seqName = seq.getName();
+ seqName = sanitizeSeqName(seqName);
+ String[] names = seqName.toLowerCase().split("\\|");
+ for (String name : names)
+ {
+ // System.out.println("Found name : " + name);
+ name.trim();
+ if (isValidSeqName(name))
+ {
+ seqRefs.add(name);
+ }
+ }
+
+ for (String seqRef : seqRefs)
+ {
+ queryBuilder.append("text:").append(seqRef).append(" OR ");
+ }
}
- int endIndex = queryBuilder.lastIndexOf(" OR ");
+ int endIndex = queryBuilder.lastIndexOf(" OR ");
if (queryBuilder.toString().length() < 6)
{
return null;
}
- String query = queryBuilder.toString().substring(5, endIndex);
+ String query = queryBuilder.toString().substring(0, endIndex);
return query;
}
/**
+ * Remove the following special characters from input string +, -, &, !, (, ),
+ * {, }, [, ], ^, ", ~, *, ?, :, \
+ *
+ * @param seqName
+ * @return
+ */
+ static String sanitizeSeqName(String seqName)
+ {
+ Objects.requireNonNull(seqName);
+ return seqName.replaceAll("\\[\\d*\\]", "")
+ .replaceAll("[^\\dA-Za-z|_]", "").replaceAll("\\s+", "+");
+ }
+
+
+ /**
* Ensures sequence ref names are not less than 3 characters and does not
* contain a database name
*
public void run()
{
long startTime = System.currentTimeMillis();
+ pdbRestCleint = PDBFTSRestClient.getInstance();
lbl_loading.setVisible(true);
- Collection<PDBDocField> wantedFields = PDBDocFieldPreferences
+ Collection<FTSDataColumnI> wantedFields = pdbDocFieldPrefs
.getStructureSummaryFields();
- Collection<PDBResponseSummary> filteredResponse = new HashSet<PDBResponseSummary>();
+ Collection<FTSData> filteredResponse = new HashSet<FTSData>();
HashSet<String> errors = new HashSet<String>();
+
for (SequenceI seq : selectedSequences)
{
- PDBRestRequest pdbRequest = new PDBRestRequest();
- pdbRequest.setAllowEmptySeq(false);
- pdbRequest.setResponseSize(1);
- pdbRequest.setFieldToSearchBy("(text:");
- pdbRequest.setFieldToSortBy(fieldToFilterBy,
- !chk_invertFilter.isSelected());
- pdbRequest.setSearchTerm(buildQuery(seq) + ")");
- pdbRequest.setWantedFields(wantedFields);
- pdbRequest.setAssociatedSequence(seq);
- pdbRestCleint = new PDBRestClient();
- PDBRestResponse resultList;
+ FTSRestRequest pdbRequest = new FTSRestRequest();
+ if (fieldToFilterBy.equalsIgnoreCase("uniprot_coverage"))
+ {
+ pdbRequest.setAllowEmptySeq(false);
+ pdbRequest.setResponseSize(1);
+ pdbRequest.setFieldToSearchBy("(");
+ pdbRequest.setSearchTerm(buildQuery(seq) + ")");
+ pdbRequest.setWantedFields(wantedFields);
+ pdbRequest.setAssociatedSequence(seq);
+ pdbRequest.setFacet(true);
+ pdbRequest.setFacetPivot(fieldToFilterBy + ",entry_entity");
+ pdbRequest.setFacetPivotMinCount(1);
+ }
+ else
+ {
+ pdbRequest.setAllowEmptySeq(false);
+ pdbRequest.setResponseSize(1);
+ pdbRequest.setFieldToSearchBy("(");
+ pdbRequest.setFieldToSortBy(fieldToFilterBy,
+ !chk_invertFilter.isSelected());
+ pdbRequest.setSearchTerm(buildQuery(seq) + ")");
+ pdbRequest.setWantedFields(wantedFields);
+ pdbRequest.setAssociatedSequence(seq);
+ }
+ FTSRestResponse resultList;
try
{
resultList = pdbRestCleint.executeRequest(pdbRequest);
if (!filteredResponse.isEmpty())
{
final int filterResponseCount = filteredResponse.size();
- Collection<PDBResponseSummary> reorderedStructuresSet = new LinkedHashSet<PDBResponseSummary>();
+ Collection<FTSData> reorderedStructuresSet = new LinkedHashSet<FTSData>();
reorderedStructuresSet.addAll(filteredResponse);
reorderedStructuresSet.addAll(discoveredStructuresSet);
- tbl_summary.setModel(PDBRestResponse.getTableModel(
+ getResultTable().setModel(
+ FTSRestResponse.getTableModel(
lastPdbRequest, reorderedStructuresSet));
+ FTSRestResponse.configureTableColumn(getResultTable(),
+ wantedFields, tempUserPrefs);
+ getResultTable().getColumn("Ref Sequence").setPreferredWidth(120);
+ getResultTable().getColumn("Ref Sequence").setMinWidth(100);
+ getResultTable().getColumn("Ref Sequence").setMaxWidth(200);
// Update table selection model here
- tbl_summary.addRowSelectionInterval(0, filterResponseCount - 1);
+ getResultTable().addRowSelectionInterval(0,
+ filterResponseCount - 1);
mainFrame.setTitle(MessageManager.formatMessage(
- "label.structure_chooser_filter_time",
- totalTime));
+ "label.structure_chooser_filter_time", totalTime));
}
else
{
mainFrame.setTitle(MessageManager.formatMessage(
- "label.structure_chooser_filter_time",
- totalTime));
+ "label.structure_chooser_filter_time", totalTime));
if (errors.size() > 0)
{
StringBuilder errorMsg = new StringBuilder();
{
errorMsg.append(error).append("\n");
}
- JOptionPane.showMessageDialog(null, errorMsg.toString(),
+ JOptionPane.showMessageDialog(
+ null,
+ errorMsg.toString(),
MessageManager.getString("label.pdb_web-service_error"),
JOptionPane.ERROR_MESSAGE);
}
/**
* Handles action event for btn_pdbFromFile
*/
+ @Override
public void pdbFromFile_actionPerformed()
{
jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
* Populates the filter combo-box options dynamically depending on discovered
* structures
*/
+ @Override
protected void populateFilterComboBox()
{
if (isStructuresDiscovered())
{
cmb_filterOption.addItem(new FilterOption("Best Quality",
- PDBDocField.OVERALL_QUALITY.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Best UniProt Coverage",
- PDBDocField.UNIPROT_COVERAGE.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Highest Resolution",
- PDBDocField.RESOLUTION.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Highest Protein Chain",
- PDBDocField.PROTEIN_CHAIN_COUNT.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Highest Bound Molecules",
- PDBDocField.BOUND_MOLECULE_COUNT.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Highest Polymer Residues",
- PDBDocField.POLYMER_RESIDUE_COUNT.getCode(), VIEWS_FILTER));
+ "overall_quality", VIEWS_FILTER));
+ cmb_filterOption.addItem(new FilterOption("Best Resolution",
+ "resolution", VIEWS_FILTER));
+ cmb_filterOption.addItem(new FilterOption("Most Protein Chain",
+ "number_of_protein_chains", VIEWS_FILTER));
+ cmb_filterOption.addItem(new FilterOption("Most Bound Molecules",
+ "number_of_bound_molecules", VIEWS_FILTER));
+ cmb_filterOption.addItem(new FilterOption("Most Polymer Residues",
+ "number_of_polymer_residues", VIEWS_FILTER));
}
cmb_filterOption.addItem(new FilterOption("Enter PDB Id", "-",
VIEWS_ENTER_ID));
/**
* Updates the displayed view based on the selected filter option
*/
+ @Override
protected void updateCurrentView()
{
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
* Validates user selection and activates the view button if all parameters
* are correct
*/
+ @Override
public void validateSelections()
{
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
String currentView = selectedFilterOpt.getView();
if (currentView == VIEWS_FILTER)
{
- if (tbl_summary.getSelectedRows().length > 0)
+ if (getResultTable().getSelectedRows().length > 0)
{
btn_view.setEnabled(true);
}
lbl_pdbManualFetchStatus.setToolTipText("");
if (txt_search.getText().length() > 0)
{
- lbl_pdbManualFetchStatus.setToolTipText(JvSwingUtils.wrapTooltip(
- true, MessageManager.formatMessage(
- "info.no_pdb_entry_found_for",
+ lbl_pdbManualFetchStatus
+ .setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager
+ .formatMessage("info.no_pdb_entry_found_for",
txt_search.getText())));
}
@Override
public void ok_ActionPerformed()
{
+ final long progressSessionId = System.currentTimeMillis();
+ final StructureSelectionManager ssm = ap.getStructureSelectionManager();
+ ssm.setProgressIndicator(this);
+ ssm.setProgressSessionId(progressSessionId);
+ new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
.getSelectedItem());
String currentView = selectedFilterOpt.getView();
if (currentView == VIEWS_FILTER)
{
- int pdbIdColIndex = tbl_summary.getColumn(
- PDBRestClient.PDBDocField.PDB_ID.getName()).getModelIndex();
- int refSeqColIndex = tbl_summary.getColumn("Ref Sequence")
+ int pdbIdColIndex = getResultTable().getColumn("PDB Id")
+ .getModelIndex();
+ int refSeqColIndex = getResultTable().getColumn("Ref Sequence")
.getModelIndex();
- int[] selectedRows = tbl_summary.getSelectedRows();
+ int[] selectedRows = getResultTable().getSelectedRows();
PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
int count = 0;
ArrayList<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
for (int row : selectedRows)
{
- String pdbIdStr = tbl_summary.getValueAt(row, pdbIdColIndex)
+ String pdbIdStr = getResultTable().getValueAt(row,
+ pdbIdColIndex)
.toString();
- SequenceI selectedSeq = (SequenceI) tbl_summary.getValueAt(row,
+ SequenceI selectedSeq = (SequenceI) getResultTable()
+ .getValueAt(row,
refSeqColIndex);
selectedSeqsToView.add(selectedSeq);
- PDBEntry pdbEntry = selectedSeq.getPDBEntry(pdbIdStr);
+ PDBEntry pdbEntry = selectedSeq.getPDBEntry(pdbIdStr);
+ if (pdbEntry == null)
+ {
+ pdbEntry = getFindEntry(pdbIdStr,
+ selectedSeq.getAllPDBEntries());
+ }
if (pdbEntry == null)
{
pdbEntry = new PDBEntry();
}
SequenceI[] selectedSeqs = selectedSeqsToView
.toArray(new SequenceI[selectedSeqsToView.size()]);
- launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, selectedSeqs);
+ launchStructureViewer(ssm, pdbEntriesToView, ap, selectedSeqs);
}
else if (currentView == VIEWS_LOCAL_PDB)
{
int[] selectedRows = tbl_local_pdb.getSelectedRows();
PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
int count = 0;
- int pdbIdColIndex = tbl_local_pdb.getColumn(
- PDBRestClient.PDBDocField.PDB_ID.getName()).getModelIndex();
+ int pdbIdColIndex = tbl_local_pdb.getColumn("PDB Id")
+ .getModelIndex();
int refSeqColIndex = tbl_local_pdb.getColumn("Ref Sequence")
.getModelIndex();
ArrayList<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
}
SequenceI[] selectedSeqs = selectedSeqsToView
.toArray(new SequenceI[selectedSeqsToView.size()]);
- launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, selectedSeqs);
+ launchStructureViewer(ssm, pdbEntriesToView, ap, selectedSeqs);
}
else if (currentView == VIEWS_ENTER_ID)
{
if (pdbEntry == null)
{
pdbEntry = new PDBEntry();
- pdbEntry.setId(pdbIdStr);
+ if (pdbIdStr.split(":").length > 1)
+ {
+ pdbEntry.setId(pdbIdStr.split(":")[0]);
+ pdbEntry.setChainCode(pdbIdStr.split(":")[1].toUpperCase());
+ }
+ else
+ {
+ pdbEntry.setId(pdbIdStr);
+ }
pdbEntry.setType(PDBEntry.Type.PDB);
selectedSequence.getDatasetSequence().addPDBId(pdbEntry);
}
- PDBEntry[] pdbEntriesToView = new PDBEntry[]
- { pdbEntry };
- launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, new SequenceI[]
- { selectedSequence });
+ PDBEntry[] pdbEntriesToView = new PDBEntry[] { pdbEntry };
+ launchStructureViewer(ssm, pdbEntriesToView, ap,
+ new SequenceI[] { selectedSequence });
}
else if (currentView == VIEWS_FROM_FILE)
{
jalview.io.AppletFormatAdapter.FILE,
selectedSequence, true, Desktop.instance);
- launchStructureViewer(ap.getStructureSelectionManager(),
- new PDBEntry[]
- { fileEntry }, ap, new SequenceI[]
- { selectedSequence });
+ launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
+ new SequenceI[] { selectedSequence });
}
- mainFrame.dispose();
+ closeAction();
+ }
+ }).start();
}
- private void launchStructureViewer(final StructureSelectionManager ssm,
+ private PDBEntry getFindEntry(String id, Vector<PDBEntry> pdbEntries)
+ {
+ Objects.requireNonNull(id);
+ Objects.requireNonNull(pdbEntries);
+ PDBEntry foundEntry = null;
+ for (PDBEntry entry : pdbEntries)
+ {
+ if (entry.getId().equalsIgnoreCase(id))
+ {
+ return entry;
+ }
+ }
+ return foundEntry;
+ }
+
+ private void launchStructureViewer(StructureSelectionManager ssm,
final PDBEntry[] pdbEntriesToView,
- final AlignmentPanel alignPanel, final SequenceI[] sequences)
+ final AlignmentPanel alignPanel, SequenceI[] sequences)
{
+ ssm.setProgressBar(MessageManager
+ .getString("status.launching_3d_structure_viewer"));
final StructureViewer sViewer = new StructureViewer(ssm);
- new Thread(new Runnable()
+
+ if (SiftsSettings.isMapWithSifts())
{
- public void run()
+ ArrayList<SequenceI> seqsWithoutSourceDBRef = new ArrayList<SequenceI>();
+ for (SequenceI seq : sequences)
{
- if (pdbEntriesToView.length > 1)
+ if (seq.getSourceDBRef() == null && seq.getDBRefs() == null)
{
- ArrayList<SequenceI[]> seqsMap = new ArrayList<SequenceI[]>();
- for (SequenceI seq : sequences)
- {
- seqsMap.add(new SequenceI[]
- { seq });
+ seqsWithoutSourceDBRef.add(seq);
+ continue;
}
- SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
- sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
- }
- else
+ }
+ if (!seqsWithoutSourceDBRef.isEmpty())
+ {
+ int y = seqsWithoutSourceDBRef.size();
+ ssm.setProgressBar(null);
+ ssm.setProgressBar(MessageManager.formatMessage(
+ "status.fetching_dbrefs_for_sequences_without_valid_refs",
+ y));
+ SequenceI[] seqWithoutSrcDBRef = new SequenceI[y];
+ int x = 0;
+ for (SequenceI fSeq : seqsWithoutSourceDBRef)
{
- sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);
+ seqWithoutSrcDBRef[x++] = fSeq;
}
+ new DBRefFetcher(seqWithoutSrcDBRef).fetchDBRefs(true);
}
- }).start();
+ }
+ if (pdbEntriesToView.length > 1)
+ {
+ ArrayList<SequenceI[]> seqsMap = new ArrayList<SequenceI[]>();
+ for (SequenceI seq : sequences)
+ {
+ seqsMap.add(new SequenceI[] { seq });
+ }
+ SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
+ ssm.setProgressBar(null);
+ ssm.setProgressBar(MessageManager
+ .getString("status.fetching_3d_structures_for_selected_entries"));
+ sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
+ }
+ else
+ {
+ ssm.setProgressBar(null);
+ ssm.setProgressBar(MessageManager.formatMessage(
+ "status.fetching_3d_structures_for",
+ pdbEntriesToView[0].getId()));
+ sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);
+ }
}
/**
* Populates the combo-box used in associating manually fetched structures to
* a unique sequence when more than one sequence selection is made.
*/
+ @Override
public void populateCmbAssociateSeqOptions(
JComboBox<AssociateSeqOptions> cmb_assSeq, JLabel lbl_associateSeq)
{
this.structuresDiscovered = structuresDiscovered;
}
- public Collection<PDBResponseSummary> getDiscoveredStructuresSet()
+ public Collection<FTSData> getDiscoveredStructuresSet()
{
return discoveredStructuresSet;
}
{
new Thread()
{
+ @Override
public void run()
{
- errorWarning.setLength(0);
- isValidPBDEntry = false;
- if (txt_search.getText().length() > 0)
- {
- List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
- wantedFields.add(PDBDocField.PDB_ID);
- PDBRestRequest pdbRequest = new PDBRestRequest();
- pdbRequest.setAllowEmptySeq(false);
- pdbRequest.setResponseSize(1);
- pdbRequest.setFieldToSearchBy("(pdb_id:");
- pdbRequest.setWantedFields(wantedFields);
- pdbRequest.setSearchTerm(txt_search.getText() + ")");
- pdbRequest.setAssociatedSequence(selectedSequence);
- pdbRestCleint = new PDBRestClient();
- PDBRestResponse resultList;
- try
- {
- resultList = pdbRestCleint.executeRequest(pdbRequest);
- } catch (Exception e)
- {
- errorWarning.append(e.getMessage());
- return;
- } finally
- {
+ errorWarning.setLength(0);
+ isValidPBDEntry = false;
+ if (txt_search.getText().length() > 0)
+ {
+ String searchTerm = txt_search.getText().toLowerCase();
+ searchTerm = searchTerm.split(":")[0];
+ // System.out.println(">>>>> search term : " + searchTerm);
+ List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
+ FTSRestRequest pdbRequest = new FTSRestRequest();
+ pdbRequest.setAllowEmptySeq(false);
+ pdbRequest.setResponseSize(1);
+ pdbRequest.setFieldToSearchBy("(pdb_id:");
+ pdbRequest.setWantedFields(wantedFields);
+ pdbRequest
+.setSearchTerm(searchTerm + ")");
+ pdbRequest.setAssociatedSequence(selectedSequence);
+ pdbRestCleint = PDBFTSRestClient.getInstance();
+ wantedFields.add(pdbRestCleint.getPrimaryKeyColumn());
+ FTSRestResponse resultList;
+ try
+ {
+ resultList = pdbRestCleint.executeRequest(pdbRequest);
+ } catch (Exception e)
+ {
+ errorWarning.append(e.getMessage());
+ return;
+ } finally
+ {
+ validateSelections();
+ }
+ if (resultList.getSearchSummary() != null
+ && resultList.getSearchSummary().size() > 0)
+ {
+ isValidPBDEntry = true;
+ }
+ }
validateSelections();
}
- if (resultList.getSearchSummary() != null
- && resultList.getSearchSummary().size() > 0)
- {
- isValidPBDEntry = true;
- }
- }
- validateSelections();
- }
}.start();
}
public class PDBEntryTableModel extends AbstractTableModel
{
- String[] columns =
- { "Ref Sequence", "PDB Id", "Chain", "Type", "File" };
+ String[] columns = { "Ref Sequence", "PDB Id", "Chain", "Type", "File" };
private List<CachedPDB> pdbEntries;
}
}
+
+ private IProgressIndicator progressBar;
+
+ @Override
+ public void setProgressBar(String message, long id)
+ {
+ progressBar.setProgressBar(message, id);
+ }
+
+ @Override
+ public void registerHandler(long id, IProgressIndicatorHandler handler)
+ {
+ progressBar.registerHandler(id, handler);
+ }
+
+ @Override
+ public boolean operationInProgress()
+ {
+ return progressBar.operationInProgress();
+ }
}