1 package jalview.fts.service.threedbeacons;
3 import java.util.HashMap;
4 import java.util.HashSet;
7 import jalview.fts.api.FTSDataColumnI;
8 import jalview.fts.api.FTSRestClientI;
9 import jalview.fts.core.FTSRestRequest;
10 import jalview.fts.core.FTSRestResponse;
11 import jalview.fts.core.GFTSPanel;
12 import jalview.fts.service.pdb.PDBFTSRestClient;
13 import jalview.gui.SequenceFetcher;
14 import jalview.util.MessageManager;
16 @SuppressWarnings("serial")
17 public class TDBeaconsFTSPanel extends GFTSPanel
19 private static String defaultFTSFrameTitle = MessageManager
20 .getString("label.threedb_sequence_fetcher");
22 private static Map<String, Integer> tempUserPrefs = new HashMap<>();
24 private static final String THREEDB_FTS_CACHE_KEY = "CACHE.THREEDB_FTS";
26 private static final String THREEDB_AUTOSEARCH = "FTS.THREEDB.AUTOSEARCH";
28 public TDBeaconsFTSPanel(SequenceFetcher fetcher)
31 pageLimit = TDBeaconsFTSRestClient.getInstance().getDefaultResponsePageSize();
32 this.seqFetcher = fetcher;
33 this.progressIndicator = (fetcher == null) ? null
34 : fetcher.getProgressIndicator();
38 public void searchAction(boolean isFreshSearch)
40 mainFrame.requestFocusInWindow();
51 boolean allowEmptySequence = false;
52 if (getTypedText().length() > 0)
54 setSearchInProgress(true);
55 long startTime = System.currentTimeMillis();
57 String searchTarget = ((FTSDataColumnI) cmb_searchTarget
58 .getSelectedItem()).getCode();
59 wantedFields = TDBeaconsFTSRestClient.getInstance()
60 .getAllDefaultDisplayedFTSDataColumns();
61 String searchTerm = getTypedText(); // to add : decodeSearchTerm
63 FTSRestRequest request = new FTSRestRequest();
64 request.setAllowEmptySeq(allowEmptySequence);
65 request.setResponseSize(100);
66 request.setFieldToSearchBy("(" + searchTarget + ":");
67 request.setSearchTerm(searchTerm + ")");
68 request.setOffSet(offSet);
69 request.setWantedFields(wantedFields);
70 FTSRestClientI tdbRestClient = TDBeaconsFTSRestClient.getInstance();
71 FTSRestResponse resultList;
74 resultList = tdbRestClient.executeRequest(request);
77 setErrorMessage(e.getMessage());
79 setSearchInProgress(false);
83 if (resultList.getSearchSummary() != null
84 && resultList.getSearchSummary().size() > 0)
86 getResultTable().setModel(FTSRestResponse.getTableModel(request,
87 resultList.getSearchSummary()));
88 FTSRestResponse.configureTableColumn(getResultTable(),
89 wantedFields, tempUserPrefs);
90 getResultTable().setVisible(true);
93 long endTime = System.currentTimeMillis();
94 totalResultSetCount = resultList.getNumberOfItemsFound();
95 resultSetCount = resultList.getSearchSummary() == null ? 0
96 : resultList.getSearchSummary().size();
97 String result = (resultSetCount > 0)
98 ? MessageManager.getString("label.results")
99 : MessageManager.getString("label.result");
101 if (isPaginationEnabled() && resultSetCount > 0)
103 String f1 = totalNumberformatter.format(Integer.valueOf(offSet + 1));
104 String f2 = totalNumberformatter
105 .format(Integer.valueOf(offSet + resultSetCount));
106 String f3 = totalNumberformatter
107 .format(Integer.valueOf(totalResultSetCount));
108 updateSearchFrameTitle(defaultFTSFrameTitle + " - " + result
109 + " " + f1 + " to " + f2 + " of " + f3 + " " + " ("
110 + (endTime - startTime) + " milli secs)");
114 updateSearchFrameTitle(defaultFTSFrameTitle + " - "
115 + resultSetCount + " " + result + " ("
116 + (endTime - startTime) + " milli secs)");
119 setSearchInProgress(false);
120 refreshPaginatorState();
121 updateSummaryTableSelections();
123 txt_search.updateCache();
129 public void okAction()
131 // mainFrame.dispose();
132 disableActionButtons();
133 StringBuilder selectedIds = new StringBuilder();
134 HashSet<String> selectedIdsSet = new HashSet<>();
135 int primaryKeyColIndex = 0;
138 primaryKeyColIndex = getFTSRestClient()
139 .getPrimaryKeyColumIndex(wantedFields, false);
140 } catch (Exception e)
144 int[] selectedRows = getResultTable().getSelectedRows();
145 String searchTerm = getTypedText();
146 for (int summaryRow : selectedRows)
148 String idStr = getResultTable()
149 .getValueAt(summaryRow, primaryKeyColIndex).toString();
150 selectedIdsSet.add(searchTerm);
153 for (String idStr : paginatorCart)
155 selectedIdsSet.add(searchTerm);
158 for (String selectedId : selectedIdsSet)
160 selectedIds.append(selectedId).append(";");
163 String ids = selectedIds.toString();
164 seqFetcher.setQuery(ids);
165 Thread worker = new Thread(seqFetcher);
167 delayAndEnableActionButtons();
171 public FTSRestClientI getFTSRestClient()
173 return TDBeaconsFTSRestClient.getInstance();
177 public String getFTSFrameTitle()
179 return defaultFTSFrameTitle;
183 public boolean isPaginationEnabled()
189 public Map<String, Integer> getTempUserPrefs()
191 return tempUserPrefs;
195 public String getCacheKey()
197 return THREEDB_FTS_CACHE_KEY;
201 public String getAutosearchPreference()
203 return THREEDB_AUTOSEARCH;
207 protected void showHelp()
209 System.out.println("No help implemented yet.");