Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 private void useCaseDiagramToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (Workspace.Default.HasActiveProject)
     {
         ShowModelExplorer = true;
         var diagram = new UseCaseDiagram();
         Workspace.Default.ActiveProject.Add(diagram);
     }
 }
Ejemplo n.º 4
0
        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
     });
 }
Ejemplo n.º 6
0
 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
     });
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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();
            }
        }
Ejemplo n.º 10
0
 public void Init()
 {
     diagram = new UseCaseDiagram();
 }
Ejemplo n.º 11
0
 public void Init()
 {
     language       = Language.GetLanguage("csharp");
     classDiagram   = new ClassDiagram(language);
     useCaseDiagram = new UseCaseDiagram();
 }
Ejemplo n.º 12
0
 public void Init()
 {
     diagramFrom = new UseCaseDiagram();
     diagramTo   = new UseCaseDiagram();
 }