/* * 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.votable; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.SwingUtilities; import com.google.gson.Gson; import eu.omp.irap.vespa.epntapclient.votable.controller.VOTableController; import eu.omp.irap.vespa.epntapclient.votable.controller.VOTableException; /** * Simple class to have a main function to display a voTable from a XML file. * * @author N. Jourdane */ public class VOTableApp { /** The logger for the class VOTableApp. */ static final Logger logger = Logger.getLogger(VOTableApp.class.getName()); /** Private constructor to hide the implicit public one. */ private VOTableApp() { } /** * Main function to start the application as standalone. * *
	 * **Usage 1**: `VOtableApp pathToVOTable`
	 * Display the VOTable stored in the specified XML file.
	 * - `pathToVOTable`: The path to an XML file representing a VOtable;
	 *
	 * **Usage 2**: `VOtableApp targetURL type language query`
	 * Display the VOTable resulting the service or registry request.
	 * - `targetURL`: The URL of the service or registry to ask, ie `http://cdpp-epntap.cesr.fr`;
	 * - `language`: The language of the query, ie `ADQL`;
	 * - `query`: The query in the specified language in double quotes, ie. `"SELECT * FROM amdadb.epn_core"`
	 * 
* * @param args The program arguments */ public static void main(final String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // TODO: Add option to export to CSV and HTML in CLI. VOTableController voTableControl; VOTableApp.logger .info("Lauching VOTable app with arguments:\n " + new Gson().toJson(args)); if (args.length == 1) { try { voTableControl = new VOTableController(args[0]); } catch (VOTableException e) { System.console().writer().println("Error: " + e.getMessage()); VOTableApp.logger.log(Level.WARNING, e.getMessage(), e); return; } } else if (args.length == 3) { voTableControl = new VOTableController(args[0], args[1], args[2]); } else { System.console().writer().println("Usage: VOtableApp path/to/VOTable.xml\n" + "OR: VOtableApp http://url.to.service/or/registry type language \"YOUR QUERY\""); return; } JFrame frame = new JFrame(args[0]); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(voTableControl.getView()); frame.setVisible(true); frame.setSize(800, 600); frame.setLocationRelativeTo(null); } }); } }