public bool Write(NpgsqlTransaction transaction, string partition, ParameterOverride parameter, Thing container = null) { this.writtenThings.Add(parameter); parameter.ValueSet.Clear(); parameter.ValueSet.Add(Guid.NewGuid()); return(true); }
/// <summary> /// Update a database record from the supplied data transfer object. /// </summary> /// <param name="transaction"> /// The current transaction to the database. /// </param> /// <param name="partition"> /// The database partition (schema) where the requested resource will be updated. /// </param> /// <param name="parameterOverride"> /// The parameterOverride DTO that is to be updated. /// </param> /// <param name="container"> /// The container of the DTO to be updated. /// </param> /// <returns> /// True if the concept was successfully updated. /// </returns> public virtual bool Update(NpgsqlTransaction transaction, string partition, CDP4Common.DTO.ParameterOverride parameterOverride, CDP4Common.DTO.Thing container = null) { bool isHandled; var valueTypeDictionaryAdditions = new Dictionary <string, string>(); var beforeUpdate = this.BeforeUpdate(transaction, partition, parameterOverride, container, out isHandled, valueTypeDictionaryAdditions); if (!isHandled) { beforeUpdate = beforeUpdate && base.Update(transaction, partition, parameterOverride, container); using (var command = new NpgsqlCommand()) { var sqlBuilder = new System.Text.StringBuilder(); sqlBuilder.AppendFormat("UPDATE \"{0}\".\"ParameterOverride\"", partition); sqlBuilder.AppendFormat(" SET (\"Container\", \"Parameter\")"); sqlBuilder.AppendFormat(" = (:container, :parameter)"); sqlBuilder.AppendFormat(" WHERE \"Iid\" = :iid;"); command.Parameters.Add("iid", NpgsqlDbType.Uuid).Value = parameterOverride.Iid; command.Parameters.Add("container", NpgsqlDbType.Uuid).Value = container.Iid; command.Parameters.Add("parameter", NpgsqlDbType.Uuid).Value = !this.IsDerived(parameterOverride, "Parameter") ? parameterOverride.Parameter : Utils.NullableValue(null); command.CommandText = sqlBuilder.ToString(); command.Connection = transaction.Connection; command.Transaction = transaction; this.ExecuteAndLogCommand(command); } } return(this.AfterUpdate(beforeUpdate, transaction, partition, parameterOverride, container)); }
/// <summary> /// Insert a new database record, or updates one if it already exists from the supplied data transfer object. /// This is typically used during the import of existing data to the Database. /// </summary> /// <param name="transaction"> /// The current <see cref="NpgsqlTransaction"/> to the database. /// </param> /// <param name="partition"> /// The database partition (schema) where the requested resource will be stored. /// </param> /// <param name="parameterOverride"> /// The parameterOverride DTO that is to be persisted. /// </param> /// <param name="container"> /// The container of the DTO to be persisted. /// </param> /// <returns> /// True if the concept was successfully persisted. /// </returns> public virtual bool Upsert(NpgsqlTransaction transaction, string partition, CDP4Common.DTO.ParameterOverride parameterOverride, CDP4Common.DTO.Thing container = null) { var valueTypeDictionaryAdditions = new Dictionary <string, string>(); base.Upsert(transaction, partition, parameterOverride, container); using (var command = new NpgsqlCommand()) { var sqlBuilder = new System.Text.StringBuilder(); sqlBuilder.AppendFormat("INSERT INTO \"{0}\".\"ParameterOverride\"", partition); sqlBuilder.AppendFormat(" (\"Iid\", \"Container\", \"Parameter\")"); sqlBuilder.AppendFormat(" VALUES (:iid, :container, :parameter)"); command.Parameters.Add("iid", NpgsqlDbType.Uuid).Value = parameterOverride.Iid; command.Parameters.Add("container", NpgsqlDbType.Uuid).Value = container.Iid; command.Parameters.Add("parameter", NpgsqlDbType.Uuid).Value = !this.IsDerived(parameterOverride, "Parameter") ? parameterOverride.Parameter : Utils.NullableValue(null); sqlBuilder.Append(" ON CONFLICT (\"Iid\")"); sqlBuilder.Append(" DO UPDATE "); sqlBuilder.Append(" SET (\"Container\", \"Parameter\")"); sqlBuilder.Append(" = (:container, :parameter);"); command.CommandText = sqlBuilder.ToString(); command.Connection = transaction.Connection; command.Transaction = transaction; this.ExecuteAndLogCommand(command); } return(true); }
/// <summary> /// The mapping from a database record to data transfer object. /// </summary> /// <param name="reader"> /// An instance of the SQL reader. /// </param> /// <returns> /// A deserialized instance of <see cref="CDP4Common.DTO.ParameterOverride"/>. /// </returns> public virtual CDP4Common.DTO.ParameterOverride MapToDto(NpgsqlDataReader reader) { string tempModifiedOn; string tempThingPreference; var valueDict = (Dictionary <string, string>)reader["ValueTypeSet"]; var iid = Guid.Parse(reader["Iid"].ToString()); var revisionNumber = int.Parse(valueDict["RevisionNumber"]); var dto = new CDP4Common.DTO.ParameterOverride(iid, revisionNumber); dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse)); dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse)); dto.Owner = Guid.Parse(reader["Owner"].ToString()); dto.Parameter = Guid.Parse(reader["Parameter"].ToString()); dto.ParameterSubscription.AddRange(Array.ConvertAll((string[])reader["ParameterSubscription"], Guid.Parse)); dto.ValueSet.AddRange(Array.ConvertAll((string[])reader["ValueSet"], Guid.Parse)); if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn)) { dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn); } if (valueDict.TryGetValue("ThingPreference", out tempThingPreference) && tempThingPreference != null) { dto.ThingPreference = tempThingPreference.UnEscape(); } return(dto); }
public void VerifyOwnerChangedSideEffects() { this.parameter.ParameterType = this.boolPt.Iid; var domain1 = new DomainOfExpertise(Guid.NewGuid(), 0); var domain2 = new DomainOfExpertise(Guid.NewGuid(), 0); var originalThing = this.parameter.DeepClone <Thing>(); this.parameter.Owner = domain1.Iid; var updatedParameter = new Parameter(this.parameter.Iid, 0) { ParameterType = this.boolPt.Iid, Owner = domain2.Iid, AllowDifferentOwnerOfOverride = true }; var parameterOverride1 = new ParameterOverride(Guid.NewGuid(), 0) { Parameter = updatedParameter.Iid, Owner = domain2.Iid }; var domain2Subscription = new ParameterSubscription(Guid.NewGuid(), 0) { Owner = domain2.Iid }; updatedParameter.ParameterSubscription.Add(domain2Subscription.Iid); parameterOverride1.ParameterSubscription.Add(domain2Subscription.Iid); this.parameterSubscriptionService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <IEnumerable <Guid> >(), this.securityContext.Object)) .Returns(new List <Thing> { domain2Subscription }); this.parameterSubscriptionService.Setup(x => x.DeleteConcept(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <Thing>(), It.IsAny <Thing>())).Returns(true); this.sideEffect.AfterUpdate(updatedParameter, this.elementDefinition, originalThing, this.npgsqlTransaction, "partition", this.securityContext.Object); // Check that the subscription owned by domain2 is deleted since domain2 is now the owner of the parameter this.parameterSubscriptionService.Verify(x => x.DeleteConcept(this.npgsqlTransaction, "partition", It.IsAny <ParameterSubscription>(), It.IsAny <Parameter>()), Times.Once); // Since that is the only subscription, no updates are performed on ParameterSubscriptionValueSet this.parameterSubscriptionValueSetService.Verify(x => x.CreateConcept(this.npgsqlTransaction, "partition", It.IsAny <ParameterSubscriptionValueSet>(), It.IsAny <ParameterSubscription>(), -1), Times.Never); // Check that since AllowDifferentOwnerOfOverride is True the owner of the parameterOverrides are not updated this.parameterOverrideService.Verify(x => x.UpdateConcept(this.npgsqlTransaction, "partition", It.IsAny <ParameterOverride>(), It.IsAny <ElementUsage>()), Times.Never); var updatedParameter1 = new Parameter(this.parameter.Iid, 0) { ParameterType = this.boolPt.Iid, Owner = domain2.Iid, AllowDifferentOwnerOfOverride = false }; updatedParameter1.ParameterSubscription.Add(domain2Subscription.Iid); this.sideEffect.AfterUpdate(updatedParameter1, this.elementDefinition, originalThing, this.npgsqlTransaction, "partition", this.securityContext.Object); // Check that since AllowDifferentOwnerOfOverride is False the owner of the parameterOverride is updated this.parameterOverrideService.Verify(x => x.UpdateConcept(this.npgsqlTransaction, "partition", It.IsAny <ParameterOverride>(), It.IsAny <ElementUsage>()), Times.Once); }
/// <summary> /// Update a <see cref="ParameterOverride"/> with new <see cref="CDP4Common.DTO.ParameterOverrideValueSet"/> /// </summary> /// <param name="parameterOverride">The <see cref="ParameterOverride"/></param> /// <param name="transaction">The transaction</param> /// <param name="partition">The partition</param> /// <param name="securityContext">The security context</param> /// <param name="newOldParameterValueSetMap">The map that links the new <see cref="ParameterValueSet"/> to the old ones</param> /// <param name="newOldValueSetMap">A map that links the created <see cref="CDP4Common.DTO.ParameterOverrideValueSet"/> to the old ones</param> private void UpdateParameterOverride(ParameterOverride parameterOverride, NpgsqlTransaction transaction, string partition, ISecurityContext securityContext, IDictionary <ParameterValueSet, ParameterValueSet> newOldParameterValueSetMap, ref Dictionary <ParameterValueSetBase, ParameterValueSetBase> newOldValueSetMap) { var oldValueSets = this.ParameterOverrideValueSetService.GetShallow(transaction, partition, parameterOverride.ValueSet, securityContext) .Where(i => i is ParameterOverrideValueSet).Cast <ParameterOverrideValueSet>().ToList(); foreach (var newOldParameterValueSetPair in newOldParameterValueSetMap) { ParameterOverrideValueSet newValueSet; if (newOldParameterValueSetPair.Value != null) { // there should be a override value set counter-part var oldValueSet = oldValueSets.SingleOrDefault(x => x.ParameterValueSet == newOldParameterValueSetPair.Value.Iid); newValueSet = this.CreateParameterOverrideValueSet(oldValueSet, newOldParameterValueSetPair.Key, parameterOverride, transaction, partition); newOldValueSetMap.Add(newValueSet, oldValueSet); } else { newValueSet = this.CreateParameterOverrideValueSet(null, newOldParameterValueSetPair.Key, parameterOverride, transaction, partition); newOldValueSetMap.Add(newValueSet, null); } } }
public bool Update(NpgsqlTransaction transaction, string partition, ParameterOverride parameter, Thing container = null) { throw new NotImplementedException(); }
public void VerifyCopyElementDefWorks() { var modelSetupService = new Mock <IEngineeringModelSetupService>(); var modelSetup = new EngineeringModelSetup(Guid.NewGuid(), 0); modelSetupService.Setup(x => x.GetEngineeringModelSetup(It.IsAny <NpgsqlTransaction>(), It.IsAny <Guid>())).Returns(modelSetup); this.copySourceDtos = new List <Thing>(); var boolParamTypeId = Guid.NewGuid(); var mrdl = new ModelReferenceDataLibrary(Guid.NewGuid(), 1); mrdl.ParameterType.Add(boolParamTypeId); var sourceIteration = new Iteration(Guid.NewGuid(), 1); var sourceElementDef1 = new ElementDefinition(Guid.NewGuid(), 1); var sourceElementDef2 = new ElementDefinition(Guid.NewGuid(), 1); var sourceUsage1 = new ElementUsage(Guid.NewGuid(), 1) { ElementDefinition = sourceElementDef2.Iid }; sourceElementDef1.ContainedElement.Add(sourceUsage1.Iid); sourceIteration.Element.Add(sourceElementDef1.Iid); sourceIteration.Element.Add(sourceElementDef2.Iid); var parameter1 = new Parameter(Guid.NewGuid(), 1) { ParameterType = boolParamTypeId }; var pvs1 = new ParameterValueSet(Guid.NewGuid(), 1) { Manual = new ValueArray <string>(new[] { "true" }), Computed = new ValueArray <string>(new[] { "-" }), Reference = new ValueArray <string>(new[] { "-" }), Published = new ValueArray <string>(new[] { "-" }), ValueSwitch = ParameterSwitchKind.MANUAL }; var parameter2 = new Parameter(Guid.NewGuid(), 1) { ParameterType = boolParamTypeId }; var pvs2 = new ParameterValueSet(Guid.NewGuid(), 1) { Manual = new ValueArray <string>(new[] { "true" }), Computed = new ValueArray <string>(new[] { "-" }), Reference = new ValueArray <string>(new[] { "-" }), Published = new ValueArray <string>(new[] { "-" }), ValueSwitch = ParameterSwitchKind.MANUAL }; parameter1.ValueSet.Add(pvs1.Iid); sourceElementDef1.Parameter.Add(parameter1.Iid); parameter2.ValueSet.Add(pvs2.Iid); sourceElementDef2.Parameter.Add(parameter2.Iid); var override2 = new ParameterOverride(Guid.NewGuid(), 1); override2.Parameter = parameter2.Iid; var ovs = new ParameterOverrideValueSet(Guid.NewGuid(), 1) { ParameterValueSet = pvs2.Iid }; override2.ValueSet.Add(ovs.Iid); sourceUsage1.ParameterOverride.Add(override2.Iid); this.copySourceDtos.Add(sourceIteration); this.copySourceDtos.Add(sourceElementDef1); this.copySourceDtos.Add(sourceElementDef2); this.copySourceDtos.Add(sourceUsage1); this.copySourceDtos.Add(parameter1); this.copySourceDtos.Add(pvs1); this.copySourceDtos.Add(parameter2); this.copySourceDtos.Add(pvs2); this.copySourceDtos.Add(override2); this.copySourceDtos.Add(ovs); var targetIteration = new Iteration(Guid.NewGuid(), 1); this.serviceProvider.Setup(x => x.MapToReadService(It.IsAny <string>())).Returns <string>(x => new TestSourceService(this.copySourceDtos, x)); this.serviceProvider.Setup(x => x.MapToReadService(It.Is <string>(t => t == ClassKind.ModelReferenceDataLibrary.ToString()))) .Returns <string>(x => new TestSourceService(new List <Thing> { mrdl }, x)); this.serviceProvider.Setup(x => x.MapToReadService(It.Is <string>(t => t == ClassKind.Iteration.ToString()))) .Returns <string>(x => new TestSourceService(new List <Thing> { sourceIteration, targetIteration }, x)); var customOperationSideEffectProcessor = new Mock <IOperationSideEffectProcessor>(); customOperationSideEffectProcessor.Setup(x => x.BeforeCreate(It.IsAny <Thing>(), It.IsAny <Thing>(), It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <ISecurityContext>())). Returns(true); var paramSubscriptionService = new ParameterSubscriptionService { ParameterSubscriptionDao = new Mock <IParameterSubscriptionDao>().Object, PermissionService = this.permissionService.Object, }; var parameterContextProvider = new OldParameterContextProvider { ParameterValueSetService = new TestSourceService(this.copySourceDtos, ClassKind.ParameterValueSet.ToString()) }; var paramGroupService = new ParameterGroupService { PermissionService = this.permissionService.Object, TransactionManager = this.transactionManager.Object, ParameterGroupDao = new Mock <IParameterGroupDao>().Object }; var valueSetService = new Mock <IParameterValueSetService>(); valueSetService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <IEnumerable <Guid> >(), It.IsAny <ISecurityContext>())) .Returns <NpgsqlTransaction, string, IEnumerable <Guid>, ISecurityContext>((a, b, c, d) => { var list = new List <ParameterValueSet>(); foreach (var guid in c) { var vs = new ParameterValueSet(guid, 1) { Manual = new ValueArray <string>(new [] { "-" }), Computed = new ValueArray <string>(new [] { "-" }), Reference = new ValueArray <string>(new [] { "-" }), Published = new ValueArray <string>(new [] { "-" }) }; list.Add(vs); } return(list); }); var overrideValueSetService = new Mock <IParameterOverrideValueSetService>(); overrideValueSetService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <IEnumerable <Guid> >(), It.IsAny <ISecurityContext>())) .Returns <NpgsqlTransaction, string, IEnumerable <Guid>, ISecurityContext>((a, b, c, d) => { var list = new List <ParameterOverrideValueSet>(); foreach (var guid in c) { var vs = new ParameterOverrideValueSet(guid, 1) { Manual = new ValueArray <string>(new[] { "-" }), Computed = new ValueArray <string>(new[] { "-" }), Reference = new ValueArray <string>(new[] { "-" }), Published = new ValueArray <string>(new[] { "-" }) }; list.Add(vs); } return(list); }); var paramDao = new TestParameterDao(); var paramService = new ParameterService { PermissionService = this.permissionService.Object, ParameterDao = paramDao, OperationSideEffectProcessor = customOperationSideEffectProcessor.Object, TransactionManager = this.transactionManager.Object, OldParameterContextProvider = parameterContextProvider, ParameterSubscriptionService = paramSubscriptionService, ParameterValueSetService = valueSetService.Object }; var paramOverrideDao = new TestParameterOverrideDao(); var paramOverrideService = new ParameterOverrideService { PermissionService = this.permissionService.Object, ParameterOverrideDao = paramOverrideDao, TransactionManager = this.transactionManager.Object, OperationSideEffectProcessor = customOperationSideEffectProcessor.Object, ParameterSubscriptionService = paramSubscriptionService, ParameterOverrideValueSetService = overrideValueSetService.Object }; var usageDao = new Mock <IElementUsageDao>(); var usageService = new ElementUsageService { PermissionService = this.permissionService.Object, ParameterOverrideService = paramOverrideService, ElementUsageDao = usageDao.Object, TransactionManager = this.transactionManager.Object, OperationSideEffectProcessor = customOperationSideEffectProcessor.Object }; var edDao = new TestElementDefinitionDao(); var edService = new ElementDefinitionService { PermissionService = this.permissionService.Object, ElementDefinitionDao = edDao, ElementUsageService = usageService, ParameterService = paramService, TransactionManager = this.transactionManager.Object, OperationSideEffectProcessor = customOperationSideEffectProcessor.Object, ParameterGroupService = paramGroupService }; this.serviceProvider.Setup(x => x.MapToPersitableService(ClassKind.ElementDefinition.ToString())).Returns(edService); this.serviceProvider.Setup(x => x.MapToPersitableService(ClassKind.ElementUsage.ToString())).Returns(usageService); this.serviceProvider.Setup(x => x.MapToPersitableService(ClassKind.Parameter.ToString())).Returns(paramService); this.serviceProvider.Setup(x => x.MapToPersitableService(ClassKind.ParameterOverride.ToString())).Returns(paramOverrideService); this.serviceProvider.Setup(x => x.MapToPersitableService(ClassKind.ParameterSubscription.ToString())).Returns(paramSubscriptionService); this.serviceProvider.Setup(x => x.MapToPersitableService(ClassKind.ParameterGroup.ToString())).Returns(paramGroupService); var postOperation = new CdpPostOperation(); var copyinfo = new CopyInfo { ActiveOwner = Guid.NewGuid(), Options = new CopyInfoOptions { CopyKind = CopyKind.Deep, KeepOwner = true, KeepValues = true }, Source = new CopySource { IterationId = sourceIteration.Iid, Thing = new CopyReference { Iid = sourceElementDef1.Iid, ClassKind = ClassKind.ElementDefinition }, TopContainer = new CopyReference { Iid = Guid.NewGuid(), ClassKind = ClassKind.EngineeringModel } }, Target = new CopyTarget { IterationId = targetIteration.Iid, Container = new CopyReference { Iid = targetIteration.Iid, ClassKind = ClassKind.Iteration }, TopContainer = new CopyReference { Iid = Guid.NewGuid(), ClassKind = ClassKind.EngineeringModel } } }; postOperation.Copy.Add(copyinfo); this.serviceProvider.Setup(x => x.MapToReadService(ClassKind.EngineeringModelSetup.ToString())).Returns(modelSetupService.Object); this.operationProcessor.Process(postOperation, null, $"Iteration_{targetIteration.Iid.ToString().Replace("-", "_")}", null); Assert.AreEqual(2, edDao.WrittenThingCount); Assert.AreEqual(2, paramDao.WrittenThingCount); Assert.AreEqual(1, paramOverrideDao.WrittenThingCount); usageDao.Verify(x => x.Write(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <ElementUsage>(), It.IsAny <Thing>()), Times.Once); }
public void Setup() { this.securityContext = new Mock <ISecurityContext>(); this.optionService = new Mock <IOptionService>(); this.actualFiniteStateListService = new Mock <IActualFiniteStateListService>(); this.parameterService = new Mock <ICompoundParameterTypeService>(); this.valueSetService = new Mock <IParameterValueSetService>(); this.iterationService = new Mock <IIterationService>(); this.parameterOverrideValueSetService = new Mock <IParameterOverrideValueSetService>(); this.parameterSubscriptionValueSetService = new Mock <IParameterSubscriptionValueSetService>(); this.parameterSubscriptionService = new Mock <IParameterSubscriptionService>(); this.parameterOverrideService = new Mock <IParameterOverrideService>(); this.parameterTypeComponentService = new Mock <IParameterTypeComponentService>(); this.parameterTypeService = new Mock <IParameterTypeService>(); this.elementUsageService = new Mock <IElementUsageService>(); this.defaultValueArrayFactory = new Mock <IDefaultValueArrayFactory>(); this.OldParameterContextProvider = new Mock <IOldParameterContextProvider>(); this.npgsqlTransaction = null; this.iteration = new Iteration(Guid.NewGuid(), 1); this.option1 = new Option(Guid.NewGuid(), 1); this.option2 = new Option(Guid.NewGuid(), 1); this.iteration.Option.Add(new OrderedItem { K = 1, V = this.option1.Iid }); this.iteration.Option.Add(new OrderedItem { K = 2, V = this.option2.Iid }); this.actualList = new ActualFiniteStateList(Guid.NewGuid(), 1); this.actualState1 = new ActualFiniteState(Guid.NewGuid(), 1); this.actualState2 = new ActualFiniteState(Guid.NewGuid(), 1); this.actualList.ActualState.Add(this.actualState1.Iid); this.actualList.ActualState.Add(this.actualState2.Iid); this.parameter = new Parameter(Guid.NewGuid(), 1); this.cptParameterType = new CompoundParameterType(Guid.NewGuid(), 1); this.boolPt = new BooleanParameterType(Guid.NewGuid(), 1); this.cpt1 = new ParameterTypeComponent(Guid.NewGuid(), 1) { ParameterType = this.boolPt.Iid }; this.cpt2 = new ParameterTypeComponent(Guid.NewGuid(), 1) { ParameterType = this.boolPt.Iid }; this.cptParameterType.Component.Add(new OrderedItem { K = 1, V = this.cpt1.Iid.ToString() }); this.cptParameterType.Component.Add(new OrderedItem { K = 2, V = this.cpt2.Iid.ToString() }); this.sideEffect = new ParameterSideEffect { IterationService = this.iterationService.Object, ActualFiniteStateListService = this.actualFiniteStateListService.Object, ParameterValueSetService = this.valueSetService.Object, ParameterOverrideValueSetService = this.parameterOverrideValueSetService.Object, ParameterSubscriptionValueSetService = this.parameterSubscriptionValueSetService.Object, ParameterOverrideService = this.parameterOverrideService.Object, ParameterSubscriptionService = this.parameterSubscriptionService.Object, ParameterTypeService = this.parameterTypeService.Object, ElementUsageService = this.elementUsageService.Object, ParameterTypeComponentService = this.parameterTypeComponentService.Object, OptionService = this.optionService.Object, DefaultValueArrayFactory = this.defaultValueArrayFactory.Object, ParameterValueSetFactory = new ParameterValueSetFactory(), ParameterOverrideValueSetFactory = new ParameterOverrideValueSetFactory(), ParameterSubscriptionValueSetFactory = new ParameterSubscriptionValueSetFactory(), OldParameterContextProvider = this.OldParameterContextProvider.Object }; // prepare mock data this.elementDefinition = new ElementDefinition(Guid.NewGuid(), 1); this.elementDefinition.Parameter.Add(this.parameter.Iid); this.parameterOverride = new ParameterOverride(Guid.NewGuid(), 1) { Parameter = this.parameter.Iid, }; this.elementUsage = new ElementUsage(Guid.NewGuid(), 1) { ElementDefinition = this.elementDefinition.Iid, ParameterOverride = { this.parameterOverride.Iid } }; this.parameterService.Setup(x => x.Get(It.IsAny <NpgsqlTransaction>(), "SiteDirectory", It.Is <IEnumerable <Guid> >(y => y.Contains(this.cptParameterType.Iid)), this.securityContext.Object)) .Returns(new List <Thing> { this.cptParameterType }); this.iterationService.Setup(x => x.GetActiveIteration(null, "partition", this.securityContext.Object)) .Returns(this.iteration); this.actualFiniteStateListService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), "partition", It.Is <IEnumerable <Guid> >(y => y.Contains(this.actualList.Iid)), this.securityContext.Object)) .Returns(new List <Thing> { this.actualList }); this.parameterTypeService.Setup(x => x.GetShallow(this.npgsqlTransaction, "SiteDirectory", null, this.securityContext.Object)) .Returns(new List <Thing> { this.boolPt, this.cptParameterType }); this.parameterTypeService.Setup(x => x.GetShallow(this.npgsqlTransaction, "SiteDirectory", new List <Guid> { this.existingNotQuantityKindParameterTypeGuid }, this.securityContext.Object)) .Returns(new List <Thing> { new BooleanParameterType(this.existingNotQuantityKindParameterTypeGuid, 1) }); this.parameterTypeService.Setup(x => x.GetShallow(this.npgsqlTransaction, "SiteDirectory", new List <Guid> { this.existingQuantityKindParameterTypeGuid }, this.securityContext.Object)) .Returns(new List <Thing> { new SimpleQuantityKind(this.existingQuantityKindParameterTypeGuid, 1) }); this.parameterTypeService.Setup(x => x.GetShallow(this.npgsqlTransaction, "SiteDirectory", new List <Guid> { this.notExistingParameterTypeGuid }, this.securityContext.Object)) .Returns(new List <Thing>()); this.parameterTypeComponentService.Setup(x => x.GetShallow(this.npgsqlTransaction, "SiteDirectory", null, this.securityContext.Object)) .Returns(new List <Thing> { this.cpt1, this.cpt2 }); this.parameterOverrideService.Setup(x => x.GetShallow(this.npgsqlTransaction, "partition", null, this.securityContext.Object)) .Returns(new List <Thing> { this.parameterOverride }); this.elementUsageService.Setup(x => x.GetShallow(this.npgsqlTransaction, "partition", null, this.securityContext.Object)) .Returns(new List <Thing> { this.elementUsage }); this.scalarDefaultValueArray = new ValueArray <string>(new List <string>() { "-" }); this.compoundDefaultValueArray = new ValueArray <string>(new List <string>() { "-", "-" }); this.defaultValueArrayFactory.Setup(x => x.CreateDefaultValueArray(this.cptParameterType.Iid)) .Returns(this.compoundDefaultValueArray); this.defaultValueArrayFactory.Setup(x => x.CreateDefaultValueArray(this.boolPt.Iid)) .Returns(this.scalarDefaultValueArray); this.OldParameterContextProvider.Setup(x => x.GetsourceValueSet(It.IsAny <Guid?>(), It.IsAny <Guid?>())).Returns((ParameterValueSet)null); }
public void Setup() { this.securityContext = new Mock <ISecurityContext>(); this.optionService = new Mock <IOptionService>(); this.actualFiniteStateListService = new Mock <IActualFiniteStateListService>(); this.valueSetService = new Mock <IParameterValueSetService>(); this.iterationService = new Mock <IIterationService>(); this.parameterOverrideValueSetService = new Mock <IParameterOverrideValueSetService>(); this.parameterSubscriptionValueSetService = new Mock <IParameterSubscriptionValueSetService>(); this.parameterSubscriptionService = new Mock <IParameterSubscriptionService>(); this.parameterOverrideService = new Mock <IParameterOverrideService>(); this.elementUsageService = new Mock <IElementUsageService>(); this.defaultValueArrayFactory = new Mock <IDefaultValueArrayFactory>(); this.OldParameterContextProvider = new Mock <IOldParameterContextProvider>(); this.cachedReferenceDataService = new Mock <ICachedReferenceDataService>(); this.organizationalParticipationResolverService = new Mock <IOrganizationalParticipationResolverService>(); this.organizationalParticipationResolverService.Setup(x => x.ValidateCreateOrganizationalParticipation(It.IsAny <Thing>(), It.IsAny <Thing>(), It.IsAny <ISecurityContext>(), this.npgsqlTransaction, It.IsAny <string>())); this.npgsqlTransaction = null; this.iteration = new Iteration(Guid.NewGuid(), 1); this.option1 = new Option(Guid.NewGuid(), 1); this.option2 = new Option(Guid.NewGuid(), 1); this.iteration.Option.Add(new OrderedItem { K = 1, V = this.option1.Iid }); this.iteration.Option.Add(new OrderedItem { K = 2, V = this.option2.Iid }); this.actualList = new ActualFiniteStateList(Guid.NewGuid(), 1); this.actualState1 = new ActualFiniteState(Guid.NewGuid(), 1); this.actualState2 = new ActualFiniteState(Guid.NewGuid(), 1); this.actualList.ActualState.Add(this.actualState1.Iid); this.actualList.ActualState.Add(this.actualState2.Iid); this.parameter = new Parameter(Guid.NewGuid(), 1); this.cptParameterType = new CompoundParameterType(Guid.NewGuid(), 1); this.boolPt = new BooleanParameterType(Guid.NewGuid(), 1); this.cpt1 = new ParameterTypeComponent(Guid.NewGuid(), 1) { ParameterType = this.boolPt.Iid }; this.cpt2 = new ParameterTypeComponent(Guid.NewGuid(), 1) { ParameterType = this.boolPt.Iid }; this.cptParameterType.Component.Add(new OrderedItem { K = 1, V = this.cpt1.Iid.ToString() }); this.cptParameterType.Component.Add(new OrderedItem { K = 2, V = this.cpt2.Iid.ToString() }); this.sideEffect = new ParameterSideEffect { IterationService = this.iterationService.Object, ActualFiniteStateListService = this.actualFiniteStateListService.Object, ParameterValueSetService = this.valueSetService.Object, ParameterOverrideValueSetService = this.parameterOverrideValueSetService.Object, ParameterSubscriptionValueSetService = this.parameterSubscriptionValueSetService.Object, ParameterOverrideService = this.parameterOverrideService.Object, ParameterSubscriptionService = this.parameterSubscriptionService.Object, ElementUsageService = this.elementUsageService.Object, OptionService = this.optionService.Object, DefaultValueArrayFactory = this.defaultValueArrayFactory.Object, ParameterValueSetFactory = new ParameterValueSetFactory(), ParameterOverrideValueSetFactory = new ParameterOverrideValueSetFactory(), ParameterSubscriptionValueSetFactory = new ParameterSubscriptionValueSetFactory(), OldParameterContextProvider = this.OldParameterContextProvider.Object, OrganizationalParticipationResolverService = this.organizationalParticipationResolverService.Object, CachedReferenceDataService = this.cachedReferenceDataService.Object }; // prepare mock data this.elementDefinition = new ElementDefinition(Guid.NewGuid(), 1); this.elementDefinition.Parameter.Add(this.parameter.Iid); this.parameterOverride = new ParameterOverride(Guid.NewGuid(), 1) { Parameter = this.parameter.Iid }; this.elementUsage = new ElementUsage(Guid.NewGuid(), 1) { ElementDefinition = this.elementDefinition.Iid, ParameterOverride = { this.parameterOverride.Iid } }; this.iterationService.Setup(x => x.GetActiveIteration(null, "partition", this.securityContext.Object)) .Returns(this.iteration); this.actualFiniteStateListService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), "partition", It.Is <IEnumerable <Guid> >(y => y.Contains(this.actualList.Iid)), this.securityContext.Object)) .Returns(new List <Thing> { this.actualList }); var parameterTypeDictionary = new Dictionary <Guid, ParameterType>(); parameterTypeDictionary.Add(this.cptParameterType.Iid, this.cptParameterType); parameterTypeDictionary.Add(this.boolPt.Iid, this.boolPt); this.cachedReferenceDataService.Setup(x => x.QueryParameterTypes(this.npgsqlTransaction, this.securityContext.Object)) .Returns(parameterTypeDictionary); var parameterTypeComponentDictionary = new Dictionary <Guid, ParameterTypeComponent>(); parameterTypeComponentDictionary.Add(this.cpt1.Iid, this.cpt1); parameterTypeComponentDictionary.Add(this.cpt2.Iid, this.cpt2); this.cachedReferenceDataService.Setup(x => x.QueryParameterTypeComponents(this.npgsqlTransaction, this.securityContext.Object)) .Returns(parameterTypeComponentDictionary); this.parameterOverrideService.Setup(x => x.GetShallow(this.npgsqlTransaction, "partition", null, this.securityContext.Object)) .Returns(new List <Thing> { this.parameterOverride }); this.elementUsageService.Setup(x => x.GetShallow(this.npgsqlTransaction, "partition", null, this.securityContext.Object)) .Returns(new List <Thing> { this.elementUsage }); this.scalarDefaultValueArray = new ValueArray <string>(new List <string> { "-" }); this.compoundDefaultValueArray = new ValueArray <string>(new List <string> { "-", "-" }); this.defaultValueArrayFactory.Setup(x => x.CreateDefaultValueArray(this.cptParameterType.Iid)) .Returns(this.compoundDefaultValueArray); this.defaultValueArrayFactory.Setup(x => x.CreateDefaultValueArray(this.boolPt.Iid)) .Returns(this.scalarDefaultValueArray); this.OldParameterContextProvider.Setup(x => x.GetsourceValueSet(It.IsAny <Guid?>(), It.IsAny <Guid?>())).Returns((ParameterValueSet)null); }
/// <summary> /// Create a new <see cref="ParameterOverrideValueSet"/> from the old values /// </summary> /// <param name="oldValue">The old <see cref="ParameterOverrideValueSet"/></param> /// <param name="parameterValueSet">The <see cref="ParameterValueSet"/></param> /// <param name="container">The <see cref="ParameterOverride"/></param> /// <param name="transaction">The current transaction</param> /// <param name="partition">The current partition</param> /// <returns>The new <see cref="ParameterOverrideValueSet"/></returns> private ParameterOverrideValueSet CreateParameterOverrideValueSet(ParameterOverrideValueSet oldValue, ParameterValueSet parameterValueSet, ParameterOverride container, NpgsqlTransaction transaction, string partition) { var isOldValueNull = oldValue == null; var newValueSet = new ParameterOverrideValueSet(Guid.NewGuid(), 1) { Manual = new ValueArray <string>(isOldValueNull ? parameterValueSet.Manual : oldValue.Manual), Computed = new ValueArray <string>(isOldValueNull ? parameterValueSet.Computed : oldValue.Computed), Reference = new ValueArray <string>(isOldValueNull ? parameterValueSet.Reference : oldValue.Reference), Published = new ValueArray <string>(isOldValueNull ? parameterValueSet.Published : oldValue.Published), Formula = new ValueArray <string>(isOldValueNull ? parameterValueSet.Formula : oldValue.Formula), ParameterValueSet = parameterValueSet.Iid, ValueSwitch = isOldValueNull ? CDP4Common.EngineeringModelData.ParameterSwitchKind.MANUAL : oldValue.ValueSwitch }; this.ParameterOverrideValueSetService.CreateConcept(transaction, partition, newValueSet, container); return(newValueSet); }