/*****************************************************************************
* Copyright (c) 2006-2013, Cloudsmith Inc.
* The code, documentation and other materials contained herein have been
* licensed under the Eclipse Public License - v 1.0 by the copyright holder
* listed above, as the Initial Contributor under such license. The text of
* such license is available at www.eclipse.org.
*****************************************************************************/
package org.eclipse.buckminster.core.cspec.builder;
import org.eclipse.buckminster.core.cspec.IComponentIdentifier;
import org.eclipse.buckminster.core.cspec.IComponentRequest;
import org.eclipse.buckminster.core.cspec.model.ComponentRequest;
import org.eclipse.buckminster.osgi.filter.Filter;
import org.eclipse.buckminster.runtime.Trivial;
import org.eclipse.equinox.p2.metadata.VersionRange;
/**
* @author Thomas Hallgren
*/
public class ComponentRequestBuilder implements IComponentRequest {
private String name;
private String componentType;
private VersionRange versionRange;
private Filter filter;
public void clear() {
name = null;
componentType = null;
versionRange = null;
filter = null;
}
public ComponentRequest createComponentRequest() {
return new ComponentRequest(this);
}
@Override
public boolean designates(IComponentIdentifier id) {
return Trivial.equalsAllowNull(getName(), id.getName()) && (componentType == null || componentType.equals(id.getComponentTypeID()))
&& (versionRange == null || versionRange.isIncluded(id.getVersion()));
}
@Override
public String getComponentTypeID() {
return componentType;
}
@Override
public Filter getFilter() {
return filter;
}
@Override
public String getName() {
return name;
}
@Override
public VersionRange getVersionRange() {
return versionRange;
}
public void initFrom(IComponentRequest request) {
name = request.getName();
componentType = request.getComponentTypeID();
versionRange = request.getVersionRange();
filter = request.getFilter();
}
public void setComponentTypeID(String componentType) {
this.componentType = componentType;
}
public void setFilter(Filter filter) {
this.filter = filter;
}
public void setName(String name) {
this.name = name;
}
public void setVersionRange(VersionRange versionRange) {
this.versionRange = versionRange;
}
}