package SUC.diagram.part;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.gmf.tooling.runtime.update.DiagramUpdater;
import SUC.Role;
import SUC.SUCPackage;
import SUC.SUCmodel;
import SUC.UseCase;
import SUC.diagram.edit.parts.RoleEditPart;
import SUC.diagram.edit.parts.RoleParticipates_inEditPart;
import SUC.diagram.edit.parts.SUCmodelEditPart;
import SUC.diagram.edit.parts.UseCaseEditPart;
import SUC.diagram.edit.parts.UseCaseIncludeEditPart;
import SUC.diagram.providers.SUCElementTypes;
/**
* @generated
*/
public class SUCDiagramUpdater {
/**
* @generated
*/
public static List<SUCNodeDescriptor> getSemanticChildren(View view) {
switch (SUCVisualIDRegistry.getVisualID(view)) {
case SUCmodelEditPart.VISUAL_ID:
return getSUCmodel_1000SemanticChildren(view);
}
return Collections.emptyList();
}
/**
* @generated
*/
public static List<SUCNodeDescriptor> getSUCmodel_1000SemanticChildren(
View view) {
if (!view.isSetElement()) {
return Collections.emptyList();
}
SUCmodel modelElement = (SUCmodel) view.getElement();
LinkedList<SUCNodeDescriptor> result = new LinkedList<SUCNodeDescriptor>();
for (Iterator<?> it = modelElement.getRoles().iterator(); it.hasNext();) {
Role childElement = (Role) it.next();
int visualID = SUCVisualIDRegistry.getNodeVisualID(view,
childElement);
if (visualID == RoleEditPart.VISUAL_ID) {
result.add(new SUCNodeDescriptor(childElement, visualID));
continue;
}
}
for (Iterator<?> it = modelElement.getUsecases().iterator(); it
.hasNext();) {
UseCase childElement = (UseCase) it.next();
int visualID = SUCVisualIDRegistry.getNodeVisualID(view,
childElement);
if (visualID == UseCaseEditPart.VISUAL_ID) {
result.add(new SUCNodeDescriptor(childElement, visualID));
continue;
}
}
return result;
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getContainedLinks(View view) {
switch (SUCVisualIDRegistry.getVisualID(view)) {
case SUCmodelEditPart.VISUAL_ID:
return getSUCmodel_1000ContainedLinks(view);
case RoleEditPart.VISUAL_ID:
return getRole_2001ContainedLinks(view);
case UseCaseEditPart.VISUAL_ID:
return getUseCase_2002ContainedLinks(view);
}
return Collections.emptyList();
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getIncomingLinks(View view) {
switch (SUCVisualIDRegistry.getVisualID(view)) {
case RoleEditPart.VISUAL_ID:
return getRole_2001IncomingLinks(view);
case UseCaseEditPart.VISUAL_ID:
return getUseCase_2002IncomingLinks(view);
}
return Collections.emptyList();
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getOutgoingLinks(View view) {
switch (SUCVisualIDRegistry.getVisualID(view)) {
case RoleEditPart.VISUAL_ID:
return getRole_2001OutgoingLinks(view);
case UseCaseEditPart.VISUAL_ID:
return getUseCase_2002OutgoingLinks(view);
}
return Collections.emptyList();
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getSUCmodel_1000ContainedLinks(
View view) {
return Collections.emptyList();
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getRole_2001ContainedLinks(View view) {
Role modelElement = (Role) view.getElement();
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
result.addAll(getOutgoingFeatureModelFacetLinks_Role_Participates_in_4001(modelElement));
return result;
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getUseCase_2002ContainedLinks(
View view) {
UseCase modelElement = (UseCase) view.getElement();
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
result.addAll(getOutgoingFeatureModelFacetLinks_UseCase_Include_4003(modelElement));
return result;
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getRole_2001IncomingLinks(View view) {
return Collections.emptyList();
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getUseCase_2002IncomingLinks(View view) {
UseCase modelElement = (UseCase) view.getElement();
Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer
.find(view.eResource().getResourceSet().getResources());
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
result.addAll(getIncomingFeatureModelFacetLinks_UseCase_Include_4003(
modelElement, crossReferences));
result.addAll(getIncomingFeatureModelFacetLinks_Role_Participates_in_4001(
modelElement, crossReferences));
return result;
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getRole_2001OutgoingLinks(View view) {
Role modelElement = (Role) view.getElement();
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
result.addAll(getOutgoingFeatureModelFacetLinks_Role_Participates_in_4001(modelElement));
return result;
}
/**
* @generated
*/
public static List<SUCLinkDescriptor> getUseCase_2002OutgoingLinks(View view) {
UseCase modelElement = (UseCase) view.getElement();
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
result.addAll(getOutgoingFeatureModelFacetLinks_UseCase_Include_4003(modelElement));
return result;
}
/**
* @generated
*/
private static Collection<SUCLinkDescriptor> getIncomingFeatureModelFacetLinks_UseCase_Include_4003(
UseCase target,
Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences) {
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
Collection<EStructuralFeature.Setting> settings = crossReferences
.get(target);
for (EStructuralFeature.Setting setting : settings) {
if (setting.getEStructuralFeature() == SUCPackage.eINSTANCE
.getUseCase_Include()) {
result.add(new SUCLinkDescriptor(setting.getEObject(), target,
SUCElementTypes.UseCaseInclude_4003,
UseCaseIncludeEditPart.VISUAL_ID));
}
}
return result;
}
/**
* @generated
*/
private static Collection<SUCLinkDescriptor> getIncomingFeatureModelFacetLinks_Role_Participates_in_4001(
UseCase target,
Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences) {
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
Collection<EStructuralFeature.Setting> settings = crossReferences
.get(target);
for (EStructuralFeature.Setting setting : settings) {
if (setting.getEStructuralFeature() == SUCPackage.eINSTANCE
.getRole_Participates_in()) {
result.add(new SUCLinkDescriptor(setting.getEObject(), target,
SUCElementTypes.RoleParticipates_in_4001,
RoleParticipates_inEditPart.VISUAL_ID));
}
}
return result;
}
/**
* @generated
*/
private static Collection<SUCLinkDescriptor> getOutgoingFeatureModelFacetLinks_UseCase_Include_4003(
UseCase source) {
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
for (Iterator<?> destinations = source.getInclude().iterator(); destinations
.hasNext();) {
UseCase destination = (UseCase) destinations.next();
result.add(new SUCLinkDescriptor(source, destination,
SUCElementTypes.UseCaseInclude_4003,
UseCaseIncludeEditPart.VISUAL_ID));
}
return result;
}
/**
* @generated
*/
private static Collection<SUCLinkDescriptor> getOutgoingFeatureModelFacetLinks_Role_Participates_in_4001(
Role source) {
LinkedList<SUCLinkDescriptor> result = new LinkedList<SUCLinkDescriptor>();
for (Iterator<?> destinations = source.getParticipates_in().iterator(); destinations
.hasNext();) {
UseCase destination = (UseCase) destinations.next();
result.add(new SUCLinkDescriptor(source, destination,
SUCElementTypes.RoleParticipates_in_4001,
RoleParticipates_inEditPart.VISUAL_ID));
}
return result;
}
/**
* @generated
*/
public static final DiagramUpdater TYPED_INSTANCE = new DiagramUpdater() {
/**
* @generated
*/
@Override
public List<SUCNodeDescriptor> getSemanticChildren(View view) {
return SUCDiagramUpdater.getSemanticChildren(view);
}
/**
* @generated
*/
@Override
public List<SUCLinkDescriptor> getContainedLinks(View view) {
return SUCDiagramUpdater.getContainedLinks(view);
}
/**
* @generated
*/
@Override
public List<SUCLinkDescriptor> getIncomingLinks(View view) {
return SUCDiagramUpdater.getIncomingLinks(view);
}
/**
* @generated
*/
@Override
public List<SUCLinkDescriptor> getOutgoingLinks(View view) {
return SUCDiagramUpdater.getOutgoingLinks(view);
}
};
}