import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
import javax.swing.table.DefaultTableModel;
@Override
public void txt_search_ActionPerformed()
{
+ errorWarning.setLength(0);
+ lbl_warning.setVisible(false);
+ btn_ok.setEnabled(false);
boolean allowEmptySequence = false;
mainFrame.setTitle(MessageManager
.getString("label.pdb_sequence_getcher"));
wantedFields = PDBDocFieldPreferences
.getSearchSummaryFields();
+ String searchTerm = decodeSearchTerm(txt_search.getText(),
+ searchTarget);
+
PDBRestRequest request = new PDBRestRequest();
request.setAllowEmptySeq(allowEmptySequence);
request.setResponseSize(100);
- request.setFieldToSearchBy(searchTarget + ":");
- request.setSearchTerm(txt_search.getText());
+ request.setFieldToSearchBy("(" + searchTarget + ":");
+ request.setSearchTerm(searchTerm + ")");
request.setWantedFields(wantedFields);
-
+ // System.out.println(">>>>>>>>>>>>>> " + request.getQuery());
PDBRestClient pdbRestCleint = new PDBRestClient();
- PDBRestResponse resultList = pdbRestCleint.executeRequest(request);
+ PDBRestResponse resultList;
+ try
+ {
+ resultList = pdbRestCleint.executeRequest(request);
+ } catch (Exception e)
+ {
+ // System.out.println(">>>>>>>>>>>>>>>" + e.getMessage());
+ // JOptionPane.showMessageDialog(this, e.getMessage(),
+ // "PDB Web-service Error", JOptionPane.ERROR_MESSAGE);
+ e.printStackTrace();
+ errorWarning.append(e.getMessage());
+ checkForErrors();
+ return;
+ }
+
if (resultList.getSearchSummary() != null)
{
tbl_summary.setModel(PDBRestResponse.getTableModel(request,
}
}
+ public static String decodeSearchTerm(String enteredText,
+ String targetField)
+ {
+ String foundSearchTerms = enteredText;
+ StringBuilder foundSearchTermsBuilder = new StringBuilder();
+ if (enteredText.contains(";"))
+ {
+ String[] searchTerms = enteredText.split(";");
+ for (String searchTerm : searchTerms)
+ {
+ if (searchTerm.contains(":"))
+ {
+ foundSearchTermsBuilder.append(targetField).append(":")
+ .append(searchTerm.split(":")[0]).append(" OR ");
+ }
+ else
+ {
+ foundSearchTermsBuilder.append(targetField).append(":")
+ .append(searchTerm).append(" OR ");
+ }
+ }
+ int endIndex = foundSearchTermsBuilder.lastIndexOf(" OR ");
+ foundSearchTerms = foundSearchTermsBuilder.toString();
+ if (foundSearchTerms.contains(" OR "))
+ {
+ foundSearchTerms = foundSearchTerms.substring(
+ targetField.length() + 1, endIndex);
+ }
+ }
+ else if (enteredText.contains(":"))
+ {
+ foundSearchTerms = foundSearchTerms.split(":")[0];
+ }
+ return foundSearchTerms;
+ }
+
+
@Override
public void btn_ok_ActionPerformed()
{
mainFrame.dispose();
}
+ public void transferToSequenceFetcher(String ids)
+ {
+ // mainFrame.dispose();
+ seqFetcher.textArea.setText(ids);
+ Thread worker = new Thread(seqFetcher);
+ worker.start();
+ }
+
/**
* Add the discovered/selected sequences to a target alignment window
*/
public void loadSelectedPDBSequencesToAlignment()
{
- mainFrame.dispose();
+ // mainFrame.dispose();
StringBuilder selectedIds = new StringBuilder();
+ HashSet<String> selectedIdsSet = new HashSet<String>();
int pdbIdCol = PDBRestClient.getPDBIdColumIndex(wantedFields, false);
int[] selectedRows = tbl_summary.getSelectedRows();
for (int summaryRow : selectedRows)
{
String pdbIdStr = tbl_summary.getValueAt(summaryRow, pdbIdCol)
.toString();
- selectedIds.append(";").append(pdbIdStr);
+ String searchTerm = txt_search.getText();
+ selectedIdsSet.add(getPDBIdwithSpecifiedChain(pdbIdStr, searchTerm));
+ }
+
+ for (String selectedId : selectedIdsSet)
+ {
+ selectedIds.append(selectedId).append(";");
}
- String ids = selectedIds.deleteCharAt(0).toString();
+ String ids = selectedIds.toString();
+ // System.out.println(">>>>>>>>>>>>>>>> selected Ids: " + ids);
seqFetcher.textArea.setText(ids);
Thread worker = new Thread(seqFetcher);
worker.start();
}
+ public static String getPDBIdwithSpecifiedChain(String pdbId,
+ String searchTerm)
+ {
+ String pdbIdWithChainCode = "";
+ if (searchTerm.contains(";"))
+ {
+ String[] foundTerms = searchTerm.split(";");
+ for (String foundTerm : foundTerms)
+ {
+ if (foundTerm.contains(pdbId))
+ {
+ pdbIdWithChainCode = foundTerm;
+ }
+ }
+ }
+ else if (searchTerm.contains(pdbId))
+ {
+ pdbIdWithChainCode = searchTerm;
+ }
+ else
+ {
+ pdbIdWithChainCode = pdbId;
+ }
+ return pdbIdWithChainCode;
+ }
+
/**
* Populates search target combo-box options
*/
}
}
+ public void checkForErrors()
+ {
+ lbl_warning.setVisible(false);
+ if (errorWarning.length() > 0)
+ {
+ lbl_warning.setToolTipText(JvSwingUtils.wrapTooltip(true,
+ errorWarning.toString()));
+ lbl_warning.setVisible(true);
+ }
+ }
}