be.ac.vub.cocompose.operations
Class CopyElement

java.lang.Object
  extended bybe.ac.vub.cocompose.lang.DefaultModelVisitor
      extended bybe.ac.vub.cocompose.lang.DefaultSuperModelVisitor
          extended bybe.ac.vub.cocompose.operations.CopyElement
All Implemented Interfaces:
ModelVisitor

public class CopyElement
extends DefaultSuperModelVisitor

Copies a CoCompose element. Uses CopyElementLinks to copy the non-containment links in a second pass.

Since:
0.2.9
Version:
0.2.11, 17/05/2004
Author:
Dennis Wagelaar
See Also:
CopyElementLinks

Field Summary
protected  CopyElementLinks copyLinks
           
protected  Hashtable elementMap
          Mapping of original elements to their copies: Map<VisitedElement |-> VisitedElement>
 
Fields inherited from class be.ac.vub.cocompose.lang.DefaultModelVisitor
current
 
Constructor Summary
CopyElement(ModelFactory factory)
          Creates a CopyElement operation.
 
Method Summary
 List copy(List elements)
          Deep copied the given list of elements.
 VisitedElement copy(VisitedElement element)
          Deep copies the given element and returns it.
 VisitedElement getCopy()
          Gets the generated copy.
 void reset()
          Resets this copier for a new copy operation.
 void visitAndConstraint(AndConstraint andConstraint)
          Visits an AndConstraint.
 void visitConcept(Concept concept)
          Visits a concept.
 void visitElementConstraint(ElementConstraint elementConstraint)
          Visits an ElementConstraint.
 void visitImplementationGenerator(ImplementationGenerator implementationGenerator)
          Visits an ImplementationGenerator.
 void visitImplementationPattern(ImplementationPattern implementationPattern)
          Visits an ImplementationPattern.
 void visitImplementationRolePart(ImplementationRolePart rolePart)
          Visits an ImplementationRolePart.
 void visitModel(Model model)
          Visits a Model.
 void visitModelElement(ModelElement modelElement)
          Visits a ModelElement.
 void visitModelProperty(ModelProperty modelProperty)
          Visits a ModelProperty.
 void visitModelTransformation(ModelTransformation modelTransformation)
          Visits a ModelTransformation.
 void visitMultiplicity(Multiplicity multiplicity)
          Visits a Multiplicity.
 void visitNamespace(Namespace namespace)
          Visits a Namespace.
 void visitOrConstraint(OrConstraint orConstraint)
          Visits an OrConstraint.
 void visitRefinedElement(RefinedElement refinedElement)
          Visits a RefinedElement.
 void visitRelationElement(RelationElement relationElement)
          Visits a RelationElement.
 void visitRelationship(Relationship relationship)
          Visits a Relationship.
 void visitRole(Role role)
          Visits a Role.
 void visitSimpleProperty(SimpleProperty simpleProperty)
          Visits a SimpleProperty.
 void visitSolutionPattern(SolutionPattern solutionPattern)
          Visits a SolutionPattern.
 
Methods inherited from class be.ac.vub.cocompose.lang.DefaultSuperModelVisitor
visitCompositeConstraint, visitConstraint, visitProperty, visitRefinement
 
Methods inherited from class be.ac.vub.cocompose.lang.DefaultModelVisitor
getStacked, setStacked, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

elementMap

protected Hashtable elementMap
Mapping of original elements to their copies:
Map<VisitedElement |-> VisitedElement>


copyLinks

protected CopyElementLinks copyLinks
Constructor Detail

CopyElement

public CopyElement(ModelFactory factory)
Creates a CopyElement operation.

Parameters:
factory - the factory to create new elements.
Method Detail

copy

public VisitedElement copy(VisitedElement element)
                    throws ModelElementException
Deep copies the given element and returns it.

Parameters:
element - the element to copy.
Returns:
the copied element.
Throws:
ModelElementException

copy

public List copy(List elements)
          throws ModelElementException
Deep copied the given list of elements.

Parameters:
elements - the elements to copy.
Returns:
the copied elements.
Throws:
ModelElementException

visitModelElement

public void visitModelElement(ModelElement modelElement)
                       throws ModelElementException
Visits a ModelElement.

Specified by:
visitModelElement in interface ModelVisitor
Overrides:
visitModelElement in class DefaultModelVisitor
Parameters:
modelElement - - the element to visit.
Throws:
ModelElementException

visitNamespace

public void visitNamespace(Namespace namespace)
                    throws ModelElementException
Visits a Namespace.

Specified by:
visitNamespace in interface ModelVisitor
Overrides:
visitNamespace in class DefaultSuperModelVisitor
Parameters:
namespace - - the element to visit.
Throws:
ModelElementException

visitModel

public void visitModel(Model model)
                throws ModelElementException
Visits a Model.

Specified by:
visitModel in interface ModelVisitor
Overrides:
visitModel in class DefaultSuperModelVisitor
Parameters:
model - - the element to visit.
Throws:
ModelElementException

visitRelationship

public void visitRelationship(Relationship relationship)
                       throws ModelElementException
Visits a Relationship.

Specified by:
visitRelationship in interface ModelVisitor
Overrides:
visitRelationship in class DefaultSuperModelVisitor
Parameters:
relationship - - the element to visit.
Throws:
ModelElementException

visitSolutionPattern

public void visitSolutionPattern(SolutionPattern solutionPattern)
                          throws ModelElementException
