/// <summary>
        /// Initializes a new instance of the <see cref="WorkbookData"/> class.
        /// </summary>
        /// <param name="iteration">
        /// The iteration that needs to be stored in the <see cref="SitedirectoryData"/> property
        /// </param>
        public WorkbookData(CDP4Common.EngineeringModelData.Iteration iteration)
        {
            var factory = new WorkbookDataDtoFactory(iteration);

            factory.Process();

            this.SetSiteDirectoryData(factory);
            this.SetIterationData(factory);
        }
        public async Task VerifyThatCloseModelWorks()
        {
            var siteDir     = new CDP4Common.SiteDirectoryData.SiteDirectory(Guid.NewGuid(), null, null);
            var modelRdlDto = new CDP4Common.DTO.ModelReferenceDataLibrary {
                Iid = Guid.NewGuid()
            };
            var siteDirDto = new CDP4Common.DTO.SiteDirectory {
                Iid = Guid.NewGuid()
            };
            var requiredPocoDto = new CDP4Common.DTO.SiteReferenceDataLibrary {
                Iid = Guid.NewGuid()
            };
            var containerEngModelSetupDto = new EngineeringModelSetup {
                Iid = Guid.NewGuid()
            };
            var containerEngModelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup {
                Iid = containerEngModelSetupDto.Iid
            };
            var iterationDto = new Iteration {
                Iid = Guid.NewGuid()
            };
            var iteration = new CDP4Common.EngineeringModelData.Iteration {
                Iid = iterationDto.Iid
            };
            var iterationSetupDto = new CDP4Common.DTO.IterationSetup {
                Iid = Guid.NewGuid(), IterationIid = iterationDto.Iid
            };

            iterationDto.IterationSetup = iterationSetupDto.IterationIid;
            siteDir.Model.Add(containerEngModelSetup);
            modelRdlDto.RequiredRdl = requiredPocoDto.Iid;

            var credentials = new Credentials("admin", "pass", new Uri("http://www.rheagroup.com"));
            var session2    = new Session(this.mockedDal.Object, credentials);

            var iterationSetup = new CDP4Common.SiteDirectoryData.IterationSetup {
                Iid = iterationSetupDto.Iid, Container = containerEngModelSetup, IterationIid = iteration.Iid
            };
            var thingsToAdd = new List <Thing> {
                siteDirDto, requiredPocoDto, containerEngModelSetupDto, modelRdlDto, iterationSetupDto
            };

            await session2.Assembler.Synchronize(thingsToAdd);

            var lazyiteration = new Lazy <CDP4Common.CommonData.Thing>(() => iteration);

            session2.Assembler.Cache.GetOrAdd(new CacheKey(iterationDto.Iid, null), lazyiteration);

            CDP4Common.CommonData.Thing changedObject = null;
            CDPMessageBus.Current.Listen <ObjectChangedEvent>(typeof(CDP4Common.EngineeringModelData.Iteration)).Subscribe(x => changedObject = x.ChangedThing);
            await session2.CloseIterationSetup(iterationSetup);

            Assert.NotNull(changedObject);
        }
