示例#1
0
        public override void FillCopy(Element copyElement, Model targetModel, ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyElement, targetModel, createdCopies);
            TypedElement copyTypedElement = (TypedElement)copyElement;

            if (Type != null)
            {
                if (createdCopies.ContainsKey(Type))
                {
                    copyTypedElement.Type = (DataType)createdCopies[Type];
                }
                else
                {
                    if (Schema == targetModel.Schema)
                    {
                        if (Type is SimpleDataType)
                        {
                            copyTypedElement.Type = Type;
                        }
                        else
                        {
                            //TODO: copy typed element
                            throw new NotImplementedException();
                        }
                    }
                }
            }
        }
示例#2
0
        public override Element Clone(Model targetModel, ElementCopiesMap createdCopies)
        {
            PSMSuperordinateComponent copyParent = (PSMSuperordinateComponent)createdCopies[Parent];
            PSMContentChoice          clone      = new _PSMContentChoice(copyParent, targetModel.Schema);

            return(clone);
        }
示例#3
0
        public override Element Clone(Model targetModel, ElementCopiesMap createdCopies)
        {
            PSMSuperordinateComponent copyParent = (PSMSuperordinateComponent)createdCopies[Parent];
            PSMAttributeContainer     clone      = (PSMAttributeContainer)PSMAttributeContainerFactory.Instance.Create(copyParent, targetModel.Schema);

            return(clone);
        }
示例#4
0
        /// <summary>
        /// Executive function of a command
        /// </summary>
        /// <seealso cref="UndoOperation"/>
        internal override void CommandOperation()
        {
            DiagramClone = Diagram.Clone();

            if (Diagram is PIMDiagram)
            {
                Dictionary <Element, ViewHelper> viewHelperCopies = new Dictionary <Element, ViewHelper>();

                /* Elements in PIM diagram are loaded in the order of their LoadPriority in registration set */
                foreach (Type ModelElementType in PIMElementsOrder)
                {
                    foreach (KeyValuePair <Element, ViewHelper> pair in Diagram.DiagramElements)
                    {
                        Element    element    = pair.Key;
                        ViewHelper viewHelper = pair.Value;

                        if (!viewHelperCopies.ContainsKey(element) && ModelElementType.IsInstanceOfType(element))
                        {
                            ViewHelper copiedViewHelper = viewHelper.CreateCopy(DiagramClone, null);
                            viewHelperCopies.Add(element, copiedViewHelper);
                        }
                    }
                }

                Diagram.FillCopy(DiagramClone, Controller.Model, null, viewHelperCopies);
            }
            else
            {
                IList <Element> ordered;

                // order
                PSMTree.ReturnElementsInPSMOrder(((PSMDiagram)Diagram).Roots.Cast <Element>(), out ordered, true);

                // clone the selection
                ElementCopiesMap createdCopies = new ElementCopiesMap();
                foreach (Element element in ordered)
                {
                    Element copy = element.CreateCopy(Controller.Model, createdCopies);
                    createdCopies[element] = copy;
                }
                // representants must be handled separately after all copies are created
                PSMTree.CopyRepresentantsRelations(createdCopies);

                // clone viewhelpers
                Dictionary <Element, ViewHelper> createdViewHelpers = new Dictionary <Element, ViewHelper>();

                foreach (Element element in ordered)
                {
                    ViewHelper viewHelper       = Diagram.DiagramElements[element];
                    ViewHelper copiedViewHelper = viewHelper.CreateCopy(DiagramClone, createdCopies);

                    createdViewHelpers.Add(element, copiedViewHelper);
                }

                Diagram.FillCopy(DiagramClone, Controller.Model, createdCopies, createdViewHelpers);
            }

            DiagramClone.Caption += " (copy)";
            Controller.Project.AddDiagram(DiagramClone);
        }
示例#5
0
        public override void FillCopy(Element copyElement, Model targetModel, ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyElement, targetModel, createdCopies);
            PSMAssociation copyPSMAssociation = (PSMAssociation)copyElement;

            copyPSMAssociation.Lower = Lower;
            copyPSMAssociation.Upper = Upper;
            //copyPSMAssociation.IsUnique = IsUnique;
            //copyPSMAssociation.IsOrdered = IsOrdered;
            copyPSMAssociation.Child = (PSMAssociationChild)createdCopies[Child];
            foreach (NestingJoin nestingJoin in NestingJoins)
            {
                PIMClass coreClass;
                if (targetModel.Schema != this.Schema)
                {
                    coreClass = (PIMClass)createdCopies[nestingJoin.CoreClass];
                }
                else
                {
                    coreClass = nestingJoin.CoreClass;
                }
                copyPSMAssociation.AddNestingJoin(coreClass);
            }

            if (Parent != null && createdCopies.ContainsKey(Parent))
            {
                PSMSuperordinateComponent copyParent = (PSMSuperordinateComponent)createdCopies[Parent];
                ((_ImplPSMSubordinateComponent)copyPSMAssociation).Parent = copyParent;
                copyParent.Components.Add(copyPSMAssociation);
            }
        }
