| 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.getRoleDescriptor_ResponsibleFor()); |
| } |
| |
| 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> updateAndGetAllReferenced() { |
| super.updateAndGetAllReferenced(); |
| |
| Set<Descriptor> referenced = new HashSet<Descriptor>(); |
| addToSet(referenced, getResponsibleFor()); |
| |
| return referenced; |
| } |
| |
| public Object getFeatureValue(EStructuralFeature feature) { |
| UmaPackage up = UmaPackage.eINSTANCE; |
| if (feature == up.getRoleDescriptor_ResponsibleFor()) { |
| return getResponsibleFor(); |
| } |
| |
| return super.getFeatureValue(feature); |
| } |
| |
| } |