Example #1
0
        /// <summary>
        /// Creates the appropriate Time Dimension Mapping object <see cref="ITimeDimension"/>  based on the mapping from the mapping store
        /// e.g. it will create a different object if TimeDimension is mapped to one column, different if it is mapped two column and different if the column is Date type
        /// </summary>
        /// <param name="mapping">
        /// The mapping entity<see cref="MappingEntity"/> of the Time Dimension component
        /// </param>
        /// <param name="frequencyComponentMapping">
        /// The frequency component mapping.
        /// </param>
        /// <param name="databaseType">
        /// The dissemination database vendor. Is needed to generate the correct SQL query where conditions
        /// </param>
        /// <returns>
        /// An Time Dimension Transcoding object<see cref="ITimeDimension"/>
        /// </returns>
        public static ITimeDimension Create(MappingEntity mapping, IComponentMapping frequencyComponentMapping, string databaseType)
        {
            ITimeDimension timeDimensionTranscoding = null;

            if (mapping.Transcoding == null)
            {
                timeDimensionTranscoding = new TimeDimensionSingleFrequency(CreateTimeDimensionMapping(mapping, databaseType));
            }
            else if (mapping.Transcoding.TimeTranscodingCollection.Count == 1)
            {
                timeDimensionTranscoding = new TimeDimensionSingleFrequency(CreateTranscodedTimeDimensionMapping(mapping, databaseType, mapping.Transcoding.TimeTranscodingCollection.First()));
            }
            else if (mapping.Transcoding.TimeTranscodingCollection.Count > 1)
            {
                var timeDimensionMappings = new Dictionary <string, ITimeDimensionMapping>(StringComparer.Ordinal);
                foreach (var transcodingEntity in mapping.Transcoding.TimeTranscodingCollection)
                {
                    var timeDimensionSubTranscoding = CreateTranscodedTimeDimensionMapping(mapping, databaseType, transcodingEntity);
                    timeDimensionMappings[transcodingEntity.FrequencyValue] = timeDimensionSubTranscoding;
                }

                timeDimensionTranscoding = new TimeDimensionMultiFrequency(timeDimensionMappings, frequencyComponentMapping);
            }

            if (timeDimensionTranscoding != null)
            {
                timeDimensionTranscoding.Component = mapping.Components[0];
                timeDimensionTranscoding.Mapping   = mapping;
            }

            return(timeDimensionTranscoding);
        }
        /// <summary>
        /// Creates the appropriate Time Dimension Mapping object <see cref="ITimeDimension"/>  based on the mapping from the mapping store
        /// e.g. it will create a different object if TimeDimension is mapped to one column, different if it is mapped two column and different if the column is Date type
        /// </summary>
        /// <param name="mapping">
        /// The mapping entity<see cref="MappingEntity"/> of the Time Dimension component
        /// </param>
        /// <param name="frequencyComponentMapping">
        /// The frequency component mapping.
        /// </param>
        /// <param name="databaseType">
        /// The dissemination database vendor. Is needed to generate the correct SQL query where conditions
        /// </param>
        /// <returns>
        /// An Time Dimension Transcoding object<see cref="ITimeDimension"/>
        /// </returns>
        public static ITimeDimension Create(MappingEntity mapping, IComponentMapping frequencyComponentMapping, string databaseType)
        {
            ITimeDimension timeDimensionTranscoding = null;
            if (mapping.Transcoding == null)
            {
                timeDimensionTranscoding = new TimeDimensionSingleFrequency(CreateTimeDimensionMapping(mapping, databaseType));
            }
            else if (mapping.Transcoding.TimeTranscodingCollection.Count == 1)
            {
                timeDimensionTranscoding = new TimeDimensionSingleFrequency(CreateTranscodedTimeDimensionMapping(mapping, databaseType, mapping.Transcoding.TimeTranscodingCollection.First()));
            }
            else if (mapping.Transcoding.TimeTranscodingCollection.Count > 1)
            {
                var timeDimensionMappings = new Dictionary<string, ITimeDimensionMapping>(StringComparer.Ordinal);
                foreach (var transcodingEntity in mapping.Transcoding.TimeTranscodingCollection)
                {
                    var timeDimensionSubTranscoding = CreateTranscodedTimeDimensionMapping(mapping, databaseType, transcodingEntity);
                    timeDimensionMappings[transcodingEntity.FrequencyValue] = timeDimensionSubTranscoding;
                }
                
                timeDimensionTranscoding = new TimeDimensionMultiFrequency(timeDimensionMappings, frequencyComponentMapping);
            }

            if (timeDimensionTranscoding != null)
            {
                timeDimensionTranscoding.Component = mapping.Components[0];
                timeDimensionTranscoding.Mapping = mapping;
            }

            return timeDimensionTranscoding;
        }