コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Converter321To331.cs プロジェクト: onwhenrdy/MoBi
        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;
        }
コード例 #3
0
        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)));
        }
コード例 #4
0
        /// <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);
                }
            }
        }