diff -r b685c59de105 -r fe49e33862e2 themeinstaller/source/src/com/nokia/tools/themeinstaller/localisation/Localisation.java --- a/themeinstaller/source/src/com/nokia/tools/themeinstaller/localisation/Localisation.java Thu Aug 19 09:43:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +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: This class is responsible for providing the enhanced - * localisation services. - * -*/ - -package com.nokia.tools.themeinstaller.localisation; - -import java.io.File; -import java.io.IOException; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Observable; -import java.util.Observer; -import java.util.Vector; - -import com.nokia.tools.themeinstaller.defrep.DefinitionRepository; -import com.nokia.tools.themeinstaller.defrep.operations.FileOperationEvent; -import com.nokia.tools.themeinstaller.installationmanager.Lock; - -/** - * This class is responsible for providing the enhanced localisation services. - */ -public class Localisation implements ILocalisation - { - - // The filename for temporary dtd file. - private static String COMPOSED_DTD_FILE = "composed"; - - // The extension for dtd file's filename. - private static String DTD_FILE_EXTENSION = ".dtd"; - - // Localisation settings of the theme - private Settings iSettings; - - // File operation observer for copy operations - private Observer iCopyObserver; - - // Lock for waiting the copy operation completion - private Lock iCopyLock; - - // Stored file operation event - private FileOperationEvent iCopyEvent; - - // Definition Repository - private DefinitionRepository iDefRep; - - /** - * Constructor. - * @param aSettings Localisation settings of a theme - */ - public Localisation( Settings aSettings ) - { - iSettings = aSettings; - iDefRep = DefinitionRepository.getInstance(); - iCopyLock = new Lock(); - iCopyObserver = new Observer() - { - public void update( Observable aFileOperation, Object aEvent ) - { - // Store the event - iCopyEvent = ( FileOperationEvent ) aEvent; - // Open the lock - iCopyLock.unLock(); - } - }; - } - - /* (non-Javadoc) - * @see com.nokia.tools.themeinstaller.localisation.ILocalisation#getSettings() - */ - public Settings getSettings() - { - return iSettings; - } - - /* (non-Javadoc) - * @see com.nokia.tools.themeinstaller.localisation.ILocalisation#findDTD() - */ - public File composeDTD( String aFileName, int aLanguage ) throws IOException - { - // Create a temp dtd file - File composed = File.createTempFile( - COMPOSED_DTD_FILE, DTD_FILE_EXTENSION ); - composed.deleteOnExit(); - - // Copy the main dtd contents to the temp dtd - copyDTDContents( findDTD( aFileName ), composed, false ); - - // Loc settings: include settings - Enumeration includes = iSettings.getIncludes().elements(); - IncludeSetting incl = null; - Enumeration inclEntities = null; - File inclFile = null; - - // Variables for localisation reading/writing - String entity = null; - String locString = null; - String filename = null; - Hashtable entities = new Hashtable(); - Integer[] formatArgs = { new Integer( aLanguage ) }; - - // Process all include element - while( includes.hasMoreElements() ) - { - incl = ( IncludeSetting )includes.nextElement(); - - filename = String.format( incl.getFile(), formatArgs ); - - // Find the DTD to include from - inclFile = FileSearch.findFile( incl.getSearchTree(), filename, true ); - - // Include entities to the composed dtd file - if( incl.isIncludeAll() ) - { - // Append the whole dtd to include to the composed one - copyDTDContents( inclFile, composed, true ); - } - else - { - // Read the entities to include - inclEntities = incl.getEntities().elements(); - while( inclEntities.hasMoreElements() ) - { - entity = ( String )inclEntities.nextElement(); - locString = DTDReader.readEntity( inclFile, entity ); - entities.put( entity, locString ); - } - } - } - - // Create and return a temporary DTD file being composed - return DTDComposer.writeEntitiesToDtd( composed, entities, true ); - } - - /* (non-Javadoc) - * @see com.nokia.tools.themeinstaller.localisation.ILocalisation#findDTD(java.lang.String) - */ - public File findDTD( String aFileName ) throws IOException - { - // Use the file search to find the dtd file - Vector searchTree = iSettings.getSearchTree(); - return FileSearch.findFile( searchTree, aFileName, true ); - } - - /** - * Uses Definition Repository to copy DTD file contents to another DTD file. - * The method is synchronous and waits for the operation completion. - * @param aSource Source file - * @param aDestination Destination file - * @param aAppend Append to the destination file if it already exists - * @throws IOException if reading/writing from/to a DTD file fails - */ - private void copyDTDContents( File aSource, File aDestination, boolean aAppend ) - throws IOException - { - iDefRep.copy( aSource, aDestination, aAppend, iCopyObserver ); - iCopyLock.lock(); - - if( iCopyEvent.getErrorCode() != FileOperationEvent.OPERATION_SUCCESSFUL ) - { - throw new IOException( "Localisation: DTD contents copy failed: " + - iCopyEvent.getErrorCode() + ", File: " + - iCopyEvent.getFile().getPath() ); - } - } - - }