Commit e7647bba77ce69dba625ec22f610c3fecb6dc270
1 parent
737f769f
Exists in
master
change query to get an entry based on one of several dataProductType (ie. 'spectrum' or 'sp').
Showing
3 changed files
with
38 additions
and
12 deletions
Show diff stats
src/main/java/eu/omp/irap/vespa/epntapclient/utils/Queries.java
... | ... | @@ -16,6 +16,8 @@ |
16 | 16 | |
17 | 17 | package eu.omp.irap.vespa.epntapclient.utils; |
18 | 18 | |
19 | +import java.util.ArrayList; | |
20 | +import java.util.List; | |
19 | 21 | import java.util.Map; |
20 | 22 | import java.util.StringJoiner; |
21 | 23 | |
... | ... | @@ -48,15 +50,22 @@ public final class Queries { |
48 | 50 | * @return The literal string of the query. |
49 | 51 | */ |
50 | 52 | public static String getQuery(String tableName, Map<String, Object> params, int nbRow) { |
51 | - StringJoiner join = new StringJoiner(" AND "); | |
53 | + StringJoiner addJoin = new StringJoiner(" AND "); | |
52 | 54 | for (Map.Entry<String, Object> param : params.entrySet()) { |
53 | - if (param.getValue().getClass() == String.class) { | |
54 | - join.add(param.getKey() + " LIKE '" + param.getValue() + "'"); | |
55 | + Class paramClass = param.getValue().getClass(); | |
56 | + if (paramClass == ArrayList.class) { | |
57 | + StringJoiner orJoin = new StringJoiner(" OR "); | |
58 | + List<String> possibleValues = ((List<String>) param.getValue()); | |
59 | + for (String possibleValue : possibleValues) | |
60 | + orJoin.add(param.getKey() + " LIKE '" + possibleValue + "'"); | |
61 | + addJoin.add("(" + orJoin.toString() + ")"); | |
62 | + } else if (paramClass == String.class) { | |
63 | + addJoin.add(param.getKey() + " LIKE '" + param.getValue() + "'"); | |
55 | 64 | } else { |
56 | - join.add(param.getKey() + " = " + param.getValue().toString()); | |
65 | + addJoin.add(param.getKey() + " = " + param.getValue().toString()); | |
57 | 66 | } |
58 | 67 | } |
59 | - String where = "".equals(join.toString()) ? "" : " WHERE " + join.toString(); | |
68 | + String where = "".equals(addJoin.toString()) ? "" : " WHERE " + addJoin.toString(); | |
60 | 69 | return "SELECT TOP " + nbRow + " target_name, target_class FROM " + tableName + where; |
61 | 70 | } |
62 | 71 | ... | ... |
src/main/java/eu/omp/irap/vespa/epntapclient/view/ParamField.java
... | ... | @@ -8,6 +8,9 @@ import java.beans.PropertyChangeEvent; |
8 | 8 | import java.text.DateFormat; |
9 | 9 | import java.text.ParseException; |
10 | 10 | import java.text.SimpleDateFormat; |
11 | +import java.util.ArrayList; | |
12 | +import java.util.HashMap; | |
13 | +import java.util.List; | |
11 | 14 | import java.util.Locale; |
12 | 15 | import java.util.Objects; |
13 | 16 | |
... | ... | @@ -225,7 +228,7 @@ public abstract class ParamField extends JPanel { |
225 | 228 | |
226 | 229 | DataProductTypeField(RequestView requestView, String paramName) { |
227 | 230 | super(requestView, paramName); |
228 | - comboBox = new JComboBox(getItems()); | |
231 | + comboBox = new JComboBox(getItems().keySet().toArray()); | |
229 | 232 | comboBox.addActionListener(new ActionListener() { |
230 | 233 | @Override |
231 | 234 | public void actionPerformed(ActionEvent e) { |
... | ... | @@ -235,14 +238,29 @@ public abstract class ParamField extends JPanel { |
235 | 238 | this.add(comboBox); |
236 | 239 | } |
237 | 240 | |
238 | - private String[] getItems() { | |
239 | - return new String[] { "All", "Image", "Spectrum", "Dynamic spectrum", "Spectral cube", | |
240 | - "Profile", "Volume", "Movie", "Cube" }; | |
241 | + private HashMap<String, String> getItems() { | |
242 | + HashMap items = new HashMap<String, String>(); | |
243 | + items.put("All", "all"); | |
244 | + items.put("Image", "im"); | |
245 | + items.put("Spectrum", "sp"); | |
246 | + items.put("Dynamic spectrum", "ds"); | |
247 | + items.put("Spectral cube", "sc"); | |
248 | + items.put("Profile", "pr"); | |
249 | + items.put("Volume", "vo"); | |
250 | + items.put("Movie", "mo"); | |
251 | + items.put("Cube", "cu"); | |
252 | + items.put("Time series", "ts"); | |
253 | + items.put("Catalog", "ca"); | |
254 | + items.put("Spatial vector", "sv"); | |
255 | + return items; | |
241 | 256 | } |
242 | 257 | |
243 | 258 | private void onUpdate() { |
244 | - String value = comboBox.getSelectedItem().toString().replace(" ", "-").toLowerCase(); | |
245 | - requestView.updateParam(paramName, "All".equals(value) ? null : value); | |
259 | + String key = comboBox.getSelectedItem().toString(); | |
260 | + List<String> item = new ArrayList(); | |
261 | + item.add(key.replace(" ", "-").toLowerCase()); | |
262 | + item.add(getItems().get(key)); | |
263 | + requestView.updateParam(paramName, "All".equals(key) ? null : item); | |
246 | 264 | } |
247 | 265 | } |
248 | 266 | ... | ... |
src/main/java/eu/omp/irap/vespa/epntapclient/view/RequestView.java
... | ... | @@ -103,7 +103,6 @@ public class RequestView extends JPanel implements ActionListener { |
103 | 103 | paramFields.add(new DateRangeField(this, "time_")); |
104 | 104 | paramFields.add(new FloatRangeField(this, "spectral_range_")); |
105 | 105 | paramFields.add(new DataProductTypeField(this, "dataproduct_type")); |
106 | - | |
107 | 106 | JPanel paramPanel = new JPanel(); |
108 | 107 | paramPanel.setLayout(new BoxLayout(paramPanel, BoxLayout.Y_AXIS)); |
109 | 108 | paramPanel.setBorder(BorderFactory.createTitledBorder("Query parameters")); | ... | ... |