/***************************************************************************** * 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.cspecext.builder; import java.util.HashSet; import java.util.Set; import org.eclipse.buckminster.core.common.model.ExpandingProperties; import org.eclipse.buckminster.core.cspec.IAttribute; import org.eclipse.buckminster.core.cspec.builder.AttributeBuilder; import org.eclipse.buckminster.core.cspecext.model.AlterAttribute; /** * @author Thomas Hallgren */ public abstract class AlterAttributeBuilder { private final AttributeBuilder baseBuilder; private final HashSet<String> removedHints = new HashSet<String>(); private final ExpandingProperties<String> alteredHints = new ExpandingProperties<String>(); private String cspecName = null; protected AlterAttributeBuilder(AttributeBuilder baseBuilder) { this.baseBuilder = baseBuilder; } public void addAlteredInstallerHInt(String key, String value) { alteredHints.put(key, value); } public void addRemovedInstallerHint(String key) { removedHints.add(key); } public void clear() { removedHints.clear(); alteredHints.clear(); baseBuilder.clear(); } public abstract AlterAttribute<?> createAlterAttribute(); public ExpandingProperties<String> getAlteredHints() { return alteredHints; } public AttributeBuilder getBaseBuilder() { return baseBuilder; } public String getCSpecName() { return cspecName; } public String getName() { return baseBuilder.getName(); } public Set<String> getRemovedHints() { return removedHints; } public void setCSpecName(String cspecName) { this.cspecName = cspecName; } IAttribute createBase() { return getBaseBuilder().createAttribute(); } }