/// <summary> /// Merges the current directory with an additional directory. /// </summary> /// <param name="data">Directory</param> public void Merge(IDomainDataExtensionDirectory data) { if (!(data is DiagramDomainDataDirectory)) { throw new InvalidOperationException("Can not merge with " + data.ToString()); } DiagramDomainDataDirectory domainData = data as DiagramDomainDataDirectory; foreach (KeyValuePair <Guid, Guid> pair in domainData.ClassShapesDependenciesMapping) { ClassShapesDependenciesMapping.Add(pair.Key, pair.Value); } foreach (KeyValuePair <Guid, List <Guid> > pair in domainData.ParentChildrenShapesMapping) { ParentChildrenShapesMapping.Add(pair.Key, pair.Value); } foreach (KeyValuePair <Guid, List <Guid> > pair in domainData.DiagramChildrenShapesMapping) { DiagramChildrenShapesMapping.Add(pair.Key, pair.Value); } foreach (KeyValuePair <Guid, List <Guid> > pair in domainData.DiagramRootChildrenShapesMapping) { DiagramRootChildrenShapesMapping.Add(pair.Key, pair.Value); } foreach (KeyValuePair <Guid, List <Guid> > pair in domainData.DiagramRSChildren) { DiagramRSChildren.Add(pair.Key, pair.Value); } foreach (KeyValuePair <Guid, List <Guid> > pair in domainData.DiagramMappingRSChildren) { DiagramMappingRSChildren.Add(pair.Key, pair.Value); } // class shape mappings foreach (KeyValuePair <Guid, List <Guid> > pair in domainData.ClassShapesMapping) { if (ClassShapesMapping.ContainsKey(pair.Key)) { ClassShapesMapping[pair.Key].AddRange(pair.Value); } else { ClassShapesMapping.Add(pair.Key, pair.Value); } } foreach (KeyValuePair <Guid, DiagramClassInfo> pair in domainData.DiagramClassInfos) { DiagramClassInfos.Add(pair.Key, pair.Value); } foreach (KeyValuePair <Guid, ShapeClassInfo> pair in domainData.ShapeClassInfos) { ShapeClassInfos.Add(pair.Key, pair.Value); } foreach (KeyValuePair <Guid, RelationshipShapeInfo> pair in domainData.RelationshipShapeInfos) { RelationshipShapeInfos.Add(pair.Key, pair.Value); } foreach (KeyValuePair <Guid, MappingRelationshipShapeInfo> pair in domainData.MappingRelationshipShapeInfos) { MappingRelationshipShapeInfos.Add(pair.Key, pair.Value); } }
/// <summary> /// Merges the current directory with an additional directory. /// </summary> /// <param name="data">Directory</param> public void Merge(IDomainDataExtensionDirectory data) { if( !(data is DiagramDomainDataDirectory) ) throw new InvalidOperationException("Can not merge with " + data.ToString()); DiagramDomainDataDirectory domainData = data as DiagramDomainDataDirectory; foreach (KeyValuePair<Guid,Guid> pair in domainData.ClassShapesDependenciesMapping) ClassShapesDependenciesMapping.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid,List<Guid>> pair in domainData.ParentChildrenShapesMapping) ParentChildrenShapesMapping.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid,List<Guid>> pair in domainData.DiagramChildrenShapesMapping) DiagramChildrenShapesMapping.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid,List<Guid>> pair in domainData.DiagramRootChildrenShapesMapping) DiagramRootChildrenShapesMapping.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid, List<Guid>> pair in domainData.DiagramRSChildren) DiagramRSChildren.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid, List<Guid>> pair in domainData.DiagramMappingRSChildren) DiagramMappingRSChildren.Add(pair.Key, pair.Value); // class shape mappings foreach (KeyValuePair<Guid, List<Guid>> pair in domainData.ClassShapesMapping) if (ClassShapesMapping.ContainsKey(pair.Key)) ClassShapesMapping[pair.Key].AddRange(pair.Value); else ClassShapesMapping.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid, DiagramClassInfo> pair in domainData.DiagramClassInfos) DiagramClassInfos.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid, ShapeClassInfo> pair in domainData.ShapeClassInfos) ShapeClassInfos.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid, RelationshipShapeInfo> pair in domainData.RelationshipShapeInfos) RelationshipShapeInfos.Add(pair.Key, pair.Value); foreach (KeyValuePair<Guid, MappingRelationshipShapeInfo> pair in domainData.MappingRelationshipShapeInfos) MappingRelationshipShapeInfos.Add(pair.Key, pair.Value); }