示例#6
0
        public Element CreateCopy(Model targetModel, ElementCopiesMap createdCopies)
        {
            Element copyElement = Clone(targetModel, createdCopies);

            FillCopy(copyElement, targetModel, createdCopies);
            return(copyElement);
        }
示例#7
0
        public override void FillCopy(Element copyElement, Model targetModel, ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyElement, targetModel, createdCopies);
            SimpleDataType copySimpleDataType = (SimpleDataType)copyElement;

            copySimpleDataType.DefaultXSDImplementation = DefaultXSDImplementation;
        }
示例#8
0
        public IExolutioCloneable CreateCopy(ProjectVersion projectVersion, ElementCopiesMap createdCopies)
        {
            IExolutioCloneable copyElement = Clone(projectVersion, createdCopies);

            FillCopy(copyElement, projectVersion, createdCopies);
            return(copyElement);
        }
示例#9
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            PSMSchemaClass copyPSMSchemaClass = (PSMSchemaClass)copyComponent;
        }
示例#10
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            AttributeType copyAttributeType = (AttributeType)copyComponent;

            copyAttributeType.Name          = this.Name;
            copyAttributeType.IsSealed      = this.IsSealed;
            copyAttributeType.XSDDefinition = this.XSDDefinition;
            copyAttributeType.XSDAtomic     = this.XSDAtomic;
            if (BaseType != null)
            {
                copyAttributeType.baseTypeGuid = createdCopies.GetGuidForCopyOf(BaseType);
            }
            if (Schema != null)
            {
                copyAttributeType.schemaGuid = createdCopies.GetGuidForCopyOf(Schema);
            }
            if (Component != null)
            {
                copyAttributeType.componentGuid = createdCopies.GetGuidForCopyOf(Component);
            }
            if (RepresentedPIMType != null)
            {
                copyAttributeType.representedPIMTypeGuid = RepresentedPIMType;
            }
            this.CopyCollection(Operations, copyAttributeType.Operations, projectVersion, createdCopies);
            copyAttributeType.SetProjectVersion(projectVersion);
        }
示例#11
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);
            PIMAssociation copyPIMAssociation = (PIMAssociation)copyComponent;

            this.CopyCollection(PIMAssociationEnds, copyPIMAssociation.PIMAssociationEnds, projectVersion, createdCopies);
        }
示例#12
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            PIMComponent copyPIMComponent = (PIMComponent)copyComponent;
            // TODO: FillCopy Interpreted components
        }
示例#13
0
文件: _Comment.cs 项目: mff-uk/xcase
        public override void FillCopy(Element copyElement, Model targetModel, ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyElement, targetModel, createdCopies);

            Comment copyComment = (Comment)copyElement;

            copyComment.Body = this.Body;
        }
示例#14
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            PSMContentModel copyPSMContentModel = (PSMContentModel)copyComponent;

            copyPSMContentModel.Type = this.Type;
        }
示例#15
0
文件: _Profile.cs 项目: mff-uk/xcase
        public override Element Clone(Model targetModel, ElementCopiesMap createdCopies)
        {
            if (targetModel.Schema == this.Schema)
            {
                throw new InvalidOperationException("Clones of Profile should not be created in the same model.");
            }

            return(targetModel.Schema.AddProfile());
        }
示例#16
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);
            Component _copyComponent = (Component)copyComponent;

            _copyComponent.schemaGuid = createdCopies.GetGuidForCopyOf(Schema);
            _copyComponent.Name       = this.Name;
        }
示例#17
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            OCLScript copyOCLScript = (OCLScript)copyComponent;

            copyOCLScript.Contents = this.Contents;
        }
示例#18
0
文件: Schema.cs 项目: mff-uk/exolutio
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            Schema copySchema = (Schema)copyComponent;

            copySchema.SetProjectVersion(projectVersion);
        }
示例#19
0
        public override void FillCopy(Element copyElement, Model targetModel, ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyElement, targetModel, createdCopies);

            _NamedElement <NUmlType> copyNamedElement = (_NamedElement <NUmlType>)copyElement;

            copyNamedElement.Name       = Name;
            copyNamedElement.Visibility = Visibility;
        }
示例#20
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            PIMDiagram copyPIMDiagram = (PIMDiagram)copyComponent;

            copyPIMDiagram.SetProjectVersion(projectVersion);
        }
示例#21
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            PSMGeneralization copyPSMGeneralization = (PSMGeneralization)copyComponent;

            copyPSMGeneralization.generalGuid  = createdCopies.GetGuidForCopyOf(General);
            copyPSMGeneralization.specificGuid = createdCopies.GetGuidForCopyOf(Specific);
        }
示例#22
0
        public override Element Clone(Model targetModel, ElementCopiesMap createdCopies)
        {
            if (ParentAssociation == null)
            {
                throw new InvalidOperationException("Parent association of class union can not be null");
            }
            PSMClassUnion clone = new _PSMClassUnion(targetModel.Schema);

            return(clone);
        }
