javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/Args.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/Args.java Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,209 @@
+/*
+* Copyright (c) 2008 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:
+*
+*/
+
+
+package com.nokia.mj.impl.installer.utils;
+
+import com.nokia.mj.impl.installer.utils.InstallerException;
+import com.nokia.mj.impl.installer.utils.Log;
+import com.nokia.mj.impl.utils.Tokenizer;
+
+import java.util.Hashtable;
+
+/**
+ * Class for handling command line arguments.
+ */
+public class Args
+{
+ private Hashtable iArgs = null;
+
+ public Args(String[] aArgs)
+ {
+ iArgs = new Hashtable();
+ for (int i = 0; i < aArgs.length; i++)
+ {
+ if (aArgs[i].startsWith("-"))
+ {
+ String arg = aArgs[i].substring(1);
+ String value = null;
+ int separator = arg.indexOf("=");
+ if (separator > 0)
+ {
+ value = arg.substring(separator+1);
+ arg = arg.substring(0, separator);
+ }
+ else
+ {
+ value = ""; // Arg is present without value.
+ }
+ //if (i+1 < aArgs.length) {
+ // value = aArgs[i+1];
+ //} else {
+ // value = ""; // Arg is present without value.
+ //}
+ iArgs.put(arg, value);
+ //Log.log("Args: " + arg + "=" + value);
+ }
+ }
+ }
+
+ /**
+ * Returns command line argument with the specified name.
+ * If argument is not found, returns null.
+ */
+ public String get(String aName)
+ {
+ String arg = (String)iArgs.get(aName);
+ if (arg != null)
+ {
+ if (arg.length() == 0)
+ {
+ Log.log("Args: " + aName);
+ }
+ else
+ {
+ Log.log("Args: " + aName + "=" + arg);
+ }
+ }
+ return arg;
+ }
+
+ /**
+ * Returns command line argument with the specified name.
+ * If argument is not found, returns default value.
+ */
+ public String get(String aName, String aDefault)
+ {
+ String arg = get(aName);
+ if (arg == null)
+ {
+ arg = aDefault;
+ if (arg != null)
+ {
+ if (arg.length() == 0)
+ {
+ Log.log("Args: " + aName + " (default)");
+ }
+ else
+ {
+ Log.log("Args: " + aName + "=" + arg + " (default)");
+ }
+ }
+ }
+ return arg;
+ }
+
+ /**
+ * Returns boolean type command line argument with the specified name.
+ * If argument is not found, returns null.
+ */
+ public Boolean getBoolean(String aName)
+ {
+ Boolean arg = null;
+ if (valueContains(aName, "no"))
+ {
+ Log.log("Args: " + aName + " disabled");
+ arg = new Boolean(false);
+ }
+ else if (valueContains(aName, "yes"))
+ {
+ Log.log("Args: " + aName + " enabled");
+ arg = new Boolean(true);
+ }
+ return arg;
+ }
+
+ /**
+ * Returns boolean type command line argument with the specified name.
+ * If argument is not found, returns default value.
+ */
+ public Boolean getBoolean(String aName, Boolean aDefault)
+ {
+ Boolean arg = getBoolean(aName);
+ if (arg == null)
+ {
+ arg = aDefault;
+ }
+ return arg;
+ }
+
+ /**
+ * Returns boolean type command line argument with the specified name.
+ * If argument is not found, returns default value.
+ */
+ public boolean getBoolean(String aName, boolean aDefault)
+ {
+ Boolean arg = getBoolean(aName);
+ if (arg == null)
+ {
+ return aDefault;
+ }
+ return arg.booleanValue();
+ }
+
+ /**
+ * Returns true if command line argument with specified name
+ * exists, and if its value contains the specified value part.
+ * Value parts are separated with commas, for example argument
+ * "-arg=foo,bar" has two value parts.
+ */
+ public boolean valueContains(String aName, String aValuePart)
+ {
+ String value = get(aName);
+ if (value == null || value.length() == 0)
+ {
+ return false;
+ }
+ String[] tokens = Tokenizer.split(value, ",");
+ for (int i = 0; i < tokens.length; i++)
+ {
+ if (tokens[i].equals(aValuePart))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns drive id from given string.
+ */
+ public static int parseDrive(String aDrive) throws InstallerException
+ {
+ int drive = -1;
+ try
+ {
+ drive = Integer.parseInt(aDrive);
+ }
+ catch (NumberFormatException nfe)
+ {
+ // Drive argument is not a number, assume it is a string
+ // of length one indicating drive letter.
+ }
+ if (drive == -1)
+ {
+ if (aDrive.length() != 1)
+ {
+ InstallerException.internalError(
+ "Invalid drive argument: " + aDrive);
+ }
+ drive = aDrive.toLowerCase().charAt(0) - 'a';
+ }
+ Log.log("Parsed drive " + aDrive + " --> " + drive);
+ return drive;
+ }
+}