3 import jalview.jbgui.GPDBFetchPanel;
4 import jalview.ws.dbsources.PDBRestClient;
5 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
6 import jalview.ws.uimodel.PDBSearchRequest;
7 import jalview.ws.uimodel.PDBSearchResponse;
8 import jalview.ws.uimodel.PDBSearchResponse.PDBResponseSummary;
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.Comparator;
13 import java.util.List;
15 import javax.swing.DefaultListModel;
16 import javax.swing.SwingUtilities;
18 @SuppressWarnings("serial")
19 public class PDBFetchPanel extends GPDBFetchPanel
21 private SequenceFetcher seqFetcher;
23 public PDBFetchPanel()
27 public PDBFetchPanel(SequenceFetcher seqFetcher)
30 this.seqFetcher = seqFetcher;
33 public static void main(String[] args)
35 SwingUtilities.invokeLater(new Runnable()
45 public void searchStringAction()
47 boolean allowEmptySequence = false;
48 jListSearchResult.setModel(new DefaultListModel<PDBResponseSummary>());
49 mainFrame.setTitle("PDB Sequence Fetcher");
50 if (search.getText().trim().length() > 0)
52 long startTime = System.currentTimeMillis();
53 PDBRestClient pdbRestCleint = new PDBRestClient();
54 String searchTarget = ((PDBDocField) searchTargetOptions
55 .getSelectedItem()).getCode();
57 PDBSearchRequest request = new PDBSearchRequest();
58 request.setAllowEmptySeq(allowEmptySequence);
59 request.setResponseSize(100);
60 request.setFieldToSearchBy(searchTarget + ":");
61 request.setSearchTerm(search.getText());
62 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
63 wantedFields.add(PDBDocField.MOLECULE_TYPE);
64 wantedFields.add(PDBDocField.PDB_ID);
65 wantedFields.add(PDBDocField.GENUS);
66 wantedFields.add(PDBDocField.GENE_NAME);
67 wantedFields.add(PDBDocField.TITLE);
68 request.setWantedFields(wantedFields);
70 PDBSearchResponse resultList = pdbRestCleint.executeRequest(request);
72 if (resultList.getSearchSummary() != null)
74 jListSearchResult.setModel(PDBSearchResponse
75 .getListModel(resultList.getSearchSummary()));
77 long endTime = System.currentTimeMillis();
78 mainFrame.setTitle("PDB Sequence Fetcher - "
79 + resultList.getItemsFound() + " results ("
80 + (endTime - startTime) + " milli secs)");
86 public void okActionPerformed()
88 importSelectedPDBSequencesToAlignment();
93 public void backActionPerformed()
95 System.out.println("back! pressed!");
99 public void cancelActionPerformed()
104 private void importSelectedPDBSequencesToAlignment()
107 StringBuilder selectedIds = new StringBuilder();
108 for (PDBResponseSummary dataSelected : jListSearchResult
109 .getSelectedValuesList())
111 selectedIds.append(";").append(dataSelected.getPdbId());
113 String ids = selectedIds.deleteCharAt(0).toString();
114 seqFetcher.textArea.setText(ids);
115 Thread worker = new Thread(seqFetcher);
119 public void populateSearchOptionComboBox()
121 List<PDBDocField> searchableTargets = new ArrayList<PDBDocField>();
122 searchableTargets.add(PDBDocField.PDB_ID);
123 searchableTargets.add(PDBDocField.PFAM_ACCESSION);
124 searchableTargets.add(PDBDocField.MOLECULE_TYPE);
125 searchableTargets.add(PDBDocField.MOLECULE_NAME);
126 searchableTargets.add(PDBDocField.UNIPROT_ACCESSION);
127 searchableTargets.add(PDBDocField.GENE_NAME);
128 searchableTargets.add(PDBDocField.GENUS);
129 searchableTargets.add(PDBDocField.ALL);
131 Collections.sort(searchableTargets, new Comparator<PDBDocField>()
134 public int compare(PDBDocField o1, PDBDocField o2)
136 return o1.getName().compareTo(o2.getName());
140 for (PDBDocField searchTarget : searchableTargets)
142 searchTargetOptions.addItem(searchTarget);