blob: d7f6e59af6b1acb556745084937a6eaac3bb8daf [file] [log] [blame]
package org.eclipse.update.internal.model;
/*
* (c) Copyright IBM Corp. 2000, 2002.
* All Rights Reserved.
*/
import java.io.*;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.update.core.Utilities;
import org.eclipse.update.core.model.ModelObject;
import org.eclipse.update.internal.core.*;
import org.xml.sax.SAXException;
/**
* An InstallConfigurationModel is
*
*/
public class InstallConfigurationModel extends ModelObject {
/**
* initialize the configurations from the persistent model.
*/
public void initialize() throws CoreException {
try {
URL resolvedURL = URLEncoder.encode(getURL());
InputStream in = UpdateManagerPlugin.getPlugin().get(resolvedURL).getInputStream();
new InstallConfigurationParser(in, this);
} catch (FileNotFoundException exception) {
UpdateManagerPlugin.warn(getLocationURLString() + " does not exist, The local site is not in synch with the file system and is pointing to a file that doesn't exist.",exception); //$NON-NLS-1$
throw Utilities.newCoreException(Policy.bind("InstallConfiguration.ErrorDuringFileAccess",getLocationURLString()), exception); //$NON-NLS-1$
} catch (SAXException exception) {
throw Utilities.newCoreException(Policy.bind("InstallConfiguration.ParsingErrorDuringCreation", getLocationURLString(),"\r\n"+exception.toString()), exception); //$NON-NLS-1$ //$NON-NLS-2$
} catch (IOException exception) {
throw Utilities.newCoreException(Policy.bind("InstallConfiguration.ErrorDuringFileAccess",getLocationURLString()), exception); //$NON-NLS-1$
}
}
private boolean isCurrent;
private URL locationURL;
private String locationURLString;
private Date date;
private String label;
private List /* of ConfiguretionActivityModel */activities;
private List /* of configurationSiteModel */ configurationSites;
private long timeline;
/**
* default constructor. Create
*/
public InstallConfigurationModel(){
}
/**
* @since 2.0
*/
public ConfiguredSiteModel[] getConfigurationSitesModel() {
if (configurationSites == null)
return new ConfiguredSiteModel[0];
return (ConfiguredSiteModel[]) configurationSites.toArray(arrayTypeFor(configurationSites));
}
/**
* Adds the configuration to the list
* is called when adding a Site or parsing the XML file
* in this case we do not want to create a new activity, so we do not want t call
* addConfigurationSite()
*/
public void addConfigurationSiteModel(ConfiguredSiteModel site) {
if (configurationSites == null) {
configurationSites = new ArrayList();
}
if (!configurationSites.contains(site)){
configurationSites.add(site);
}
}
public void setConfigurationSiteModel(ConfiguredSiteModel[] sites) {
configurationSites=null;
for (int i = 0; i < sites.length; i++) {
addConfigurationSiteModel(sites[i]);
}
}
/**
* @since 2.0
*/
public boolean removeConfigurationSiteModel(ConfiguredSiteModel site) {
if (!isCurrent)
return false;
if (configurationSites != null) {
return configurationSites.remove(site);
}
return false;
}
/**
* @since 2.0
*/
public boolean isCurrent() {
return isCurrent;
}
/**
* @since 2.0
*/
public void setCurrent(boolean isCurrent) {
// do not check if writable as we may
// set an install config as Not current
this.isCurrent = isCurrent;
}
/**
* @since 2.0
*/
public ConfigurationActivityModel[] getActivityModel() {
if (activities==null)
return new ConfigurationActivityModel[0];
return (ConfigurationActivityModel[]) activities.toArray(arrayTypeFor(activities));
}
/**
* @since 2.0
*/
public void addActivityModel(ConfigurationActivityModel activity) {
if (activities == null)
activities = new ArrayList();
if (!activities.contains(activity)){
activities.add(activity);
activity.setInstallConfigurationModel(this);
}
}
/**
*
*/
public Date getCreationDate() {
return date;
}
/**
* Sets the date.
* @param date The date to set
*/
public void setCreationDate(Date date) {
assertIsWriteable();
this.date = date;
}
/**
* @since 2.0
*/
public URL getURL() {
return locationURL;
}
/**
* @since 2.0
*/
public String getLabel() {
return label;
}
/**
* @since 2.0.2
*/
public String toString() {
return getLabel();
}
/**
* Sets the label.
* @param label The label to set
*/
public void setLabel(String label) {
assertIsWriteable();
this.label = label;
}
/**
* Gets the locationURLString.
* @return Returns a String
*/
public String getLocationURLString() {
return locationURLString;
}
/**
* Sets the locationURLString.
* @param locationURLString The locationURLString to set
*/
public void setLocationURLString(String locationURLString) {
assertIsWriteable();
this.locationURLString = locationURLString;
this.locationURL = null;
}
/*
* @see ModelObject#resolve(URL, ResourceBundle)
*/
public void resolve(URL base, ResourceBundle bundle)
throws MalformedURLException {
// local
locationURL = resolveURL(base,bundle,locationURLString);
// delagate
resolveListReference(getActivityModel(),base,bundle);
resolveListReference(getConfigurationSitesModel(),base,bundle);
}
/**
* Returns the timeline.
* @return long
*/
public long getTimeline() {
return timeline;
}
/**
* Sets the timeline.
* @param timeline The timeline to set
*/
public void setTimeline(long timeline) {
this.timeline = timeline;
}
}