org.eclipse.ocl.examples.pivot.uml
Class UMLXMIID

java.lang.Object
  extended by org.eclipse.emf.ecore.util.Switch<T>
      extended by org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>
          extended by org.eclipse.ocl.examples.pivot.uml.UMLXMIID

public class UMLXMIID
extends org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

Generate a distinct stable xmi:id for a UML model element.

Disclaimer. This class is exercised to support conversion of the UML source of the Pivot. It is not sufficiently developed for more general use.

The name generation principle is to produce dot-separated names from NamedElements on the composition hierarchy and dot-separate riles with indexes for references and unnamed nodes.

Composed names have a distinct capitalized first letter such as P for package to separate conflicting child namespaces.

Other names have a lower case first letter and may use the shaortNames mapping to save space. A numeric suffix disambiguates position-wise amongst many children.


Field Summary
protected  org.eclipse.emf.ecore.util.EcoreSwitch<java.lang.String> ecoreSwitch
           
protected  org.eclipse.emf.ecore.xmi.XMLResource resource
           
protected static java.util.Map<java.lang.String,java.lang.String> shortNames
           
 
Fields inherited from class org.eclipse.uml2.uml.util.UMLSwitch
modelPackage
 
Constructor Summary
UMLXMIID(org.eclipse.emf.ecore.xmi.XMLResource resource)
           
 
Method Summary
protected  void appendNameHierarchy(java.lang.StringBuilder s, java.lang.String prefix, org.eclipse.uml2.uml.NamedElement object)
           
protected  void appendPositionHierarchy(java.lang.StringBuilder s, org.eclipse.emf.ecore.EObject object)
           
 void assign()
           
 java.lang.String caseAssociation(org.eclipse.uml2.uml.Association object)
           
 java.lang.String caseComment(org.eclipse.uml2.uml.Comment object)
           
 java.lang.String caseEnumerationLiteral(org.eclipse.uml2.uml.EnumerationLiteral object)
           
 java.lang.String caseOperation(org.eclipse.uml2.uml.Operation object)
           
 java.lang.String casePackage(org.eclipse.uml2.uml.Package object)
           
 java.lang.String caseParameter(org.eclipse.uml2.uml.Parameter object)
           
 java.lang.String caseProperty(org.eclipse.uml2.uml.Property object)
           
 java.lang.String caseRelationship(org.eclipse.uml2.uml.Relationship object)
           
 java.lang.String caseTemplateParameter(org.eclipse.uml2.uml.TemplateParameter object)
           
 java.lang.String caseTemplateSignature(org.eclipse.uml2.uml.TemplateSignature object)
           
 java.lang.String caseType(org.eclipse.uml2.uml.Type object)
           
 java.lang.String caseValueSpecification(org.eclipse.uml2.uml.ValueSpecification object)
           
 java.lang.String defaultCase(org.eclipse.emf.ecore.EObject object)
           
