diff -r b685c59de105 -r fe49e33862e2 themeinstaller/source/src/com/nokia/tools/themeinstaller/installationmanager/LanguageInstaller.java --- a/themeinstaller/source/src/com/nokia/tools/themeinstaller/installationmanager/LanguageInstaller.java Thu Aug 19 09:43:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +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: Uses ODTConverter for parsing the source files. - * -*/ - - -package com.nokia.tools.themeinstaller.installationmanager; - -import java.io.File; -import java.io.IOException; -import java.util.Observable; -import java.util.Observer; -import java.util.Vector; - -import com.nokia.tools.themeinstaller.localisation.Localisation; -import com.nokia.tools.themeinstaller.localisation.LocalisationStore; -import com.nokia.tools.themeinstaller.odtconverter.IParseOperationListener; -import com.nokia.tools.themeinstaller.odtconverter.ODTConverter; -import com.nokia.tools.themeinstaller.odtconverter.ODTDocument; -import com.nokia.tools.themeinstaller.odtconverter.ODTHeader; -import com.nokia.tools.themeinstaller.odtconverter.ODTResource; - -/** - * Language Installer uses the ODTConverter for parsing the source files of - * a language variant. - */ -public class LanguageInstaller - extends Observable implements IParseOperationListener - { - - // ODT Document - private ODTDocument iODTDocument; - - // ODT Converter - private ODTConverter iConverter; - - // Theme manifest - private IThemeManifest iManifest; - - // Language variant - private LanguageSpecificData iLanguage; - - // Resource files - private Vector iResources; - - // Resource installer - private IResourceInstaller iResourceInstaller; - - // Localisation settings file - private File iLocSettings; - - /** - * Constructor. - * @param aListener Listener for the parsing operation conversion - * @param aManifest Theme manifest - * @param aLanguage Language variant to to install - * @param - */ - public LanguageInstaller( Observer aListener, - IThemeManifest aManifest, - LanguageSpecificData aLanguage, - File aLocSettings, - IResourceInstaller aResourceInstaller ) - { - iODTDocument = new ODTDocument(); - iConverter = new ODTConverter(); - iConverter.addListener( this ); - iManifest = aManifest; - iLanguage = aLanguage; - iLocSettings = aLocSettings; - iResources = new Vector(); - iResourceInstaller = aResourceInstaller; - addObserver( aListener ); - } - - /** - * Add ODT Resources. This method can be used i.e. for adding language - * independent ODT Resources. - * @param aODTResources a list of resources to add - */ - public void addResources( Vector aResources ) - { - iResources.addAll( aResources ); - } - - /** - * Start the installation process of the language. - * @throws IOException if parse operation fails - */ - public void install() throws IOException - { - ODTHeader header = createHeader( iManifest, iLanguage ); - iODTDocument.setODTHeader( header ); - - // Install and add language specific resources - Vector langResources = iLanguage.getResources(); - Vector odtLangResources = iResourceInstaller - .installResources( langResources, header ); - odtLangResources.addAll( iResources ); - - // Add ODT file as resource - ODTResource langODTResource = iResourceInstaller - .createODTResource( header, iManifest.getNameSpace() ); - odtLangResources.add( langODTResource ); - iODTDocument.setODTResources( odtLangResources ); - - String dataDir = iManifest.getDataDir(); - String dtdName = null; - File dtdFile = null; - - // Determine the DTD file to use - if( iLanguage.getDTDFile() != null ) - { - // Language specific DTD - dtdName = iLanguage.getDTDFile(); - } - else if( iManifest.getDTDFile() != null ) - { - // Language independent DTD - dtdName = iManifest.getDTDFile(); - } - - // Check if enhanced localisation support is enabled - if( iLocSettings != null && dtdName != null ) - { - // Use enhanced localisation: Find and compose the DTD file - LocalisationStore ls = LocalisationStore.getInstance( iLocSettings ); - Localisation l = ls.getLocalisation( - iManifest.getApplicationUid().longValue(), - iManifest.getProviderUid().longValue(), - iManifest.getThemeUid().longValue() ); - dtdFile = l.composeDTD( dtdName, iLanguage.getLanguageId().intValue() ); - } - else if( dtdName != null ) - { - // Use the standard localisation - dtdFile = new File( dataDir + dtdName ); - } - - // Add XML to the converter - if( dtdFile != null ) - { - // External DTD file found - iConverter.addXML( dataDir + iManifest.getXMLFile(), - dtdFile.getPath() ); - } - else - { - // Do not use external DTD - iConverter.addXML( dataDir + iManifest.getXMLFile() ); - } - - // Add CSS to the converter, if available - if( iLanguage.getCSSFile() != null ) - { - // Use language specific CSS - iConverter.addCSS( dataDir + iLanguage.getCSSFile() ); - } - else if( iManifest.getCSSFile() != null ) - { - // Use theme specific CSS - iConverter.addCSS( dataDir + iManifest.getCSSFile() ); - } - - // Start the installation process - try - { - iConverter.parse(); - } - catch ( Exception e ) - { - throw new IllegalArgumentException( "Failed to read resource files" ); - } - } - - /** - * Creates ODTHeader from manifest data - * @param aManifest Theme manifest - * @param aLanguage Language. If language is null, no language - * specific data is processed. - * @return new ODT Header - */ - public static ODTHeader createHeader( IThemeManifest aManifest, - LanguageSpecificData aLanguage ) - { - ODTHeader header = new ODTHeader(); - if(null!=aManifest.getApplicationUid()) - header.put( ODTHeader.ApplicationUID, aManifest.getApplicationUid() ); - - if(null!=aManifest.getProviderUid()) - header.put( ODTHeader.ProviderUID, aManifest.getProviderUid() ); - - if(null!=aManifest.getThemeUid()) - header.put( ODTHeader.ThemeUID, aManifest.getThemeUid() ); - - if(null!=aManifest.getProviderName()) - header.put( ODTHeader.ProviderName, aManifest.getProviderName() ); - - if(null!=aManifest.getThemeFullName()) - header.put( ODTHeader.ThemeFullName, aManifest.getThemeFullName() ); - - if(null!=aManifest.getThemeShortName()) - header.put( ODTHeader.ThemeShortName, aManifest.getThemeShortName() ); - - if(null!=aManifest.getThemeVersion()) - header.put( ODTHeader.ThemeVersion, aManifest.getThemeVersion() ); - - if(null!=aManifest.getScreenSizeX()) - header.put( ODTHeader.ScreenSizeX, aManifest.getScreenSizeX() ); - - if(null!=aManifest.getScreenSizeY()) - header.put( ODTHeader.ScreenSizeY, aManifest.getScreenSizeY() ); - - if(null!=aManifest.getThemeStatus()) - header.put( ODTHeader.Flags, aManifest.getThemeStatus() ); - - // Set language specific data to the header - if( aLanguage != null ) - { - // Mandatory fields - header.put( ODTHeader.Language, aLanguage.getLanguageId() ); - - // Optional fields - String locFullName = aLanguage.getThemeFullName(); - if( locFullName != null ) - { - header.put( ODTHeader.ThemeFullName, locFullName ); - } - } - - return header; - } - - /* (non-Javadoc) - * @see com.nokia.tools.odtconverter.IParseOperationListener#OperationCompleted(int, java.lang.String) - */ - public void parseOperationCompleted( int aErr, String aReason ) - { - iODTDocument.setDOMDocument( iConverter.getDOMDocument() ); - super.setChanged(); - super.notifyObservers( - new LanguageInstallEvent( iODTDocument, aErr, aReason ) ); - } - - }