blob: f15e3155922fbefb03998d7e30a9ab79016b927d [file] [log] [blame]
package org.eclipse.epf.library.realization.impl;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.epf.library.edit.realization.IRealizedRoleDescriptor;
import org.eclipse.epf.uma.Descriptor;
import org.eclipse.epf.uma.MethodElement;
import org.eclipse.epf.uma.RoleDescriptor;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.epf.uma.WorkProductDescriptor;
public class RealizedRoleDescriptor extends RealizedDescriptor implements
IRealizedRoleDescriptor {
private static Set<EStructuralFeature> featureSet = new HashSet<EStructuralFeature>();
static {
UmaPackage up = UmaPackage.eINSTANCE;
// featureSet.add(up.getNamedElement_Name());
// featureSet.add(up.getMethodElement_PresentationName());
}
public RealizedRoleDescriptor(RoleDescriptor rd) {
super(rd);
}
public boolean handleFeature(EStructuralFeature feature) {
if (featureSet.contains(feature)) {
return true;
}
return super.handleFeature(feature);
}
protected MethodElement getRawLinkedElement() {
return getRoleDescriptor().getRole();
}
private RoleDescriptor getRoleDescriptor() {
return (RoleDescriptor) getElement();
}
public List<WorkProductDescriptor> getResponsibleFor() {
UmaPackage up = UmaPackage.eINSTANCE;
EReference rdReference = up.getRoleDescriptor_ResponsibleFor();
List<WorkProductDescriptor> wpdList = (List<WorkProductDescriptor>) getCachedValue(rdReference);
if (wpdList == null) {
EReference[] rdFeatures = { rdReference,
up.getRoleDescriptor_ResponsibleForExclude(), };
wpdList = (List<WorkProductDescriptor>) getDescriptorList(up
.getRole_ResponsibleFor(), rdFeatures);
storeCachedValue(rdReference, wpdList);
}
return wpdList;
}
@Override
public Set<Descriptor> getAllReferenced() {
Set<Descriptor> referenced = new HashSet<Descriptor>();
addToSet(referenced, getResponsibleFor());
return referenced;
}
}