Пример #1
0
        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();
        }
Пример #2
0
        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();
        }