Commit 5b999f8fe759252318a697ac4a4d700cb51b175e
1 parent
5e6b2228
Exists in
master
Fix #12
Showing
2 changed files
with
66 additions
and
34 deletions
Show diff stats
src/main/java/eu/omp/irap/vespa/epntapclient/EpnTapGet.java
0 → 100644
@@ -0,0 +1,64 @@ | @@ -0,0 +1,64 @@ | ||
1 | +/* | ||
2 | + * This file is a part of EpnTAPClient. | ||
3 | + * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer. | ||
4 | + * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861 | ||
5 | + * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planétologie. | ||
6 | + * | ||
7 | + * This program is free software: you can | ||
8 | + * redistribute it and/or modify it under the terms of the GNU General Public License as published | ||
9 | + * by the Free Software Foundation, either version 3 of the License, or (at your option) any later | ||
10 | + * version. This program is distributed in the hope that it will be useful, but WITHOUT ANY | ||
11 | + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR | ||
12 | + * PURPOSE. See the GNU General Public License for more details. You should have received a copy of | ||
13 | + * the GNU General Public License along with this program. If not, see | ||
14 | + * <http://www.gnu.org/licenses/>. | ||
15 | + */ | ||
16 | + | ||
17 | +package eu.omp.irap.vespa.epntapclient; | ||
18 | + | ||
19 | +import java.util.HashMap; | ||
20 | +import java.util.Map; | ||
21 | +import java.util.logging.Logger; | ||
22 | + | ||
23 | +import com.google.gson.JsonArray; | ||
24 | +import com.google.gson.JsonObject; | ||
25 | + | ||
26 | +import eu.omp.irap.vespa.votable.utils.CantSendQueryException; | ||
27 | +import eu.omp.irap.vespa.votable.utils.Network; | ||
28 | + | ||
29 | +/** | ||
30 | + * @author N. Jourdane | ||
31 | + */ | ||
32 | +public class EpnTapGet { | ||
33 | + | ||
34 | + /** The logger for the class EpnTapGetQueries. */ | ||
35 | + private static final Logger logger = Logger.getLogger(EpnTapGet.class.getName()); | ||
36 | + | ||
37 | + /** The URL of the resolver used for the `target name` field. */ | ||
38 | + private static final String RESOLVER_URL = "http://voparis-registry.obspm.fr/ssodnet/1/autocomplete"; | ||
39 | + | ||
40 | + | ||
41 | + /** | ||
42 | + * The method used to get target names propositions by asking to the resolver. | ||
43 | + * | ||
44 | + * @param begining The beginning of the target_name. | ||
45 | + * @return An array of Strings corresponding to the target names got. | ||
46 | + * @throws CantSendQueryException | ||
47 | + * @throws CantGetXMLException If the resolver do not work. | ||
48 | + */ | ||
49 | + public static String[] getTargetNames(String begining) throws CantSendQueryException { | ||
50 | + Map<String, String> params = new HashMap<>(); | ||
51 | + params.put("q", "\"" + begining + "\""); | ||
52 | + | ||
53 | + String query = Network.buildQuery(RESOLVER_URL, params); | ||
54 | + JsonObject root = Network.readJson(query); | ||
55 | + int count = Integer.parseInt(root.get("count").toString()); | ||
56 | + String[] targetNames = new String[count]; | ||
57 | + JsonArray hits = root.getAsJsonArray("hits"); | ||
58 | + for (int i = 0; i < count; i++) { | ||
59 | + JsonObject elmt = hits.get(i).getAsJsonObject(); | ||
60 | + targetNames[i] = elmt.get("name").toString().replace("\"", ""); | ||
61 | + } | ||
62 | + return targetNames; | ||
63 | + } | ||
64 | +} |
src/main/java/eu/omp/irap/vespa/epntapclient/gui/ParamField.java
@@ -24,10 +24,8 @@ import java.text.DateFormat; | @@ -24,10 +24,8 @@ import java.text.DateFormat; | ||
24 | import java.text.ParseException; | 24 | import java.text.ParseException; |
25 | import java.text.SimpleDateFormat; | 25 | import java.text.SimpleDateFormat; |
26 | import java.util.ArrayList; | 26 | import java.util.ArrayList; |
27 | -import java.util.HashMap; | ||
28 | import java.util.List; | 27 | import java.util.List; |
29 | import java.util.Locale; | 28 | import java.util.Locale; |
30 | -import java.util.Map; | ||
31 | import java.util.logging.Level; | 29 | import java.util.logging.Level; |
32 | import java.util.logging.Logger; | 30 | import java.util.logging.Logger; |
33 | 31 | ||
@@ -40,11 +38,8 @@ import javax.swing.SwingUtilities; | @@ -40,11 +38,8 @@ import javax.swing.SwingUtilities; | ||
40 | import javax.swing.event.DocumentEvent; | 38 | import javax.swing.event.DocumentEvent; |
41 | import javax.swing.event.DocumentListener; | 39 | import javax.swing.event.DocumentListener; |
42 | 40 | ||
43 | -import com.google.gson.JsonArray; | ||
44 | -import com.google.gson.JsonObject; | ||
45 | - | 41 | +import eu.omp.irap.vespa.epntapclient.EpnTapGet; |
46 | import eu.omp.irap.vespa.votable.utils.CantSendQueryException; | 42 | import eu.omp.irap.vespa.votable.utils.CantSendQueryException; |
47 | -import eu.omp.irap.vespa.votable.utils.Network; | ||
48 | 43 | ||
49 | /** | 44 | /** |
50 | * A field used to set a service parameter to build the query (in the parameter panel). ParamField | 45 | * A field used to set a service parameter to build the query (in the parameter panel). ParamField |
@@ -74,9 +69,6 @@ public abstract class ParamField extends JPanel { | @@ -74,9 +69,6 @@ public abstract class ParamField extends JPanel { | ||
74 | /** The preferred label width. */ | 69 | /** The preferred label width. */ |
75 | private static final int LABEL_WIDTH = 140; | 70 | private static final int LABEL_WIDTH = 140; |
76 | 71 | ||
77 | - /** The URL of the resolver used for the `target name` field. */ | ||
78 | - private static final String RESOLVER_URL = "http://voparis-registry.obspm.fr/ssodnet/1/autocomplete"; | ||
79 | - | ||
80 | /** The date format used in the DateRange field */ | 72 | /** The date format used in the DateRange field */ |
81 | private static final String DATE_FORMAT = "dd/MM/yyyy"; | 73 | private static final String DATE_FORMAT = "dd/MM/yyyy"; |
82 | 74 | ||
@@ -384,7 +376,7 @@ public abstract class ParamField extends JPanel { | @@ -384,7 +376,7 @@ public abstract class ParamField extends JPanel { | ||
384 | lastContent = content; | 376 | lastContent = content; |
385 | comboBox.removeAllItems(); | 377 | comboBox.removeAllItems(); |
386 | try { | 378 | try { |
387 | - for (String s : TargetNameField.getItems(content)) { | 379 | + for (String s : EpnTapGet.getTargetNames(content)) { |
388 | comboBox.addItem(s); | 380 | comboBox.addItem(s); |
389 | } | 381 | } |
390 | } catch (CantSendQueryException e) { | 382 | } catch (CantSendQueryException e) { |
@@ -423,30 +415,6 @@ public abstract class ParamField extends JPanel { | @@ -423,30 +415,6 @@ public abstract class ParamField extends JPanel { | ||
423 | } | 415 | } |
424 | 416 | ||
425 | /** | 417 | /** |
426 | - * The method used to get target names propositions by asking to the resolver. | ||
427 | - * | ||
428 | - * @param begining The beginning of the target_name. | ||
429 | - * @return An array of Strings corresponding to the target names got. | ||
430 | - * @throws CantSendQueryException | ||
431 | - * @throws CantGetXMLException If the resolver do not work. | ||
432 | - */ | ||
433 | - static String[] getItems(String begining) throws CantSendQueryException { | ||
434 | - Map<String, String> params = new HashMap<>(); | ||
435 | - params.put("q", "\"" + begining + "\""); | ||
436 | - | ||
437 | - String query = Network.buildQuery(ParamField.RESOLVER_URL, params); | ||
438 | - JsonObject root = Network.readJson(query); | ||
439 | - int count = Integer.parseInt(root.get("count").toString()); | ||
440 | - String[] targetNames = new String[count]; | ||
441 | - JsonArray hits = root.getAsJsonArray("hits"); | ||
442 | - for (int i = 0; i < count; i++) { | ||
443 | - JsonObject elmt = hits.get(i).getAsJsonObject(); | ||
444 | - targetNames[i] = elmt.get("name").toString().replace("\"", ""); | ||
445 | - } | ||
446 | - return targetNames; | ||
447 | - } | ||
448 | - | ||
449 | - /** | ||
450 | * This method is called each time the field is modified. | 418 | * This method is called each time the field is modified. |
451 | */ | 419 | */ |
452 | @Override | 420 | @Override |