public void Visit(IMoleculeBuildingBlock moleculeBuildingBlock) { var command = synchronizeInParameters(moleculeBuildingBlock); if (!command.IsEmpty()) { return; } var transporterMoleculeContainers = moleculeBuildingBlock.SelectMany(m => m.TransporterMoleculeContainerCollection).ToList(); if (!transporterMoleculeContainers.Any()) { return; } var parameterTransporterName = _parameter.ParentContainer.Name; var parameterMoleculeName = _parameter.ParentContainer.ParentContainer?.Name; var transporterMoleculeContainer = findTransporterMoleculeContainerFor(transporterMoleculeContainers, parameterTransporterName, parameterMoleculeName); if (transporterMoleculeContainer == null) { return; } var buildingBlockParameter = transporterMoleculeContainer.Parameter(_parameter.Name); setSynchronizeCommand(buildingBlockParameter); }
public void Visit(IMoleculeBuildingBlock moleculeBuildingBlock) { var amountDimension = _context.DimensionFactory.Dimension(Constants.Dimension.AMOUNT); var formula = createTotalDrugMassFormula(amountDimension); foreach (var moleculeBuilder in moleculeBuildingBlock) { moleculeBuilder.Add( createTotalDrugMassParameter(formula, amountDimension)); } updateAllParameters(moleculeBuildingBlock.SelectMany(mb => mb.GetAllChildren <IParameter>())); moleculeBuildingBlock.AddFormula(formula); _converted = true; }
public static bool ContainsBuilder(this IMoleculeBuildingBlock buildingBlock, IObjectBase entity) { if (!entity.CouldBeInMoleculeBuildingBlock()) { return(false); } if (entity.IsAnImplementationOf <IMoleculeBuilder>()) { return(buildingBlock.Contains((IMoleculeBuilder)entity)); } if (entity.IsAnImplementationOf <ITransportBuilder>()) { var transporterMoleculeContainers = buildingBlock.SelectMany(mb => mb.TransporterMoleculeContainerCollection); var allTransports = transporterMoleculeContainers.SelectMany(x => x.ActiveTransportRealizations); return(allTransports.Any(child => child.Equals(entity))); } var allChildren = buildingBlock.SelectMany(mb => mb.GetAllChildren <IEntity>()); return(allChildren.Any(child => child.Equals(entity))); }
/// <summary> /// Adds neighborhood value parameters. /// </summary> private void addContainerListParameterValue(IParameterStartValuesBuildingBlock parameterStartValuesBuildingBlock, IEnumerable <IContainer> neighborhoodBuilders, IMoleculeBuildingBlock moleculeBuildingBlock) { foreach (var neighborhood in neighborhoodBuilders) { var parameters = neighborhood.GetChildren <IParameter>(parameterValueShouldBeSet); parameters.Each(param => parameterStartValuesBuildingBlock.Add(containerParameterValueFor(param))); var moleculeProperties = neighborhood.GetSingleChildByName <IContainer>(Constants.MOLECULE_PROPERTIES); if (moleculeProperties == null) { continue; } foreach ( var paramValue in moleculeBuildingBlock.SelectMany( moleculeBuilder => getMoleculePropertiesParameterValues(moleculeProperties, moleculeBuilder))) { parameterStartValuesBuildingBlock.Add(paramValue); } } }