X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.externaltools/src/net/sourceforge/phpdt/externaltools/internal/registry/ExternalToolMigration.java b/net.sourceforge.phpeclipse.externaltools/src/net/sourceforge/phpdt/externaltools/internal/registry/ExternalToolMigration.java index 3ca3b59..babbcc6 100644 --- a/net.sourceforge.phpeclipse.externaltools/src/net/sourceforge/phpdt/externaltools/internal/registry/ExternalToolMigration.java +++ b/net.sourceforge.phpeclipse.externaltools/src/net/sourceforge/phpdt/externaltools/internal/registry/ExternalToolMigration.java @@ -1,13 +1,13 @@ package net.sourceforge.phpdt.externaltools.internal.registry; /********************************************************************** -Copyright (c) 2002 IBM Corp. and others. All rights reserved. -This file is made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html -� -Contributors: -**********************************************************************/ + Copyright (c) 2002 IBM Corp. and others. All rights reserved. + This file is made available under the terms of the Common Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/cpl-v10.html + � + Contributors: + **********************************************************************/ import java.io.File; import java.io.FileInputStream; @@ -34,70 +34,107 @@ import org.eclipse.ui.WorkbenchException; import org.eclipse.ui.XMLMemento; /** - * Responsible reading an old external tool format and creating - * and migrating it to create a new external tool. + * Responsible reading an old external tool format and creating and migrating it + * to create a new external tool. */ public final class ExternalToolMigration { private static final String SEPERATOR = ";"; //$NON-NLS-1$ + private static final String STATE_FILE_NAME_OLD = "oldexternaltools.xml"; //$NON-NLS-1$ + private static final String STATE_FILE_NAME = "externaltools.xml"; //$NON-NLS-1$ + private static final String TAG_EXTERNALTOOLS = "externaltools"; //$NON-NLS-1$ + private static final String TAG_TOOL = "tool"; //$NON-NLS-1$ + private static final String TAG_ENTRY = "entry"; //$NON-NLS-1$ - //private static final String TAG_KEY = "key"; //$NON-NLS-1$ + + // private static final String TAG_KEY = "key"; //$NON-NLS-1$ private static final String TAG_VALUE = "value"; //$NON-NLS-1$ /* * Ant tags */ - //public static final String RUN_TARGETS_ATTRIBUTE = IExternalToolConstants.TOOL_TYPE_ANT_BUILD + ".runTargets"; //$NON-NLS-1$; - + // public static final String RUN_TARGETS_ATTRIBUTE = + // IExternalToolConstants.TOOL_TYPE_ANT_BUILD + ".runTargets"; + // //$NON-NLS-1$; /* * 2.0 External Tool Tags */ private static final String TAG_TOOL_TYPE = "!{tool_type}"; //$NON-NLS-1$ + private static final String TAG_TOOL_NAME = "!{tool_name}"; //$NON-NLS-1$ + private static final String TAG_TOOL_LOCATION = "!{tool_loc}"; //$NON-NLS-1$ + private static final String TAG_TOOL_ARGUMENTS = "!{tool_args}"; //$NON-NLS-1$ + private static final String TAG_TOOL_DIRECTORY = "!{tool_dir}"; //$NON-NLS-1$ + private static final String TAG_TOOL_REFRESH = "!{tool_refresh}"; //$NON-NLS-1$ + private static final String TAG_TOOL_SHOW_LOG = "!{tool_show_log}"; //$NON-NLS-1$ + private static final String TAG_TOOL_BUILD_TYPES = "!{tool_build_types}"; //$NON-NLS-1$ + private static final String TAG_TOOL_BLOCK = "!{tool_block}"; //$NON-NLS-1$ // Known kind of tools private static final String TOOL_TYPE_PROGRAM = "net.sourceforge.phpdt.externaltools.type.program"; //$NON-NLS-1$ - //private static final String TOOL_TYPE_ANT = "org.eclipse.ui.externaltools.type.ant"; //$NON-NLS-1$ + + // private static final String TOOL_TYPE_ANT = + // "org.eclipse.ui.externaltools.type.ant"; //$NON-NLS-1$ /* * 2.1 External Tool Keys */ private static final String TAG_EXTERNAL_TOOL = "externalTool"; //$NON-NLS-1$ + private static final String TAG_TYPE = "type"; //$NON-NLS-1$ + private static final String TAG_NAME = "name"; //$NON-NLS-1$ + private static final String TAG_LOCATION = "location"; //$NON-NLS-1$ + private static final String TAG_WORK_DIR = "workDirectory"; //$NON-NLS-1$ + private static final String TAG_CAPTURE_OUTPUT = "captureOutput"; //$NON-NLS-1$ + private static final String TAG_SHOW_CONSOLE = "showConsole"; //$NON-NLS-1$ + private static final String TAG_RUN_BKGRND = "runInBackground"; //$NON-NLS-1$ + private static final String TAG_OPEN_PERSP = "openPerspective"; //$NON-NLS-1$ + private static final String TAG_PROMPT_ARGS = "promptForArguments"; //$NON-NLS-1$ + private static final String TAG_SHOW_MENU = "showInMenu"; //$NON-NLS-1$ + private static final String TAG_SAVE_DIRTY = "saveDirtyEditors"; //$NON-NLS-1$ + private static final String TAG_ARGS = "arguments"; //$NON-NLS-1$ + private static final String TAG_REFRESH_SCOPE = "refreshScope"; //$NON-NLS-1$ + private static final String TAG_REFRESH_RECURSIVE = "refreshRecursive"; //$NON-NLS-1$ + private static final String TAG_RUN_BUILD_KINDS = "runForBuildKinds"; //$NON-NLS-1$ + private static final String TAG_EXTRA_ATTR = "extraAttribute"; //$NON-NLS-1$ + private static final String TAG_KEY = "key"; //$NON-NLS-1$ + private static final String TAG_VERSION = "version"; //$NON-NLS-1$ private static final String BUILD_TYPE_SEPARATOR = ","; //$NON-NLS-1$ + private static final String EXTRA_ATTR_SEPARATOR = "="; //$NON-NLS-1$ private static final String VERSION_21 = "2.1"; //$NON-NLS-1$; private static final String TRUE = "true"; //$NON-NLS-1$ + private static final String FALSE = "false"; //$NON-NLS-1$ /** @@ -108,11 +145,10 @@ public final class ExternalToolMigration { } /** - * Loads the external tools from storage and - * adds them to the registry. + * Loads the external tools from storage and adds them to the registry. */ - /*package*/ - // This method is not called. It is left here in case + /* package */ + // This method is not called. It is left here in case // we decide to do tool migration in the future private static void readInOldTools() { readIn20Tools(); @@ -159,35 +195,44 @@ public final class ExternalToolMigration { } catch (FileNotFoundException e) { // Silently ignore this... } catch (IOException e) { - ExternalToolsPlugin.getDefault().log("File I/O error with reading old external tools.", e); + ExternalToolsPlugin.getDefault().log( + "File I/O error with reading old external tools.", e); migrationSuccessful = false; } catch (WorkbenchException e) { - ExternalToolsPlugin.getDefault().getLog().log(e.getStatus()); - System.err.println("Error reading old external tools. See .log file for more details"); + ExternalToolsPlugin.getDefault().getLog().log(e.getStatus()); + System.err + .println("Error reading old external tools. See .log file for more details"); migrationSuccessful = false; } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { - ExternalToolsPlugin.getDefault().log("Unable to close external tool old state reader.", e); + ExternalToolsPlugin.getDefault().log( + "Unable to close external tool old state reader.", + e); } } } if (migrationSuccessful) { if (!file.renameTo(path.append(STATE_FILE_NAME_OLD).toFile())) { - ExternalToolsPlugin.getDefault().log("Unable to rename old external tool state file. Please rename externaltools.xml to oldexternaltools.xml manually.", null); - System.err.println("Unable to rename old external tool state file. Please rename externaltools.xml to oldexternaltools.xml manually."); + ExternalToolsPlugin + .getDefault() + .log( + "Unable to rename old external tool state file. Please rename externaltools.xml to oldexternaltools.xml manually.", + null); + System.err + .println("Unable to rename old external tool state file. Please rename externaltools.xml to oldexternaltools.xml manually."); } } } /** - * Returns a launch configuration working copy from the argument map or - * null if the given map cannot be interpreted as a 2.0 or 2.1 - * branch external tool. The returned working copy will be unsaved and its - * location will be set to the metadata area. + * Returns a launch configuration working copy from the argument map or + * null if the given map cannot be interpreted as a 2.0 or + * 2.1 branch external tool. The returned working copy will be unsaved and + * its location will be set to the metadata area. */ public static ILaunchConfigurationWorkingCopy configFromArgumentMap(Map args) { String version = (String) args.get(TAG_VERSION); @@ -197,43 +242,56 @@ public final class ExternalToolMigration { return configFrom20ArgumentMap(args); } - public static ILaunchConfigurationWorkingCopy configFrom21ArgumentMap(Map commandArgs) { + public static ILaunchConfigurationWorkingCopy configFrom21ArgumentMap( + Map commandArgs) { String name = (String) commandArgs.get(TAG_NAME); String type = (String) commandArgs.get(TAG_TYPE); - + ILaunchConfigurationWorkingCopy config = newConfig(type, name); if (config == null) { return null; } - - config.setAttribute(IExternalToolConstants.ATTR_LOCATION, (String) commandArgs.get(TAG_LOCATION)); - config.setAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, (String) commandArgs.get(TAG_WORK_DIR)); - config.setAttribute(IExternalToolConstants.ATTR_CAPTURE_OUTPUT, TRUE.equals((String) commandArgs.get(TAG_CAPTURE_OUTPUT))); - config.setAttribute(IExternalToolConstants.ATTR_SHOW_CONSOLE, TRUE.equals((String) commandArgs.get(TAG_SHOW_CONSOLE))); - config.setAttribute(IExternalToolConstants.ATTR_RUN_IN_BACKGROUND, TRUE.equals((String) commandArgs.get(TAG_RUN_BKGRND))); - config.setAttribute(IExternalToolConstants.ATTR_PROMPT_FOR_ARGUMENTS, TRUE.equals((String) commandArgs.get(TAG_PROMPT_ARGS))); - config.setAttribute(IExternalToolConstants.ATTR_REFRESH_SCOPE, (String) commandArgs.get(TAG_REFRESH_SCOPE)); - config.setAttribute(IExternalToolConstants.ATTR_REFRESH_RECURSIVE, TRUE.equals((String) commandArgs.get(TAG_REFRESH_RECURSIVE))); - - config.setAttribute(IExternalToolConstants.ATTR_RUN_BUILD_KINDS, (String) commandArgs.get(TAG_RUN_BUILD_KINDS)); - + + config.setAttribute(IExternalToolConstants.ATTR_LOCATION, + (String) commandArgs.get(TAG_LOCATION)); + config.setAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, + (String) commandArgs.get(TAG_WORK_DIR)); + config.setAttribute(IExternalToolConstants.ATTR_CAPTURE_OUTPUT, TRUE + .equals((String) commandArgs.get(TAG_CAPTURE_OUTPUT))); + config.setAttribute(IExternalToolConstants.ATTR_SHOW_CONSOLE, TRUE + .equals((String) commandArgs.get(TAG_SHOW_CONSOLE))); + config.setAttribute(IExternalToolConstants.ATTR_RUN_IN_BACKGROUND, TRUE + .equals((String) commandArgs.get(TAG_RUN_BKGRND))); + config.setAttribute(IExternalToolConstants.ATTR_PROMPT_FOR_ARGUMENTS, + TRUE.equals((String) commandArgs.get(TAG_PROMPT_ARGS))); + config.setAttribute(IExternalToolConstants.ATTR_REFRESH_SCOPE, + (String) commandArgs.get(TAG_REFRESH_SCOPE)); + config.setAttribute(IExternalToolConstants.ATTR_REFRESH_RECURSIVE, TRUE + .equals((String) commandArgs.get(TAG_REFRESH_RECURSIVE))); + + config.setAttribute(IExternalToolConstants.ATTR_RUN_BUILD_KINDS, + (String) commandArgs.get(TAG_RUN_BUILD_KINDS)); + String args = (String) commandArgs.get(TAG_ARGS); if (args != null) { - config.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, args); + config.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, + args); } String extraAttributes = (String) commandArgs.get(TAG_EXTRA_ATTR); if (extraAttributes != null) { - StringTokenizer tokenizer = new StringTokenizer(extraAttributes, EXTRA_ATTR_SEPARATOR); + StringTokenizer tokenizer = new StringTokenizer(extraAttributes, + EXTRA_ATTR_SEPARATOR); while (tokenizer.hasMoreTokens()) { String key = tokenizer.nextToken(); if (!tokenizer.hasMoreTokens()) break; String value = tokenizer.nextToken(); -// if (key.equals(RUN_TARGETS_ATTRIBUTE)) { -// // 2.1 implementation only defined 1 "extra attribute" -// config.setAttribute(IExternalToolConstants.ATTR_ANT_TARGETS, value); -// } + // if (key.equals(RUN_TARGETS_ATTRIBUTE)) { + // // 2.1 implementation only defined 1 "extra attribute" + // config.setAttribute(IExternalToolConstants.ATTR_ANT_TARGETS, + // value); + // } } } return config; @@ -242,16 +300,17 @@ public final class ExternalToolMigration { /** * Creates an external tool from the map. */ - public static ILaunchConfigurationWorkingCopy configFrom20ArgumentMap(Map args) { + public static ILaunchConfigurationWorkingCopy configFrom20ArgumentMap( + Map args) { // Update the type... String type = (String) args.get(TAG_TOOL_TYPE); -// if (TOOL_TYPE_ANT.equals(type)) -// type = IExternalToolConstants.TOOL_TYPE_ANT_BUILD; -// else - type = IExternalToolConstants.TOOL_TYPE_PROGRAM; + // if (TOOL_TYPE_ANT.equals(type)) + // type = IExternalToolConstants.TOOL_TYPE_ANT_BUILD; + // else + type = IExternalToolConstants.TOOL_TYPE_PROGRAM; String name = (String) args.get(TAG_TOOL_NAME); - + ILaunchConfigurationWorkingCopy config = newConfig(type, name); if (config == null) { return null; @@ -260,9 +319,12 @@ public final class ExternalToolMigration { // Update the location... String location = (String) args.get(TAG_TOOL_LOCATION); if (location != null) { - ToolUtil.VariableDefinition varDef = ToolUtil.extractVariableTag(location, 0); + ToolUtil.VariableDefinition varDef = ToolUtil.extractVariableTag( + location, 0); if (IExternalToolConstants.VAR_WORKSPACE_LOC.equals(varDef.name)) { - location = ToolUtil.buildVariableTag(IExternalToolConstants.VAR_RESOURCE_LOC, varDef.argument); + location = ToolUtil.buildVariableTag( + IExternalToolConstants.VAR_RESOURCE_LOC, + varDef.argument); } config.setAttribute(IExternalToolConstants.ATTR_LOCATION, location); } @@ -270,11 +332,13 @@ public final class ExternalToolMigration { // Update the refresh scope... String refresh = (String) args.get(TAG_TOOL_REFRESH); if (refresh != null) { - ToolUtil.VariableDefinition varDef = ToolUtil.extractVariableTag(refresh, 0); + ToolUtil.VariableDefinition varDef = ToolUtil.extractVariableTag( + refresh, 0); if ("none".equals(varDef.name)) { //$NON-NLS-1$ refresh = null; } - config.setAttribute(IExternalToolConstants.ATTR_REFRESH_SCOPE, refresh); + config.setAttribute(IExternalToolConstants.ATTR_REFRESH_SCOPE, + refresh); } // Update the arguments @@ -284,7 +348,8 @@ public final class ExternalToolMigration { int start = 0; ArrayList targets = new ArrayList(); StringBuffer buffer = new StringBuffer(); - ToolUtil.VariableDefinition varDef = ToolUtil.extractVariableTag(arguments, start); + ToolUtil.VariableDefinition varDef = ToolUtil.extractVariableTag( + arguments, start); while (varDef.end != -1) { if ("ant_target".equals(varDef.name) && varDef.argument != null) { //$NON-NLS-1$ targets.add(varDef.argument); @@ -309,16 +374,23 @@ public final class ExternalToolMigration { targetNames = buffer.toString(); } if (targetNames != null && targetNames.length() > 0) { - config.setAttribute(IExternalToolConstants.ATTR_ANT_TARGETS, targetNames); + config.setAttribute(IExternalToolConstants.ATTR_ANT_TARGETS, + targetNames); } // Collect the rest of the information - config.setAttribute(IExternalToolConstants.ATTR_SHOW_CONSOLE, TRUE.equals((String) args.get(TAG_TOOL_SHOW_LOG))); - config.setAttribute(IExternalToolConstants.ATTR_CAPTURE_OUTPUT, TRUE.equals((String) args.get(TAG_TOOL_SHOW_LOG))); - config.setAttribute(IExternalToolConstants.ATTR_RUN_IN_BACKGROUND, FALSE.equals((String) args.get(TAG_TOOL_BLOCK))); - config.setAttribute(IExternalToolConstants.ATTR_RUN_BUILD_KINDS, (String) args.get(TAG_TOOL_BUILD_TYPES)); - config.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, arguments); - config.setAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, (String) args.get(TAG_TOOL_DIRECTORY)); + config.setAttribute(IExternalToolConstants.ATTR_SHOW_CONSOLE, TRUE + .equals((String) args.get(TAG_TOOL_SHOW_LOG))); + config.setAttribute(IExternalToolConstants.ATTR_CAPTURE_OUTPUT, TRUE + .equals((String) args.get(TAG_TOOL_SHOW_LOG))); + config.setAttribute(IExternalToolConstants.ATTR_RUN_IN_BACKGROUND, + FALSE.equals((String) args.get(TAG_TOOL_BLOCK))); + config.setAttribute(IExternalToolConstants.ATTR_RUN_BUILD_KINDS, + (String) args.get(TAG_TOOL_BUILD_TYPES)); + config.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, + arguments); + config.setAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, + (String) args.get(TAG_TOOL_DIRECTORY)); return config; } @@ -326,17 +398,20 @@ public final class ExternalToolMigration { * Returns a new working copy with the given external tool name and external * tool type or null if no config could be created. */ - private static ILaunchConfigurationWorkingCopy newConfig(String type, String name) { + private static ILaunchConfigurationWorkingCopy newConfig(String type, + String name) { if (type == null || name == null) { return null; } ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager(); ILaunchConfigurationType configType; -// if (IExternalToolConstants.TOOL_TYPE_ANT_BUILD.equals(type)) { -// configType = manager.getLaunchConfigurationType(IExternalToolConstants.ID_ANT_BUILDER_LAUNCH_CONFIGURATION_TYPE); -// } else + // if (IExternalToolConstants.TOOL_TYPE_ANT_BUILD.equals(type)) { + // configType = + // manager.getLaunchConfigurationType(IExternalToolConstants.ID_ANT_BUILDER_LAUNCH_CONFIGURATION_TYPE); + // } else if (IExternalToolConstants.TOOL_TYPE_PROGRAM.equals(type)) { - configType = manager.getLaunchConfigurationType(IExternalToolConstants.ID_PROGRAM_BUILDER_LAUNCH_CONFIGURATION_TYPE); + configType = manager + .getLaunchConfigurationType(IExternalToolConstants.ID_PROGRAM_BUILDER_LAUNCH_CONFIGURATION_TYPE); } else { return null; } @@ -346,17 +421,17 @@ public final class ExternalToolMigration { return null; } } - + /** * Returns the tool name extracted from the given command argument map. * Extraction is attempted using 2.0 and 2.1 external tool formats. */ public static String getNameFromCommandArgs(Map commandArgs) { - String name= (String) commandArgs.get(TAG_NAME); + String name = (String) commandArgs.get(TAG_NAME); if (name == null) { - name= (String) commandArgs.get(TAG_TOOL_NAME); + name = (String) commandArgs.get(TAG_TOOL_NAME); } return name; } - + }