--- a/themeinstaller/source/src/com/nokia/tools/themeinstaller/defrep/DefinitionRepository.java Thu Aug 19 09:43:47 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +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: Definition Repository implementation
- *
- */
-
-package com.nokia.tools.themeinstaller.defrep;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Observer;
-
-import com.nokia.tools.themeinstaller.odtconverter.ConverterProperties;
-import com.nokia.tools.themeinstaller.odtconverter.ODTHeader;
-import com.nokia.tools.themeinstaller.odtconverter.ThemeStatusResolver;
-import com.nokia.tools.themeinstaller.defrep.operations.CopyOperation;
-import com.nokia.tools.themeinstaller.defrep.operations.FileOperation;
-import com.nokia.tools.themeinstaller.defrep.operations.StoreOperation;
-
-/**
- * Definition repository class.
- */
-public class DefinitionRepository implements IDefinitionRepository {
-
- // CONSTANTS
- // Property keys
- private static final String THEMES_ROOT_ROM = "themes_datacage_rom";
- private static final String THEMES_ROOT_USER_DISC = "themes_datacage_user_disc";
- private static final String ODT_FILE_EXT_FORMAT = "odt_file_ext_format";
- private static final String ODT_RESOURCES_FOLDER = "odt_resources_folder";
- private static final String ODT_LANG_RESOURCES_FOLDER = "odt_lang_resources_folder";
-
- // Singleton instance
- private static DefinitionRepository sInstance = null;
-
- /**
- * Definition repository private constructor.
- */
- private DefinitionRepository() {
- }
-
- /**
- * Get a Definition Repository instance (singleton).
- *
- * @return Definition Repository instance
- */
- public static DefinitionRepository getInstance() {
- if (sInstance == null) {
- sInstance = new DefinitionRepository();
- }
-
- return sInstance;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * com.nokia.tools.odtconverter.defrep.IDefinitionRepository#copy(java.lang
- * .String, java.util.Observer)
- */
- public void copy(File aSource, File aDestination, boolean aAppend,
- Observer aListener) {
- CopyOperation operation = new CopyOperation(aSource, aDestination,
- aAppend);
- operation.addObserver(aListener);
- performOperation(operation);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * com.nokia.tools.odtconverter.defrep.IDefinitionRepository#store(java.
- * lang.String, java.io.InputStream, java.util.Observer)
- */
- public void store(File aDestination, InputStream aStream, Observer aListener) {
- StoreOperation operation = new StoreOperation(aDestination, aStream);
- operation.addObserver(aListener);
- performOperation(operation);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * com.nokia.tools.odtconverter.defrep.IDefinitionRepository#storeODT(java
- * .io.File, com.nokia.tools.odtconverter.ODTDocument, java.util.Observer)
- */
- public void storeODT(File aDestination, ODTHeader aHeader,
- InputStream aStream, Observer aListener) throws IOException {
- File destination = new File(createODTPath(aDestination, aHeader));
- store(destination, aStream, aListener);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * com.nokia.tools.odtconverter.defrep.IDefinitionRepository#copyResource
- * (java.io.File, java.io.File, com.nokia.tools.odtconverter.ODTHeader,
- * java.util.Observer)
- */
- public void copyResource(File aSource, File aDestination,
- ODTHeader aHeader, Observer aListener) throws IOException {
- ConverterProperties properties = ConverterProperties.getInstance();
- StringBuffer odtPath = combineDirectory(aDestination, aHeader,
- properties);
-
- // Get the language to resolve the destination directory
- Integer language = (Integer) aHeader.get(ODTHeader.Language);
- if (language != null) {
- // Location for language specific resources
- String template = properties.getProperty(ODT_LANG_RESOURCES_FOLDER);
-
- Integer[] formatArguments = { language };
- odtPath.append(String.format(template, formatArguments));
- } else {
- // Location for language independent resources
- odtPath.append(properties.get(ODT_RESOURCES_FOLDER));
- }
-
- odtPath.append(aSource.getName());
- File destFile = new File(odtPath.toString());
- copy(aSource, destFile, false, aListener);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * com.nokia.tools.odtconverter.defrep.IDefinitionRepository#createODTPath
- * (java.lang.String, com.nokia.tools.odtconverter.ODTHeader,
- * com.nokia.tools.odtconverter.ConverterProperties)
- */
- public String createODTPath(File aDestination, ODTHeader aHeader) {
- // Get themes installation directory from the properties
- ConverterProperties properties = ConverterProperties.getInstance();
-
- StringBuffer odtPath = combineDirectory(aDestination, aHeader,
- properties);
-
- // Append ODT file name
- odtPath.append(aHeader.get(ODTHeader.ThemeShortName));
-
- // Append extension according to the language
- String format = properties.getProperty(ODT_FILE_EXT_FORMAT);
- Integer[] formatArguments = { (Integer) aHeader.get(ODTHeader.Language) };
- odtPath.append(String.format(format, formatArguments));
-
- return odtPath.toString();
- }
-
- /**
- * Combine the installation directory structure. According to the Xuikon,
- * the destination directory for locked themes is ROM location. Other themes
- * are stored to the user disk. Rest of the path is determined by theme
- * details: Application UID, Provider UID, Theme UID and Theme Version.
- *
- * @param aDestination
- * destination root directory, usually the epoc root
- * @param aHeader
- * ODT file header
- * @param aProperties
- * converter properties instance
- * @return complete destination path name for the installed theme
- */
- private StringBuffer combineDirectory(File aDestination, ODTHeader aHeader,
- ConverterProperties aProperties) {
- StringBuffer odtPath = new StringBuffer();
- odtPath.append(aDestination.getPath());
-
- // Add file separator only if the destination directory does not
- // already end with the separator
- if (!aDestination.getPath().endsWith(File.separator)) {
- odtPath.append(File.separator);
- }
-
- // if EXnThemeStatusLicenceeDefault flag is set,
- // theme is installed to ROM (z:\) otherwise to user disc (c:\)
- if ((((Integer) aHeader.get(ODTHeader.Flags)).intValue() & ThemeStatusResolver.E_XN_THEME_STATUS_LICENCEE_DEFAULT) != 0) {
- odtPath.append(aProperties.getProperty(THEMES_ROOT_ROM));
- } else {
- odtPath.append(aProperties.getProperty(THEMES_ROOT_USER_DISC));
- }
-
- //Bypass adding appuid etc, if we don't have these properties
- if (aHeader.get(ODTHeader.ApplicationUID) != null && aHeader.get(ODTHeader.ProviderUID)!= null
- && aHeader.get(ODTHeader.ThemeUID) != null && aHeader.get(ODTHeader.ThemeVersion) != null){
- // Append Application UID
- odtPath.append(((Long) aHeader.get(ODTHeader.ApplicationUID))
- .longValue());
-
- odtPath.append(File.separator);
-
- // Append Provider UID
- odtPath.append(((Long) aHeader.get(ODTHeader.ProviderUID))
- .longValue());
- odtPath.append(File.separator);
-
- // Append Theme UID
- odtPath
- .append(((Long) aHeader.get(ODTHeader.ThemeUID))
- .longValue());
- odtPath.append(File.separator);
-
- // Append Theme version
- odtPath.append(aHeader.get(ODTHeader.ThemeVersion));
- odtPath.append(File.separator);
- }
- return odtPath;
- }
-
- /**
- * Start a file operation in a new thread.
- *
- * @param aOperation
- * The operation to start.
- */
- private void performOperation(FileOperation aOperation) {
- Thread thread = new Thread(aOperation);
- thread.start();
- }
-
-}