package org.eclipse.uml2.diagram.sequence.util; import org.eclipse.emf.ecore.EObject; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDAbstractMessage; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDBehaviorSpec; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDCombinedFragment; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDEntity; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDGate; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDInteractionOperand; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDInteractionUse; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDLifeLine; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDModel; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDMountingRegion; import org.eclipse.uml2.diagram.sequence.model.sequenced.SDSimpleNode; import org.eclipse.uml2.diagram.sequence.model.sequenced.util.SDSwitch; import org.eclipse.uml2.uml.NamedElement; public class UserFormat extends SDSwitch<String> { public static final UserFormat INSTANCE = new UserFormat(); private static final String UNSET = "<unset>"; public String format(EObject theEObject){ return doSwitch(theEObject); } @Override public String doSwitch(EObject theEObject) { return theEObject == null ? UNSET : super.doSwitch(theEObject); } @Override public String caseSDEntity(SDEntity object) { return "Unknown SD entity: " + object; } @Override public String caseSDBehaviorSpec(SDBehaviorSpec object) { return "Behavior spec " + safeGetName(object.getUmlExecutionSpec()); } @Override public String caseSDLifeLine(SDLifeLine object) { return "Lifeline " + safeGetName(object.getUmlLifeline()); } @Override public String caseSDAbstractMessage(SDAbstractMessage object) { return "Message " + safeGetName(object.getUmlMessage()); } @Override public String caseSDModel(SDModel object) { return "Interaction " + safeGetName(object.getUmlInteraction()); } @Override public String caseSDGate(SDGate object) { return "Gate " + safeGetName(object.getUmlGate()); } @Override public String caseSDCombinedFragment(SDCombinedFragment object) { return "Combined Fragment " + safeGetName(object.getUmlCombinedFragment()); } @Override public String caseSDInteractionOperand(SDInteractionOperand object) { return "Interaction Operand " + safeGetName(object.getUmlInteractionOperand()); } @Override public String caseSDInteractionUse(SDInteractionUse object) { return "Interaction Use " + safeGetName(object.getUmlInteractionUse()); } @Override public String caseSDMountingRegion(SDMountingRegion object) { return "Mounting region for frame " + doSwitch(object.getFrame()) + " at " + doSwitch(object.getCoveredLifeLine()); } @Override public String caseSDSimpleNode(SDSimpleNode object) { return "Simple node for " + safeGetName(object.getUmlSimpleFragment()); } private static String safeGetName(NamedElement umlElement) { return (umlElement == null) ? UNSET : umlElement.getName(); } }