sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/ManageResources.java
author terytkon
Thu, 11 Mar 2010 19:08:43 +0200
changeset 0 522a326673b6
permissions -rw-r--r--
Moved swconfigapps content under oss repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     2
// All rights reserved.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     3
// This component and the accompanying materials are made available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     5
// which accompanies this distribution, and is available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     7
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     8
// Initial Contributors:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    10
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    11
// Contributors:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    12
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    13
// Description:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    14
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    15
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    16
package com.symbian.smt.gui;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    17
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    18
import static com.symbian.smt.gui.ResourcesEnums.BORDER_SHAPES;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    19
import static com.symbian.smt.gui.ResourcesEnums.BORDER_STYLES;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    20
import static com.symbian.smt.gui.ResourcesEnums.COLOURS;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    21
import static com.symbian.smt.gui.ResourcesEnums.DEPENDENCIES;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    22
import static com.symbian.smt.gui.ResourcesEnums.LEVELS;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    23
import static com.symbian.smt.gui.ResourcesEnums.LOCALISATION;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    24
import static com.symbian.smt.gui.ResourcesEnums.PATTERNS;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    25
import static com.symbian.smt.gui.ResourcesEnums.S12_XML;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    26
import static com.symbian.smt.gui.ResourcesEnums.SHAPES;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    27
import static com.symbian.smt.gui.ResourcesEnums.SYSTEM_INFO;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    28
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    29
import java.io.File;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    30
import java.io.IOException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    31
import java.util.HashMap;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    32
import java.util.List;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    33
import java.util.regex.Pattern;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    34
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    35
import org.eclipse.core.resources.IContainer;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    36
import org.eclipse.core.resources.IFile;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    37
import org.eclipse.core.resources.IFolder;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    38
import org.eclipse.core.resources.IMarker;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    39
import org.eclipse.core.resources.IProject;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    40
import org.eclipse.core.resources.IResource;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    41
import org.eclipse.core.resources.ProjectScope;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    42
import org.eclipse.core.runtime.CoreException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    43
import org.eclipse.core.runtime.IPath;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    44
import org.eclipse.core.runtime.Path;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    45
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    46
import org.eclipse.core.runtime.preferences.IScopeContext;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    47
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    48
public class ManageResources {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    49
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    50
	private static final List<String> RESOURCE_FOLDER_NAMES = Helper
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    51
			.toListOfStrings(ResourcesEnums.values());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    52
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    53
	public static final String IS_URL = "isUrl";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    54
	public static final String URL_STRING = "urlString";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    55
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    56
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    57
	 * Deletes a resource, if it exists within a specified folder within the
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    58
	 * project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    59
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    60
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    61
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    62
	 * @param folderName
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    63
	 *            The folder in which the resource is to be updated
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    64
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    65
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    66
	private static void deleteResources(IProject project, String folderName) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    67
		// Create/Get the folder in the project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    68
		IFolder folder = getFolderInProject(project, folderName);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    69
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    70
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    71
			for (IResource res : folder.members()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    72
				res.delete(true, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    73
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    74
		} catch (CoreException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    75
			Logger.log(e.getMessage(), e);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    76
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    77
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    78
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    79
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    80
	 * Returns an IFolder object for the specified folder and project. Creates
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    81
	 * the folder if it does not already exist.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    82
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    83
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    84
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    85
	 * @param folderName
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    86
	 *            The folder name required
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    87
	 * @return IFolder
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    88
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    89
	private static IFolder getFolderInProject(IProject project,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    90
			String folderName) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    91
		// Makes a folder in the project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    92
		final IFolder folder = project.getFolder(new Path(folderName));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    93
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    94
		// Check to see if the folder already exists before creating it
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    95
		if (!folder.exists()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    96
			try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    97
				folder.create(true, true, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    98
			} catch (CoreException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    99
				Logger.log(e.getMessage(), e);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   100
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   101
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   102
		return folder;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   103
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   104
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   105
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   106
	 * Creates and returns an AbstractPersistentDataStore object, used for
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   107
	 * persising data.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   108
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   109
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   110
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   111
	 * @return AbstractPersistentDataStore
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   112
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   113
	private static AbstractPersistentDataStore getPersistDataStore(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   114
			IProject project) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   115
		IScopeContext projectScope = new ProjectScope(project);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   116
		IEclipsePreferences node = projectScope.getNode(Activator.PLUGIN_ID);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   117
		AbstractPersistentDataStore dataStore = new PersistentDataStore(node);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   118
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   119
		return dataStore;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   120
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   121
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   122
	public static ResourcesEnums getResourceType(IFile file) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   123
		if (isResourceFile(file)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   124
			String folderName = ((IFolder) file.getParent()).getName();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   125
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   126
			return ResourcesEnums.getResourcesEnums(folderName);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   127
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   128
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   129
		return null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   130
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   131
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   132
	public static String getResourceUrl(IFile file) throws CoreException {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   133
		String urlString = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   134
		IMarker[] messageMarkers = file.findMarkers(IMarker.TASK, false,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   135
				IResource.DEPTH_ZERO);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   136
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   137
		for (int i = 0; i < messageMarkers.length; i++) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   138
			IMarker marker = messageMarkers[i];
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   139
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   140
			if (marker.getAttribute(ManageResources.IS_URL, false)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   141
				urlString = (String) marker.getAttribute(URL_STRING);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   142
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   143
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   144
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   145
		return urlString;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   146
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   147
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   148
	public static boolean isLocalPath(String path) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   149
		int index = path.indexOf(':');
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   150
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   151
		if (index == -1 || index == 1) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   152
			return true;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   153
		} else if (index > 1) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   154
			return false;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   155
		} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   156
			throw new RuntimeException("Unexpected file path format.");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   157
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   158
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   159
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   160
	public static boolean isResourceFile(IFile file) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   161
		IContainer container = file.getParent();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   162
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   163
		if (container instanceof IFolder) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   164
			IFolder folder = (IFolder) container;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   165
			String folderName = folder.getName();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   166
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   167
			if (RESOURCE_FOLDER_NAMES.contains(folderName)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   168
				return true;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   169
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   170
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   171
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   172
		return false;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   173
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   174
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   175
	public static boolean isSystemDefinitionFile(IFile file) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   176
		IContainer container = file.getParent();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   177
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   178
		if (container instanceof IProject) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   179
			return true;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   180
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   181
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   182
		return false;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   183
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   184
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   185
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   186
	 * Adds a file shortcut to the specified project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   187
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   188
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   189
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   190
	 * @param folder
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   191
	 *            The folder to create the shortcut in
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   192
	 * @param filenameInOS
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   193
	 *            The file in the OS to create the shortcut to
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   194
	 * @param filenameInProject
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   195
	 *            The name to use for the shortcut
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   196
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   197
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   198
	private static void makeFileShortcut(IProject project, String folder,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   199
			String filenameInOS, String fileNameInProject) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   200
		IFile file;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   201
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   202
		// Check to see if the file needs to go into a folder and create the
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   203
		// IFile object
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   204
		if (folder == null || folder.length() == 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   205
			file = project.getFile(fileNameInProject);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   206
		} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   207
			IFolder folder2 = project.getFolder(folder);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   208
			file = folder2.getFile(fileNameInProject);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   209
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   210
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   211
		// If the file is not being linked to a file in the OS then create a new
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   212
		// empty file
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   213
		if (filenameInOS == null || filenameInOS.length() == 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   214
			filenameInOS = file.getRawLocation().toString();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   215
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   216
			File newEmptyFile = new File(filenameInOS);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   217
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   218
			try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   219
				newEmptyFile.createNewFile();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   220
			} catch (IOException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   221
				Logger.log(e.getMessage(), e);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   222
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   223
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   224
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   225
		// Create a link to the file
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   226
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   227
			if (isLocalPath(filenameInOS)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   228
				IPath path = new Path(filenameInOS);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   229
				file.createLink(path, IResource.ALLOW_MISSING_LOCAL, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   230
			} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   231
				file.create(null, false, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   232
				IMarker marker = file.createMarker(IMarker.TASK);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   233
				marker.setAttribute(IS_URL, true);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   234
				marker.setAttribute(URL_STRING, filenameInOS);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   235
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   236
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   237
			FileValidationHelper.validateSysDefFile(file);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   238
		} catch (CoreException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   239
			Logger.log(e.getMessage(), e);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   240
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   241
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   242
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   243
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   244
	 * Updates the border shapes file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   245
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   246
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   247
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   248
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   249
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   250
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   251
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   252
	public static void updateBorderShapesFiles(IProject project,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   253
			String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   254
		updateResources(project, options, BORDER_SHAPES);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   255
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   256
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   257
		getPersistDataStore(project).setSelectedBorderShapesFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   258
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   259
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   260
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   261
	 * Updates the border styles file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   262
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   263
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   264
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   265
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   266
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   267
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   268
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   269
	public static void updateBorderStylesFiles(IProject project,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   270
			String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   271
		updateResources(project, options, BORDER_STYLES);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   272
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   273
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   274
		getPersistDataStore(project).setSelectedBorderStylesFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   275
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   276
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   277
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   278
	 * Updates the colours file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   279
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   280
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   281
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   282
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   283
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   284
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   285
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   286
	public static void updateColoursFiles(IProject project, String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   287
		updateResources(project, options, COLOURS);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   288
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   289
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   290
		getPersistDataStore(project).setSelectedColoursFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   291
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   292
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   293
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   294
	 * Updates the dependencies file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   295
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   296
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   297
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   298
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   299
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   300
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   301
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   302
	public static void updateDependenciesFiles(IProject project,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   303
			String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   304
		updateResources(project, options, DEPENDENCIES);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   305
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   306
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   307
		getPersistDataStore(project).setSelectedDependenciesFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   308
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   309
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   310
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   311
	 * Updates the levels file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   312
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   313
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   314
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   315
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   316
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   317
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   318
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   319
	public static void updateLevelsFiles(IProject project, String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   320
		updateResources(project, options, LEVELS);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   321
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   322
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   323
		getPersistDataStore(project).setSelectedLevelsFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   324
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   325
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   326
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   327
	 * Updates the localisation file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   328
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   329
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   330
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   331
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   332
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   333
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   334
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   335
	public static void updateLocalisationFiles(IProject project,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   336
			String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   337
		updateResources(project, options, LOCALISATION);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   338
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   339
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   340
		getPersistDataStore(project).setSelectedLocalisationFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   341
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   342
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   343
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   344
	 * Updates the patterns file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   345
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   346
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   347
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   348
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   349
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   350
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   351
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   352
	public static void updatePatternsFiles(IProject project, String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   353
		updateResources(project, options, PATTERNS);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   354
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   355
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   356
		getPersistDataStore(project).setSelectedPatternsFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   357
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   358
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   359
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   360
	 * Updates a resource within a specified folder within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   361
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   362
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   363
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   364
	 * @param folderName
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   365
	 *            The folder in which the resource is to be updated
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   366
	 * @param option
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   367
	 *            Either a filename or AUTO_LEVEL
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   368
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   369
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   370
	private static void updateResource(IProject project, String folderName,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   371
			String option) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   372
		// The other arguments are checked by the callers
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   373
		if (folderName == null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   374
			throw new IllegalArgumentException("Arguments cannot be null.");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   375
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   376
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   377
		// Create/Get the folder in the project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   378
		IFolder folder = getFolderInProject(project, folderName);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   379
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   380
		// If we were passed the empty string as the file name, just return,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   381
		// otherwise
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   382
		// create the file
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   383
		if (option.length() > 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   384
			String newName;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   385
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   386
			if (isLocalPath(option)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   387
				String[] filenameParts = option.split("[\\\\/]");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   388
				newName = filenameParts[filenameParts.length - 1];
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   389
			} else { // If option is a URL
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   390
				int beginIndex = option.lastIndexOf("/");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   391
				newName = option.substring(beginIndex + 1, option.length());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   392
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   393
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   394
			if (!option.equals("Auto")) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   395
				// Create a link to the file
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   396
				try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   397
					IFile file = folder.getFile(newName);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   398
					
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   399
					if (isLocalPath(option)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   400
						IPath path = new Path(option);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   401
						file.createLink(path, IResource.ALLOW_MISSING_LOCAL, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   402
					}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   403
					else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   404
						file.create(null, false, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   405
						IMarker marker = file.createMarker(IMarker.TASK);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   406
						marker.setAttribute(IS_URL, true);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   407
						marker.setAttribute(URL_STRING, option);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   408
					}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   409
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   410
					// TODO:BRS:Remove if test when Shapes.xsd is available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   411
					if (!folderName.equals("Shapes")) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   412
						FileValidationHelper.validateResourceFile(file);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   413
					}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   414
				} catch (CoreException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   415
					Logger.log(e.getMessage(), e);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   416
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   417
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   418
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   419
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   420
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   421
	private static void updateResources(IProject project, String[] options,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   422
			ResourcesEnums type) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   423
		if (project == null || options == null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   424
			throw new IllegalArgumentException("Arguments cannot be null.");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   425
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   426
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   427
		String folderName = type.arg();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   428
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   429
		// First delete any existing resources from their folder
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   430
		deleteResources(project, folderName);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   431
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   432
		// If options is empty, we simply need to invoke updateResource() with
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   433
		// the empty
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   434
		// String to ensure that the corresponding folder is created and then
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   435
		// return.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   436
		if (options.length == 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   437
			updateResource(project, folderName, "");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   438
			return;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   439
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   440
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   441
		for (String option : options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   442
			updateResource(project, folderName, option);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   443
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   444
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   445
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   446
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   447
	 * Updates the S12 XML file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   448
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   449
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   450
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   451
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   452
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   453
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   454
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   455
	public static void updateS12XmlFiles(IProject project, String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   456
		updateResources(project, options, S12_XML);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   457
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   458
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   459
		getPersistDataStore(project).setSelectedS12XmlFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   460
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   461
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   462
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   463
	 * Updates the shapes file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   464
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   465
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   466
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   467
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   468
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   469
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   470
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   471
	public static void updateShapesFiles(IProject project, String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   472
		updateResources(project, options, SHAPES);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   473
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   474
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   475
		getPersistDataStore(project).setSelectedShapesFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   476
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   477
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   478
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   479
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   480
	 * Updates the system definition files within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   481
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   482
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   483
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   484
	 * @param systemDefinitionFiles
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   485
	 *            The system definition files to be used by the project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   486
	 * @param force
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   487
	 *            Forces new shortcuts to be created in the project for the
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   488
	 *            system definition files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   489
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   490
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   491
	public static void updateSystemDefinitionFiles(IProject project,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   492
			String[] sysdefFiles, Boolean force) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   493
		HashMap<String, Integer> systemDefinitionFiles = new HashMap<String, Integer>();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   494
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   495
		// Work out if we need to add any numbers to filenames to keep them
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   496
		// unique
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   497
		// It is not possible to have multiple files with the same name, so if
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   498
		// this does happen a
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   499
		// number is added to further instances, e.g afile, afile(2), afile(3)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   500
		// etc.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   501
		HashMap<String, Integer> systemDefinitionFilesCounts = new HashMap<String, Integer>();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   502
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   503
		java.util.regex.Pattern p = Pattern.compile("\\((\\d+)\\)\\.xml",
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   504
				Pattern.CASE_INSENSITIVE);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   505
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   506
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   507
			IResource[] members;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   508
			members = project.members();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   509
			for (IResource res : members) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   510
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   511
				java.util.regex.Matcher m = p.matcher(res.getName());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   512
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   513
				if (m.find()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   514
					int num = Integer.valueOf(m.group(1));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   515
					String simpleName = m.replaceAll(".xml");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   516
					if (!systemDefinitionFilesCounts.containsKey(simpleName
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   517
							.toLowerCase())
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   518
							|| systemDefinitionFilesCounts.get(simpleName
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   519
									.toLowerCase()) < ++num) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   520
						systemDefinitionFilesCounts.put(simpleName
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   521
								.toLowerCase(), ++num);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   522
					}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   523
				} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   524
					if (!systemDefinitionFilesCounts.containsKey(res.getName()
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   525
							.toLowerCase())) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   526
						systemDefinitionFilesCounts.put(res.getName()
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   527
								.toLowerCase(), 2);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   528
					}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   529
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   530
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   531
		} catch (CoreException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   532
			e.printStackTrace();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   533
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   534
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   535
		// Get the existing system definition files and put them into a hashmap
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   536
		IScopeContext projectScope = new ProjectScope(project);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   537
		PersistentDataStore projectStore = new PersistentDataStore(projectScope
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   538
				.getNode(Activator.PLUGIN_ID));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   539
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   540
		for (String sysdefFile : projectStore.getSystemDefinitionFiles()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   541
			systemDefinitionFiles.put(sysdefFile.toLowerCase(), 0);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   542
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   543
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   544
		for (String sysdefFile : sysdefFiles) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   545
			// If the sysdef file has not been added or removed set to 1
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   546
			if (systemDefinitionFiles.containsKey(sysdefFile.toLowerCase())
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   547
					&& force != true) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   548
				systemDefinitionFiles.put(sysdefFile.toLowerCase(), 1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   549
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   550
			// Otherwise the file must be a new file
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   551
			else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   552
				systemDefinitionFiles.put(sysdefFile.toLowerCase(), 2);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   553
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   554
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   555
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   556
		for (String sysdefFile : systemDefinitionFiles.keySet()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   557
			// All files with a value of 0 must be deleted
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   558
			if (systemDefinitionFiles.get(sysdefFile) == 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   559
				IResource[] members;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   560
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   561
				try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   562
					members = project.members();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   563
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   564
					for (IResource res : members) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   565
						if (isLocalPath(sysdefFile)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   566
							if (res.isLinked()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   567
								if (sysdefFile.equalsIgnoreCase(res
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   568
										.getRawLocation().toOSString())) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   569
									res.delete(true, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   570
								}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   571
							}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   572
						} else { // If it is a URL
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   573
							if (res instanceof IFile) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   574
								String urlString = getResourceUrl((IFile) res);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   575
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   576
								if (urlString != null
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   577
										&& sysdefFile
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   578
												.equalsIgnoreCase(urlString)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   579
									res.delete(true, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   580
								}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   581
							}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   582
						}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   583
					}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   584
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   585
				} catch (CoreException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   586
					Logger.log(e.getMessage(), e);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   587
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   588
			} else if (systemDefinitionFiles.get(sysdefFile.toLowerCase()) == 2) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   589
				// All files with a value if 2 must be added
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   590
				String newName;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   591
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   592
				if (isLocalPath(sysdefFile)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   593
					String[] filenameParts = sysdefFile.split("[\\\\/]");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   594
					newName = filenameParts[filenameParts.length - 1];
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   595
				} else { // If option is a URL
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   596
					int beginIndex = sysdefFile.lastIndexOf("/");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   597
					newName = sysdefFile.substring(beginIndex + 1, sysdefFile
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   598
							.length());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   599
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   600
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   601
				int i = 1;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   602
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   603
				if (systemDefinitionFilesCounts.containsKey(newName
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   604
						.toLowerCase())) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   605
					i = systemDefinitionFilesCounts.get(newName.toLowerCase());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   606
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   607
					newName = newName.substring(0, newName.length() - 4)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   608
							+ "("
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   609
							+ i
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   610
							+ ")"
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   611
							+ newName.substring(newName.length() - 4, newName
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   612
									.length());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   613
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   614
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   615
				systemDefinitionFilesCounts.put(newName.toLowerCase(), ++i);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   616
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   617
				makeFileShortcut(project, null, sysdefFile, newName);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   618
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   619
			// Files with a value of 1 are unchanged so are ignored
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   620
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   621
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   622
		// Persist the system definition files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   623
		projectStore.setSystemDefinitionFiles(sysdefFiles);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   624
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   625
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   626
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   627
	 * Updates the system info file resources within the project.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   628
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   629
	 * @param project
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   630
	 *            The project to amend
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   631
	 * @param options
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   632
	 *            An array of filenames or the empty array if there are no files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   633
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   634
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   635
	public static void updateSystemInfoFiles(IProject project, String[] options) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   636
		updateResources(project, options, SYSTEM_INFO);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   637
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   638
		// persist the data
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   639
		getPersistDataStore(project).setSelectedSystemInfoFiles(options);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   640
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   641
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   642
}