using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Windows.Forms; using System.Xml.Serialization; using NHibernate; using Results.Entities; using ResultsBrowser.Resources; namespace ResultsBrowser.Filters { public class ProtocolFilter : IFilter { public static string GetFilterID() { return "Protocol"; } public static string GetFilterName() { return Strings.Protocol; } /// /// Obligatory wrappers /// public string GetThisFilterID() { return GetFilterID(); } public void Save(StringBuilder sb) { (new XmlSerializer(this.GetType())).Serialize(new StringWriter(sb), this); } public void Data2UI() { userIface.Data2UI(); } public void UI2Data() { userIface.UI2Data(); } public UserControl GetFilterUI() { return userIface as UserControl; } /// /// Serialized filter data /// public string Protocol; private ProtocolFilterUI userIface; public ProtocolFilter() { userIface = new ProtocolFilterUI(this); } public IList ExecuteQuery(ISession[] sessions, IList waterMeters) { IList filteredWaterMeters = new List(); if (waterMeters == null) { foreach (var se in sessions) { IList batches = se.QueryOver() .Where(x => (x.ProtocolTitle == Protocol)) .List(); foreach (var b in batches) { foreach (var wm in b.WaterMeters) filteredWaterMeters.Add(wm); } } } else { foreach (var wm in waterMeters) { if (wm.Batch.ProtocolTitle == Protocol) filteredWaterMeters.Add(wm); } } return filteredWaterMeters; } } }