blob: 7de5eb544eea2e4a63741929ac95186e313f321e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2017 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* SAP AG - consolidation of publishers for PDE formats
*******************************************************************************/
package org.eclipse.equinox.p2.publisher.eclipse;
import java.util.*;
/**
*
* Feature information
*/
public class Feature implements IPlatformEntry {
private final String id;
private String version;
private String label;
private String image;
private String brandingPlugin;
private boolean primary = false;
private boolean exclusive = false;
private String application;
private String colocationAffinity;
private URLEntry description;
private URLEntry license;
private String licenseFeature;
private String licenseFeatureVersion;
private URLEntry copyright;
private String installHandler;
private String installHandlerURL;
private String installHandlerLibrary;
private URLEntry updateSite;
private ArrayList<URLEntry> discoverySites;
private ArrayList<FeatureEntry> entries;
private String providerName;
private String os;
private String ws;
private String arch;
private String nl;
private String location;
private Map<Locale, Map<String, String>> localizations;
public Feature(String id, String version) {
if (id == null)
throw new IllegalArgumentException();
this.id = id;
this.version = version;
}
public void addDiscoverySite(String siteLabel, String url) {
if (siteLabel == null && url == null)
return;
if (this.discoverySites == null)
this.discoverySites = new ArrayList<>();
URLEntry entry = new URLEntry(url, siteLabel);
this.discoverySites.add(entry);
}
public void addEntry(FeatureEntry plugin) {
if (entries == null)
entries = new ArrayList<>();
entries.add(plugin);
}
public String getApplication() {
return application;
}
@Override
public String getArch() {
return arch;
}
public String getBrandingPlugin() {
return brandingPlugin;
}
public String getColocationAffinity() {
return colocationAffinity;
}
public String getCopyright() {
if (copyright != null)
return copyright.getAnnotation();
return null;
}
public String getCopyrightURL() {
if (copyright != null)
return copyright.getURL();
return null;
}
public String getDescription() {
if (description != null)
return description.getAnnotation();
return null;
}
public String getDescriptionURL() {
if (description != null)
return description.getURL();
return null;
}
public URLEntry[] getDiscoverySites() {
if (discoverySites == null)
return new URLEntry[0];
return discoverySites.toArray(new URLEntry[discoverySites.size()]);
}
public FeatureEntry[] getEntries() {
if (entries == null)
return new FeatureEntry[0];
return entries.toArray(new FeatureEntry[entries.size()]);
}
public String getId() {
return id;
}
public String getImage() {
return image;
}
public String getInstallHandler() {
return installHandler;
}
public String getInstallHandlerLibrary() {
return installHandlerLibrary;
}
public String getInstallHandlerURL() {
return installHandlerURL;
}
public String getLabel() {
return label;
}
public String getLicense() {
if (license != null)
return license.getAnnotation();
return null;
}
public String getLicenseFeature() {
return licenseFeature;
}
public String getLicenseFeatureVersion() {
return licenseFeatureVersion;
}
public String getLicenseURL() {
if (license != null)
return license.getURL();
return null;
}
public Map<Locale, Map<String, String>> getLocalizations() {
return this.localizations;
}
public String getLocation() {
return this.location;
}
@Override
public String getNL() {
return nl;
}
@Override
public String getOS() {
return os;
}
public String getProviderName() {
return providerName;
}
public URLEntry getUpdateSite() {
return updateSite;
}
public String getUpdateSiteLabel() {
if (updateSite != null)
return updateSite.getAnnotation();
return null;
}
public String getUpdateSiteURL() {
if (updateSite != null)
return updateSite.getURL();
return null;
}
public String getVersion() {
return version;
}
@Override
public String getWS() {
return ws;
}
public boolean isExclusive() {
return exclusive;
}
public boolean isPrimary() {
return primary;
}
public boolean removeEntry(FeatureEntry entry) {
if (entry == null || entries == null)
return false;
return entries.remove(entry);
}
public void setApplication(String application) {
this.application = application;
}
public void setBrandingPlugin(String brandingPlugin) {
this.brandingPlugin = brandingPlugin;
}
public void setColocationAffinity(String colocationAffinity) {
this.colocationAffinity = colocationAffinity;
}
public void setCopyright(String copyright) {
if (this.copyright == null)
this.copyright = new URLEntry();
this.copyright.setAnnotation(copyright);
}
public void setCopyrightURL(String copyrightURL) {
if (this.copyright == null)
this.copyright = new URLEntry();
this.copyright.setURL(copyrightURL);
}
public void setDescription(String description) {
if (this.description == null)
this.description = new URLEntry();
this.description.setAnnotation(description);
}
public void setDescriptionURL(String descriptionURL) {
if (this.description == null)
this.description = new URLEntry();
this.description.setURL(descriptionURL);
}
public void setEnvironment(String os, String ws, String arch, String nl) {
this.os = os;
this.ws = ws;
this.arch = arch;
this.nl = nl;
}
public void setExclusive(boolean exclusive) {
this.exclusive = exclusive;
}
public void setImage(String image) {
this.image = image;
}
public void setInstallHandler(String installHandler) {
this.installHandler = installHandler;
}
public void setInstallHandlerLibrary(String installHandlerLibrary) {
this.installHandlerLibrary = installHandlerLibrary;
}
public void setInstallHandlerURL(String installHandlerURL) {
this.installHandlerURL = installHandlerURL;
}
public void setLabel(String label) {
this.label = label;
}
public void setLicense(String license) {
if (this.license == null)
this.license = new URLEntry();
this.license.setAnnotation(license);
}
public void setLicenseFeature(String name) {
this.licenseFeature = name;
}
public void setLicenseFeatureVersion(String version) {
this.licenseFeatureVersion = version;
}
public void setLicenseURL(String licenseURL) {
if (this.license == null)
this.license = new URLEntry();
this.license.setURL(licenseURL);
}
public void setLocalizations(Map<Locale, Map<String, String>> localizations) {
this.localizations = localizations;
}
public void setLocation(String location) {
this.location = location;
}
public void setPrimary(boolean primary) {
this.primary = primary;
}
public void setProviderName(String value) {
providerName = value;
}
public void setUpdateSiteLabel(String updateSiteLabel) {
if (this.updateSite == null)
this.updateSite = new URLEntry();
this.updateSite.setAnnotation(updateSiteLabel);
}
public void setUpdateSiteURL(String updateSiteURL) {
if (this.updateSite == null)
this.updateSite = new URLEntry();
this.updateSite.setURL(updateSiteURL);
}
public void setVersion(String version) {
this.version = version;
}
/**
* For debugging purposes only.
*/
@Override
public String toString() {
return "Feature " + id + " version: " + version; //$NON-NLS-1$ //$NON-NLS-2$
}
}