private void PersistActor(UseCaseDiagram useCaseDiagram, ActorItem actorData) { var actor = new Actor(); actor.Id = actorData.Cell.Id; actor.X = actorData.Cell.Position.X; actor.Y = actorData.Cell.Position.Y; actor.Version = useCaseDiagram.Version; foreach (var contentData in actorData.Contents) { var actorContent = new ActorContent(); actorContent.Id = Guid.NewGuid(); actorContent.Name = contentData.Name; actorContent.Locale = contentData.Locale; actor.Contents.Add(actorContent); _actorContentRepository.Add(actorContent); } actor.UseCaseDiagram = useCaseDiagram; useCaseDiagram.Entities.Add(actor); _actorRepository.Add(actor); _useCaseEntityRepository.Add(actor); }
private void PersistUseCase(UseCaseDiagram useCaseDiagram, UseCaseItem useCaseData, int identifier, IEnumerable <UseCase> oldVersionUseCases = null) { var useCaseEntity = new UseCase(); useCaseEntity.Id = useCaseData.Cell.Id; useCaseEntity.X = useCaseData.Cell.Position.X; useCaseEntity.Y = useCaseData.Cell.Position.Y; useCaseEntity.Identifier = identifier; useCaseEntity.Version = useCaseDiagram.Version; useCaseEntity.IsLastVersion = true; foreach (var contentData in useCaseData.Contents) { var useCaseContent = new UseCaseContent(); useCaseContent.Id = Guid.NewGuid(); useCaseContent.Name = contentData.Name; useCaseContent.Description = contentData.Description; useCaseContent.Path = contentData.Path; useCaseContent.Locale = contentData.Locale; useCaseEntity.Contents.Add(useCaseContent); _useCaseContentRepository.Add(useCaseContent); } foreach (var postCondition in useCaseData.PostConditions) { PersistPostCondition(useCaseEntity, postCondition); } foreach (var preCondition in useCaseData.PreConditions) { PersistPreCondition(useCaseEntity, preCondition); } if (oldVersionUseCases == null || !oldVersionUseCases.Any(o => o.Id == useCaseEntity.Id)) { var specificationItem = new SpecificationItem(); specificationItem.Id = useCaseEntity.Id; specificationItem.Label = $"{UseCase.PREFIX}{useCaseEntity.Identifier}"; specificationItem.Active = true; specificationItem.Type = SpecificationItemType.UseCase; specificationItem.PackageId = useCaseDiagram.SpecificationItem.PackageId; _specificationItemRepository.Add(specificationItem); useCaseEntity.SpecificationItem = specificationItem; } else { var oldUseCase = oldVersionUseCases.FirstOrDefault(o => o.Id == useCaseEntity.Id); useCaseEntity.SpecificationItem = oldUseCase.SpecificationItem; useCaseEntity.SpecificationItem.PackageId = useCaseDiagram.SpecificationItem.PackageId; } useCaseEntity.UseCaseDiagram = useCaseDiagram; useCaseEntity.ProjectId = useCaseDiagram.ProjectId; useCaseDiagram.Entities.Add(useCaseEntity); _useCaseRepository.Add(useCaseEntity); _useCaseEntityRepository.Add(useCaseEntity); }
private void useCaseDiagramToolStripMenuItem_Click(object sender, EventArgs e) { if (Workspace.Default.HasActiveProject) { ShowModelExplorer = true; var diagram = new UseCaseDiagram(); Workspace.Default.ActiveProject.Add(diagram); } }
private static void newUseCaseDiagram_Click(object sender, EventArgs e) { ToolStripItem menuItem = (ToolStripItem)sender; Project project = ((ProjectNode)menuItem.OwnerItem.Owner.Tag).Project; IDiagram diagram = new UseCaseDiagram(); project.Add(diagram); }
public static UseCaseDiagramViewModel FromModel(UseCaseDiagram model) { return(new UseCaseDiagramViewModel { Id = model.Id, Identifier = model.Identifier, PackageIdentifier = model.SpecificationItem?.Package?.Identifier, Contents = model.Contents.Select(UseCaseDiagramContentViewModel.FromModel), Version = model.Version }); }
public static UseCaseDiagramDetailedViewModel FromModel(UseCaseDiagram model, IEnumerable <UseCaseViewModel> useCases, IEnumerable <ActorViewModel> actors) { return(new UseCaseDiagramDetailedViewModel { Id = model.Id, Identifier = model.Identifier, Actors = actors, UseCases = useCases, PackageId = model.SpecificationItem.PackageId, UseCasesRelations = model.UseCasesRelations .Select(UseCasesRelationViewModel.FromModel), EntitiesRelations = model.EntitiesRelations .Select(UseCaseEntityRelationViewModel.FromModel), Contents = model.Contents .Select(UseCaseDiagramContentViewModel.FromModel), Version = model.Version }); }
public void Handle(CreateUseCaseDiagramCommand command) { var id = Guid.NewGuid(); var projectId = _currentProjectContextId.Get(); if (projectId == null) { throw new Exception(Sentences.noProjectInContext); } var package = _packageRepository.Get(command.PackageId.Value); if (!package.Active) { throw new Exception(Sentences.thisPackageWasRemoved); } var nextId = _useCaseDiagramNextIdQueryHandler.Handle(projectId.Value); var specificationItem = new SpecificationItem(); specificationItem.Id = id; specificationItem.Active = true; specificationItem.Type = SpecificationItemType.UseCaseDiagram; specificationItem.PackageId = command.PackageId.Value; specificationItem.Label = $"UCD{nextId}"; var useCaseDiagram = new UseCaseDiagram(); useCaseDiagram.Id = id; useCaseDiagram.SpecificationItem = specificationItem; useCaseDiagram.ProjectId = projectId.Value; useCaseDiagram.Version = 1; useCaseDiagram.IsLastVersion = true; useCaseDiagram.Identifier = nextId; _useCaseDiagramItemsPersister.Persist(useCaseDiagram, command); _useCaseDiagramRepository.Add(useCaseDiagram); _specifiationItemRepository.Add(specificationItem); }
public void Handle(CreateUseCaseDiagramNewVersionCommand command) { var queryResult = _specificationItemWithUseCaseDiagramsQueryHandler.Handle(command.Id.Value); var latestVersion = queryResult.UseCaseDiagrams.FirstOrDefault(s => s.IsLastVersion); foreach (var oldUseCaseDiagramsVersion in queryResult.UseCaseDiagrams) { oldUseCaseDiagramsVersion.IsLastVersion = false; } var oldUseCasesVersions = _useCasesByDiagramQueryHandler.Handle(command.Id); foreach (var oldUseCaseVersion in oldUseCasesVersions) { oldUseCaseVersion.IsLastVersion = false; } var package = _packageRepository.Get(command.PackageId.Value); if (!package.Active) { throw new Exception(Sentences.thisPackageWasRemoved); } var useCaseDiagram = new UseCaseDiagram(); useCaseDiagram.Id = command.Id.Value; useCaseDiagram.SpecificationItem = queryResult.SpecificationItem; useCaseDiagram.SpecificationItem.PackageId = package.Id; useCaseDiagram.ProjectId = latestVersion.ProjectId; useCaseDiagram.Version = latestVersion.Version + 1; useCaseDiagram.Identifier = latestVersion.Identifier; useCaseDiagram.IsLastVersion = true; RetrieveSpecificationItemIdsForCommandUseCases(command, oldUseCasesVersions); _useCaseDiagramItemsPersister.Persist(useCaseDiagram, command, oldUseCasesVersions); _useCaseDiagramRepository.Add(useCaseDiagram); }
public void Persist(UseCaseDiagram useCaseDiagram, CreateUseCaseDiagramCommand command, IEnumerable <UseCase> oldVersionUseCases = null) { foreach (var contentItem in command.Contents) { var useCaseDiagramContent = new UseCaseDiagramContent(); useCaseDiagramContent.Id = Guid.NewGuid(); useCaseDiagramContent.Locale = contentItem.Locale; useCaseDiagramContent.Name = contentItem.Name; useCaseDiagram.Contents.Add(useCaseDiagramContent); _useCaseDiagramContentRepository.Add(useCaseDiagramContent); } var projectId = _currentProjectContextId.Get(); var useCaseId = _useCaseNextIdQueryHandler.Handle(projectId); foreach (var useCaseData in command.UseCases) { var currentUseCaseId = useCaseData.Identifier == null ? useCaseId++ : useCaseData.Identifier.Value; PersistUseCase(useCaseDiagram, useCaseData, currentUseCaseId, oldVersionUseCases); } foreach (var actorData in command.Actors) { PersistActor(useCaseDiagram, actorData); } foreach (var relationData in command.EntitiesRelations) { var entitiesRelation = new UseCaseEntityRelation(); entitiesRelation.Id = Guid.NewGuid(); var source = useCaseDiagram.Entities .FirstOrDefault(e => e.Id == relationData.SourceId.Value); var target = useCaseDiagram.Entities .FirstOrDefault(e => e.Id == relationData.TargetId.Value); entitiesRelation.Source = source; entitiesRelation.Target = target; if (relationData.Contents != null) { foreach (var content in relationData.Contents) { var relationContent = new UseCaseEntityRelationContent(); relationContent.Description = content.Description; relationContent.Locale = content.Locale; relationContent.Id = entitiesRelation.Id; _useCaseEntityRelationContentRepository.Add(relationContent); } } useCaseDiagram.EntitiesRelations.Add(entitiesRelation); _useCaseEntityRelationRepository.Add(entitiesRelation); } foreach (var relationData in command.UseCasesRelations) { var useCasesRelation = new UseCasesRelation(); useCasesRelation.Version = useCaseDiagram.Version; useCasesRelation.SourceId = relationData.SourceId.Value; useCasesRelation.TargetId = relationData.TargetId.Value; useCasesRelation.Type = relationData.Type.Value; useCasesRelation.UseCaseDiagram = useCaseDiagram; useCaseDiagram.UseCasesRelations.Add(useCasesRelation); _useCasesRelationRepository.Add(useCasesRelation); useCasesRelation.Id = Guid.NewGuid(); } }
public void Init() { diagram = new UseCaseDiagram(); }
public void Init() { language = Language.GetLanguage("csharp"); classDiagram = new ClassDiagram(language); useCaseDiagram = new UseCaseDiagram(); }
public void Init() { diagramFrom = new UseCaseDiagram(); diagramTo = new UseCaseDiagram(); }