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