Exemple #1
0
        /// <summary>
        /// Adds a translation for the TOM object based on the supplied AMOTranslation.
        /// Creates the relevant culture if it does not exist.
        /// </summary>
        /// <param name="TOMDatabase">The TOM Database to add the Translation to</param>
        /// <param name="TOMObject">The TOM Object the translation is being added for</param>
        /// <param name="AMOTranslation">The AMO Translation being transferred to the TOM Database</param>
        public static void AddTOMTranslation(TOM.Database TOMDatabase, TOM.MetadataObject TOMObject, AMO.Translation AMOTranslation)
        {
            string CultureName = TranslationHelper.GetCultureNameFromLCID(AMOTranslation.Language);

            //Add Culture if it does not exist
            if (!TOMDatabase.Model.Cultures.ContainsName(CultureName))
            {
                TOMDatabase.Model.Cultures.Add(new TOM.Culture {
                    Name = CultureName
                });
            }

            //Get existing culture
            TOM.Culture TOMCulture = TOMDatabase.Model.Cultures.Find(CultureName);

            //Add the various translated properties to the translation
            TOMCulture.ObjectTranslations.Add(
                new TOM.ObjectTranslation {
                Object = TOMObject, Property = TOM.TranslatedProperty.Caption, Value = AMOTranslation.Caption
            }
                );
            TOMCulture.ObjectTranslations.Add(
                new TOM.ObjectTranslation {
                Object = TOMObject, Property = TOM.TranslatedProperty.Description, Value = AMOTranslation.Description
            }
                );
            TOMCulture.ObjectTranslations.Add(
                new TOM.ObjectTranslation {
                Object = TOMObject, Property = TOM.TranslatedProperty.DisplayFolder, Value = AMOTranslation.DisplayFolder
            }
                );
        }
Exemple #2
0
        public static string GetObjectPath(this TOM.MetadataObject obj)
        {
            switch (obj.ObjectType)
            {
            case TOM.ObjectType.Model:
                return("Model");

            case TOM.ObjectType.Measure:
            case TOM.ObjectType.Table:
            case TOM.ObjectType.Column:
            case TOM.ObjectType.Hierarchy:
                return(GetObjectPathTableObject(obj as TOM.NamedMetadataObject));

            case TOM.ObjectType.Level:
                var level = obj as TOM.Level;
                return(GetObjectPathTableObject(level.Hierarchy) + "." + level.Name);

            case TOM.ObjectType.KPI:
                return(GetObjectPathTableObject((obj as TOM.KPI).Measure) + ".KPI");

            case TOM.ObjectType.Variation:
                return(GetObjectPathTableObject((obj as TOM.Variation).Column) + ".Variations." + QuotePath((obj as TOM.Variation).Name));

            case TOM.ObjectType.Relationship:
            case TOM.ObjectType.DataSource:
            case TOM.ObjectType.Role:
            case TOM.ObjectType.Expression:
            case TOM.ObjectType.Perspective:
            case TOM.ObjectType.Culture:
                return(obj.ObjectType.ToString() + "." + QuotePath((obj as TOM.NamedMetadataObject).Name));

            case TOM.ObjectType.Partition:
                return("TablePartition." + QuotePath((obj as TOM.Partition).Table?.Name ?? "") + "." + QuotePath((obj as TOM.Partition).Name));

            case TOM.ObjectType.RoleMembership:
                var mrm = obj as TOM.ModelRoleMember;
                return(GetObjectPath(mrm.Role) + "." + mrm.Name);

            case TOM.ObjectType.CalculationGroup:
                var cg = obj as TOM.CalculationGroup;
                return(GetObjectPath(cg.Table) + ".CalculationGroup");

            case TOM.ObjectType.TablePermission:
                var tp = obj as TOM.TablePermission;
                return(GetObjectPath(tp.Role) + "." + tp.Table.Name);

            case TOM.ObjectType.CalculationItem:
                var ci = obj as TOM.CalculationItem;
                return(GetObjectPath(ci.CalculationGroup) + ".CalculationGroup." + ci.Name);

            case TOM.ObjectType.AlternateOf:
                var ao = obj as TOM.AlternateOf;
                return(GetObjectPath(ao.Column) + ".AlternateOf");

            default:
                throw new NotSupportedException($"Cannot create reference for object of type {obj.ObjectType}.");
            }
        }
Exemple #3
0
        internal override void TOM_Remove(TOM.MetadataObject obj)
        {
            var groupByColumn = tomCollection?.FirstOrDefault(gbc => gbc.GroupingColumn == obj);

            if (groupByColumn != null)
            {
                tomCollection.Remove(groupByColumn);
            }
        }
Exemple #4
0
        public static string GetObjectPath(this TOM.MetadataObject obj)
        {
            var name = (obj as TOM.NamedMetadataObject)?.Name ?? obj.ObjectType.ToString();

            if (obj.Parent != null)
            {
                return(obj.Parent.GetObjectPath() + "." + name);
            }
            else
            {
                return(name);
            }
        }
Exemple #5
0
        internal override int IndexOf(TOM.MetadataObject value)
        {
            var ix   = TOM_Collection.IndexOf(value as TOM.Column);
            var rnIx = GetRnColIndex();

            if (ix == rnIx)
            {
                throw new KeyNotFoundException();
            }
            if (ix > rnIx && rnIx > -1)
            {
                ix--;
            }
            return(ix);
        }
Exemple #6
0
        internal override void TOM_Add(TOM.MetadataObject obj)
        {
            if (!(obj is TOM.Column column))
            {
                throw new ArgumentException("Object not of type Column", "obj");
            }

            if (tomCollection == null)
            {
                valueColumn.RelatedColumnDetails = new TOM.RelatedColumnDetails();
            }

            tomCollection.Add(new TOM.GroupByColumn {
                GroupingColumn = column
            });
        }