Exemplo n.º 3
0
        public void Setup()
        {
            this.session           = new Mock <ISession>();
            this.assembler         = new Assembler(this.uri);
            this.permissionService = new Mock <IPermissionService>();
            this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object);
            this.thingDialogNavigationService = new Mock <IThingDialogNavigationService>();
            this.panelNavigationService       = new Mock <IPanelNavigationService>();
            this.dropinfo = new Mock <IDropInfo>();
            this.cache    = this.assembler.Cache;

            this.sitedir    = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri);
            this.modelsetup = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "model"
            };
            this.iterationsetup = new IterationSetup(Guid.NewGuid(), this.cache, this.uri);
            this.person         = new Person(Guid.NewGuid(), this.cache, this.uri);
            this.domain         = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "domain"
            };
            this.participant = new Participant(Guid.NewGuid(), this.cache, this.uri)
            {
                Person         = this.person,
                SelectedDomain = this.domain
            };

            this.sitedir.Model.Add(this.modelsetup);
            this.sitedir.Person.Add(this.person);
            this.sitedir.Domain.Add(this.domain);
            this.modelsetup.IterationSetup.Add(this.iterationsetup);
            this.modelsetup.Participant.Add(this.participant);

            this.model = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri)
            {
                EngineeringModelSetup = this.modelsetup
            };
            this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri)
            {
                IterationSetup = this.iterationsetup
            };
            this.model.Iteration.Add(this.iteration);

            this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.sitedir);
            this.session.Setup(x => x.ActivePerson).Returns(this.person);
            this.session.Setup(x => x.OpenIterations).Returns(new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> >());
            this.session.Setup(x => x.Assembler).Returns(this.assembler);

            this.cache.TryAdd(new CacheKey(this.iteration.Iid, null), new Lazy <Thing>(() => this.iteration));
        }
        public async Task VerifyThatSiteDirectoryCanBeOpened()
        {
            await this.session.Open();

            Assert.AreEqual(62, this.session.Assembler.Cache.Count);

            var iterationSetups =
                this.session.Assembler.Cache.Select(x => x.Value)
                .Where(lazy => lazy.Value.ClassKind == ClassKind.IterationSetup)
                .Select(lazy => lazy.Value)
                .Cast <CDP4Common.SiteDirectoryData.IterationSetup>();

            var iterationSetupToRead =
                iterationSetups.Single(x => x.Iid == Guid.Parse("11111111-0c20-417a-a83f-c80fbc93e394"));

            var engineeringModelSetup = (CDP4Common.SiteDirectoryData.EngineeringModelSetup)iterationSetupToRead.Container;

            var domainsOfExpertise = this.session.Assembler.Cache.Select(x => x.Value)
                                     .Where(lazy => lazy.Value.ClassKind == ClassKind.DomainOfExpertise)
                                     .Select(lazy => lazy.Value)
                                     .Cast <CDP4Common.SiteDirectoryData.DomainOfExpertise>();

            var domainOfExpertise = domainsOfExpertise.Single(x => x.Iid == Guid.Parse("8790fe92-d1fa-42ea-9520-e0ddac52f1ad"));

            var model = new CDP4Common.EngineeringModelData.EngineeringModel(engineeringModelSetup.EngineeringModelIid, this.session.Assembler.Cache, this.session.Credentials.Uri)
            {
                EngineeringModelSetup = engineeringModelSetup
            };
            var iteration = new CDP4Common.EngineeringModelData.Iteration(iterationSetupToRead.IterationIid, this.session.Assembler.Cache, this.session.Credentials.Uri);

            model.Iteration.Add(iteration);

            await this.session.Read(iteration, domainOfExpertise);

            Assert.AreEqual(93, this.session.Assembler.Cache.Count);

            var siteReferenceDataLibrary = this.session.Assembler.Cache.Select(x => x.Value)
                                           .Where(lazy => lazy.Value.ClassKind == ClassKind.SiteReferenceDataLibrary)
                                           .Select(lazy => lazy.Value)
                                           .Cast <CDP4Common.SiteDirectoryData.SiteReferenceDataLibrary>().Single(x => x.Iid == Guid.Parse("bff9f871-3b7f-4e57-ac82-5ab499f9baf5"));

            Assert.IsNotNull(siteReferenceDataLibrary);

            Assert.IsNotEmpty(siteReferenceDataLibrary.ParameterType);

            var simpleQuantityKind = siteReferenceDataLibrary.ParameterType.Single(x => x.Iid == Guid.Parse("66766f44-0a0b-4e0a-9bc7-8ae027c2da5c"));

            Assert.AreEqual("length", simpleQuantityKind.Name);
            Assert.AreEqual("l", simpleQuantityKind.ShortName);
        }
