/// <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; }