blob: 6715da58602ab47c47e47ab9e98bed17aaec994a [file] [log] [blame]
/*******************************************************************************
* 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;
}
}