Commit 3591966860cee5eedffbcae468eee5e19f792f7d
1 parent
204e830a
Exists in
master
Update the query when changing request parameters.
Showing
3 changed files
with
103 additions
and
23 deletions
Show diff stats
src/main/java/eu/omp/irap/vespa/epntapclient/utils/Queries.java
@@ -49,8 +49,14 @@ public final class Queries { | @@ -49,8 +49,14 @@ public final class Queries { | ||
49 | /** Minimal query to get TAP all services of the registry, using GloTS. */ | 49 | /** Minimal query to get TAP all services of the registry, using GloTS. */ |
50 | public static final String GET_TAP_SERVICES = "SELECT ivoid, accessurl FROM glots.services"; | 50 | public static final String GET_TAP_SERVICES = "SELECT ivoid, accessurl FROM glots.services"; |
51 | 51 | ||
52 | - /** A sample query for tests. */ | ||
53 | - public static final String SAMPLE_AMDA_QUERY = "SELECT TOP 5 index, resource_type, time_min, time_max FROM amdadb.epn_core"; | 52 | + /** |
53 | + * The default query, with these parameters, respectively: max_rows, target_name, time_min, | ||
54 | + * time_max, dataproduct_type, spectral_range_min, spectral_range_max. | ||
55 | + */ | ||
56 | + public static final String SAMPLE_AMDA_QUERY = "SELECT TOP %s target_name, resource_type, instrument_name " | ||
57 | + + "FROM amdadb.epn_core " | ||
58 | + + "WHERE target_name = '%s', time_min=%f, time_max=%f, dataproduct_type=%s, " | ||
59 | + + "spectral_range_min=%f, spectral_range_max=%f"; | ||
54 | 60 | ||
55 | /** Constructor to hide the implicit public one. */ | 61 | /** Constructor to hide the implicit public one. */ |
56 | private Queries() { | 62 | private Queries() { |
src/main/java/eu/omp/irap/vespa/epntapclient/view/EpnTapMainView.java
@@ -57,7 +57,7 @@ public class EpnTapMainView extends JPanel { | @@ -57,7 +57,7 @@ public class EpnTapMainView extends JPanel { | ||
57 | /** The minimum width of the left panel (services view). */ | 57 | /** The minimum width of the left panel (services view). */ |
58 | static final int LEFT_PANEL_MIN_WIDTH = 100; | 58 | static final int LEFT_PANEL_MIN_WIDTH = 100; |
59 | /** The width of the right panel (request view). */ | 59 | /** The width of the right panel (request view). */ |
60 | - static final int RIGHT_PANEL_WIDTH = 300; | 60 | + static final int RIGHT_PANEL_WIDTH = 400; |
61 | /** The minimum width of the right panel (request view). */ | 61 | /** The minimum width of the right panel (request view). */ |
62 | static final int RIGHT_PANEL_MIN_WIDTH = 100; | 62 | static final int RIGHT_PANEL_MIN_WIDTH = 100; |
63 | 63 |
src/main/java/eu/omp/irap/vespa/epntapclient/view/RequestView.java
@@ -30,6 +30,8 @@ import javax.swing.JLabel; | @@ -30,6 +30,8 @@ import javax.swing.JLabel; | ||
30 | import javax.swing.JPanel; | 30 | import javax.swing.JPanel; |
31 | import javax.swing.JTextArea; | 31 | import javax.swing.JTextArea; |
32 | import javax.swing.JTextField; | 32 | import javax.swing.JTextField; |
33 | +import javax.swing.event.DocumentEvent; | ||
34 | +import javax.swing.event.DocumentListener; | ||
33 | 35 | ||
34 | import org.apache.logging.log4j.LogManager; | 36 | import org.apache.logging.log4j.LogManager; |
35 | import org.apache.logging.log4j.Logger; | 37 | import org.apache.logging.log4j.Logger; |
@@ -74,7 +76,46 @@ public class RequestView extends JPanel implements ActionListener { | @@ -74,7 +76,46 @@ public class RequestView extends JPanel implements ActionListener { | ||
74 | /** | 76 | /** |
75 | * @return A JPanel containing graphical elements for the service parameters. | 77 | * @return A JPanel containing graphical elements for the service parameters. |
76 | */ | 78 | */ |
77 | - private static JPanel buildParamPanel() { | 79 | + private JPanel buildParamPanel() { |
80 | + JTextField jtfTargetName = new JTextField("Jupiter"); | ||
81 | + JFormattedTextField jtfMinTime = new JFormattedTextField(new Float(0.0)); | ||
82 | + JFormattedTextField jtfMaxTime = new JFormattedTextField(new Float(1.0)); | ||
83 | + JTextField jtfProductType = new JTextField("SpectralRange"); | ||
84 | + JFormattedTextField jtfMinSpectralRange = new JFormattedTextField(new Float(0.0)); | ||
85 | + JFormattedTextField jtfMaxSpectralRange = new JFormattedTextField(new Float(1.0)); | ||
86 | + JFormattedTextField jtfMaxRows = new JFormattedTextField(new Integer(100)); | ||
87 | + | ||
88 | + DocumentListener paramListener = new DocumentListener() { | ||
89 | + @Override | ||
90 | + public void insertUpdate(DocumentEvent de) { | ||
91 | + try { | ||
92 | + int maxRows = Integer.parseInt(jtfMaxRows.getText()); | ||
93 | + String targetName = jtfTargetName.getText(); | ||
94 | + float minTime = (float) jtfMinTime.getValue(); | ||
95 | + float maxTime = (float) jtfMaxTime.getValue(); | ||
96 | + String productType = jtfProductType.getText(); | ||
97 | + float minSpectralRange = (float) jtfMinSpectralRange.getValue(); | ||
98 | + float maxSpectralRange = (float) jtfMaxSpectralRange.getValue(); | ||
99 | + | ||
100 | + updateQueryArea(maxRows, targetName, minTime, maxTime, productType, | ||
101 | + minSpectralRange, maxSpectralRange); | ||
102 | + } catch (Exception e) { | ||
103 | + logger.error("Can not parse parameters.", e); | ||
104 | + } | ||
105 | + | ||
106 | + } | ||
107 | + | ||
108 | + @Override | ||
109 | + public void removeUpdate(DocumentEvent de) { | ||
110 | + insertUpdate(de); | ||
111 | + } | ||
112 | + | ||
113 | + @Override | ||
114 | + public void changedUpdate(DocumentEvent de) { | ||
115 | + insertUpdate(de); | ||
116 | + } | ||
117 | + }; | ||
118 | + | ||
78 | JPanel paramPanel = new JPanel(new GridLayout(0, 2)); | 119 | JPanel paramPanel = new JPanel(new GridLayout(0, 2)); |
79 | paramPanel.setBorder(BorderFactory.createTitledBorder("Query parameters")); | 120 | paramPanel.setBorder(BorderFactory.createTitledBorder("Query parameters")); |
80 | 121 | ||
@@ -82,38 +123,54 @@ public class RequestView extends JPanel implements ActionListener { | @@ -82,38 +123,54 @@ public class RequestView extends JPanel implements ActionListener { | ||
82 | JLabel targetNameLabel = new JLabel("Target name"); | 123 | JLabel targetNameLabel = new JLabel("Target name"); |
83 | paramPanel.add(targetNameLabel); | 124 | paramPanel.add(targetNameLabel); |
84 | 125 | ||
85 | - JTextField targetName = new JTextField(10); | ||
86 | - targetName.setToolTipText("The target name, for example 'Jupiter'."); | ||
87 | - paramPanel.add(targetName); | 126 | + jtfTargetName.getDocument().addDocumentListener(paramListener); |
127 | + jtfTargetName.setToolTipText("The target name, for example 'Jupiter'."); | ||
128 | + paramPanel.add(jtfTargetName); | ||
88 | 129 | ||
89 | // Time | 130 | // Time |
90 | JLabel timeLabel = new JLabel("Time (min, max)"); | 131 | JLabel timeLabel = new JLabel("Time (min, max)"); |
91 | paramPanel.add(timeLabel); | 132 | paramPanel.add(timeLabel); |
92 | - | ||
93 | JPanel timePanel = new JPanel(new GridLayout(0, 2)); | 133 | JPanel timePanel = new JPanel(new GridLayout(0, 2)); |
94 | - JFormattedTextField minTime = new JFormattedTextField(new Float(0.0)); | ||
95 | - minTime.setToolTipText("The minimum time, for example '0.01'."); | ||
96 | - timePanel.add(minTime); | ||
97 | - JFormattedTextField maxTime = new JFormattedTextField(new Float(0.0)); | ||
98 | - maxTime.setToolTipText("The maximum time, for example '1.50'."); | ||
99 | - timePanel.add(maxTime); | 134 | + |
135 | + jtfMinTime.getDocument().addDocumentListener(paramListener); | ||
136 | + jtfMinTime.setToolTipText("The minimum time, for example '0.01'."); | ||
137 | + timePanel.add(jtfMinTime); | ||
138 | + | ||
139 | + jtfMaxTime.getDocument().addDocumentListener(paramListener); | ||
140 | + jtfMaxTime.setToolTipText("The maximum time, for example '1.50'."); | ||
141 | + timePanel.add(jtfMaxTime); | ||
100 | paramPanel.add(timePanel); | 142 | paramPanel.add(timePanel); |
101 | 143 | ||
102 | // Data product type | 144 | // Data product type |
103 | - JLabel productTypeLabel = new JLabel("Data product type"); | 145 | + JLabel productTypeLabel = new JLabel("Product type"); |
104 | paramPanel.add(productTypeLabel); | 146 | paramPanel.add(productTypeLabel); |
105 | 147 | ||
106 | - JTextField productType = new JTextField(10); | ||
107 | - productType.setToolTipText("The product type, for example '...'."); | ||
108 | - paramPanel.add(productType); | 148 | + jtfProductType.getDocument().addDocumentListener(paramListener); |
149 | + jtfProductType.setToolTipText("The product type, for example '...'."); | ||
150 | + paramPanel.add(jtfProductType); | ||
109 | 151 | ||
110 | - // Spectral range | ||
111 | JLabel spectralRangeLabel = new JLabel("Spectral range"); | 152 | JLabel spectralRangeLabel = new JLabel("Spectral range"); |
112 | paramPanel.add(spectralRangeLabel); | 153 | paramPanel.add(spectralRangeLabel); |
154 | + JPanel spectralRangePanel = new JPanel(new GridLayout(0, 2)); | ||
113 | 155 | ||
114 | - JTextField spectralRange = new JTextField(10); | ||
115 | - spectralRange.setToolTipText("The spectral range, for example '...'."); | ||
116 | - paramPanel.add(spectralRange); | 156 | + jtfMinSpectralRange.getDocument().addDocumentListener(paramListener); |
157 | + jtfMinSpectralRange.setToolTipText("The minimum spectral range, for example '0.01'."); | ||
158 | + spectralRangePanel.add(jtfMinSpectralRange); | ||
159 | + | ||
160 | + jtfMaxSpectralRange.getDocument().addDocumentListener(paramListener); | ||
161 | + jtfMaxSpectralRange.setToolTipText("The maximum spectral range, for example '1.50'."); | ||
162 | + spectralRangePanel.add(jtfMaxSpectralRange); | ||
163 | + | ||
164 | + paramPanel.add(spectralRangePanel); | ||
165 | + | ||
166 | + // Number rows limit | ||
167 | + JLabel maxRowsLabel = new JLabel("Rows limit"); | ||
168 | + paramPanel.add(maxRowsLabel); | ||
169 | + | ||
170 | + jtfMaxRows.setName("targetName"); | ||
171 | + jtfMaxRows.addActionListener(this); | ||
172 | + jtfMaxRows.setToolTipText("The maximum number of rows to display."); | ||
173 | + paramPanel.add(jtfMaxRows); | ||
117 | 174 | ||
118 | return paramPanel; | 175 | return paramPanel; |
119 | } | 176 | } |
@@ -124,7 +181,7 @@ public class RequestView extends JPanel implements ActionListener { | @@ -124,7 +181,7 @@ public class RequestView extends JPanel implements ActionListener { | ||
124 | private JPanel buildQueryPanel() { | 181 | private JPanel buildQueryPanel() { |
125 | JPanel queryPanel = new JPanel(); | 182 | JPanel queryPanel = new JPanel(); |
126 | queryPanel.setBorder(BorderFactory.createTitledBorder("Query for the selected service(s)")); | 183 | queryPanel.setBorder(BorderFactory.createTitledBorder("Query for the selected service(s)")); |
127 | - queryArea = new JTextArea(Queries.SAMPLE_AMDA_QUERY); | 184 | + queryArea = new JTextArea(""); |
128 | queryArea.setToolTipText("The query sent to the service(s)."); | 185 | queryArea.setToolTipText("The query sent to the service(s)."); |
129 | queryArea.setLineWrap(true); | 186 | queryArea.setLineWrap(true); |
130 | queryPanel.setLayout(new BorderLayout()); | 187 | queryPanel.setLayout(new BorderLayout()); |
@@ -134,6 +191,21 @@ public class RequestView extends JPanel implements ActionListener { | @@ -134,6 +191,21 @@ public class RequestView extends JPanel implements ActionListener { | ||
134 | } | 191 | } |
135 | 192 | ||
136 | /** | 193 | /** |
194 | + * @param max_rows | ||
195 | + * @param target_name | ||
196 | + * @param time_min | ||
197 | + * @param time_max | ||
198 | + * @param dataproduct_type | ||
199 | + * @param spectral_range_min | ||
200 | + * @param spectral_range_max | ||
201 | + */ | ||
202 | + private void updateQueryArea(int max_rows, String target_name, float time_min, float time_max, | ||
203 | + String dataproduct_type, float spectral_range_min, float spectral_range_max) { | ||
204 | + queryArea.setText(String.format(Queries.SAMPLE_AMDA_QUERY, max_rows, target_name, time_min, | ||
205 | + time_max, dataproduct_type, spectral_range_min, spectral_range_max)); | ||
206 | + } | ||
207 | + | ||
208 | + /** | ||
137 | * @return A JPanel containing the button(s). | 209 | * @return A JPanel containing the button(s). |
138 | */ | 210 | */ |
139 | private JPanel buildButtonPanel() { | 211 | private JPanel buildButtonPanel() { |
@@ -144,11 +216,13 @@ public class RequestView extends JPanel implements ActionListener { | @@ -144,11 +216,13 @@ public class RequestView extends JPanel implements ActionListener { | ||
144 | buttonPanel.add(btnSend); | 216 | buttonPanel.add(btnSend); |
145 | buttonPanel.setMaximumSize( | 217 | buttonPanel.setMaximumSize( |
146 | new Dimension(EpnTapMainView.RIGHT_PANEL_WIDTH, BUTTON_PANEL_HEIGHT)); | 218 | new Dimension(EpnTapMainView.RIGHT_PANEL_WIDTH, BUTTON_PANEL_HEIGHT)); |
219 | + | ||
147 | return buttonPanel; | 220 | return buttonPanel; |
148 | } | 221 | } |
149 | 222 | ||
150 | @Override | 223 | @Override |
151 | public void actionPerformed(ActionEvent evt) { | 224 | public void actionPerformed(ActionEvent evt) { |
225 | + System.out.println("blah"); | ||
152 | if (((JButton) evt.getSource()).getName() == "btnSend") { | 226 | if (((JButton) evt.getSource()).getName() == "btnSend") { |
153 | try { | 227 | try { |
154 | mainView.getController().sendQuery(queryArea.getText()); | 228 | mainView.getController().sendQuery(queryArea.getText()); |