| /******************************************************************************* |
| * Copyright (c) 2000, 2006 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 |
| *******************************************************************************/ |
| package org.eclipse.update.internal.model; |
| |
| import java.io.IOException; |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| import java.net.URLClassLoader; |
| import java.util.Locale; |
| import java.util.MissingResourceException; |
| import java.util.ResourceBundle; |
| |
| import org.eclipse.core.runtime.Assert; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.update.configuration.ILocalSite; |
| import org.eclipse.update.configurator.IPlatformConfiguration; |
| import org.eclipse.update.internal.configurator.PlatformConfiguration; |
| import org.eclipse.update.internal.core.BaseSiteLocalFactory; |
| import org.eclipse.update.internal.core.InstallConfiguration; |
| import org.eclipse.update.internal.core.LocalSite; |
| import org.eclipse.update.internal.core.UpdateCore; |
| import org.eclipse.update.internal.core.UpdateManagerUtils; |
| |
| /** |
| * parse the default site.xml |
| */ |
| |
| public class SiteLocalParser { |
| |
| private PlatformConfiguration platformConfig; |
| private SiteLocalModel site; |
| public static final String CONFIG = "config"; //$NON-NLS-1$ |
| private ResourceBundle bundle; |
| private BaseSiteLocalFactory factory = new BaseSiteLocalFactory(); |
| |
| /** |
| * return the appropriate resource bundle for this sitelocal |
| */ |
| private ResourceBundle getResourceBundle() throws CoreException { |
| ResourceBundle bundle = null; |
| URL url = null; |
| try { |
| url = UpdateManagerUtils.asDirectoryURL(site.getLocationURL()); |
| ClassLoader l = new URLClassLoader(new URL[] { url }, null); |
| bundle = ResourceBundle.getBundle("platform", Locale.getDefault(), l); //$NON-NLS-1$ |
| } catch (MissingResourceException e) { |
| UpdateCore.warn(e.getLocalizedMessage() + ":" + url.toExternalForm()); //$NON-NLS-1$ |
| } catch (MalformedURLException e) { |
| UpdateCore.warn(e.getLocalizedMessage()); |
| } |
| return bundle; |
| } |
| |
| /** |
| * Constructor for DefaultSiteParser |
| */ |
| public SiteLocalParser(IPlatformConfiguration platformConfig, ILocalSite site) throws IOException, CoreException { |
| Assert.isTrue(platformConfig instanceof PlatformConfiguration); |
| this.platformConfig = (PlatformConfiguration)platformConfig; |
| |
| Assert.isTrue(site instanceof SiteLocalModel); |
| this.site = (SiteLocalModel) site; |
| |
| // DEBUG: |
| if (UpdateCore.DEBUG && UpdateCore.DEBUG_SHOW_PARSING) { |
| UpdateCore.debug("Start parsing localsite:" + ((SiteLocalModel) site).getLocationURLString()); //$NON-NLS-1$ |
| } |
| |
| bundle = getResourceBundle(); |
| |
| processConfig(); |
| //processHistory(); |
| } |
| |
| |
| // /** |
| // * process the Site info |
| // */ |
| // private void processSite(Attributes attributes) throws MalformedURLException { |
| // // |
| // String info = attributes.getValue("label"); //$NON-NLS-1$ |
| // info = UpdateManagerUtils.getResourceString(info, bundle); |
| // site.setLabel(info); |
| // |
| // // history |
| // String historyString = attributes.getValue("history"); //$NON-NLS-1$ |
| // int history; |
| // if (historyString == null || historyString.equals("")) { //$NON-NLS-1$ |
| // history = SiteLocalModel.DEFAULT_HISTORY; |
| // } else { |
| // history = Integer.parseInt(historyString); |
| // } |
| // site.setMaximumHistoryCount(history); |
| // |
| // //stamp |
| // String stampString = attributes.getValue("stamp"); //$NON-NLS-1$ |
| // long stamp = Long.parseLong(stampString); |
| // site.setStamp(stamp); |
| // |
| // // DEBUG: |
| // if (UpdateCore.DEBUG && UpdateCore.DEBUG_SHOW_PARSING) { |
| // UpdateCore.debug("End process Site label:" + info); //$NON-NLS-1$ |
| // } |
| // |
| // } |
| |
| /** |
| * process the Config info |
| */ |
| private void processConfig() throws MalformedURLException, CoreException { |
| |
| String label = platformConfig.getConfiguration().getDate().toString(); |
| label = UpdateManagerUtils.getResourceString(label, bundle); |
| site.setLabel(label); |
| |
| URL url = site.getLocationURL(); |
| InstallConfigurationModel config = factory.createInstallConfigurationModel(); |
| config.setLocationURLString(url.toExternalForm()); |
| config.setLabel(label); |
| config.resolve(url, site.getResourceBundleURL()); |
| |
| // add the config |
| ((LocalSite)site).addConfiguration((InstallConfiguration)config); |
| |
| // DEBUG: |
| if (UpdateCore.DEBUG && UpdateCore.DEBUG_SHOW_PARSING) { |
| UpdateCore.debug("End Processing Config Tag: url:" + url.toExternalForm()); //$NON-NLS-1$ |
| } |
| } |
| } |