blob: 4b72663aadfba102ee8cc6fff3e753b9a9c1263f [file] [log] [blame]
/*******************************************************************************
* 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$
}
}
}