Commit e7647bba77ce69dba625ec22f610c3fecb6dc270

Authored by Nathanael Jourdane
1 parent 737f769f
Exists in master

change query to get an entry based on one of several dataProductType (ie. 'spectrum' or 'sp').

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"));
... ...