示例#1
0
        private List <Sample> GetSamples()
        {
            if (!DataItems.IsNullOrEmpty() && !Components.IsNullOrEmpty())
            {
                var ids = new List <string>();

                // Read the Availability Event
                availabilityEvent = GetEvent(Availability.EVENT_NAME, AgentVersion);
                if (availabilityEvent != null)
                {
                    availabilityIds = GetEventIds(availabilityEvent, DataItems, Components);
                    foreach (var id in availabilityIds)
                    {
                        if (!ids.Exists(o => o == id))
                        {
                            ids.Add(id);
                        }
                    }
                }

                // Find all of the Overrides by DataItemId (used for Performance)
                var overrideItems = DataItems.FindAll(o => o.Type == "PATH_FEEDRATE_OVERRIDE" || (o.Type == "PATH_FEEDRATE" && o.Units == "PERCENT"));
                foreach (var id in overrideItems.Select(o => o.Id).ToArray())
                {
                    if (!ids.Exists(o => o == id))
                    {
                        ids.Add(id);
                    }
                }

                // Read the Quality Event
                qualityEvent = GetEvent(Quality.EVENT_NAME, AgentVersion);
                if (qualityEvent != null)
                {
                    // Program Name DataItem
                    var programNameItem = DataItems.Find(o => o.Type == "PROGRAM");
                    if (programNameItem != null)
                    {
                        if (!ids.Exists(o => o == programNameItem.Id))
                        {
                            ids.Add(programNameItem.Id);
                        }
                    }

                    // Execution DataItem
                    var executionItem = DataItems.Find(o => o.Type == "EXECUTION");
                    if (executionItem != null)
                    {
                        if (!ids.Exists(o => o == executionItem.Id))
                        {
                            ids.Add(executionItem.Id);
                        }
                    }

                    foreach (var id in GetEventIds(qualityEvent, DataItems, Components))
                    {
                        if (!ids.Exists(o => o == id))
                        {
                            ids.Add(id);
                        }
                    }
                }

                if (!ids.IsNullOrEmpty())
                {
                    // Get Samples
                    return(Database.ReadSamples(ids.ToArray(), RequestQuery.DeviceId, from, to, DateTime.MinValue, long.MaxValue));
                }
            }

            return(null);
        }