private IObserverBuilder createObserverBuilderByType(FlatObserver flatObserver)
        {
            if (flatObserver.BuilderType == ObserverBuilderType.Amount)
            {
                var amountObserverBuilder = _entityBaseFactory.Create <IAmountObserverBuilder>();

                addDescriptorConditions(amountObserverBuilder.ContainerCriteria,
                                        ObserverTagType.PARENT, flatObserver.Name);

                return(amountObserverBuilder);
            }

            if (flatObserver.BuilderType == ObserverBuilderType.Container)
            {
                var containerObserverBuilder = _entityBaseFactory.Create <IContainerObserverBuilder>();

                addDescriptorConditions(containerObserverBuilder.ContainerCriteria,
                                        ObserverTagType.PARENT, flatObserver.Name);

                return(containerObserverBuilder);
            }



            throw new ArgumentException(PKSimConstants.Error.UnknownObserverBuilderType);
        }
        public IPKSimObserverBuilder MapFrom(FlatObserver flatObserver)
        {
            var observerBuilder      = createObserverBuilderByType(flatObserver);
            var pksimObserverBuilder = new PKSimObserverBuilder(observerBuilder);

            observerBuilder.Name   = flatObserver.Name;
            observerBuilder.ForAll = flatObserver.ForAllMolecules;

            pksimObserverBuilder.CalculationMethod = flatObserver.CalculationMethod;
            pksimObserverBuilder.Rate = flatObserver.Rate;

            observerBuilder.Formula = _formulaFactory.RateFor(pksimObserverBuilder, new FormulaCache());

            observerBuilder.Dimension = _dimensionRepository.DimensionByName(flatObserver.Dimension);

            return(pksimObserverBuilder);
        }