/******************************************************************************* * Copyright (c) 2004, 2010 Tasktop Technologies and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.internal.tasks.bugs; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import org.eclipse.core.runtime.IBundleGroup; import org.eclipse.mylyn.tasks.bugs.IProduct; import org.eclipse.mylyn.tasks.bugs.IProvider; /** * @author Steffen Pingel */ public class SupportProduct extends AbstractSupportElement implements IProduct { private IBundleGroup bundleGroup; private boolean installed; TreeMap<String, ProductRepositoryMapping> mappingByNamespace; private String pluginId; private IProvider provider; private IBundleGroup versioningBundleGroup; public SupportProduct() { mappingByNamespace = new TreeMap<String, ProductRepositoryMapping>(); } public void addRepositoryMapping(ProductRepositoryMapping mapping) { ProductRepositoryMapping existingMapping = mappingByNamespace.get(mapping.getNamespace()); if (existingMapping != null) { existingMapping.getAttributes().putAll(mapping.getAttributes()); } else { mappingByNamespace.put(mapping.getNamespace(), mapping); } } public Map<String, String> getAllAttributes(String prefix) { Map<String, String> attributes = null; for (int i = 0; i <= prefix.length(); i++) { ProductRepositoryMapping mapping = getMapping(prefix.substring(0, i)); if (mapping != null) { if (attributes == null) { attributes = new HashMap<String, String>(); } attributes.putAll(mapping.getAttributes()); } } if (attributes != null) { return attributes; } else { return new HashMap<String, String>(); } } public String getAttribute(String prefix, String key) { for (int i = prefix.length() - 1; i >= 0; i--) { ProductRepositoryMapping mapping = getMapping(prefix.substring(0, i)); if (mapping != null) { String value = mapping.getAttributes().get(key); if (value != null) { return value; } } } return null; } public IBundleGroup getBundleGroup() { return bundleGroup; } public ProductRepositoryMapping getMapping(String prefix) { return mappingByNamespace.get(prefix); } public String getPluginId() { return pluginId; } public IProvider getProvider() { return provider; } public boolean hasMappings() { return !mappingByNamespace.isEmpty(); } public IBundleGroup getVersioningBundleGroup() { return versioningBundleGroup; } /** * @deprecated Use {@link #isInstalled()} instead */ @Deprecated public boolean isEnabled() { return isInstalled(); } public boolean isInstalled() { return installed; } public void setBundleGroup(IBundleGroup bundleGroup) { this.bundleGroup = bundleGroup; } public void setVersioningBundleGroup(IBundleGroup versioningBundleGroup) { this.versioningBundleGroup = versioningBundleGroup; } /** * @deprecated Use {@link #setInstalled(boolean)} instead */ @Deprecated public void setEnabled(boolean enabled) { setInstalled(enabled); } public void setInstalled(boolean enabled) { this.installed = enabled; } public void setPluginId(String pluginId) { this.pluginId = pluginId; } public void setProvider(IProvider provider) { this.provider = provider; } }