private IContainer addContainerUnder(IContainer parentContainer, IContainer templateContainer, string newContainerName, IBuildConfiguration buildConfiguration) { var instanceContainer = _containerTask.CreateOrRetrieveSubContainerByName(parentContainer, newContainerName); buildConfiguration.AddBuilderReference(instanceContainer, templateContainer); instanceContainer.Icon = templateContainer.Icon; instanceContainer.Description = templateContainer.Description; return(instanceContainer); }
protected override void Context() { _reactionMapper = A.Fake <IReactionBuilderToReactionMapper>(); _keywordReplacerTask = A.Fake <IKeywordReplacerTask>(); _containerTask = A.Fake <IContainerTask>(); _parameterMapper = A.Fake <IParameterBuilderCollectionToParameterCollectionMapper>(); sut = new ReactionCreator(_reactionMapper, _keywordReplacerTask, _containerTask, _parameterMapper); _model = A.Fake <IModel>(); _reactionBuilder = A.Fake <IReactionBuilder>(); _reactionBuilder.ContainerCriteria = new DescriptorCriteria(); _reactionBuilder.Description = "A great description"; _reactionBuilder.Name = "Reaction"; _educt1 = A.Fake <IReactionPartnerBuilder>(); _educt1.MoleculeName = "sp1"; _educt2 = A.Fake <IReactionPartnerBuilder>(); _educt2.MoleculeName = "sp2"; _product1 = A.Fake <IReactionPartnerBuilder>(); _product1.MoleculeName = "sp3"; A.CallTo(() => _reactionBuilder.Educts).Returns(new[] { _educt1, _educt2 }); A.CallTo(() => _reactionBuilder.Products).Returns(new[] { _product1 }); A.CallTo(() => _reactionBuilder.ModifierNames).Returns(new[] { "modifier" }); _buildConfiguration = A.Fake <IBuildConfiguration>(); _rootContainer = new Container().WithMode(ContainerMode.Physical); _model.Root = _rootContainer; _globalContainer = new Container(); _reaction = A.Fake <IReaction>().WithName(_reactionBuilder.Name); A.CallTo(() => _reactionMapper.MapFromLocal(A <IReactionBuilder> ._, A <IContainer> ._, _buildConfiguration)).Returns(_reaction); A.CallTo(() => _containerTask.CreateOrRetrieveSubContainerByName(_rootContainer, _reactionBuilder.Name)).Returns(_globalContainer); }
private IContainer createReactionPropertiesContainer() { var globalReactionContainer = _containerTask.CreateOrRetrieveSubContainerByName(_model.Root, _reactionBuilder.Name) .WithContainerType(ContainerType.Reaction) .WithIcon(_reactionBuilder.Icon) .WithDescription(_reactionBuilder.Description); _buildConfiguration.AddBuilderReference(globalReactionContainer, _reactionBuilder); //"Local"-Parameters will be filled in elsewhere (by the Reaction-Mapper) _parameterMapper.MapGlobalOrPropertyFrom(_reactionBuilder, _buildConfiguration).Each(globalReactionContainer.Add); _keywordReplacerTask.ReplaceIn(globalReactionContainer, _model.Root, _reactionBuilder.Name); return(globalReactionContainer); }
/// <summary> /// Creates (molecule-specific) observers, stored under /// molecule container of the corresponding molecule in the spatial structure /// of the model. /// Typical example is average drug concentration in an organ /// </summary> private void createContainerObserver(IContainerObserverBuilder observerBuilder, IModel model, IEnumerable <IMoleculeBuilder> presentMolecules) { var moleculeBuildersForObserver = moleculeBuildersValidFor(observerBuilder.MoleculeList, presentMolecules).ToList(); //retrieve a list here to avoid endless loop if observers criteria is not well defined foreach (var container in _allContainers.Where(observerBuilder.ContainerCriteria.IsSatisfiedBy).ToList()) { foreach (var moleculeBuilder in moleculeBuildersForObserver) { //get the molecule container defined for the molecule name var moleculeContainer = container.GetSingleChildByName <IContainer>(moleculeBuilder.Name); if (moleculeContainer == null) { //should only happen for a logical container. moleculeContainer = _containerTask.CreateOrRetrieveSubContainerByName(container, moleculeBuilder.Name).WithContainerType(ContainerType.Molecule); _buildConfiguration.AddBuilderReference(moleculeContainer, observerBuilder); } var observer = addObserverInContainer(observerBuilder, moleculeContainer, moleculeBuilder.QuantityType); _keywordReplacerTask.ReplaceIn(observer, model.Root, moleculeBuilder.Name); } } }