public static DimensionTree CreateDimensionTree(string datasetName) { var tree = new DimensionTree(datasetName); var placeValues = new List <DimensionValueDto> { new DimensionValueDto { Id = 1, Value = "Czech republic" }, new DimensionValueDto { Id = 2, Value = "Slovakia" }, new DimensionValueDto { Id = 3, Value = "Russia" }, }; var regionValues = new List <DimensionValueDto> { new DimensionValueDto { Id = 1, Value = "Europe" }, new DimensionValueDto { Id = 2, Value = "Asia" } }; var productValues = new List <DimensionValueDto> { new DimensionValueDto { Id = 1, Value = "Bread" }, new DimensionValueDto { Id = 2, Value = "Bun" }, new DimensionValueDto { Id = 3, Value = "Milk" }, }; var categoryValues = new List <DimensionValueDto> { new DimensionValueDto { Id = 1, Value = "Bakery" }, new DimensionValueDto { Id = 2, Value = "Dairy" } }; tree.Add(CreateDimensionDto(datasetName, 1, "Place", null, typeof(string), placeValues)); tree.Add(CreateDimensionDto(datasetName, 2, "Region", 1, typeof(string), regionValues)); tree.Add(CreateDimensionDto(datasetName, 3, "Product", null, typeof(string), productValues)); tree.Add(CreateDimensionDto(datasetName, 4, "Category", 3, typeof(string), categoryValues)); return(tree); }
public DimensionTree ConvertToTree(IEnumerable <Dimension> dimensions, string prefix, bool populate = false) { var dimensionList = dimensions.ToList(); var dimensionTree = new DimensionTree(dimensionList.First().DataSet.Name, prefix); while (dimensionTree.Count != dimensionList.Count) { foreach (var dimension in dimensionList) { var dimToAdd = new TreeDimensionDto { Children = new List <TreeDimensionDto>(), Id = dimension.Id, Name = dimension.Name, ParentId = dimension.ParentDimension?.Id, DatasetName = dimension.DataSet.Name, Type = dimension.Type.ToType(), Prefix = prefix }; if (!dimensionTree.Contains(dimToAdd)) { if (dimension.ParentDimension == null) { dimensionTree.Add(dimToAdd); } else { if (dimensionTree.Contains((int)dimension.ParentDimension.Id)) { dimensionTree.Add(dimToAdd); } } } } } if (populate) { Populate(dimensionTree); } return(dimensionTree); }