Exemple #7
0
        /// <summary>
        /// Creates a TabularObject representing the provided TOM MetadataObject.
        /// </summary>
        /// <param name="metadataObject"></param>
        protected TabularObject(TOM.MetadataObject metadataObject)
        {
            if (metadataObject == null)
            {
                throw new ArgumentNullException("metadataObject");
            }

            _metadataObject = metadataObject;
            Handler         = TabularModelHandler.Singleton;
            Handler.WrapperLookup[metadataObject] = this;

            // Assign collection based on parent:
            if (metadataObject.Parent != null)
            {
                Collection = (Handler.WrapperLookup[metadataObject.Parent] as TabularObject).GetCollectionForChild(this);
            }
        }
Exemple #8
0
        public static string GetObjectPath(this TOM.MetadataObject obj)
        {
            var name = (obj is TOM.Model) ? "Model" : (obj as TOM.NamedMetadataObject)?.Name ?? obj.ObjectType.ToString();

            if (name.Contains("."))
            {
                name = "[" + name + "]";
            }

            if (obj.Parent != null)
            {
                return(obj.Parent.GetObjectPath() + "." + name);
            }
            else
            {
                return(name);
            }
        }
Exemple #9
0
        public static string GetObjectPath(this TOM.MetadataObject obj)
        {
            switch (obj.ObjectType)
            {
            case TOM.ObjectType.Model:
                return("Model");

            case TOM.ObjectType.Measure:
            case TOM.ObjectType.Table:
            case TOM.ObjectType.Column:
            case TOM.ObjectType.Hierarchy:
            case TOM.ObjectType.Level:
                return(GetObjectPathTableObject(obj as TOM.NamedMetadataObject));

            case TOM.ObjectType.KPI:
                return(GetObjectPathTableObject((obj as TOM.KPI).Measure) + ".KPI");

            case TOM.ObjectType.Variation:
                return(GetObjectPathTableObject((obj as TOM.Variation).Column) + ".Variations." + QuotePath((obj as TOM.Variation).Name));

            case TOM.ObjectType.Relationship:
            case TOM.ObjectType.DataSource:
            case TOM.ObjectType.Role:
            case TOM.ObjectType.Expression:
            case TOM.ObjectType.Perspective:
            case TOM.ObjectType.Culture:
                return(obj.ObjectType.ToString() + "." + QuotePath((obj as TOM.NamedMetadataObject).Name));

            case TOM.ObjectType.Partition:
                return("TablePartition." + QuotePath((obj as TOM.Partition).Table?.Name ?? "") + "." + QuotePath((obj as TOM.Partition).Name));

            case TOM.ObjectType.RoleMembership:
                var mrm = obj as TOM.ModelRoleMember;
                return(GetObjectPath(mrm.Role) + "." + mrm.Name);

            default:
                throw new NotSupportedException($"Cannot create reference for object of type {obj.ObjectType}.");
            }
        }
Exemple #10
0
        public static AMO.Translation GetTranslation(TOM.Culture TOMCulture, TOM.MetadataObject TOMObject)
        {
            AMO.Translation AMOTranslation = new AMO.Translation
            {
                Language = GetLCIDFromCultureName(TOMCulture.Name)
            };

            //Caption (i.e. Name)
            if (TOMCulture.ObjectTranslations[TOMObject, TOM.TranslatedProperty.Caption] != null)
            {
                AMOTranslation.Caption = TOMCulture.ObjectTranslations[TOMObject, TOM.TranslatedProperty.Caption].Value;
            }

            //Description
            if (TOMCulture.ObjectTranslations[TOMObject, TOM.TranslatedProperty.Description] != null)
            {
                AMOTranslation.Description = TOMCulture.ObjectTranslations[TOMObject, TOM.TranslatedProperty.Description].Value;
            }

            //Display Folder
            if (TOMCulture.ObjectTranslations[TOMObject, TOM.TranslatedProperty.DisplayFolder] != null)
            {
                AMOTranslation.DisplayFolder = TOMCulture.ObjectTranslations[TOMObject, TOM.TranslatedProperty.DisplayFolder].Value;
            }

            // If translation has no properties, it does not exist.
            // As such, return null unless it has at least one valid property
            if (AMOTranslation.Caption != null || AMOTranslation.Description != null || AMOTranslation.DisplayFolder != null)
            {
                return(AMOTranslation);
            }
            else
            {
                return(null);
            }
        }
Exemple #11
0
 protected abstract bool TOM_Contains(TOM.MetadataObject obj);
Exemple #12
0
 protected abstract void TOM_Remove(TOM.MetadataObject obj);
Exemple #13
0
 protected abstract void TOM_Add(TOM.MetadataObject obj);
Exemple #14
0
 public abstract int IndexOf(TOM.MetadataObject value);
 internal abstract int IndexOf(TOM.MetadataObject value);
 internal abstract void TOM_Add(TOM.MetadataObject obj);
Exemple #17
0
 internal override bool TOM_Contains(TOM.MetadataObject obj)
 {
     return(tomCollection?.Any(gbc => gbc.GroupingColumn == obj) ?? false);
 }
 internal abstract void TOM_Remove(TOM.MetadataObject obj);
Exemple #19
0
 internal override int IndexOf(TOM.MetadataObject value)
 {
     return(tomCollection == null ? -1 : tomCollection.Select(tc => tc.GroupingColumn).ToList().IndexOf(value as TOM.Column));
 }
Exemple #20
0
 public TabularObject GetWrapperObject(TOM.MetadataObject obj)
 {
     return(WrapperLookup[obj]);
 }
 internal abstract bool TOM_Contains(TOM.MetadataObject obj);