예제 #1
0
        public static Perspective DeserializePerspective(JObject json, Model model)
        {
            var tom = TOM.JsonSerializer.DeserializeObject <TOM.Perspective>(json.ToString());

            tom.Name = model.Perspectives.GetNewName(tom.Name);

            var perspective = Perspective.CreateFromMetadata(model, tom);

            return(perspective);
        }
예제 #2
0
        public static Perspective DeserializePerspective(JObject json, Model model)
        {
            var tom = TOM.JsonSerializer.DeserializeObject <TOM.Perspective>(json.ToString(Formatting.None));

            tom.Name = model.Perspectives.GetNewName(tom.Name);

            var tomModel = model.MetadataObject;

            foreach (var pt in tom.PerspectiveTables.ToList())
            {
                if (tomModel.Tables.Contains(pt.Name))
                {
                    var tomTable = tomModel.Tables[pt.Name];
                    foreach (var pc in pt.PerspectiveColumns.ToList())
                    {
                        if (!tomTable.Columns.Contains(pc.Name))
                        {
                            pt.PerspectiveColumns.Remove(pc.Name);
                        }
                    }
                    foreach (var pm in pt.PerspectiveMeasures.ToList())
                    {
                        if (!tomTable.Measures.Contains(pm.Name))
                        {
                            pt.PerspectiveMeasures.Remove(pm.Name);
                        }
                    }
                    foreach (var ph in pt.PerspectiveHierarchies.ToList())
                    {
                        if (!tomTable.Hierarchies.Contains(ph.Name))
                        {
                            pt.PerspectiveHierarchies.Remove(ph.Name);
                        }
                    }
                }
                else
                {
                    tom.PerspectiveTables.Remove(pt.Name);
                }
            }

            var perspective = Perspective.CreateFromMetadata(model, tom);


            return(perspective);
        }