diff -r b4183b61e0c7 -r 58764cb313d3 themeinstaller/source/src/com/nokia/tools/themeinstaller/ui/ThemeInstaller.java --- a/themeinstaller/source/src/com/nokia/tools/themeinstaller/ui/ThemeInstaller.java Tue Jan 26 13:19:36 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,313 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Standalone UI - * -*/ - - -package com.nokia.tools.themeinstaller.ui; - -import java.io.File; -import java.io.IOException; -import com.nokia.tools.themeinstaller.installationmanager.IInstallationListener; -import com.nokia.tools.themeinstaller.installationmanager.InstallationManager; -import com.nokia.tools.themeinstaller.installationmanager.InstallationParameters; -import com.nokia.tools.themeinstaller.installationmanager.Lock; -import com.nokia.tools.themeinstaller.installationmanager.ProgressEvent; -import com.nokia.tools.themeinstaller.logger.LogWriter; - -public class ThemeInstaller - { - - // CONSTANTS - // Error message prefix - private final static String ERROR_PREFIX = "*** ERROR: "; - - // Usage instructions - private final static String USAGE = - "\nUSAGE: ThemeInstaller manifest_file [destination_dir] [-option_1] [-option_n]\n" + - "\nOptions:" + - "\n -loc: Enable localisation enhancements" + - "\n -prop: Use external properties file instead of the default one" + - "\n -log: Path for log file" + - "\n -log If no path given, the log is printed to console\n"; - //"\n -fixDTD Use if tool should attempt to fix errors in dtd\n"; - - - // Command line options - private final static String OPTION_PREFIX = "-"; - private final static String LOC_OPTION = "loc:"; - private final static String PROP_OPTION = "prop:"; - private final static String LOG_PATH_OPTION = "log:"; - private final static String LOG_PATH_OPTION_NO_PATH = "log"; - private final static String FIX_INVALID_DTD_PARAMS = "fixDTD"; - - // Lock object for waiting the install to complete - private Lock iLock; - - // Manifest file - protected String iManifest; - - // Destination directory - protected String iDestination; - - // Localisation settings file - protected String iLocSettings; - - // External properties file - protected String iPropertiesFile; - - // Logging directory - protected String iLogDir; - - /** - * Application entry point - * @param aArgs application arguments - */ - public static void main( String[] aArgs ) - { - ThemeInstaller instance = new ThemeInstaller(); - instance.install( aArgs ); - } - - /** - * Constructor. - */ - protected ThemeInstaller() - { - iLock = new Lock(); - } - - /** - * Starts the installation process. Parses the arguments before - * staring the installation. - * @param aArgs Application arguments - */ - protected void install( String[] aArgs ) - { - try - { - parseArgs( aArgs ); - } - catch( IllegalArgumentException iae ) - { - //System.out.println( ERROR_PREFIX + iae.getMessage() ); - System.out.println("ThemeInstaller version 2.0.0"); - System.out.println("Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved"); - System.out.println(""); - System.out.println( USAGE ); - return; - } - catch ( IOException e ) - { - System.out.println( ERROR_PREFIX + e.getMessage() ); - } - - try - { - doInstall(); - } - catch ( Exception e ) - { - String error = ERROR_PREFIX + "Installation failed: " - + e.getMessage(); - if ( !LogWriter.getInstance().inConsoleMode() ) - { - System.out.println( error ); - } - LogWriter.getInstance().logSevere( error ); - } - finally - { - LogWriter.closeInstance(); - } - } - - /** - * Execute the installation - * @param aManifest theme manifest file name - * @param aDestination destination directory - * @throws Exception if installation fails - */ - protected void doInstall() throws Exception - { - InstallationParameters params = new InstallationParameters( - new File( iManifest ), new File( iDestination ) ); - - LogWriter.getInstance().logInfo( "Starting Installer" ); - LogWriter.getInstance().logInfo( "Manifest file : " + iManifest ); - LogWriter.getInstance().logInfo( "Destination directory : " + iDestination ); - - if( iLocSettings != null ) - { - params.setLocSettings( new File( iLocSettings ) ); - LogWriter.getInstance().logInfo( "Settings file : " + params.getLocSettings().getPath() ); - } - if( iPropertiesFile != null ) - { - params.setPropFile( new File ( iPropertiesFile ) ); - LogWriter.getInstance().logInfo( "Properties file : " + params.getPropFile().getPath() ); - } - - IInstallationListener listener = new IInstallationListener() - { - public void installationCompleted( ProgressEvent aEvent ) - { - if( aEvent.getError() == IInstallationListener.NO_ERROR ) - { - if ( !LogWriter.getInstance().inConsoleMode() ) - { - System.out.println( "Installation done." ); - } - LogWriter.getInstance().logInfo( "Installation done" ); - } - else - { - String error = ERROR_PREFIX - + "Installation failed, error: " - + aEvent.getError() + ", " - + aEvent.getMessage(); - if ( !LogWriter.getInstance().inConsoleMode() ) - { - System.out.println( error ); - } - LogWriter.getInstance().logSevere( error ); - } - - // release lock - iLock.unLock(); - } - - public void installationProgress( ProgressEvent aEvent ) - { - if( aEvent.getState() == IInstallationListener.STATE_PARSED ) - { - String message = "Resource files parsing done,"; - if( aEvent.getError() != IInstallationListener.NO_ERROR ) { - message += " error: " + aEvent.getError() + ","; - } - message += " theme: " - + aEvent.getName() + ", language: " - + aEvent.getLanguage(); - - - if ( !LogWriter.getInstance().inConsoleMode() ) - { - System.out.println( message ); - } - LogWriter.getInstance().logInfo( message ); - } - else if ( aEvent.getState() == IInstallationListener.STATE_WRITED ) - { - String message = "Installed ODT: " - + aEvent.getFileName(); - if ( !LogWriter.getInstance().inConsoleMode() ) - { - System.out.println( message ); - } - LogWriter.getInstance().logInfo( message ); - } - } - }; - - InstallationManager i = new InstallationManager( params, listener ); - i.startInstallation(); - - // wait for finalization - iLock.lock(); - } - - /** - * Parse command line arguments. - * @param aArgs Command line arguments - * @throws IllegalArgumentException if mandatory command line parameters - * are not defined - * @throws IOException Signals that an I/O exception has occurred. - */ - protected void parseArgs( String[] aArgs ) throws IllegalArgumentException, - IOException - { - // Print usage information if mandatory arguments were not specified - if( aArgs.length == 0 ) - { - throw new IllegalArgumentException( "No command line arguments" ); - } - - // Resolve manifest file name and destination directory - iManifest = aArgs[ 0 ]; - if( aArgs.length > 1 && - !aArgs[ 1 ].startsWith( OPTION_PREFIX ) ) - { - iDestination = aArgs[ 1 ]; - } - else - { - // If no destination directory is specified, use the current dir - iDestination = System.getProperty( "user.dir" ); - } - - // Parse the options - for( int i = 1; i < aArgs.length; i++ ) - { - //fix DTD - String opt = OPTION_PREFIX + FIX_INVALID_DTD_PARAMS; - if ( aArgs[ i ].toLowerCase().startsWith( opt.toLowerCase() )) { - InstallationManager.setFixDTD(true); - } - - // Localisation settings - opt = OPTION_PREFIX + LOC_OPTION; - if( aArgs[ i ].startsWith( opt ) ) - { - iLocSettings = aArgs[ i ].substring( opt.length() ); - if( iLocSettings.length() == 0 ) - { - throw new IllegalArgumentException( "No localisation settings file defined with the option" ); - } - } - // External properties file - opt = OPTION_PREFIX + PROP_OPTION; - if( aArgs[ i ].startsWith( opt ) ) - { - iPropertiesFile = aArgs[ i ].substring( opt.length() ); - if( iPropertiesFile.length() == 0 ) - { - throw new IllegalArgumentException( "No external properties file name defined with the option" ); - } - } - // Logging without path (option "-log") - opt = OPTION_PREFIX + LOG_PATH_OPTION_NO_PATH; - if ( aArgs[ i ].equals( opt ) ) - { - // No logging file defined - LogWriter.initialize( null ); - } - // Logging with path or with option "-log:" - opt = OPTION_PREFIX + LOG_PATH_OPTION; - if ( aArgs[ i ].startsWith( opt ) ) - { - iLogDir = aArgs[ i ].substring( opt.length() ); - if ( iLogDir.length() == 0 ) - { - // No logging file defined - LogWriter.initialize( null ); - } - else - { - LogWriter.initialize( new File( iLogDir ) ); - } - } - } - } - }