diff -r a151135b0cf9 -r aa2539c91954 tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/project/SortedProperties.java --- a/tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/project/SortedProperties.java Wed Sep 29 17:45:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,198 +0,0 @@ -/* -* Copyright (c) 2008-2010 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: -* -* Sorted properties -* -*/ -package com.nokia.tracecompiler.engine.project; - -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.util.Collections; -import java.util.Enumeration; -import java.util.Properties; -import java.util.Vector; - -import com.nokia.tracecompiler.engine.TraceCompilerEngineGlobals; - -/** - * Sorted properties - * - */ -public final class SortedProperties extends Properties { - - /** - * UID - */ - private static final long serialVersionUID = 746540919659257261L; - - /* - * (non-Javadoc) - * - * @see java.util.Hashtable#keys() - */ - @Override - @SuppressWarnings("unchecked") - public synchronized Enumeration keys() { - Enumeration keysEnum = super.keys(); - Vector keyList = new Vector(); - while (keysEnum.hasMoreElements()) { - keyList.add(keysEnum.nextElement()); - } - Collections.sort(keyList); - return keyList.elements(); - } - - /* - * (non-Javadoc) - * - * @see java.util.Properties#store(java.io.OutputStream, java.lang.String) - */ - @Override - public synchronized void store(OutputStream out, String comments) - throws IOException { - BufferedWriter awriter; - awriter = new BufferedWriter(new OutputStreamWriter(out, "8859_1")); //$NON-NLS-1$ - String licence = TraceCompilerEngineGlobals.getDefaultLicence(false); - if (licence != null) { - out.write(licence.getBytes()); - } - if (comments != null) - writeln(awriter, "#" + comments); //$NON-NLS-1$ - - for (Enumeration e = keys(); e.hasMoreElements();) { - String key = (String) e.nextElement(); - String val = (String) get(key); - key = saveConvert(key, true); - - /* - * No need to escape embedded and trailing spaces for value, hence - * pass false to flag. - */ - val = saveConvert(val, false); - writeln(awriter, key + "=" + val); //$NON-NLS-1$ - } - awriter.flush(); - } - - /** - * Converts unicodes to encoded \uxxxx and escapes special characters - * with a preceding slash - * - * @param theString - * the string to be convert - * @param escapeSpace - * the escape space flag - * @return the coverted string - */ - private String saveConvert(String theString, boolean escapeSpace) { // CodForChk_Dis_ComplexFunc - int len = theString.length(); - int bufLen = len * 2; // CodForChk_Dis_Magic - if (bufLen < 0) { - bufLen = Integer.MAX_VALUE; - } - StringBuffer outBuffer = new StringBuffer(bufLen); - - for (int x = 0; x < len; x++) { - char aChar = theString.charAt(x); - // Handle common case first, selecting largest block that - // avoids the specials below - if ((aChar > 61) && (aChar < 127)) { // CodForChk_Dis_Magic - if (aChar == '\\') { - outBuffer.append('\\'); - outBuffer.append('\\'); - continue; - } - outBuffer.append(aChar); - continue; - } - switch (aChar) { - case ' ': - if (x == 0 || escapeSpace) - outBuffer.append('\\'); - outBuffer.append(' '); - break; - case '\t': - outBuffer.append('\\'); - outBuffer.append('t'); - break; - case '\n': - outBuffer.append('\\'); - outBuffer.append('n'); - break; - case '\r': - outBuffer.append('\\'); - outBuffer.append('r'); - break; - case '\f': - outBuffer.append('\\'); - outBuffer.append('f'); - break; - case '=': // Fall through - case ':': // Fall through - case '#': // Fall through - case '!': - outBuffer.append('\\'); - outBuffer.append(aChar); - break; - default: - if ((aChar < 0x0020) || (aChar > 0x007e)) { // CodForChk_Dis_Magic - outBuffer.append('\\'); - outBuffer.append('u'); - outBuffer.append(toHex((aChar >> 12) & 0xF)); // CodForChk_Dis_Magic - outBuffer.append(toHex((aChar >> 8) & 0xF)); // CodForChk_Dis_Magic - outBuffer.append(toHex((aChar >> 4) & 0xF)); // CodForChk_Dis_Magic - outBuffer.append(toHex(aChar & 0xF)); // CodForChk_Dis_Magic - } else { - outBuffer.append(aChar); - } - } - } - return outBuffer.toString(); - } - - /** - * Convert a nibble to a hex character - * - * @param nibble - * the nibble to convert - * @return the hex character - */ - private static char toHex(int nibble) { - return hexDigit[(nibble & 0xF)]; // CodForChk_Dis_Magic - } - - /** - * A table of hex digits - */ - private static final char[] hexDigit = { '0', '1', '2', '3', '4', '5', '6', - '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; - - /** - * Write line - * - * @param bw - * the buffered writer that used to write - * @param s - * the string what to write - * @throws IOException - */ - private static void writeln(BufferedWriter bw, String s) throws IOException { - bw.write(s); - bw.newLine(); - } -}