/******************************************************************************* * 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.mspec.builder; import java.util.regex.Pattern; import org.eclipse.buckminster.core.mspec.IMaterializationNode; import org.eclipse.buckminster.core.mspec.model.MaterializationNode; import org.eclipse.buckminster.osgi.filter.Filter; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Platform; /** * @author Thomas Hallgren * */ public class MaterializationNodeBuilder extends MaterializationDirectiveBuilder implements IMaterializationNode { private Pattern namePattern; private Filter filter; private IPath leafArtifact; private String componentTypeID; private boolean exclude; private Pattern bindingNamePattern; private String bindingNameReplacement; private String suffix; private boolean unpack; private boolean expand = true; // Only valid when materializing into workspace // private IPath resourcePath; @Override public void clear() { super.clear(); namePattern = null; filter = null; leafArtifact = null; componentTypeID = null; resourcePath = null; exclude = false; bindingNamePattern = null; bindingNameReplacement = null; suffix = null; unpack = false; expand = true; } public MaterializationNode createMaterializationNode() { return new MaterializationNode(this); } @Override @SuppressWarnings({ "rawtypes", "unchecked" }) public Object getAdapter(Class adapter) { if (adapter.isInstance(this)) return this; if (adapter.isAssignableFrom(MaterializationNode.class)) return new MaterializationNode(this); return Platform.getAdapterManager().getAdapter(this, adapter); } @Override public Pattern getBindingNamePattern() { return bindingNamePattern; } @Override public String getBindingNameReplacement() { return bindingNameReplacement; } @Override public String getComponentTypeID() { return componentTypeID; } @Override public Filter getFilter() { return filter; } @Override public IPath getLeafArtifact() { return leafArtifact; } @Override public Pattern getNamePattern() { return namePattern; } @Override public IPath getResourcePath() { return resourcePath; } @Override public String getSuffix() { return suffix; } public void initFrom(IMaterializationNode mn) { super.initFrom(mn); namePattern = mn.getNamePattern(); filter = mn.getFilter(); leafArtifact = mn.getLeafArtifact(); componentTypeID = mn.getComponentTypeID(); resourcePath = mn.getResourcePath(); exclude = mn.isExclude(); bindingNamePattern = mn.getBindingNamePattern(); bindingNameReplacement = mn.getBindingNameReplacement(); suffix = mn.getSuffix(); unpack = mn.isUnpack(); expand = mn.isExpand(); } @Override public boolean isExclude() { return exclude; } @Override public boolean isExpand() { return expand; } @Override public boolean isUnpack() { return unpack; } public void setBindingNamePattern(Pattern bindingNamePattern) { this.bindingNamePattern = bindingNamePattern; } public void setBindingNameReplacement(String bindingNameReplacement) { this.bindingNameReplacement = bindingNameReplacement; } public void setComponentTypeID(String componentTypeID) { this.componentTypeID = componentTypeID; } public void setExclude(boolean exclude) { this.exclude = exclude; } public void setExpand(boolean expand) { this.expand = expand; } public void setFilter(Filter filter) { this.filter = filter; } public void setLeafArtifact(IPath leafArtifact) { this.leafArtifact = leafArtifact; } public void setNamePattern(Pattern namePattern) { this.namePattern = namePattern; } public void setResourcePath(IPath resourcePath) { this.resourcePath = resourcePath; } public void setSuffix(String suffix) { this.suffix = suffix; } public void setUnpack(boolean unpack) { this.unpack = unpack; } }