Example #1
0
        protected override void Context()
        {
            base.Context();
            _populationAnalysis = new PopulationPivotAnalysis();
            _dataField          = A.Fake <PopulationAnalysisDataField>().WithName("DATA");
            _derivedField       = A.Fake <PopulationAnalysisDerivedField>().WithName("DERIVED");

            A.CallTo(_templateTask).WithReturnType <PopulationAnalysisDerivedField>().Returns(_derivedField);
            _populationAnalysis.Add(_dataField);
        }
        public void LoadDerivedFieldFromTemplateFor(PopulationAnalysisDataField populationAnalysisDataField)
        {
            var newDerivedField = _populationAnalysisTemplateTask.LoadDerivedFieldFor(_populationAnalysis, populationAnalysisDataField);

            if (newDerivedField == null)
            {
                return;
            }

            AddField(newDerivedField);
        }
        public void InitializeWith(IPopulationAnalysisField populationAnalysisField, IPopulationDataCollector populationDataCollector)
        {
            _dataField = populationAnalysisField as PopulationAnalysisDataField <string>;

            //this should never happen
            if (_dataField == null)
            {
                throw new ArgumentException(PKSimConstants.Error.GroupingCannotBeUsedWithFieldOfType(populationAnalysisField.DataType, GroupingDefinitions.ValueMapping.DisplayName));
            }

            _groupingDefinition = new ValueMappingGroupingDefinition(populationAnalysisField.Name);
            var values = _dataField.GetValues(populationDataCollector).Distinct().ToList();

            values.Each(v => _mapping.Add(mapFrom(v)));
        }
        private bool validateReferenceFieldInGrouping(PopulationAnalysisDataField dataField, PopulationAnalysisGroupingField groupingField)
        {
            string referencedFieldName = groupingField.ReferencedFieldName;

            if (!string.Equals(referencedFieldName, dataField.Name, StringComparison.OrdinalIgnoreCase))
            {
                var shouldUseField = _dialogCreator.MessageBoxYesNo(PKSimConstants.Warning.DerivedFieldWasSavedForAnotherField(referencedFieldName, dataField.Name));
                if (shouldUseField == ViewResult.No)
                {
                    return(false);
                }
            }

            groupingField.RenameReferencedFieldTo(dataField.Name);
            return(true);
        }
        public PopulationAnalysisDerivedField LoadDerivedFieldFor(PopulationAnalysis populationAnalysis, PopulationAnalysisDataField populationAnalysisDataField)
        {
            var field = _templateTask.LoadFromTemplate <PopulationAnalysisDerivedField>(TemplateType.PopulationAnalysisField);

            if (field == null)
            {
                return(null);
            }

            //validate data type
            if (!field.CanBeUsedFor(populationAnalysisDataField.DataType))
            {
                throw new PKSimException(PKSimConstants.Error.DerivedFieldCannotBeUsedForFieldOfType(field.Name, populationAnalysisDataField.Name, populationAnalysisDataField.DataType));
            }

            //Rename referenced once loaded
            var groupingField = field as PopulationAnalysisGroupingField;

            if (groupingField != null)
            {
                if (!validateReferenceFieldInGrouping(populationAnalysisDataField, groupingField))
                {
                    return(null);
                }
            }

            //rename field if required
            if (populationAnalysis.Has(field.Name))
            {
                var name = renameFieldAfterImport(populationAnalysis, field);
                if (string.IsNullOrEmpty(name))
                {
                    return(null);
                }

                field.Name = name;
            }

            return(field);
        }
 private void addDataField(PopulationAnalysisDataField dataField, string fieldName)
 {
     addDataField(dataField.GetValuesAsObjects(_populationDataCollector), dataField.DataType, fieldName);
 }
 private void addDataField(PopulationAnalysisDataField dataField)
 {
     addDataField(dataField, dataField.Name);
 }