| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2006 IBM Corporation 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: |
| // IBM Corporation - initial implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.library.configuration.closure; |
| |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import org.eclipse.epf.uma.MethodElement; |
| |
| /** |
| * Holds the a list of package references of one package element it also holds a |
| * list of dependant package elements |
| * |
| * @author Jinhua Xi |
| * @since 1.0 |
| */ |
| public class ElementDependency { |
| |
| // the package element |
| protected MethodElement element; |
| |
| /** |
| * list of ElementReference objects, each ElementReference object holds a |
| * list of references of the same type |
| */ |
| protected List references = new ArrayList(); |
| |
| /** |
| * dependents |
| */ |
| protected List dependents = new ArrayList(); |
| |
| protected ElementDependency(MethodElement element) { |
| this.element = element; |
| } |
| |
| /** |
| * get the element |
| * @return Object |
| */ |
| public MethodElement getElement() { |
| return element; |
| } |
| |
| /** |
| * get a list of elements this element depends on |
| * |
| * @return List a list of ElementReference objects |
| */ |
| public List getReferences() { |
| return references; |
| } |
| |
| /** |
| * get the ElementReference with the given refElement that the current |
| * element recerences to. |
| * |
| * @param RefElement |
| * the element to which the current element references |
| * @return ElementReference |
| */ |
| public ElementReference getReference(MethodElement refElement) { |
| ElementReference ref; |
| Object refEl; |
| for (Iterator it = references.iterator(); it.hasNext();) { |
| ref = (ElementReference) it.next(); |
| refEl = ref.getRefElement(); |
| if (refEl != null && refEl == refElement) { |
| return ref; |
| } |
| } |
| |
| return null; |
| } |
| |
| /** |
| * get the list of elements that depend on this element |
| * @return List |
| */ |
| public List getDependents() { |
| return dependents; |
| } |
| |
| /** |
| * add a dependent |
| * @param el Object |
| */ |
| public void addDependent(MethodElement el) { |
| if (!dependents.contains(el)) { |
| dependents.add(el); |
| } |
| } |
| |
| /** |
| * add a reference |
| * @param ref ElementReference |
| */ |
| public void addReference(ElementReference ref) { |
| references.add(ref); |
| } |
| |
| /** |
| * print out the references. This is a debugging method. |
| * |
| */ |
| public void print() { |
| for (Iterator it = references.iterator(); it.hasNext();) { |
| Object ref = it.next(); |
| if (ref instanceof PackageReference) { |
| ((PackageReference) ref).print(); |
| } else { |
| ((ElementReference) ref).print(); |
| } |
| } |
| } |
| |
| } |