示例#23
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            StereotypeInstance copyStereotypeInstance = (StereotypeInstance)copyComponent;

            copyStereotypeInstance.componentGuid  = createdCopies.GetGuidForCopyOf(Component);
            copyStereotypeInstance.stereotypeGuid = this.stereotypeGuid;
        }
示例#24
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            PSMDiagram copyPSMDiagram = (PSMDiagram)copyComponent;

            copyPSMDiagram.SetProjectVersion(projectVersion);
            copyPSMDiagram.LoadSchemaToDiagram(copyPSMDiagram.PSMSchema, true);
        }
示例#25
0
        public override void FillCopy(Element copyElement, Model targetModel, ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyElement, targetModel, createdCopies);
            Parameter copyParameter = (Parameter)copyElement;

            copyParameter.Direction = this.Direction;
            copyParameter.IsOrdered = this.IsOrdered;
            copyParameter.IsUnique  = this.IsUnique;
            copyParameter.Lower     = this.Lower;
            copyParameter.Upper     = this.Upper;
        }
示例#26
0
文件: _Package.cs 项目: mff-uk/xcase
 public override Element Clone(Model targetModel, ElementCopiesMap createdCopies)
 {
     if (targetModel != Schema.Model || createdCopies.ContainsKey(NestingPackage))
     {
         Package parentPackage = (Package)createdCopies[NestingPackage];
         return(parentPackage.AddNestedPackage());
     }
     else
     {
         return(NestingPackage.AddNestedPackage());
     }
 }
示例#27
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            PSMAssociation copyPSMAssociation = (PSMAssociation)copyComponent;

            copyPSMAssociation.Lower      = this.Lower;
            copyPSMAssociation.Upper      = this.Upper;
            copyPSMAssociation.parentGuid = createdCopies.GetGuidForCopyOf(Parent);
            copyPSMAssociation.childGuid  = createdCopies.GetGuidForCopyOf(Child);
        }
示例#28
0
        public override void FillCopy(IExolutioCloneable copyComponent, ProjectVersion projectVersion,
                                      ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyComponent, projectVersion, createdCopies);

            PSMComponent copyPSMComponent = (PSMComponent)copyComponent;

            if (Interpretation != null)
            {
                copyPSMComponent.interpretationGuid = createdCopies.GetGuidForCopyOf(Interpretation);
            }
        }
示例#29
0
        public override void FillCopy(Element copyElement, Model targetModel, ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyElement, targetModel, createdCopies);
            PSMContentChoice copyPSMContentChoice = (PSMContentChoice)copyElement;

            if (Parent != null && createdCopies.ContainsKey(Parent))
            {
                PSMSuperordinateComponent copyParent = (PSMSuperordinateComponent)createdCopies[Parent];
                ((_ImplPSMSubordinateComponent)copyPSMContentChoice).Parent = (PSMSuperordinateComponent)createdCopies[Parent];
                copyParent.Components.Add(copyPSMContentChoice);
            }
        }
示例#30
0
        public override void FillCopy(Element copyElement, Model targetModel, ElementCopiesMap createdCopies)
        {
            base.FillCopy(copyElement, targetModel, createdCopies);
            PSMAttribute copyPSMAttribute = (PSMAttribute)copyElement;

            copyPSMAttribute.Alias             = Alias;
            copyPSMAttribute.XSDImplementation = XSDImplementation;

            if (UsedGeneralizations.Count == 0)
            {
                if (this.RepresentedAttribute != null)
                {
                    int attributeIndex = this.Class.RepresentedClass.Attributes.IndexOf(this.RepresentedAttribute);

                    if (attributeIndex >= 0)
                    {
                        copyPSMAttribute.RepresentedAttribute = copyPSMAttribute.Class.RepresentedClass.Attributes[attributeIndex];
                    }
                }
            }
            else
            {
                foreach (Generalization generalization in this.UsedGeneralizations)
                {
                    Generalization copyGeneralization;
                    if (targetModel != Schema.Model || createdCopies.ContainsKey(generalization))
                    {
                        copyGeneralization = (Generalization)createdCopies[generalization];
                    }
                    else
                    {
                        copyGeneralization = generalization;
                    }
                    copyPSMAttribute.UsedGeneralizations.Add(copyGeneralization);

                    if (this.RepresentedAttribute != null)
                    {
                        int attributeIndex = generalization.General.Attributes.IndexOf(this.RepresentedAttribute);
                        if (attributeIndex >= 0)
                        {
                            copyPSMAttribute.RepresentedAttribute = copyGeneralization.General.Attributes[attributeIndex];
                        }
                    }
                }
            }


            if (this.RepresentedAttribute != null && copyPSMAttribute.RepresentedAttribute == null)
            {
                throw new InvalidOperationException("Faild to copy psm class. ");
            }
        }