1 /*******************************************************************************
2  *  Copyright (c) 2005, 2008 IBM Corporation and others.
3  *
4  *  This program and the accompanying materials
5  *  are made available under the terms of the Eclipse Public License 2.0
6  *  which accompanies this distribution, and is available at
7  *  https://www.eclipse.org/legal/epl-2.0/
8  *
9  *  SPDX-License-Identifier: EPL-2.0
10  *
11  *  Contributors:
12  *     IBM Corporation - initial API and implementation
13  *******************************************************************************/
14 package org.eclipse.equinox.internal.p2.update;
15 
16 import java.net.URL;
17 
18 /*
19  * Represents a feature entry in a platform.xml file.
20  */
21 public class Feature {
22 
23 	private String id;
24 	private String url;
25 	private String version;
26 	private Site site;
27 	private String pluginIdentifier;
28 	private String pluginVersion;
29 	private String application;
30 	private URL[] roots;
31 	private boolean primary = false;
32 
Feature(Site site)33 	public Feature(Site site) {
34 		super();
35 		if (site == null)
36 			throw new IllegalArgumentException(Messages.empty_feature_site);
37 		this.site = site;
38 	}
39 
getApplication()40 	public String getApplication() {
41 		return application;
42 	}
43 
getId()44 	public String getId() {
45 		return id;
46 	}
47 
getPluginIdentifier()48 	public String getPluginIdentifier() {
49 		return pluginIdentifier;
50 	}
51 
getPluginVersion()52 	public String getPluginVersion() {
53 		return pluginVersion;
54 	}
55 
getRoots()56 	public URL[] getRoots() {
57 		return roots;
58 	}
59 
getSite()60 	public Site getSite() {
61 		return site;
62 	}
63 
getUrl()64 	public String getUrl() {
65 		return url;
66 	}
67 
getVersion()68 	public String getVersion() {
69 		return version;
70 	}
71 
isPrimary()72 	public boolean isPrimary() {
73 		return primary;
74 	}
75 
setApplication(String application)76 	public void setApplication(String application) {
77 		this.application = application;
78 	}
79 
setId(String id)80 	public void setId(String id) {
81 		this.id = id;
82 	}
83 
setPluginIdentifier(String pluginIdentifier)84 	public void setPluginIdentifier(String pluginIdentifier) {
85 		this.pluginIdentifier = pluginIdentifier;
86 	}
87 
setPluginVersion(String pluginVersion)88 	public void setPluginVersion(String pluginVersion) {
89 		this.pluginVersion = pluginVersion;
90 	}
91 
setPrimary(boolean primary)92 	public void setPrimary(boolean primary) {
93 		this.primary = primary;
94 	}
95 
setRoots(URL[] roots)96 	public void setRoots(URL[] roots) {
97 		this.roots = roots;
98 	}
99 
setUrl(String url)100 	public void setUrl(String url) {
101 		this.url = url;
102 	}
103 
setVersion(String version)104 	public void setVersion(String version) {
105 		this.version = version;
106 	}
107 
108 	@Override
equals(Object obj)109 	public boolean equals(Object obj) {
110 		if (!(obj instanceof Feature))
111 			return false;
112 		Feature other = (Feature) obj;
113 		if (!equals(getId(), other.getId()))
114 			return false;
115 		// shallow equals here. sites should never be null
116 		if (!equals(getSite().getUrl(), other.getSite().getUrl()))
117 			return false;
118 		if (!equals(getUrl(), other.getUrl()))
119 			return false;
120 		if (!equals(getVersion(), other.getVersion()))
121 			return false;
122 		return true;
123 	}
124 
equals(Object one, Object two)125 	private static boolean equals(Object one, Object two) {
126 		return one == null ? two == null : one.equals(two);
127 	}
128 
129 	@Override
hashCode()130 	public int hashCode() {
131 		return id.hashCode() + version.hashCode();
132 	}
133 }
134