diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java')
-rw-r--r-- | bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java | 760 |
1 files changed, 0 insertions, 760 deletions
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java deleted file mode 100644 index c35c1d8e4..000000000 --- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java +++ /dev/null @@ -1,760 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - * Code 9 - Additional function and fixes - * EclipseSource - ongoing development - *******************************************************************************/ - -package org.eclipse.equinox.internal.p2.publisher.eclipse; - -import java.io.*; -import java.util.*; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import org.eclipse.equinox.frameworkadmin.BundleInfo; -import org.eclipse.equinox.internal.p2.core.helpers.*; -import org.eclipse.equinox.p2.metadata.VersionedId; -import org.eclipse.equinox.internal.p2.publisher.Activator; -import org.eclipse.equinox.p2.metadata.IVersionedId; -import org.eclipse.osgi.service.datalocation.Location; -import org.xml.sax.Attributes; -import org.xml.sax.InputSource; -import org.xml.sax.helpers.DefaultHandler; - -/** - * Used to parse a .product file. - */ -public class ProductFile extends DefaultHandler implements IProductDescriptor { - private static final String ATTRIBUTE_PATH = "path"; //$NON-NLS-1$ - private static final String ATTRIBUTE_ICON = "icon"; //$NON-NLS-1$ - private static final String ATTRIBUTE_FRAGMENT = "fragment"; //$NON-NLS-1$ - private static final String ATTRIBUTE_APPLICATION = "application"; //$NON-NLS-1$ - private static final String ATTRIBUTE_NAME = "name"; //$NON-NLS-1$ - private static final String ATTRIBUTE_VALUE = "value"; //$NON-NLS-1$ - private static final String ATTRIBUTE_LOCATION = "location"; //$NON-NLS-1$ - private static final String ATTRIBUTE_AUTO_START = "autoStart"; //$NON-NLS-1$ - private static final String ATTRIBUTE_START_LEVEL = "startLevel"; //$NON-NLS-1$ - private static final String ATTRIBUTE_VERSION = "version"; //$NON-NLS-1$ - private static final String ATTRIBUTE_ID = "id"; //$NON-NLS-1$ - private static final String ATTRIBUTE_UID = "uid"; //$NON-NLS-1$ - - private static final String PROPERTY_ECLIPSE_APPLICATION = "eclipse.application"; //$NON-NLS-1$ - private static final String PROPERTY_ECLIPSE_PRODUCT = "eclipse.product"; //$NON-NLS-1$ - - private final static SAXParserFactory parserFactory = SAXParserFactory.newInstance(); - - private static final String PROGRAM_ARGS = "programArgs"; //$NON-NLS-1$ - private static final String PROGRAM_ARGS_LINUX = "programArgsLin"; //$NON-NLS-1$ - private static final String PROGRAM_ARGS_MAC = "programArgsMac"; //$NON-NLS-1$ - private static final String PROGRAM_ARGS_SOLARIS = "programArgsSol"; //$NON-NLS-1$ - private static final String PROGRAM_ARGS_WIN = "programArgsWin"; //$NON-NLS-1$ - private static final String VM_ARGS = "vmArgs"; //$NON-NLS-1$ - private static final String VM_ARGS_LINUX = "vmArgsLin"; //$NON-NLS-1$ - private static final String VM_ARGS_MAC = "vmArgsMac"; //$NON-NLS-1$ - private static final String VM_ARGS_SOLARIS = "vmArgsSol"; //$NON-NLS-1$ - private static final String VM_ARGS_WIN = "vmArgsWin"; //$NON-NLS-1$ - - private static final String SOLARIS_LARGE = "solarisLarge"; //$NON-NLS-1$ - private static final String SOLARIS_MEDIUM = "solarisMedium"; //$NON-NLS-1$ - private static final String SOLARIS_SMALL = "solarisSmall"; //$NON-NLS-1$ - private static final String SOLARIS_TINY = "solarisTiny"; //$NON-NLS-1$ - private static final String WIN32_16_LOW = "winSmallLow"; //$NON-NLS-1$ - private static final String WIN32_16_HIGH = "winSmallHigh"; //$NON-NLS-1$ - private static final String WIN32_24_LOW = "win24Low"; //$NON-NLS-1$ - private static final String WIN32_32_LOW = "winMediumLow"; //$NON-NLS-1$ - private static final String WIN32_32_HIGH = "winMediumHigh"; //$NON-NLS-1$ - private static final String WIN32_48_LOW = "winLargeLow"; //$NON-NLS-1$ - private static final String WIN32_48_HIGH = "winLargeHigh"; //$NON-NLS-1$ - - private static final String OS_WIN32 = "win32";//$NON-NLS-1$ - private static final String OS_LINUX = "linux";//$NON-NLS-1$ - private static final String OS_SOLARIS = "solaris";//$NON-NLS-1$ - private static final String OS_MACOSX = "macosx";//$NON-NLS-1$ - - //element names - private static final String EL_FEATURES = "features"; //$NON-NLS-1$ - private static final String EL_FEATURE = "feature"; //$NON-NLS-1$ - private static final String EL_PLUGINS = "plugins"; //$NON-NLS-1$ - private static final String EL_PLUGIN = "plugin"; //$NON-NLS-1$ - private static final String EL_PRODUCT = "product"; //$NON-NLS-1$ - private static final String EL_PROPERTY = "property"; //$NON-NLS-1$ - private static final String EL_CONFIG_INI = "configIni"; //$NON-NLS-1$ - private static final String EL_LAUNCHER = "launcher"; //$NON-NLS-1$ - private static final String EL_LAUNCHER_ARGS = "launcherArgs"; //$NON-NLS-1$ - private static final String EL_SPLASH = "splash"; //$NON-NLS-1$ - private static final String EL_CONFIGURATIONS = "configurations"; //$NON-NLS-1$ - private static final String EL_LICENSE = "license"; //$NON-NLS-1$ - private static final String EL_URL = "url"; //$NON-NLS-1$ - private static final String EL_TEXT = "text"; //$NON-NLS-1$ - - //These constants form a small state machine to parse the .product file - private static final int STATE_START = 0; - private static final int STATE_PRODUCT = 1; - private static final int STATE_LAUNCHER = 2; - private static final int STATE_LAUNCHER_ARGS = 3; - private static final int STATE_PLUGINS = 4; - private static final int STATE_FEATURES = 5; - private static final int STATE_PROGRAM_ARGS = 6; - private static final int STATE_PROGRAM_ARGS_LINUX = 7; - private static final int STATE_PROGRAM_ARGS_MAC = 8; - private static final int STATE_PROGRAM_ARGS_SOLARIS = 9; - private static final int STATE_PROGRAM_ARGS_WIN = 10; - private static final int STATE_VM_ARGS = 11; - private static final int STATE_VM_ARGS_LINUX = 12; - private static final int STATE_VM_ARGS_MAC = 13; - private static final int STATE_VM_ARGS_SOLARIS = 14; - private static final int STATE_VM_ARGS_WIN = 15; - private static final int STATE_CONFIG_INI = 16; - private static final int STATE_CONFIGURATIONS = 17; - private static final int STATE_LICENSE = 18; - private static final int STATE_LICENSE_URL = 19; - private static final int STATE_LICENSE_TEXT = 20; - - private int state = STATE_START; - - private SAXParser parser; - private String launcherName = null; - // private boolean useIco = false; - private Map<String, Collection<String>> icons = new HashMap<String, Collection<String>>(6); - private String configPath = null; - private final Map<String, String> platformSpecificConfigPaths = new HashMap<String, String>(); - private String configPlatform = null; - private String platformConfigPath = null; - private String id = null; - private String uid = null; - private boolean useFeatures = false; - private List<IVersionedId> plugins = null; - private List<IVersionedId> fragments = null; - private List<IVersionedId> features = null; - private String splashLocation = null; - private String productName = null; - private String application = null; - private String version = null; - private Properties launcherArgs = new Properties(); - private File location; - private List<BundleInfo> bundleInfos; - private Map<String, String> properties; - private String licenseURL; - private String licenseText = null; - - private static String normalize(String text) { - if (text == null || text.trim().length() == 0) - return ""; //$NON-NLS-1$ - - StringBuffer result = new StringBuffer(text.length()); - boolean haveSpace = false; - for (int i = 0; i < text.length(); i++) { - char c = text.charAt(i); - if (Character.isWhitespace(c)) { - if (haveSpace) - continue; - haveSpace = true; - result.append(" "); //$NON-NLS-1$ - } else { - haveSpace = false; - result.append(c); - } - } - return result.toString(); - } - - /** - * Constructs a product file parser. - */ - public ProductFile(String location) throws Exception { - super(); - this.location = new File(location); - - parserFactory.setNamespaceAware(true); - parser = parserFactory.newSAXParser(); - InputStream in = new BufferedInputStream(new FileInputStream(location)); - try { - parser.parse(new InputSource(in), this); - } finally { - if (in != null) - in.close(); - } - parser = null; - } - - /** - * Gets the name of the launcher specified in the .product file. - */ - public String getLauncherName() { - return launcherName; - } - - /** - * Gets the location of the .product file. - */ - public File getLocation() { - return location; - } - - /** - * Returns the properties found in .product file. Properties - * are located in the <configurations> block of the file - */ - public Map<String, String> getConfigurationProperties() { - Map<String, String> result = properties != null ? properties : new HashMap<String, String>(); - if (application != null && !result.containsKey(PROPERTY_ECLIPSE_APPLICATION)) - result.put(PROPERTY_ECLIPSE_APPLICATION, application); - if (id != null && !result.containsKey(PROPERTY_ECLIPSE_PRODUCT)) - result.put(PROPERTY_ECLIPSE_PRODUCT, id); - - return result; - } - - /** - * Returns a List<VersionedName> for each bundle that makes up this product. - * @param includeFragments Indicates whether or not fragments should - * be included in the list - */ - public List<IVersionedId> getBundles(boolean includeFragments) { - List<IVersionedId> p = plugins != null ? plugins : CollectionUtils.<IVersionedId> emptyList(); - if (!includeFragments) - return p; - - List<IVersionedId> f = fragments != null ? fragments : CollectionUtils.<IVersionedId> emptyList(); - int size = p.size() + f.size(); - if (size == 0) - return CollectionUtils.emptyList(); - - List<IVersionedId> both = new ArrayList<IVersionedId>(size); - both.addAll(p); - both.addAll(f); - return both; - } - - /** - * Returns a List<BundleInfo> for each bundle that has custom configuration data - * in the product file. - * @return A List<BundleInfo> - */ - public List<BundleInfo> getBundleInfos() { - return bundleInfos != null ? bundleInfos : CollectionUtils.<BundleInfo> emptyList(); - } - - /** - * Returns a list<VersionedName> of fragments that constitute this product. - */ - public List<IVersionedId> getFragments() { - return fragments != null ? fragments : CollectionUtils.<IVersionedId> emptyList(); - } - - /** - * Returns a List<VersionedName> of features that constitute this product. - */ - public List<IVersionedId> getFeatures() { - return features != null ? features : CollectionUtils.<IVersionedId> emptyList(); - } - - public String[] getIcons(String os) { - Collection<String> result = icons.get(os); - if (result == null) - return null; - return result.toArray(new String[result.size()]); - } - - public String getConfigIniPath(String os) { - String specific = platformSpecificConfigPaths.get(os); - return specific == null ? configPath : specific; - } - - public String getConfigIniPath() { - return configPath; - } - - /** - * Returns the ID for this product. - */ - public String getId() { - if (uid != null) - return uid; - return id; - } - - public String getProductId() { - return id; - } - - /** - * Returns the location (the bundle) that defines the splash screen - */ - public String getSplashLocation() { - return splashLocation; - } - - /** - * Returns the product name. - */ - public String getProductName() { - return productName; - } - - /** - * Returns the application identifier for this product. - */ - public String getApplication() { - return application; - } - - /** - * Returns true if this product is built using feature, - * false otherwise. - */ - public boolean useFeatures() { - return useFeatures; - } - - /** - * Returns the version of the product - */ - public String getVersion() { - return (version == null || version.length() == 0) ? "0.0.0" : version; //$NON-NLS-1$ - } - - /** - * Returns the VM arguments for a specific platform. - * If the empty string is used for the OS, this returns - * the default VM arguments - */ - public String getVMArguments(String os) { - os = os == null ? "" : os; //$NON-NLS-1$ - String key = null; - if (os.equals(OS_WIN32)) { - key = VM_ARGS_WIN; - } else if (os.equals(OS_LINUX)) { - key = VM_ARGS_LINUX; - } else if (os.equals(OS_MACOSX)) { - key = VM_ARGS_MAC; - } else if (os.equals(OS_SOLARIS)) { - key = VM_ARGS_SOLARIS; - } - - String prefix = launcherArgs.getProperty(VM_ARGS); - String platform = null, args = null; - if (key != null) - platform = launcherArgs.getProperty(key); - if (prefix != null) - args = platform != null ? prefix + " " + platform : prefix; //$NON-NLS-1$ - else - args = platform != null ? platform : ""; //$NON-NLS-1$ - return normalize(args); - } - - /** - * Returns the program arguments for a specific platform. - * If the empty string is used for the OS, this returns - * the default program arguments - */ - public String getProgramArguments(String os) { - os = os == null ? "" : os; //$NON-NLS-1$ - String key = null; - if (os.equals(OS_WIN32)) { - key = PROGRAM_ARGS_WIN; - } else if (os.equals(OS_LINUX)) { - key = PROGRAM_ARGS_LINUX; - } else if (os.equals(OS_MACOSX)) { - key = PROGRAM_ARGS_MAC; - } else if (os.equals(OS_SOLARIS)) { - key = PROGRAM_ARGS_SOLARIS; - } - - String prefix = launcherArgs.getProperty(PROGRAM_ARGS); - String platform = null, args = null; - if (key != null) - platform = launcherArgs.getProperty(key); - if (prefix != null) - args = platform != null ? prefix + " " + platform : prefix; //$NON-NLS-1$ - else - args = platform != null ? platform : ""; //$NON-NLS-1$ - return normalize(args); - } - - public String getLicenseText() { - return licenseText; - } - - public String getLicenseURL() { - return licenseURL; - } - - public void startElement(String uri, String localName, String qName, Attributes attributes) { - switch (state) { - case STATE_START : - if (EL_PRODUCT.equals(localName)) { - processProduct(attributes); - state = STATE_PRODUCT; - } - break; - - case STATE_PRODUCT : - if (EL_CONFIG_INI.equals(localName)) { - processConfigIni(attributes); - state = STATE_CONFIG_INI; - } else if (EL_LAUNCHER.equals(localName)) { - processLauncher(attributes); - state = STATE_LAUNCHER; - } else if (EL_PLUGINS.equals(localName)) { - state = STATE_PLUGINS; - } else if (EL_FEATURES.equals(localName)) { - state = STATE_FEATURES; - } else if (EL_LAUNCHER_ARGS.equals(localName)) { - state = STATE_LAUNCHER_ARGS; - } else if (EL_SPLASH.equals(localName)) { - splashLocation = attributes.getValue(ATTRIBUTE_LOCATION); - } else if (EL_CONFIGURATIONS.equals(localName)) { - state = STATE_CONFIGURATIONS; - } else if (EL_LICENSE.equals(localName)) { - state = STATE_LICENSE; - } - break; - - case STATE_CONFIG_INI : - processConfigIniPlatform(localName, true); - break; - - case STATE_LAUNCHER : - if (OS_SOLARIS.equals(localName)) { - processSolaris(attributes); - } else if ("win".equals(localName)) { //$NON-NLS-1$ - processWin(attributes); - } else if (OS_LINUX.equals(localName)) { - processLinux(attributes); - } else if (OS_MACOSX.equals(localName)) { - processMac(attributes); - } - if ("ico".equals(localName)) { //$NON-NLS-1$ - processIco(attributes); - } else if ("bmp".equals(localName)) { //$NON-NLS-1$ - processBmp(attributes); - } - break; - - case STATE_LAUNCHER_ARGS : - if (PROGRAM_ARGS.equals(localName)) { - state = STATE_PROGRAM_ARGS; - } else if (PROGRAM_ARGS_LINUX.equals(localName)) { - state = STATE_PROGRAM_ARGS_LINUX; - } else if (PROGRAM_ARGS_MAC.equals(localName)) { - state = STATE_PROGRAM_ARGS_MAC; - } else if (PROGRAM_ARGS_SOLARIS.equals(localName)) { - state = STATE_PROGRAM_ARGS_SOLARIS; - } else if (PROGRAM_ARGS_WIN.equals(localName)) { - state = STATE_PROGRAM_ARGS_WIN; - } else if (VM_ARGS.equals(localName)) { - state = STATE_VM_ARGS; - } else if (VM_ARGS_LINUX.equals(localName)) { - state = STATE_VM_ARGS_LINUX; - } else if (VM_ARGS_MAC.equals(localName)) { - state = STATE_VM_ARGS_MAC; - } else if (VM_ARGS_SOLARIS.equals(localName)) { - state = STATE_VM_ARGS_SOLARIS; - } else if (VM_ARGS_WIN.equals(localName)) { - state = STATE_VM_ARGS_WIN; - } - break; - - case STATE_PLUGINS : - if (EL_PLUGIN.equals(localName)) { - processPlugin(attributes); - } - break; - - case STATE_LICENSE : - if (EL_URL.equals(localName)) { - state = STATE_LICENSE_URL; - } else if (EL_TEXT.equals(localName)) { - licenseText = ""; //$NON-NLS-1$ - state = STATE_LICENSE_TEXT; - } - break; - - case STATE_FEATURES : - if (EL_FEATURE.equals(localName)) { - processFeature(attributes); - } - break; - case STATE_CONFIGURATIONS : - if (EL_PLUGIN.equals(localName)) { - processPluginConfiguration(attributes); - } else if (EL_PROPERTY.equals(localName)) { - processPropertyConfiguration(attributes); - } - break; - } - } - - /** - * Processes the property tag in the .product file. These tags contain - * a Name and Value pair. For each tag (with a non-null name), a property - * is created. - */ - private void processPropertyConfiguration(Attributes attributes) { - String name = attributes.getValue(ATTRIBUTE_NAME); - String value = attributes.getValue(ATTRIBUTE_VALUE); - if (name == null) - return; - if (value == null) - value = ""; //$NON-NLS-1$ - if (properties == null) - properties = new HashMap<String, String>(); - properties.put(name, value); - } - - private void processPluginConfiguration(Attributes attributes) { - BundleInfo info = new BundleInfo(); - info.setSymbolicName(attributes.getValue(ATTRIBUTE_ID)); - info.setVersion(attributes.getValue(ATTRIBUTE_VERSION)); - String value = attributes.getValue(ATTRIBUTE_START_LEVEL); - if (value != null) { - int startLevel = Integer.parseInt(value); - if (startLevel > 0) - info.setStartLevel(startLevel); - } - value = attributes.getValue(ATTRIBUTE_AUTO_START); - if (value != null) - info.setMarkedAsStarted(Boolean.valueOf(value).booleanValue()); - if (bundleInfos == null) - bundleInfos = new ArrayList<BundleInfo>(); - bundleInfos.add(info); - } - - public void endElement(String uri, String localName, String qName) { - switch (state) { - case STATE_PLUGINS : - if (EL_PLUGINS.equals(localName)) - state = STATE_PRODUCT; - break; - case STATE_FEATURES : - if (EL_FEATURES.equals(localName)) - state = STATE_PRODUCT; - break; - case STATE_LAUNCHER_ARGS : - if (EL_LAUNCHER_ARGS.equals(localName)) - state = STATE_PRODUCT; - break; - case STATE_LAUNCHER : - if (EL_LAUNCHER.equals(localName)) - state = STATE_PRODUCT; - break; - case STATE_CONFIGURATIONS : - if (EL_CONFIGURATIONS.equals(localName)) - state = STATE_PRODUCT; - break; - case STATE_LICENSE : - if (EL_LICENSE.equals(localName)) - state = STATE_PRODUCT; - break; - - case STATE_PROGRAM_ARGS : - case STATE_PROGRAM_ARGS_LINUX : - case STATE_PROGRAM_ARGS_MAC : - case STATE_PROGRAM_ARGS_SOLARIS : - case STATE_PROGRAM_ARGS_WIN : - case STATE_VM_ARGS : - case STATE_VM_ARGS_LINUX : - case STATE_VM_ARGS_MAC : - case STATE_VM_ARGS_SOLARIS : - case STATE_VM_ARGS_WIN : - state = STATE_LAUNCHER_ARGS; - break; - case STATE_LICENSE_URL : - case STATE_LICENSE_TEXT : - state = STATE_LICENSE; - break; - - case STATE_CONFIG_INI : - if (EL_CONFIG_INI.equals(localName)) - state = STATE_PRODUCT; - else - processConfigIniPlatform(localName, false); - break; - } - } - - public void characters(char[] ch, int start, int length) { - switch (state) { - case STATE_PROGRAM_ARGS : - addLaunchArgumentToMap(PROGRAM_ARGS, String.valueOf(ch, start, length)); - break; - case STATE_PROGRAM_ARGS_LINUX : - addLaunchArgumentToMap(PROGRAM_ARGS_LINUX, String.valueOf(ch, start, length)); - break; - case STATE_PROGRAM_ARGS_MAC : - addLaunchArgumentToMap(PROGRAM_ARGS_MAC, String.valueOf(ch, start, length)); - break; - case STATE_PROGRAM_ARGS_SOLARIS : - addLaunchArgumentToMap(PROGRAM_ARGS_SOLARIS, String.valueOf(ch, start, length)); - break; - case STATE_PROGRAM_ARGS_WIN : - addLaunchArgumentToMap(PROGRAM_ARGS_WIN, String.valueOf(ch, start, length)); - break; - case STATE_VM_ARGS : - addLaunchArgumentToMap(VM_ARGS, String.valueOf(ch, start, length)); - break; - case STATE_VM_ARGS_LINUX : - addLaunchArgumentToMap(VM_ARGS_LINUX, String.valueOf(ch, start, length)); - break; - case STATE_VM_ARGS_MAC : - addLaunchArgumentToMap(VM_ARGS_MAC, String.valueOf(ch, start, length)); - break; - case STATE_VM_ARGS_SOLARIS : - addLaunchArgumentToMap(VM_ARGS_SOLARIS, String.valueOf(ch, start, length)); - break; - case STATE_VM_ARGS_WIN : - addLaunchArgumentToMap(VM_ARGS_WIN, String.valueOf(ch, start, length)); - break; - case STATE_CONFIG_INI : - if (platformConfigPath != null) - platformConfigPath += String.valueOf(ch, start, length); - break; - case STATE_LICENSE_URL : - licenseURL = String.valueOf(ch, start, length); - break; - case STATE_LICENSE_TEXT : - if (licenseText != null) - licenseText += String.valueOf(ch, start, length); - break; - - } - } - - private void addLaunchArgumentToMap(String key, String value) { - if (launcherArgs == null) - launcherArgs = new Properties(); - - String oldValue = launcherArgs.getProperty(key); - if (oldValue != null) - launcherArgs.setProperty(key, oldValue + value); - else - launcherArgs.setProperty(key, value); - } - - private void processPlugin(Attributes attributes) { - String fragment = attributes.getValue(ATTRIBUTE_FRAGMENT); - IVersionedId name = new VersionedId(attributes.getValue(ATTRIBUTE_ID), attributes.getValue(ATTRIBUTE_VERSION)); - if (fragment != null && new Boolean(fragment).booleanValue()) { - if (fragments == null) - fragments = new ArrayList<IVersionedId>(); - fragments.add(name); - } else { - if (plugins == null) - plugins = new ArrayList<IVersionedId>(); - plugins.add(name); - } - } - - private void processFeature(Attributes attributes) { - IVersionedId name = new VersionedId(attributes.getValue(ATTRIBUTE_ID), attributes.getValue(ATTRIBUTE_VERSION)); - if (features == null) - features = new ArrayList<IVersionedId>(); - features.add(name); - } - - private void processProduct(Attributes attributes) { - id = attributes.getValue(ATTRIBUTE_ID); - uid = attributes.getValue(ATTRIBUTE_UID); - productName = attributes.getValue(ATTRIBUTE_NAME); - application = attributes.getValue(ATTRIBUTE_APPLICATION); - String use = attributes.getValue("useFeatures"); //$NON-NLS-1$ - if (use != null) - useFeatures = Boolean.valueOf(use).booleanValue(); - version = attributes.getValue(ATTRIBUTE_VERSION); - } - - private void processConfigIni(Attributes attributes) { - String path = null; - if ("custom".equals(attributes.getValue("use"))) { //$NON-NLS-1$//$NON-NLS-2$ - path = attributes.getValue(ATTRIBUTE_PATH); - } - String os = attributes.getValue("os"); //$NON-NLS-1$ - if (os != null && os.length() > 0) { - // TODO should we allow a platform-specific default to over-ride a custom generic path? - if (path != null) - platformSpecificConfigPaths.put(os, path); - } else if (path != null) { - configPath = path; - } - } - - private void processConfigIniPlatform(String key, boolean begin) { - if (begin) { - configPlatform = key; - platformConfigPath = ""; //$NON-NLS-1$ - } else if (configPlatform.equals(key) && platformConfigPath.length() > 0) { - platformSpecificConfigPaths.put(key, platformConfigPath); - platformConfigPath = null; - } - } - - private void processLauncher(Attributes attributes) { - launcherName = attributes.getValue(ATTRIBUTE_NAME); - } - - private void addIcon(String os, String value) { - if (value == null) - return; - - File iconFile = new File(value); - if (!iconFile.isFile()) { - //workspace - Location instanceLocation = (Location) ServiceHelper.getService(Activator.getContext(), Location.class.getName(), Location.INSTANCE_FILTER); - if (instanceLocation != null && instanceLocation.getURL() != null) { - File workspace = URLUtil.toFile(instanceLocation.getURL()); - if (workspace != null) - iconFile = new File(workspace, value); - } - } - if (!iconFile.isFile()) - iconFile = new File(location.getParentFile(), value); - - Collection<String> list = icons.get(os); - if (list == null) { - list = new ArrayList<String>(6); - icons.put(os, list); - } - list.add(iconFile.getAbsolutePath()); - } - - private void processSolaris(Attributes attributes) { - addIcon(OS_SOLARIS, attributes.getValue(SOLARIS_LARGE)); - addIcon(OS_SOLARIS, attributes.getValue(SOLARIS_MEDIUM)); - addIcon(OS_SOLARIS, attributes.getValue(SOLARIS_SMALL)); - addIcon(OS_SOLARIS, attributes.getValue(SOLARIS_TINY)); - } - - private void processWin(Attributes attributes) { - // useIco = Boolean.valueOf(attributes.getValue(P_USE_ICO)).booleanValue(); - } - - private void processIco(Attributes attributes) { - addIcon(OS_WIN32, attributes.getValue(ATTRIBUTE_PATH)); - } - - private void processBmp(Attributes attributes) { - addIcon(OS_WIN32, attributes.getValue(WIN32_16_HIGH)); - addIcon(OS_WIN32, attributes.getValue(WIN32_16_LOW)); - addIcon(OS_WIN32, attributes.getValue(WIN32_24_LOW)); - addIcon(OS_WIN32, attributes.getValue(WIN32_32_HIGH)); - addIcon(OS_WIN32, attributes.getValue(WIN32_32_LOW)); - addIcon(OS_WIN32, attributes.getValue(WIN32_48_HIGH)); - addIcon(OS_WIN32, attributes.getValue(WIN32_48_LOW)); - } - - private void processLinux(Attributes attributes) { - addIcon(OS_LINUX, attributes.getValue(ATTRIBUTE_ICON)); - } - - private void processMac(Attributes attributes) { - addIcon(OS_MACOSX, attributes.getValue(ATTRIBUTE_ICON)); - } - -} |