internal static void UpdateContent(IDbConnection Db, GXAmiDevice device, DeviceContentType content) { string query; if (content == DeviceContentType.All) { device.ProfileGuid = Db.Select <GXAmiDeviceProfile>(q => q.Id == device.ProfileId)[0].Guid; SortedList <ulong, object> items = new SortedList <ulong, object>(); //Get categories. device.Categories = Db.Select <GXAmiCategory>(q => q.DeviceID == device.Id).ToArray(); foreach (GXAmiCategory cat in device.Categories) { items.Add(cat.Id, cat); } //Get tables. device.Tables = Db.Select <GXAmiDataTable>(q => q.DeviceID == device.Id).ToArray(); foreach (GXAmiDataTable table in device.Tables) { items.Add(table.Id, table); } //Get properties. query = string.Format("SELECT * FROM {0} WHERE DeviceID = {1} ORDER BY ParentID, ID", GuruxAMI.Server.AppHost.GetTableName <GXAmiProperty>(Db), device.Id); List <GXAmiProperty> properties = Db.SqlList <GXAmiProperty>(query); ulong id = 0; List <GXAmiProperty> list = new List <GXAmiProperty>(); foreach (GXAmiProperty it in properties) { //If parent changes. if (it.ParentID != id) { if (id != 0) { object target = items[id]; if (target is GXAmiCategory) { (target as GXAmiCategory).Properties = list.ToArray(); } else if (target is GXAmiDataTable) { (target as GXAmiDataTable).Columns = list.ToArray(); } } id = it.ParentID; list.Clear(); } list.Add(it); } if (list.Count != 0 && id != 0) { object target = items[id]; if (target is GXAmiCategory) { (target as GXAmiCategory).Properties = list.ToArray(); } else if (target is GXAmiDataTable) { (target as GXAmiDataTable).Columns = list.ToArray(); } } foreach (GXAmiProperty it in properties) { items.Add(it.Id, it); } items.Add(device.Id, device); //Get Parameters. query = string.Format("SELECT * FROM {0} WHERE DeviceID = {1} ORDER BY ParentID, ID", GuruxAMI.Server.AppHost.GetTableName <GXAmiParameter>(Db), device.Id); List <GXAmiParameter> parameters = Db.SqlList <GXAmiParameter>(query); id = 0; List <GXAmiParameter> paramList = new List <GXAmiParameter>(); foreach (GXAmiParameter it in parameters) { //If parent changes. if (it.ParentID != id) { if (id != 0) { object target = items[id]; if (target is GXAmiDevice) { (target as GXAmiDevice).Parameters = paramList.ToArray(); } else if (target is GXAmiCategory) { (target as GXAmiCategory).Parameters = paramList.ToArray(); } else if (target is GXAmiDataTable) { (target as GXAmiDataTable).Parameters = paramList.ToArray(); } else if (target is GXAmiProperty) { (target as GXAmiProperty).Parameters = paramList.ToArray(); } else { throw new Exception("Unknown target."); } } id = it.ParentID; paramList.Clear(); } paramList.Add(it); } if (paramList.Count != 0 && id != 0) { object target = items[id]; if (target is GXAmiDevice) { (target as GXAmiDevice).Parameters = paramList.ToArray(); } else if (target is GXAmiCategory) { (target as GXAmiCategory).Parameters = paramList.ToArray(); } else if (target is GXAmiDataTable) { (target as GXAmiDataTable).Parameters = paramList.ToArray(); } else if (target is GXAmiProperty) { (target as GXAmiProperty).Parameters = paramList.ToArray(); } else { throw new Exception("Unknown target."); } } items.Clear(); foreach (GXAmiParameter it in parameters) { items.Add(it.TemplateId, it); } //Get Parameters. query = string.Format("SELECT * FROM {0} WHERE ProfileId = {1} ORDER BY ParameterId, ID", GuruxAMI.Server.AppHost.GetTableName <GXAmiValueItem>(Db), device.ProfileId); List <GXAmiValueItem> values = Db.SqlList <GXAmiValueItem>(query); id = 0; List <GXAmiValueItem> valueList = new List <GXAmiValueItem>(); foreach (GXAmiValueItem it in values) { //If parent changes. if (it.ParameterId != null && it.ParameterId != id) { if (id != 0) { if (items.ContainsKey(id)) { object target = items[id]; (target as GXAmiParameter).Values = valueList.ToArray(); } else { System.Diagnostics.Debug.WriteLine("Failed to find value item parent: " + it.UIValue); } } id = it.ParameterId.Value; valueList.Clear(); } valueList.Add(it); } } //Get Media settings. query = "SELECT * FROM " + GuruxAMI.Server.AppHost.GetTableName <GXAmiDeviceMedia>(Db) + " WHERE DeviceId = " + device.Id.ToString(); List <GXAmiDeviceMedia> list2 = Db.Select <GXAmiDeviceMedia>(query); device.Medias = list2.ToArray(); }
internal static void UpdateContent(IDbConnection Db, GXAmiDevice device, DeviceContentType content) { string query; if (content == DeviceContentType.All) { device.ProfileGuid = Db.Select<GXAmiDeviceProfile>(q => q.Id == device.ProfileId)[0].Guid; SortedList<ulong, object> items = new SortedList<ulong, object>(); //Get categories. device.Categories = Db.Select<GXAmiCategory>(q => q.DeviceID == device.Id).ToArray(); foreach(GXAmiCategory cat in device.Categories) { items.Add(cat.Id, cat); } //Get tables. device.Tables = Db.Select<GXAmiDataTable>(q => q.DeviceID == device.Id).ToArray(); foreach(GXAmiDataTable table in device.Tables) { items.Add(table.Id, table); } //Get properties. query = string.Format("SELECT * FROM {0} WHERE DeviceID = {1} ORDER BY ParentID, ID", GuruxAMI.Server.AppHost.GetTableName<GXAmiProperty>(Db), device.Id); List<GXAmiProperty> properties = Db.SqlList<GXAmiProperty>(query); ulong id = 0; List<GXAmiProperty> list = new List<GXAmiProperty>(); foreach (GXAmiProperty it in properties) { //If parent changes. if (it.ParentID != id) { if (id != 0) { object target = items[id]; if (target is GXAmiCategory) { (target as GXAmiCategory).Properties = list.ToArray(); } else if (target is GXAmiDataTable) { (target as GXAmiDataTable).Columns = list.ToArray(); } } id = it.ParentID; list.Clear(); } list.Add(it); } if (list.Count != 0 && id != 0) { object target = items[id]; if (target is GXAmiCategory) { (target as GXAmiCategory).Properties = list.ToArray(); } else if (target is GXAmiDataTable) { (target as GXAmiDataTable).Columns = list.ToArray(); } } foreach (GXAmiProperty it in properties) { items.Add(it.Id, it); } items.Add(device.Id, device); //Get Parameters. query = string.Format("SELECT * FROM {0} WHERE DeviceID = {1} ORDER BY ParentID, ID", GuruxAMI.Server.AppHost.GetTableName<GXAmiParameter>(Db), device.Id); List<GXAmiParameter> parameters = Db.SqlList<GXAmiParameter>(query); id = 0; List<GXAmiParameter> paramList = new List<GXAmiParameter>(); foreach (GXAmiParameter it in parameters) { //If parent changes. if (it.ParentID != id) { if (id != 0) { object target = items[id]; if (target is GXAmiDevice) { (target as GXAmiDevice).Parameters = paramList.ToArray(); } else if (target is GXAmiCategory) { (target as GXAmiCategory).Parameters = paramList.ToArray(); } else if (target is GXAmiDataTable) { (target as GXAmiDataTable).Parameters = paramList.ToArray(); } else if (target is GXAmiProperty) { (target as GXAmiProperty).Parameters = paramList.ToArray(); } else { throw new Exception("Unknown target."); } } id = it.ParentID; paramList.Clear(); } paramList.Add(it); } if (paramList.Count != 0 && id != 0) { object target = items[id]; if (target is GXAmiDevice) { (target as GXAmiDevice).Parameters = paramList.ToArray(); } else if (target is GXAmiCategory) { (target as GXAmiCategory).Parameters = paramList.ToArray(); } else if (target is GXAmiDataTable) { (target as GXAmiDataTable).Parameters = paramList.ToArray(); } else if (target is GXAmiProperty) { (target as GXAmiProperty).Parameters = paramList.ToArray(); } else { throw new Exception("Unknown target."); } } items.Clear(); foreach (GXAmiParameter it in parameters) { items.Add(it.TemplateId, it); } //Get Parameters. query = string.Format("SELECT * FROM {0} WHERE ProfileId = {1} ORDER BY ParameterId, ID", GuruxAMI.Server.AppHost.GetTableName<GXAmiValueItem>(Db), device.ProfileId); List<GXAmiValueItem> values = Db.SqlList<GXAmiValueItem>(query); id = 0; List<GXAmiValueItem> valueList = new List<GXAmiValueItem>(); foreach (GXAmiValueItem it in values) { //If parent changes. if (it.ParameterId != null && it.ParameterId != id) { if (id != 0) { if (items.ContainsKey(id)) { object target = items[id]; (target as GXAmiParameter).Values = valueList.ToArray(); } else { System.Diagnostics.Debug.WriteLine("Failed to find value item parent: " + it.UIValue); } } id = it.ParameterId.Value; valueList.Clear(); } valueList.Add(it); } } //Get Media settings. query = "SELECT * FROM " + GuruxAMI.Server.AppHost.GetTableName<GXAmiDeviceMedia>(Db) + " WHERE DeviceId = " + device.Id.ToString(); List<GXAmiDeviceMedia> list2 = Db.Select<GXAmiDeviceMedia>(query); device.Medias = list2.ToArray(); }