예제 #1
0
        /// <summary>
        /// This method sets the active dimension and unit to a valid one depending on meta data settings.
        /// </summary>
        public void SetColumnUnitDependingOnMetaData()
        {
            if (MetaData == null || MetaData.Rows.Count == 0)
            {
                return;
            }
            if (Dimensions == null)
            {
                return;
            }
            if (CurrentlySupportedDimensions.Count == 0)
            {
                return;
            }
            if (CurrentlySupportedDimensions.Contains(ActiveDimension))
            {
                return;
            }
            if (!string.IsNullOrEmpty(ColumnNameOfRelatedColumn) && Table != null)
            {
                var relatedColumn = Table.Columns.ItemByName(ColumnNameOfRelatedColumn);
                if (relatedColumn.IsUnitExplicitlySet)
                {
                    try
                    {
                        var relatedDim = DimensionHelper.FindDimension(CurrentlySupportedDimensions,
                                                                       relatedColumn.ActiveDimension.Name);
                        if (relatedDim != null)
                        {
                            ActiveDimension = relatedDim;
                            DimensionHelper.TakeOverInputParameters(relatedDim, _activeDimension);
                            var unitName = relatedColumn.ActiveUnit.Name;
                            ActiveUnit = relatedDim.HasUnit(unitName) ? relatedDim.FindUnit(unitName) : ActiveDimension.GetDefaultUnit();

                            IsUnitExplicitlySet = false;
                            return;
                        }
                    } catch (DimensionNotFound) {}
                }
            }

            ActiveDimension = CurrentlySupportedDimensions.Contains(
                DimensionHelper.GetDefaultDimension(Dimensions))
                              ? DimensionHelper.GetDefaultDimension(Dimensions)
                              : CurrentlySupportedDimensions[0];
            ActiveUnit          = ActiveDimension.GetDefaultUnit();
            IsUnitExplicitlySet = false;
        }
예제 #2
0
        private void setDimensionOfRelatedColumn(ImportDataColumn relatedColumn)
        {
            var newRelatedColumnDimension = bestDimensionSupportedByRelatedColumn(relatedColumn);

            if (newRelatedColumnDimension == null)
            {
                return;
            }

            if (!shouldChangeRelatedColumnDimensionTo(newRelatedColumnDimension))
            {
                return;
            }

            relatedColumn.ActiveDimension     = newRelatedColumnDimension;
            relatedColumn.IsUnitExplicitlySet = false;
            DimensionHelper.TakeOverInputParameters(_activeDimension, newRelatedColumnDimension);
        }