/* * This file is a part of EpnTAPClient. * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer. * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861 * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planétologie. * * This program is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, or (at your option) any later * version. This program is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. You should have received a copy of * the GNU General Public License along with this program. If not, see * . */ package eu.omp.irap.vespa.epntapclient; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import eu.omp.irap.vespa.votable.utils.CantSendQueryException; import eu.omp.irap.vespa.votable.utils.Network; /** * @author N. Jourdane */ public class EpnTapGet { /** The logger for the class EpnTapGetQueries. */ private static final Logger logger = Logger.getLogger(EpnTapGet.class.getName()); /** The URL of the resolver used for the `target name` field. */ private static final String RESOLVER_URL = "http://voparis-registry.obspm.fr/ssodnet/1/autocomplete"; /** * The method used to get target names propositions by asking to the resolver. * * @param begining The beginning of the target_name. * @return An array of Strings corresponding to the target names got. * @throws CantSendQueryException * @throws CantGetXMLException If the resolver do not work. */ public static String[] getTargetNames(String begining) throws CantSendQueryException { Map params = new HashMap<>(); params.put("q", "\"" + begining + "\""); String query = Network.buildQuery(RESOLVER_URL, params); JsonObject root = Network.readJson(query); int count = Integer.parseInt(root.get("count").toString()); String[] targetNames = new String[count]; JsonArray hits = root.getAsJsonArray("hits"); for (int i = 0; i < count; i++) { JsonObject elmt = hits.get(i).getAsJsonObject(); targetNames[i] = elmt.get("name").toString().replace("\"", ""); } return targetNames; } }