protected  java.lang.String pseudoCaseDynamicEObjectImpl(org.eclipse.emf.ecore.impl.DynamicEObjectImpl object)
           
 
Methods inherited from class org.eclipse.uml2.uml.util.UMLSwitch
caseAbstraction, caseAcceptCallAction, caseAcceptEventAction, caseAction, caseActionExecutionSpecification, caseActionInputPin, caseActivity, caseActivityContent, caseActivityEdge, caseActivityFinalNode, caseActivityGroup, caseActivityNode, caseActivityParameterNode, caseActivityPartition, caseActor, caseAddStructuralFeatureValueAction, caseAddVariableValueAction, caseAnyReceiveEvent, caseArtifact, caseAssociationClass, caseBehavior, caseBehavioralFeature, caseBehavioredClassifier, caseBehaviorExecutionSpecification, caseBroadcastSignalAction, caseCallAction, caseCallBehaviorAction, caseCallEvent, caseCallOperationAction, caseCentralBufferNode, caseChangeEvent, caseClass, caseClassifier, caseClassifierTemplateParameter, caseClause, caseClearAssociationAction, caseClearStructuralFeatureAction, caseClearVariableAction, caseCollaboration, caseCollaborationUse, caseCombinedFragment, caseCommunicationPath, caseComponent, caseComponentRealization, caseConditionalNode, caseConnectableElement, caseConnectableElementTemplateParameter, caseConnectionPointReference, caseConnector, caseConnectorEnd, caseConsiderIgnoreFragment, caseConstraint, caseContinuation, caseControlFlow, caseControlNode, caseCreateLinkAction, caseCreateLinkObjectAction, caseCreateObjectAction, caseDataStoreNode, caseDataType, caseDecisionNode, caseDependency, caseDeployedArtifact, caseDeployment, caseDeploymentSpecification, caseDeploymentTarget, caseDestroyLinkAction, caseDestroyObjectAction, caseDestructionOccurrenceSpecification, caseDevice, caseDirectedRelationship, caseDuration, caseDurationConstraint, caseDurationInterval, caseDurationObservation, caseElement, caseElementImport, caseEModelElement, caseEncapsulatedClassifier, caseEnumeration, caseEvent, caseExceptionHandler, caseExecutableNode, caseExecutionEnvironment, caseExecutionOccurrenceSpecification, caseExecutionSpecification, caseExpansionNode, caseExpansionRegion, caseExpression, caseExtend, caseExtension, caseExtensionEnd, caseExtensionPoint, caseFeature, caseFinalNode, caseFinalState, caseFlowFinalNode, caseForkNode, caseFunctionBehavior, caseGate, caseGeneralization, caseGeneralizationSet, caseGeneralOrdering, caseImage, caseInclude, caseInformationFlow, caseInformationItem, caseInitialNode, caseInputPin, caseInstanceSpecification, caseInstanceValue, caseInteraction, caseInteractionConstraint, caseInteractionFragment, caseInteractionOperand, caseInteractionUse, caseInterface, caseInterfaceRealization, caseInterruptibleActivityRegion, caseInterval, caseIntervalConstraint, caseInvocationAction, caseJoinNode, caseLifeline, caseLinkAction, caseLinkEndCreationData, caseLinkEndData, caseLinkEndDestructionData, caseLiteralBoolean, caseLiteralInteger, caseLiteralNull, caseLiteralReal, caseLiteralSpecification, caseLiteralString, caseLiteralUnlimitedNatural, caseLoopNode, caseManifestation, caseMergeNode, caseMessage, caseMessageEnd, caseMessageEvent, caseMessageOccurrenceSpecification, caseModel, caseMultiplicityElement, caseNamedElement, caseNamespace, caseNode, caseObjectFlow, caseObjectNode, caseObservation, caseOccurrenceSpecification, caseOpaqueAction, caseOpaqueBehavior, caseOpaqueExpression, caseOperationTemplateParameter, caseOutputPin, casePackageableElement, casePackageImport, casePackageMerge, caseParameterableElement, caseParameterSet, casePartDecomposition, casePin, casePort, casePrimitiveType, caseProfile, caseProfileApplication, caseProtocolConformance, caseProtocolStateMachine, caseProtocolTransition, casePseudostate, caseQualifierValue, caseRaiseExceptionAction, caseReadExtentAction, caseReadIsClassifiedObjectAction, caseReadLinkAction, caseReadLinkObjectEndAction, caseReadLinkObjectEndQualifierAction, caseReadSelfAction, caseReadStructuralFeatureAction, caseReadVariableAction, caseRealization, caseReception, caseReclassifyObjectAction, caseRedefinableElement, caseRedefinableTemplateSignature, caseReduceAction, caseRegion, caseRemoveStructuralFeatureValueAction, caseRemoveVariableValueAction, caseReplyAction, caseSendObjectAction, caseSendSignalAction, caseSequenceNode, caseSignal, caseSignalEvent, caseSlot, caseStartClassifierBehaviorAction, caseStartObjectBehaviorAction, caseState, caseStateInvariant, caseStateMachine, caseStereotype, caseStringExpression, caseStructuralFeature, caseStructuralFeatureAction, caseStructuredActivityNode, caseStructuredClassifier, caseSubstitution, caseTemplateableElement, caseTemplateBinding, caseTemplateParameterSubstitution, caseTestIdentityAction, caseTimeConstraint, caseTimeEvent, caseTimeExpression, caseTimeInterval, caseTimeObservation, caseTransition, caseTrigger, caseTypedElement, caseUnmarshallAction, caseUsage, caseUseCase, caseValuePin, caseValueSpecificationAction, caseVariable, caseVariableAction, caseVertex, caseWriteLinkAction, caseWriteStructuralFeatureAction, caseWriteVariableAction, doSwitch, isSwitchFor
 