Exemplo n.º 5
0
        public void Verify_that_OperationContainerFileVerification_throws_no_exception_when_data_is_complete()
        {
            var siteDirectory         = new CDP4Common.SiteDirectoryData.SiteDirectory(Guid.NewGuid(), null, null);
            var engineeringModelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(Guid.NewGuid(), null, null);
            var iterationSetup        = new CDP4Common.SiteDirectoryData.IterationSetup(Guid.NewGuid(), null, null);

            siteDirectory.Model.Add(engineeringModelSetup);
            engineeringModelSetup.IterationSetup.Add(iterationSetup);

            var engineeringModel = new CDP4Common.EngineeringModelData.EngineeringModel(Guid.NewGuid(), null, null);

            engineeringModel.EngineeringModelSetup = engineeringModelSetup;

            var iteration = new CDP4Common.EngineeringModelData.Iteration(Guid.NewGuid(), null, null);

            iteration.IterationSetup = iterationSetup;

            var commonFileStore = new CDP4Common.EngineeringModelData.CommonFileStore(Guid.NewGuid(), null, null);

            engineeringModel.Iteration.Add(iteration);
            engineeringModel.CommonFileStore.Add(commonFileStore);

            var context     = TransactionContextResolver.ResolveContext(commonFileStore);
            var transaction = new ThingTransaction(context);

            var commonFileStoreClone = commonFileStore.Clone(false);

            var file         = new CDP4Common.EngineeringModelData.File(Guid.NewGuid(), null, null);
            var fileRevision = new CDP4Common.EngineeringModelData.FileRevision(Guid.NewGuid(), null, null);

            fileRevision.ContentHash = "1B686ADFA2CAE870A96E5885087337C032781BE6";

            transaction.Create(file, commonFileStoreClone);
            transaction.Create(fileRevision, file);

            var operationContainer = transaction.FinalizeTransaction();

            var files = new List <string> {
                this.filePath
            };

            var testDal = new TestDal(this.credentials);

            Assert.DoesNotThrow(() => testDal.TestOperationContainerFileVerification(operationContainer, files));
        }
        public async Task Verify_that_when_active_person_is_null_Iteration_is_not_read()
        {
            var iterationSetup = new CDP4Common.SiteDirectoryData.IterationSetup(Guid.NewGuid(), null, null)
            {
                FrozenOn = DateTime.Now, IterationIid = Guid.NewGuid()
            };
            var activeDomain = new DomainOfExpertise(Guid.NewGuid(), null, null);
            var model        = new EngineeringModel(Guid.NewGuid(), 1);
            var iteration    = new Iteration(Guid.NewGuid(), 10)
            {
                IterationSetup = iterationSetup.Iid
            };

            var iterationToOpen = new CDP4Common.EngineeringModelData.Iteration(iteration.Iid, null, null);
            var modelToOpen     = new CDP4Common.EngineeringModelData.EngineeringModel(model.Iid, null, null);

            iterationToOpen.Container = modelToOpen;

            Assert.ThrowsAsync <InvalidOperationException>(async() => await this.session.Read(iterationToOpen, activeDomain));
        }
        public async Task VerifyThatReadIterationWorks()
        {
            var siteDir = new CDP4Common.SiteDirectoryData.SiteDirectory(Guid.NewGuid(), this.session.Assembler.Cache, this.uri);
            var JohnDoe = new CDP4Common.SiteDirectoryData.Person(this.person.Iid, this.session.Assembler.Cache, this.uri)
            {
                ShortName = "John"
            };
            var modelSetup     = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(Guid.NewGuid(), this.session.Assembler.Cache, this.uri);
            var iterationSetup = new CDP4Common.SiteDirectoryData.IterationSetup(Guid.NewGuid(), this.session.Assembler.Cache, this.uri)
            {
                FrozenOn = DateTime.Now, IterationIid = Guid.NewGuid()
            };
            var mrdl         = new ModelReferenceDataLibrary(Guid.NewGuid(), this.session.Assembler.Cache, this.uri);
            var srdl         = new SiteReferenceDataLibrary(Guid.NewGuid(), this.session.Assembler.Cache, this.uri);
            var activeDomain = new DomainOfExpertise(Guid.NewGuid(), this.session.Assembler.Cache, this.uri);

            mrdl.RequiredRdl = srdl;
            modelSetup.RequiredRdl.Add(mrdl);
            modelSetup.IterationSetup.Add(iterationSetup);
            siteDir.Model.Add(modelSetup);
            siteDir.SiteReferenceDataLibrary.Add(srdl);
            siteDir.Domain.Add(activeDomain);
            siteDir.Person.Add(JohnDoe);

            this.session.Assembler.Cache.TryAdd(new CacheKey(siteDir.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => siteDir));
            this.session.Assembler.Cache.TryAdd(new CacheKey(JohnDoe.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => JohnDoe));
            this.session.Assembler.Cache.TryAdd(new CacheKey(modelSetup.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => modelSetup));
            this.session.Assembler.Cache.TryAdd(new CacheKey(mrdl.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => mrdl));
            this.session.Assembler.Cache.TryAdd(new CacheKey(srdl.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => srdl));
            this.session.Assembler.Cache.TryAdd(new CacheKey(siteDir.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => siteDir));
            this.session.Assembler.Cache.TryAdd(new CacheKey(iterationSetup.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => iterationSetup));

            this.session.GetType().GetProperty("ActivePerson").SetValue(this.session, JohnDoe, null);

            var participant = new CDP4Common.SiteDirectoryData.Participant(Guid.NewGuid(), this.session.Assembler.Cache, this.uri)
            {
                Person = this.session.ActivePerson
            };

            modelSetup.Participant.Add(participant);

            var model     = new EngineeringModel(Guid.NewGuid(), 1);
            var iteration = new Iteration(iterationSetup.IterationIid, 10)
            {
                IterationSetup = iterationSetup.Iid
            };

            model.Iteration.Add(iteration.Iid);
            model.EngineeringModelSetup = modelSetup.Iid;

            var readOutput = new List <Thing>
            {
                model,
                iteration
            };

            var readTaskCompletionSource = new TaskCompletionSource <IEnumerable <Thing> >();

            readTaskCompletionSource.SetResult(readOutput);
            this.mockedDal.Setup(x => x.Read(It.IsAny <Iteration>(), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>())).Returns(readTaskCompletionSource.Task);

            var iterationToOpen = new CDP4Common.EngineeringModelData.Iteration(iteration.Iid, null, null);
            var modelToOpen     = new CDP4Common.EngineeringModelData.EngineeringModel(model.Iid, null, null);

            iterationToOpen.Container = modelToOpen;

            await this.session.Read(iterationToOpen, activeDomain);

            this.mockedDal.Verify(x => x.Read(It.Is <Iteration>(i => i.Iid == iterationToOpen.Iid), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>()), Times.Once);

            var pair = this.session.OpenIterations.Single();

            Assert.AreEqual(pair.Value.Item1, activeDomain);

            await this.session.Read(iterationToOpen, activeDomain);

            this.mockedDal.Verify(x => x.Read(It.Is <Iteration>(i => i.Iid == iterationToOpen.Iid), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>()), Times.Exactly(2));

            pair = this.session.OpenIterations.Single();
            Assert.AreEqual(pair.Value.Item1, activeDomain);

            var selectedDomain = this.session.QuerySelectedDomainOfExpertise(iterationToOpen);

            Assert.AreEqual(activeDomain.Iid, selectedDomain.Iid);

            this.mockedDal.Setup(x => x.Read(It.IsAny <Thing>(), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>())).Returns <Thing, CancellationToken, IQueryAttributes>(
                (x, y, z) =>
            {
                // the method with iteration is called
                var xvariable = x;
                return(readTaskCompletionSource.Task);
            });

            await this.session.Refresh();

            this.mockedDal.Verify(x => x.Read <Thing>(It.IsAny <Thing>(), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>()), Times.Exactly(1));

            Assert.ThrowsAsync <InvalidOperationException>(async() => await this.session.Read(iterationToOpen, null));
        }
        public async Task VerifyThatSiteRdlRequiredByModelRdlCannotBeClosed()
        {
            var rdlDto = new CDP4Common.DTO.SiteReferenceDataLibrary {
                Iid = Guid.NewGuid()
            };
            var siteDirDto = new CDP4Common.DTO.SiteDirectory {
                Iid = Guid.NewGuid()
            };
            var requiredRdlDto = new CDP4Common.DTO.SiteReferenceDataLibrary()
            {
                Iid = Guid.NewGuid()
            };

            rdlDto.RequiredRdl = requiredRdlDto.Iid;
            siteDirDto.SiteReferenceDataLibrary.Add(rdlDto.Iid);
            siteDirDto.SiteReferenceDataLibrary.Add(requiredRdlDto.Iid);

            siteDirDto.Person.Add(this.person.Iid);

            var mrdl = new CDP4Common.DTO.ModelReferenceDataLibrary(Guid.NewGuid(), 0)
            {
                RequiredRdl = requiredRdlDto.Iid
            };
            var modelsetup = new EngineeringModelSetup(Guid.NewGuid(), 0);

            modelsetup.RequiredRdl.Add(mrdl.Iid);

            var model = new EngineeringModel(Guid.NewGuid(), 0)
            {
                EngineeringModelSetup = modelsetup.Iid
            };
            var iteration = new Iteration(Guid.NewGuid(), 0);

            model.Iteration.Add(iteration.Iid);

            siteDirDto.Model.Add(modelsetup.Iid);

            var readReturn = new List <Thing>
            {
                siteDirDto,
                mrdl,
                modelsetup,
                model,
                iteration,
                this.person
            };

            var mrdlpoco       = new ModelReferenceDataLibrary(mrdl.Iid, null, null);
            var modelsetuppoco = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(modelsetup.Iid, null, null);

            modelsetuppoco.RequiredRdl.Add(mrdlpoco);

            var participant = new CDP4Common.DTO.Participant(Guid.NewGuid(), 0)
            {
                Person = this.person.Iid
            };

            modelsetup.Participant.Add(participant.Iid);
            var modelPoco = new CDP4Common.EngineeringModelData.EngineeringModel(model.Iid, null, null)
            {
                EngineeringModelSetup = modelsetuppoco
            };
            var iterationPoco = new CDP4Common.EngineeringModelData.Iteration(iteration.Iid, null, null);

            modelPoco.Iteration.Add(iterationPoco);

            var readTaskCompletionSource = new TaskCompletionSource <IEnumerable <Thing> >();

            readTaskCompletionSource.SetResult(readReturn);
            this.mockedDal.Setup(
                x => x.Read(It.IsAny <Iteration>(), It.IsAny <CancellationToken>(), null))
            .Returns(readTaskCompletionSource.Task);

            var thingsToAdd = new List <Thing>()
            {
                siteDirDto, requiredRdlDto, rdlDto, this.person, participant, modelsetup
            };

            await this.session.Assembler.Synchronize(thingsToAdd);

            var JohnDoe = this.session.RetrieveSiteDirectory().Person.Single(x => x.Iid == this.person.Iid);

            this.session.GetType().GetProperty("ActivePerson").SetValue(this.session, JohnDoe, null);

            await this.session.Read(iterationPoco, null);

            Assert.AreEqual(2, this.session.OpenReferenceDataLibraries.Count());

            Lazy <CDP4Common.CommonData.Thing> requiredRdlToClose;

            this.session.Assembler.Cache.TryGetValue(new CacheKey(requiredRdlDto.Iid, null), out requiredRdlToClose);

            await this.session.CloseRdl((SiteReferenceDataLibrary)requiredRdlToClose.Value);

            Assert.AreEqual(2, this.session.OpenReferenceDataLibraries.Count());
        }
        private void InstantiateThings()
        {
            var siteDirectory = new CDP4Common.SiteDirectoryData.SiteDirectory(Guid.NewGuid(), null, null);

            var domain1 = new CDP4Common.SiteDirectoryData.DomainOfExpertise(Guid.NewGuid(), null, null);

            siteDirectory.Domain.Add(domain1);
            var domain2 = new CDP4Common.SiteDirectoryData.DomainOfExpertise(Guid.NewGuid(), null, null);

            siteDirectory.Domain.Add(domain2);

            var alias = new CDP4Common.CommonData.Alias(Guid.NewGuid(), null, null);

            domain1.Alias.Add(alias);

            var engineeringModelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(Guid.NewGuid(), null, null);

            siteDirectory.Model.Add(engineeringModelSetup);
            var iterationSetup = new CDP4Common.SiteDirectoryData.IterationSetup(Guid.NewGuid(), null, null);

            engineeringModelSetup.IterationSetup.Add(iterationSetup);

            var participantRole1 = new CDP4Common.SiteDirectoryData.ParticipantRole(Guid.NewGuid(), null, null);

            siteDirectory.ParticipantRole.Add(participantRole1);
            var participantRole2 = new CDP4Common.SiteDirectoryData.ParticipantRole(Guid.NewGuid(), null, null);

            siteDirectory.ParticipantRole.Add(participantRole2);

            var person1 = new CDP4Common.SiteDirectoryData.Person(Guid.NewGuid(), null, null);

            siteDirectory.Person.Add(person1);

            var personRole1 = new CDP4Common.SiteDirectoryData.PersonRole(Guid.NewGuid(), null, null);

            siteDirectory.PersonRole.Add(personRole1);

            var siteReferenceDataLibrary1 = new CDP4Common.SiteDirectoryData.SiteReferenceDataLibrary(Guid.NewGuid(), null, null);

            siteDirectory.SiteReferenceDataLibrary.Add(siteReferenceDataLibrary1);

            var engineeringModel = new CDP4Common.EngineeringModelData.EngineeringModel(Guid.NewGuid(), null, null);

            engineeringModel.EngineeringModelSetup    = engineeringModelSetup;
            engineeringModelSetup.EngineeringModelIid = engineeringModel.Iid;

            this.iteration = new CDP4Common.EngineeringModelData.Iteration(Guid.NewGuid(), null, null);
            this.iteration.IterationSetup = iterationSetup;
            iterationSetup.IterationIid   = this.iteration.Iid;

            engineeringModel.Iteration.Add(this.iteration);

            var modelReferenceDataLibrary = new CDP4Common.SiteDirectoryData.ModelReferenceDataLibrary(Guid.NewGuid(), null, null);

            modelReferenceDataLibrary.RequiredRdl = siteReferenceDataLibrary1;

            engineeringModelSetup.RequiredRdl.Add(modelReferenceDataLibrary);

            var participant = new CDP4Common.SiteDirectoryData.Participant(Guid.NewGuid(), null, null);

            participant.Person = person1;
            participant.Domain.Add(domain1);
            participant.Role = participantRole1;

            engineeringModelSetup.Participant.Add(participant);

            var elementDefinition1 = new CDP4Common.EngineeringModelData.ElementDefinition(Guid.NewGuid(), null, null);

            this.iteration.Element.Add(elementDefinition1);
            var elementDefinition2 = new CDP4Common.EngineeringModelData.ElementDefinition(Guid.NewGuid(), null, null);

            this.iteration.Element.Add(elementDefinition2);

            var elementUsage = new CDP4Common.EngineeringModelData.ElementUsage(Guid.NewGuid(), null, null);

            elementDefinition1.ContainedElement.Add(elementUsage);
            elementUsage.ElementDefinition = elementDefinition2;
        }
