/* Copyright (C) 2009 Mobile Sorcery AB This program is free software; you can redistribute it and/or modify it under the terms of the Eclipse Public License v1.0. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Eclipse Public License v1.0 for more details. You should have received a copy of the Eclipse Public License v1.0 along with this program. It is also available at http://www.eclipse.org/legal/epl-v10.html */ package com.mobilesorcery.sdk.internal.dependencies; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.eclipse.core.runtime.CoreException; public class CompoundDependencyProvider<T> implements IDependencyProvider<T> { private IDependencyProvider<T>[] providers; public CompoundDependencyProvider(IDependencyProvider<T>... providers) { this.providers = providers; } public Map<T, Collection<T>> computeDependenciesOf(T obj) throws CoreException { HashMap<T, Collection<T>> result = new HashMap<T, Collection<T>>(); for (int i = 0; i < providers.length; i++) { Map<T, Collection<T>> providerDependencies = providers[i].computeDependenciesOf(obj); for (T providerDependency : providerDependencies.keySet()) { Collection<T> intermediateResult = result.get(providerDependency); if (intermediateResult == null) { result.put(providerDependency, providerDependencies.get(providerDependency)); } else { intermediateResult.addAll(providerDependencies.get(providerDependency)); } } } return result; } }