Visits a SolutionPattern.

Specified by:
visitSolutionPattern in interface ModelVisitor
Overrides:
visitSolutionPattern in class DefaultSuperModelVisitor
Parameters:
solutionPattern - - the element to visit.
Throws:
ModelElementException

visitImplementationGenerator

public void visitImplementationGenerator(ImplementationGenerator implementationGenerator)
                                  throws ModelElementException
Visits an ImplementationGenerator.

Specified by:
visitImplementationGenerator in interface ModelVisitor
Overrides:
visitImplementationGenerator in class DefaultSuperModelVisitor
Parameters:
implementationGenerator - - the element to visit.
Throws:
ModelElementException

visitImplementationRolePart

public void visitImplementationRolePart(ImplementationRolePart rolePart)
                                 throws ModelElementException
Visits an ImplementationRolePart.

Specified by:
visitImplementationRolePart in interface ModelVisitor
Overrides:
visitImplementationRolePart in class DefaultSuperModelVisitor
Parameters:
rolePart - - the element to visit.
Throws:
ModelElementException

visitImplementationPattern

public void visitImplementationPattern(ImplementationPattern implementationPattern)
                                throws ModelElementException
Visits an ImplementationPattern.

Specified by:
visitImplementationPattern in interface ModelVisitor
Overrides:
visitImplementationPattern in class DefaultSuperModelVisitor
Parameters:
implementationPattern - - the element to visit.
Throws:
ModelElementException

visitModelTransformation

public void visitModelTransformation(ModelTransformation modelTransformation)
                              throws ModelElementException
Visits a ModelTransformation.

Specified by:
visitModelTransformation in interface ModelVisitor
Overrides:
visitModelTransformation in class DefaultSuperModelVisitor
Parameters:
modelTransformation - the element to visit.
Throws:
ModelElementException

visitRelationElement

public void visitRelationElement(RelationElement relationElement)
                          throws ModelElementException
Visits a RelationElement.

Specified by:
visitRelationElement in interface ModelVisitor
Overrides:
visitRelationElement in class DefaultSuperModelVisitor
Parameters:
relationElement - - the element to visit.
Throws:
ModelElementException

visitRefinedElement

public void visitRefinedElement(RefinedElement refinedElement)
                         throws ModelElementException
Visits a RefinedElement.

Specified by:
visitRefinedElement in interface ModelVisitor
Overrides:
visitRefinedElement in class DefaultSuperModelVisitor
Parameters:
refinedElement - - the element to visit.
Throws:
ModelElementException

visitConcept

public void visitConcept(Concept concept)
                  throws ModelElementException
Visits a concept.

Specified by:
visitConcept in interface ModelVisitor
Overrides:
visitConcept in class DefaultSuperModelVisitor
Parameters:
concept - - the element to visit.
Throws:
ModelElementException

visitRole

public void visitRole(Role role)
               throws ModelElementException
Visits a Role.

Specified by:
visitRole in interface ModelVisitor
Overrides:
visitRole in class DefaultSuperModelVisitor
Parameters:
role - - the element to visit.
Throws:
ModelElementException

visitElementConstraint

public void visitElementConstraint(ElementConstraint elementConstraint)
                            throws ModelElementException
Visits an ElementConstraint.

Specified by:
visitElementConstraint in interface ModelVisitor
Overrides:
visitElementConstraint in class DefaultSuperModelVisitor
Parameters:
elementConstraint - - the element to visit.
Throws:
ModelElementException

visitAndConstraint

public void visitAndConstraint(AndConstraint andConstraint)
                        throws ModelElementException
Visits an AndConstraint.

Specified by:
visitAndConstraint in interface ModelVisitor
Overrides:
visitAndConstraint in class DefaultSuperModelVisitor
Parameters:
andConstraint - - the element to visit.
Throws:
ModelElementException

visitOrConstraint

public void visitOrConstraint(OrConstraint orConstraint)
                       throws ModelElementException
Visits an OrConstraint.

Specified by:
visitOrConstraint in interface ModelVisitor
Overrides:
visitOrConstraint in class DefaultSuperModelVisitor
Parameters:
orConstraint - - the element to visit.
Throws:
ModelElementException

visitSimpleProperty

public void visitSimpleProperty(SimpleProperty simpleProperty)
                         throws ModelElementException
Visits a SimpleProperty.

Specified by:
visitSimpleProperty in interface ModelVisitor
Overrides:
visitSimpleProperty in class DefaultSuperModelVisitor
Parameters:
simpleProperty - - the element to visit.
Throws:
ModelElementException

visitModelProperty

public void visitModelProperty(ModelProperty modelProperty)
                        throws ModelElementException
Visits a ModelProperty.

Specified by:
visitModelProperty in interface ModelVisitor
Overrides:
visitModelProperty in class DefaultSuperModelVisitor
Parameters:
modelProperty - - the element to visit.
Throws:
ModelElementException

visitMultiplicity

public void visitMultiplicity(Multiplicity multiplicity)
                       throws ModelElementException
Visits a Multiplicity.

Specified by:
visitMultiplicity in interface ModelVisitor
Overrides:
visitMultiplicity in class DefaultSuperModelVisitor
Parameters:
multiplicity - - the element to visit.
Throws:
ModelElementException

getCopy

public VisitedElement getCopy()
Gets the generated copy.

Returns:
the generated copy.

reset

public void reset()
Resets this copier for a new copy operation.