Exemplo n.º 10
0
        /// <summary>
        /// Build operation containes structure that will be serialized
        /// </summary>
        /// <returns>
        /// List of <see cref="OperationContainer"/>
        /// </returns>
        private IEnumerable <OperationContainer> BuildOperationContainers()
        {
            var cache = new ConcurrentDictionary <CacheKey, Lazy <Thing> >();

            // DomainOfExpertise
            var domain = new DomainOfExpertise(Guid.NewGuid(), cache, this.credentials.Uri)
            {
                ShortName = "SYS"
            };

            this.siteDirectoryData.Domain.Add(domain);

            // PersonRole
            var role = new PersonRole(Guid.NewGuid(), null, null);

            this.siteDirectoryData.PersonRole.Add(role);
            this.siteDirectoryData.DefaultPersonRole = role;

            // ParticipantRole
            var participantRole = new ParticipantRole(Guid.Empty, null, null);

            this.siteDirectoryData.ParticipantRole.Add(participantRole);
            this.siteDirectoryData.DefaultParticipantRole = participantRole;

            // Organization
            var organization = new Organization(Guid.NewGuid(), null, null)
            {
                Container = this.siteDirectoryData
            };

            // Iteration
            var iterationIid       = new Guid("b58ea73d-350d-4520-b9d9-a52c75ac2b5d");
            var iterationSetup     = new IterationSetup(Guid.NewGuid(), 0);
            var iterationSetupPoco = new CDP4Common.SiteDirectoryData.IterationSetup(iterationSetup.Iid, cache, this.credentials.Uri);

            // EngineeringModel
            var model      = new EngineeringModel(Guid.NewGuid(), cache, this.credentials.Uri);
            var modelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup();

            modelSetup.ActiveDomain.Add(domain);

            var requiredRdl = new ModelReferenceDataLibrary();

            var person = new Person {
                ShortName = "admin", Organization = organization
            };
            var participant = new Participant(Guid.NewGuid(), cache, this.credentials.Uri)
            {
                Person = person
            };

            participant.Person.Role = role;
            participant.Role        = participantRole;
            participant.Domain.Add(domain);
            modelSetup.Participant.Add(participant);

            var lazyPerson    = new Lazy <Thing>(() => person);
            var iterationPoco = new CDP4Common.EngineeringModelData.Iteration(iterationIid, cache, this.credentials.Uri)
            {
                IterationSetup = iterationSetupPoco
            };

            model.Iteration.Add(iterationPoco);
            var iteration = (Iteration)iterationPoco.ToDto();

            model.EngineeringModelSetup = modelSetup;
            this.siteDirectoryData.Model.Add(modelSetup);
            modelSetup.RequiredRdl.Add(requiredRdl);
            modelSetup.IterationSetup.Add(iterationSetupPoco);
            cache.TryAdd(new CacheKey(person.Iid, this.siteDirectoryData.Iid), lazyPerson);
            this.siteDirectoryData.Cache = cache;
            iteration.IterationSetup     = iterationSetup.Iid;
            var iterationClone = iteration.DeepClone <Iteration>();

            var operation           = new Operation(iteration, iterationClone, OperationKind.Update);
            var operationContainers = new[] { new OperationContainer("/EngineeringModel/" + model.Iid + "/iteration/" + iteration.Iid, 0) };

            operationContainers.Single().AddOperation(operation);

            return(operationContainers);
        }
