/***************************************************************************** * 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.IAttribute; import org.eclipse.buckminster.core.cspec.IComponentRequest; import org.eclipse.buckminster.core.cspec.IPrerequisite; import org.eclipse.buckminster.core.cspec.model.Attribute; import org.eclipse.buckminster.core.cspec.model.PrerequisiteAlreadyDefinedException; import org.eclipse.buckminster.osgi.filter.Filter; import org.eclipse.equinox.p2.metadata.VersionRange; /** * @author Thomas Hallgren */ public abstract class TopLevelAttributeBuilder extends AttributeBuilder { private boolean publ = false; TopLevelAttributeBuilder(CSpecBuilder cspecBuilder) { super(cspecBuilder); } public final PrerequisiteBuilder addExternalPrerequisite(IComponentRequest request, String attr) throws PrerequisiteAlreadyDefinedException { return addPrerequisite(createPrerequisite(request.getName(), request.getComponentTypeID(), request.getVersionRange(), attr, null, null)); } public final PrerequisiteBuilder addLocalPrerequisite(AttributeBuilder attr) throws PrerequisiteAlreadyDefinedException { return addLocalPrerequisite(attr.getName()); } public final PrerequisiteBuilder addLocalPrerequisite(String attr) throws PrerequisiteAlreadyDefinedException { return addPrerequisite(createPrerequisite(null, null, null, attr, null, null)); } public final PrerequisiteBuilder addLocalPrerequisite(String attr, String alias) throws PrerequisiteAlreadyDefinedException { return addPrerequisite(createPrerequisite(null, null, null, attr, alias, null)); } public final PrerequisiteBuilder addLocalPrerequisite(String attr, String alias, Filter filter) throws PrerequisiteAlreadyDefinedException { return addPrerequisite(createPrerequisite(null, null, null, attr, alias, filter)); } public PrerequisiteBuilder addPrerequisite(PrerequisiteBuilder prerequisite) throws PrerequisiteAlreadyDefinedException { throw new UnsupportedOperationException(); } @Override public void clear() { super.clear(); publ = false; } @Override public abstract Attribute createAttribute(); public PrerequisiteBuilder createPrerequisiteBuilder() { return new PrerequisiteBuilder(this); } @Override public void initFrom(IAttribute attribute) { super.initFrom(attribute); publ = attribute.isPublic(); } @Override public boolean isPublic() { return publ; } public void removePrerequisite(IPrerequisite pq) { removePrerequisite(pq.toString()); } public void removePrerequisite(String prerequisiteName) { throw new UnsupportedOperationException(); } public void setPublic(boolean flag) { publ = flag; } private PrerequisiteBuilder createPrerequisite(String component, String type, VersionRange versionRange, String name, String alias, Filter filter) { PrerequisiteBuilder bld = createPrerequisiteBuilder(); bld.setComponentName(component); bld.setComponentType(type); bld.setVersionRange(versionRange); bld.setName(name); bld.setAlias(alias); bld.setFilter(filter); return bld; } }