Methods inherited from class org.eclipse.emf.ecore.util.Switch
doSwitch, doSwitch
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

shortNames

@NonNull
protected static final java.util.Map<java.lang.String,java.lang.String> shortNames

ecoreSwitch

protected org.eclipse.emf.ecore.util.EcoreSwitch<java.lang.String> ecoreSwitch

resource

@NonNull
protected final org.eclipse.emf.ecore.xmi.XMLResource resource
Constructor Detail

UMLXMIID

public UMLXMIID(@NonNull
                org.eclipse.emf.ecore.xmi.XMLResource resource)
Method Detail

appendNameHierarchy

protected void appendNameHierarchy(@NonNull
                                   java.lang.StringBuilder s,
                                   @NonNull
                                   java.lang.String prefix,
                                   @NonNull
                                   org.eclipse.uml2.uml.NamedElement object)

appendPositionHierarchy

protected void appendPositionHierarchy(@NonNull
                                       java.lang.StringBuilder s,
                                       @NonNull
                                       org.eclipse.emf.ecore.EObject object)

assign

public void assign()

caseAssociation

public java.lang.String caseAssociation(org.eclipse.uml2.uml.Association object)
Overrides:
caseAssociation in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseComment

public java.lang.String caseComment(org.eclipse.uml2.uml.Comment object)
Overrides:
caseComment in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseEnumerationLiteral

public java.lang.String caseEnumerationLiteral(org.eclipse.uml2.uml.EnumerationLiteral object)
Overrides:
caseEnumerationLiteral in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseOperation

public java.lang.String caseOperation(org.eclipse.uml2.uml.Operation object)
Overrides:
caseOperation in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

casePackage

public java.lang.String casePackage(org.eclipse.uml2.uml.Package object)
Overrides:
casePackage in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseParameter

public java.lang.String caseParameter(org.eclipse.uml2.uml.Parameter object)
Overrides:
caseParameter in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseProperty

public java.lang.String caseProperty(org.eclipse.uml2.uml.Property object)
Overrides:
caseProperty in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseRelationship

public java.lang.String caseRelationship(org.eclipse.uml2.uml.Relationship object)
Overrides:
caseRelationship in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseTemplateParameter

public java.lang.String caseTemplateParameter(org.eclipse.uml2.uml.TemplateParameter object)
Overrides:
caseTemplateParameter in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseTemplateSignature

public java.lang.String caseTemplateSignature(org.eclipse.uml2.uml.TemplateSignature object)
Overrides:
caseTemplateSignature in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseType

public java.lang.String caseType(org.eclipse.uml2.uml.Type object)
Overrides:
caseType in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

caseValueSpecification

public java.lang.String caseValueSpecification(org.eclipse.uml2.uml.ValueSpecification object)
Overrides:
caseValueSpecification in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

defaultCase

public java.lang.String defaultCase(org.eclipse.emf.ecore.EObject object)
Overrides:
defaultCase in class org.eclipse.uml2.uml.util.UMLSwitch<java.lang.String>

pseudoCaseDynamicEObjectImpl

protected java.lang.String pseudoCaseDynamicEObjectImpl(@NonNull
                                                        org.eclipse.emf.ecore.impl.DynamicEObjectImpl object)