Exemplo n.º 11
0
        public async Task VerifyWriteEnumerableOperationContainer()
        {
            var cache = new ConcurrentDictionary <CacheKey, Lazy <Thing> >();

            var files = new[] { "file1" };

            Assert.Throws <ArgumentNullException>(() => this.dal.Write((IEnumerable <OperationContainer>)null, files));
            Assert.Throws <ArgumentException>(() => this.dal.Write(new List <OperationContainer>(), files));

            var operationContainers = new[] { new OperationContainer("/SiteDirectory/00000000-0000-0000-0000-000000000000", 0) };

            Assert.Throws <ArgumentException>(() => this.dal.Write(operationContainers, files));

            var domainSys = new DomainOfExpertise(Guid.NewGuid(), cache, this.credentials.Uri)
            {
                ShortName = "SYS"
            };

            this.siteDirectoryData.Domain.Add(domainSys);

            var domainAer = new DomainOfExpertise(Guid.NewGuid(), cache, this.credentials.Uri)
            {
                ShortName = "AER"
            };

            this.siteDirectoryData.Domain.Add(domainAer);

            var domainProp = new DomainOfExpertise(Guid.NewGuid(), cache, this.credentials.Uri)
            {
                ShortName = "PROP"
            };

            this.siteDirectoryData.Domain.Add(domainProp);

            // PersonRole
            var role = new PersonRole(Guid.NewGuid(), null, null);

            this.siteDirectoryData.PersonRole.Add(role);
            this.siteDirectoryData.DefaultPersonRole = role;

            // ParticipantRole
            var participantRole = new ParticipantRole(Guid.Empty, null, null);

            this.siteDirectoryData.ParticipantRole.Add(participantRole);
            this.siteDirectoryData.DefaultParticipantRole = participantRole;

            // Organization
            var organization = new Organization(Guid.NewGuid(), null, null)
            {
                Container = this.siteDirectoryData
            };

            var sitedirectoryDto = (CDP4Common.DTO.SiteDirectory) this.siteDirectoryData.ToDto();
            var clone            = sitedirectoryDto.DeepClone <CDP4Common.DTO.SiteDirectory>();
            var operation        = new Operation(sitedirectoryDto, clone, OperationKind.Update);

            Assert.AreEqual(0, operationContainers.Single().Operations.Count());
            operationContainers.Single().AddOperation(operation);

            Assert.AreEqual(1, operationContainers.Single().Operations.Count());
            Assert.Throws <ArgumentException>(() => this.dal.Write(operationContainers, files));

            operationContainers.Single().RemoveOperation(operation);
            Assert.AreEqual(0, operationContainers.Single().Operations.Count());

            var iterationIid       = new Guid("b58ea73d-350d-4520-b9d9-a52c75ac2b5d");
            var iterationSetup     = new IterationSetup(Guid.NewGuid(), 0);
            var iterationSetupPoco = new CDP4Common.SiteDirectoryData.IterationSetup(iterationSetup.Iid, cache, this.credentials.Uri);
            var model      = new EngineeringModel(Guid.NewGuid(), cache, this.credentials.Uri);
            var modelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup();

            modelSetup.ActiveDomain.Add(domainSys);

            var source = new ReferenceSource(Guid.NewGuid(), cache, this.credentials.Uri)
            {
                Publisher = new Organization(Guid.NewGuid(), cache, this.credentials.Uri)
                {
                    Container = this.siteDirectoryData
                }
            };

            var requiredRdl = new ModelReferenceDataLibrary
            {
                RequiredRdl     = new SiteReferenceDataLibrary(),
                ReferenceSource = { source }
            };

            var person = new Person
            {
                ShortName     = "admin",
                Organization  = organization,
                DefaultDomain = domainAer
            };

            var participant = new Participant(Guid.NewGuid(), cache, this.credentials.Uri)
            {
                Person = person
            };

            participant.Person.Role = role;
            participant.Role        = participantRole;
            participant.Domain.Add(domainSys);
            participant.Domain.Add(domainProp);
            modelSetup.Participant.Add(participant);

            var lazyPerson    = new Lazy <Thing>(() => person);
            var iterationPoco = new CDP4Common.EngineeringModelData.Iteration(iterationIid, cache, this.credentials.Uri)
            {
                IterationSetup = iterationSetupPoco
            };

            model.Iteration.Add(iterationPoco);
            var iteration = (Iteration)iterationPoco.ToDto();

            model.EngineeringModelSetup = modelSetup;
            this.siteDirectoryData.Model.Add(modelSetup);
            modelSetup.RequiredRdl.Add(requiredRdl);

            modelSetup.IterationSetup.Add(iterationSetupPoco);
            cache.TryAdd(new CacheKey(person.Iid, this.siteDirectoryData.Iid), lazyPerson);
            this.siteDirectoryData.Cache = cache;
            iteration.IterationSetup     = iterationSetup.Iid;

            var clone1 = iteration.DeepClone <Iteration>();

            operation = new Operation(iteration, clone1, OperationKind.Update);
            var operationContainer = new OperationContainer("/EngineeringModel/" + model.Iid + "/iteration/" + iteration.Iid, 0);

            operationContainer.AddOperation(operation);
            operationContainers = new[] { operationContainer, operationContainer };

            Assert.IsEmpty(await this.dal.Write(operationContainers, files));
        }