TestEpnTapFacade.java 5.27 KB
/*
 * 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
 * <http://www.gnu.org/licenses/>.
 */

package eu.omp.irap.vespa.epntapclient;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

import eu.omp.irap.vespa.epntapclient.granule.Granule;
import eu.omp.irap.vespa.epntapclient.service.ServiceCore;
import eu.omp.irap.vespa.epntapclient.voresource.VOResourceCtrl;
import eu.omp.irap.vespa.epntapclient.voresource.VOResourceException;
import eu.omp.irap.vespa.epntapclient.voresource.model.Resource;
import eu.omp.irap.vespa.epntapclient.votable.model.VOTABLE;
import eu.omp.irap.vespa.votable.controller.CantGetVOTableException;
import eu.omp.irap.vespa.votable.utils.Debug;
import eu.omp.irap.vespa.votable.utils.StringJoiner;

/**
 * @author N. Jourdane
 */
public class TestEpnTapFacade {

	/** The logger for the class Main. */
	private static final Logger logger = Logger.getLogger(TestEpnTapFacade.class.getName());

	private static final String TEST_SERVICE_IVOID = "ivo://cdpp/amda";

	private static final String TEST_SERVICE_URL = "http://voparis-tap-planeto.obspm.fr/__system__/tap/run/tap";

	private static final String TEST_RESOURCE_IVOID = "ivo://vopdc.obspm/lesia/basecom/epn";

	private static final String TEST_ADQL_QUERY = "SELECT TOP 1 * FROM planets.epn_core";

	private static final String TEST_SCHEMA_NAME = "epn_core";


	public static void main(String[] args) {
		EpnTapFacade facade = new EpnTapFacade();

		try {
			facade.getEPNServices();

			System.out.println("\n*** 1. Resource ***\n");

			Resource resource = VOResourceCtrl.getVOresource(TEST_RESOURCE_IVOID);
			System.out.println("1.1 getVOresource(\"" + TEST_RESOURCE_IVOID + "\")\n\t"
					+ Debug.toJson(resource));

			System.out.println("\n*** 2. Resources ***\n");

			List<String> ivoids = VOResourceCtrl.getIvoidResources(ServiceCore.EPNCORE);
			System.out.println("2.0 getIvoidResources(ServiceCore.EPNCORE)\n\t" +
					StringJoiner.join(ivoids));

			List<Resource> resources = facade.getEPNVOResources();
			System.out.println("2.1 getEPNVOResources()\n\t"
					+ Debug.toJson(resources));

			Map<String, String> keywords = new HashMap<>();
			keywords.put("type", "CatalogService");
			List<Resource> resources2 = facade.getEPNVOResources(keywords);
			System.out.println("2.2 getEPNVOResources(keywords)\n\t"
					+ Debug.toJson(resources2));

			System.out.println("\n*** 3. Service ***\n");

			VOTABLE epnService = facade.getEPNService(TEST_SERVICE_IVOID);
			System.out.println("3.1 getEPNService(\"" + TEST_SERVICE_IVOID + "\")\n\t"
					+ Debug.toJson(epnService));

			List<String> attributes = new ArrayList<>();
			attributes.add("s_region");
			VOTABLE epnService2 = facade.getEPNService(TEST_SERVICE_IVOID, attributes);
			System.out.println("3.2 getEPNService(\"" + TEST_SERVICE_IVOID + "\", \"s_region\")\n\t"
					+ Debug.toJson(epnService2));

			System.out.println("\n*** 4. Services ***\n");

			VOTABLE epnServices = facade.getEPNServices();
			System.out.println("4.1 getEPNServices()\n\t"
					+ Debug.toJson(epnServices));

			VOTABLE epnServices2 = facade.getEPNServices(attributes);
			System.out.println("4.2 getEPNService(\"s_region\")\n\t"
					+ Debug.toJson(epnServices2));

			VOTABLE epnServices3 = facade.getEPNService(TEST_SERVICE_IVOID, attributes);
			System.out.println("4.3 getEPNService(\"" + TEST_SERVICE_IVOID + "\", \"s_region\")\n\t"
					+ Debug.toJson(epnServices3));

			System.out.println("\n*** 5. Getters***\n");

			String epnCoreTableName = facade.getEPNCoreTableName(TEST_SERVICE_IVOID);
			System.out.println("5.1 getEPNCoreTableName(\"" + TEST_SERVICE_IVOID + "\")\n\t"
					+ epnCoreTableName);

			String tapURL = facade.getTAPURL(TEST_SERVICE_IVOID);
			System.out.println("5.2 getTAPURL(\"" + TEST_SERVICE_IVOID + "\")\n\t" + tapURL);

			System.out.println("\n*** 6. Queries ***\n");

			List<Granule> granules = facade.sendADQLQuery(TEST_SERVICE_URL, TEST_ADQL_QUERY);
			System.out.println("6.1 sendADQLQuery(\"" + TEST_SERVICE_URL + "\", \""
					+ TEST_ADQL_QUERY + "\")\n\t"
					+ Debug.toJson(granules));

			List<Granule> granules2 = facade.sendQuery(TEST_SERVICE_URL, TEST_SCHEMA_NAME,
					TEST_ADQL_QUERY);
			System.out.println("6.2 sendQuery(\"" + TEST_SERVICE_URL + "\", \""
					+ TEST_SCHEMA_NAME + "\", \"" + TEST_ADQL_QUERY + "\")\n\t"
					+ Debug.toJson(granules2));

		} catch (CantGetVOTableException | VOResourceException e) {
			e.printStackTrace();
		}
	}
}