/** * Copyright 2014 Comcast Cable Communications Management, LLC * * This file is part of CATS. * * CATS 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. * * CATS 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 CATS. If not, see <http://www.gnu.org/licenses/>. */ package com.comcast.cats.vision; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import java.util.Properties; import org.apache.log4j.Logger; import org.jdesktop.application.Application; import org.jdesktop.application.SingleFrameApplication; import org.springframework.context.ApplicationContext; import com.comcast.cats.CatsFramework; import com.comcast.cats.domain.configuration.CatsProperties; import com.comcast.cats.vision.configuration.CatsVisionApplicationContext; import com.comcast.cats.vision.configuration.LogConfiguration; import com.comcast.cats.vision.util.CATSVisionLoadingDialog; /** * The main class of the application. */ public class CATSVisionApplication extends SingleFrameApplication { static Logger logger; Properties props = new Properties(); protected ApplicationContext context; /** * Pull out the command line arguments prior to loading the form. Properties * are being used so that they can be written out to disk. * * @param args */ @Override protected void initialize( String[] args ) { Options options = new Options(); options.addOption( "s", "server", true, "CATS server URL" ); options.addOption( "m", "mac", true, "MAC id of Settop" ); String arg; CommandLineParser parser = new PosixParser(); try { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp( "Command Line Arguments", options ); CommandLine cmd = parser.parse( options, args ); for ( Option opt : cmd.getOptions() ) { switch ( opt.getLongOpt() ) { case "server": arg = opt.getValue(); System.setProperty( CatsProperties.SERVER_URL_PROPERTY, arg ); break; case "mac": arg = opt.getValue(); System.setProperty( CatsProperties.SETTOP_DEFAULT_PROPERTY, arg ); break; default: arg = opt.getValue(); } } } catch ( ParseException e ) { logger.error( "Command line argument parsing error" ); e.printStackTrace(); } // Time to grab our ApplicationContext. setupApplicationContext(); /* * Now that we have CATS_HOME established, let's setup our logging for * CATS Vision. */ LogConfiguration logConfiguration = new LogConfiguration(); logConfiguration.configureLogging(); logger = Logger.getLogger( CATSVisionApplication.class ); } protected void setupApplicationContext() { CatsFramework framework = new CatsFramework( new CatsVisionApplicationContext() ); context = framework.getContext(); } /** * At startup create and show the main frame of the application. */ @Override protected void startup() { CatsVisionController catsVisionController = context.getBean( CatsVisionController.class ); CATSVisionView catsVisionView = new CATSVisionView( this ); catsVisionView.setAuthToken( catsVisionController.getAuthToken() ); catsVisionController.setCatsVisionView( catsVisionView ); catsVisionController.addCatsVisionViewListeners(); catsVisionController.addTabs(); catsVisionController.fillConfigDataTables(); show( catsVisionView ); } /** * This method is to initialize the specified window by injecting resources. * Windows shown in our application come fully initialized from the GUI * builder, so this additional configuration is not needed. */ @Override protected void configureWindow( java.awt.Window root ) { } /** * A convenient static getter for the application instance. * * @return the instance of DesktopApplication1 */ public static CATSVisionApplication getApplication() { return Application.getInstance( CATSVisionApplication.class ); } /** * Main method launching the application. */ public static void main( String[] args ) { CATSVisionLoadingDialog.showDialog(); launch( CATSVisionApplication.class, args ); } }