private static INode CreateNodeForFilterGroup(this TreeContext context, IFilterGroup filterGroup)
        {
            var groupDependencies = GroupFiltersService.GetGroupDependencies(context, filterGroup);
            var provider          = new GroupProvider(groupDependencies, filterGroup, context.Store, filterGroup.DiagInfo);

            return(Node.CreateNode(filterGroup.NodeToken, provider, true, context));
        }
        public static void CreateNonEqualFilter(this TreeContext context,
                                                INode node1,
                                                INode node2,
                                                IFilterGroup parentGroup,
                                                IDiagInfo diagInfo)
        {
            if (node1.Token.Type != node2.Token.Type)
            {
                return;
            }

            var tuple        = new Tuple <IToken, IToken>(node1.Token, node2.Token);
            var reverseTuple = new Tuple <IToken, IToken>(node2.Token, node1.Token);

            if (context.NonEqualFilters.Contains(tuple) || context.NonEqualFilters.Contains(reverseTuple))
            {
                return;
            }

            context.NonEqualFilters.Add(tuple);
            var dep1 = new SingleDependency(node1.Token);
            var dep2 = new SingleDependency(node2.Token);

            var newInfo = new FilterInfo(context.Store.NextId, diagInfo, parentGroup?.FilterInfo.FilterToken);
            var filter  = new Filter2 <IResolutionContext, IResolutionContext>(dep1, dep2, (x, y) => !x.Equals(y), newInfo);

            context.Filters.Add(filter);
        }
        public static void CreateNonEqualFilter(this TreeContext context, 
            INode node1,
            INode node2, 
            IFilterGroup parentGroup,
            IDiagInfo diagInfo)
        {
            if (node1.Token.Type != node2.Token.Type)
            {
                return;
            }

            var tuple = new Tuple<IToken, IToken>(node1.Token, node2.Token);
            var reverseTuple = new Tuple<IToken, IToken>(node2.Token, node1.Token);
            if (context.NonEqualFilters.Contains(tuple) || context.NonEqualFilters.Contains(reverseTuple))
            {
                return;
            }

            context.NonEqualFilters.Add(tuple);
            var dep1 = new SingleDependency(node1.Token);
            var dep2 = new SingleDependency(node2.Token);

            var newInfo = new FilterInfo(context.Store.NextId, diagInfo, parentGroup?.FilterInfo.FilterToken);
            var filter = new Filter2<IResolutionContext, IResolutionContext>(dep1, dep2, (x, y) => !x.Equals(y), newInfo);
            context.Filters.Add(filter);
        }
 private static List<IFilter> CollectInGroupFilters(this TreeContext context, IFilterGroup filterGroup)
 {
     var filters = context.FiltersInGroup
                         .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List<IFilter>())
                         .ToList();
     filters.AddRange(filters.OfType<IFilterGroup>().SelectMany(context.GetInGroupFilters).ToList());
     return filters;
 }
Esempio n. 5
0
        public ListViewManager(
            ILogger logger,
            ListView view,
            IViewHelper viewHelper,
            ISelecter <TData> dataSelecter,
            IFilterGroup filterGroup,
            IComparer <TData> sortComparer,
            IDataHelper <TData> dataHelper)
        {
            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }
            if (view == null)
            {
                throw new ArgumentNullException("view");
            }
            if (viewHelper == null)
            {
                throw new ArgumentNullException("viewHelper");
            }
            if (dataHelper == null)
            {
                throw new ArgumentNullException("dataHelper");
            }

            _Logger       = logger;
            _View         = view;
            _DataSelecter = dataSelecter;
            _FilterGroup  = filterGroup;
            _SortComparer = sortComparer;
            _ViewHelper   = viewHelper;
            _DataHelper   = dataHelper;

            _ReceiveRequestHandler = new WinFormsEventDispatcher(Exec_Receive_Request, false);
            _CollateRequestHandler = new WinFormsEventDispatcher(Exec_Collate_Request, true);
            _DisplayRequestHandler = new WinFormsEventDispatcher(Exec_Display_Request, true);

            // configure view
            _View.VirtualMode   = true;
            _View.FullRowSelect = true;
            _View.CheckBoxes    = false;
            _View.View          = View.Details;
            _View.Columns.Clear();
            for (int column = 0; column < viewHelper.ColumnCount; column++)
            {
                ColumnHeader hdr = new ColumnHeader();
                hdr.Text      = _ViewHelper.GetColumnTitle(column);
                hdr.TextAlign = _ViewHelper.GetColumnAlignment(column);
                _View.Columns.Add(hdr);
            }
            _View.RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(_View_RetrieveVirtualItem);
            _View.CacheVirtualItems   += new CacheVirtualItemsEventHandler(_View_CacheVirtualItems);
            _View.ColumnWidthChanged  += new ColumnWidthChangedEventHandler(_View_ColumnWidthChanged);

            // init filter group column positions
            _View_ColumnWidthChanged(null, null);
        }
Esempio n. 6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="filterValues"></param>
 /// <param name="viewHelper"></param>
 /// <param name="dataHelper"></param>
 public BaseSelecter(
     IFilterGroup filterValues,
     IViewHelper viewHelper,
     IDataHelper <TData> dataHelper)
 {
     FilterValues = filterValues ?? throw new ArgumentNullException(nameof(filterValues));
     ViewHelper   = viewHelper ?? throw new ArgumentNullException(nameof(viewHelper));
     DataHelper   = dataHelper ?? throw new ArgumentNullException(nameof(dataHelper));
 }
 public static INode GetGroupNode(this TreeContext context, IFilterGroup group)
 {
     var token = group?.NodeToken;
     if (token == null)
     {
         return null;
     }
     INode node;
     return context.Tree.Nodes.TryGetValue(token, out node) ? node : null;
 }
Esempio n. 8
0
 public GroupProvider(IEnumerable <IDependency> dependencies,
                      IFilterGroup group,
                      TokenStore store,
                      IDiagInfo diagInfo)
 {
     Dependencies = dependencies;
     DiagInfo     = diagInfo;
     this.group   = group;
     this.store   = store;
 }
Esempio n. 9
0
 public GroupProvider(IEnumerable<IDependency> dependencies,
     IFilterGroup group,
     TokenStore store,
     IDiagInfo diagInfo)
 {
     Dependencies = dependencies;
     DiagInfo = diagInfo;
     this.group = group;
     this.store = store;
 }
        public static bool IsFilterAbsorbed(this TreeContext context, IFilter filter, IFilterGroup group)
        {
            var node = context.GetGroupNode(group);
            if (node == null)
            {
                return false;
            }

            return node.Children.Any(x => context.FilterIsAbsorbedBy(filter, x));
        }
 private static List<IToken> CollectInGroupTokens(this TreeContext context, IFilterGroup filterGroup)
 {
     var tokens = context.ProviderTokensInGroup
                         .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List<IToken>())
                         .ToList();
     foreach (var @group in context.FiltersInGroup.SafeGet(filterGroup.FilterInfo.FilterToken, () => new List<IFilter>()).OfType<IFilterGroup>())
     {
         ((Action<IFilterGroup>)(grp => tokens.AddRange(context.GetInGroupTokens(grp))))(@group);
     }
     return tokens;
 }
 public static IEnumerable<IDependency> GetGroupDependencies(TreeContext context, IFilterGroup filterGroup)
 {
     var inGroupTokens = context.GetInGroupTokens(filterGroup);
     var groupDependencies = inGroupTokens
         .SelectMany(x => context.Store.Providers[x].Dependencies)
         .Concat(context.GetInGroupFilters(filterGroup).SelectMany(x => x.Dependencies))
         .Concat(filterGroup.GroupDependencies)
         .Where(dependency => !inGroupTokens.Contains(dependency.Token))
         .DistinctDependencies()
         .ToList();
     return groupDependencies;
 }
        public static INode GetGroupNode(this TreeContext context, IFilterGroup group)
        {
            var token = group?.NodeToken;

            if (token == null)
            {
                return(null);
            }
            INode node;

            return(context.Tree.Nodes.TryGetValue(token, out node) ? node : null);
        }
        private static List <IToken> CollectInGroupTokens(this TreeContext context, IFilterGroup filterGroup)
        {
            var tokens = context.ProviderTokensInGroup
                         .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List <IToken>())
                         .ToList();

            foreach (var @group in context.FiltersInGroup.SafeGet(filterGroup.FilterInfo.FilterToken, () => new List <IFilter>()).OfType <IFilterGroup>())
            {
                ((Action <IFilterGroup>)(grp => tokens.AddRange(context.GetInGroupTokens(grp))))(@group);
            }
            return(tokens);
        }
Esempio n. 15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="view"></param>
 /// <param name="viewHelper"></param>
 /// <param name="dataSelecter"></param>
 /// <param name="filterGroup"></param>
 /// <param name="sortComparer"></param>
 /// <param name="dataHelper"></param>
 /// <param name="gridlines"></param>
 /// <param name="color"></param>
 public ListViewManager(
     ILogger logger,
     ListView view,
     IViewHelper viewHelper,
     ISelecter <TData> dataSelecter,
     IFilterGroup filterGroup,
     IComparer <TData> sortComparer,
     IDataHelper <TData> dataHelper,
     bool gridlines,
     Color color) :
     this(logger, view, viewHelper, dataSelecter, filterGroup, sortComparer, dataHelper)
 {
     _view.GridLines = gridlines;
     _view.BackColor = color;
 }
Esempio n. 16
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="view"></param>
 /// <param name="viewHelper"></param>
 /// <param name="dataSelecter"></param>
 /// <param name="filterGroup"></param>
 /// <param name="sortComparer"></param>
 /// <param name="dataHelper"></param>
 public ListViewManager(
     ILogger logger,
     ListView view,
     IViewHelper viewHelper,
     ISelecter <TData> dataSelecter,
     IFilterGroup filterGroup,
     IComparer <TData> sortComparer,
     IDataHelper <TData> dataHelper)
 {
     Logger = logger ?? throw new ArgumentNullException(nameof(logger));
     _view  = view ?? throw new ArgumentNullException(nameof(view));
     //
     //Set the properties.
     _dataSelecter = dataSelecter;
     _filterGroup  = filterGroup;
     _sortComparer = sortComparer;
     _viewHelper   = viewHelper ?? throw new ArgumentNullException(nameof(viewHelper));
     _dataHelper   = dataHelper ?? throw new ArgumentNullException(nameof(dataHelper));
     //
     //Updating
     _receiveRequestHandler = new WinFormsEventDispatcher(ExecReceiveRequest, false);
     _collateRequestHandler = new WinFormsEventDispatcher(ExecCollateRequest, true);
     _displayRequestHandler = new WinFormsEventDispatcher(ExecDisplayRequest, true);
     //
     // configure view
     _view.VirtualMode   = true;
     _view.FullRowSelect = true;
     _view.CheckBoxes    = false;
     _view.View          = View.Details;
     _view.Columns.Clear();
     for (int column = 0; column < viewHelper.ColumnCount; column++)
     {
         var hdr = new ColumnHeader
         {
             Text      = _viewHelper.GetColumnTitle(column),
             TextAlign = _viewHelper.GetColumnAlignment(column)
         };
         _view.Columns.Add(hdr);
     }
     _view.RetrieveVirtualItem += ViewRetrieveVirtualItem;
     _view.CacheVirtualItems   += ViewCacheVirtualItems;
     _view.ColumnWidthChanged  += ViewColumnWidthChanged;
     //
     // init filter group column positions
     ViewColumnWidthChanged(null, null);
 }
Esempio n. 17
0
 public BaseSelecter(
     IFilterGroup filterValues,
     IViewHelper viewHelper,
     IDataHelper <TData> dataHelper)
 {
     if (filterValues == null)
     {
         throw new ArgumentNullException("filterControls");
     }
     if (viewHelper == null)
     {
         throw new ArgumentNullException("viewHelper");
     }
     if (dataHelper == null)
     {
         throw new ArgumentNullException("dataHelper");
     }
     _FilterValues = filterValues;
     _ViewHelper   = viewHelper;
     _DataHelper   = dataHelper;
 }
Esempio n. 18
0
        private void StartUp()
        {
            try
            {
                var factory = new CoreClientFactory(_loggerRef)
                              .SetEnv("Dev")
                              .SetApplication(Assembly.GetExecutingAssembly())
                              .SetProtocols(WcfConst.AllProtocolsStr)
                              .SetServers("localhost");
                var client = factory.Create();
                _clientRef = Reference <ICoreClient> .Create(client);

                _cache = _clientRef.Target.CreateCache();
                // init controls
                // - form title
                EnvId env = _clientRef.Target.ClientInfo.ConfigEnv;
                Text += String.Format(" ({0})", EnvHelper.EnvName(env));
                // - server port
                int defaultPort = EnvHelper.SvcPort(env, SvcId.GridSwitch);
                _qasDefViewHelper = new QASDefViewHelper();
                _qasDefDataHelper = new QASDefDataHelper();
                _qasDefFilters    = new ComboxBoxFilterGroup(panelQASDef, _qasDefViewHelper, QASDefSelectionChanged);
                _qasDefSelecter   = new QASDefSelecter(
                    _qasDefFilters, _qasDefViewHelper, _qasDefDataHelper);
                _qasDefView = new ListViewManager <RatesObj>(
                    _loggerRef.Target, lvQASDef, _qasDefViewHelper,
                    _qasDefSelecter, _qasDefFilters, new QASDefSorter(), _qasDefDataHelper);
                //Get the starting configuration
                //
                chkChangePort.Text = String.Format("Change server port from default ({0}) to:", defaultPort);
                //Set up the timer and the random number generator.
                //
                _timer = new System.Timers.Timer(10000);
                _rand  = new Random();
            }
            catch (Exception excp)
            {
                _loggerRef.Target.Log(excp);
            }
        }
Esempio n. 19
0
 // this class is currently is a placeholder for future selection rules
 public AlertRuleSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <AlertRule> dataHelper)
     : base(filterValues, viewHelper, dataHelper)
 {
 }
Esempio n. 20
0
 // this class is currently is a placeholder for future selection rules
 public LogEventSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <DebugLogEvent> dataHelper)
     : base(filterValues, viewHelper, dataHelper)
 {
 }
Esempio n. 21
0
 // this class is currently is a placeholder for future selection rules
 public CacheStatsSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <CacheStatsObj> dataHelper)
     : base(filterValues, viewHelper, dataHelper)
 {
 }
Esempio n. 22
0
        private void Form1Load(object sender, EventArgs e)
        {
            // create loggers
            _loggerRef = Reference <ILogger> .Create(new TextBoxLogger(txtMainLog));

            // create client factory and client
            _clientFactory = new CoreClientFactory(_loggerRef);
            _clientFactory.SetEnv(BuildConst.BuildEnv);
            _clientFactory.SetApplication(Assembly.GetExecutingAssembly());
            _client = _clientFactory.Create();
            // - form title
            WinFormHelper.SetAppFormTitle(this, EnvHelper.EnvName(BuildEnv));
            // setup the AlertRule view
            _alertRuleViewHelper = new AlertRuleViewHelper();
            _alertRuleDataHelper = new AlertRuleDataHelper();
            _alertRuleFilters    = new ComboxBoxFilterGroup(
                panelAlertRule, _alertRuleViewHelper, AlertRuleSelectionChanged);
            _alertRuleSelecter = new AlertRuleSelecter(
                _alertRuleFilters, _alertRuleViewHelper, _alertRuleDataHelper);
            _alertRuleView = new ListViewManager <AlertRule>(
                _loggerRef.Target, lvAlertRule, _alertRuleViewHelper,
                _alertRuleSelecter, _alertRuleFilters, new AlertRuleSorter(), _alertRuleDataHelper);

            ICoreCache alertRuleCache = _client.CreateCache(
                update => _alertRuleView.UpdateData(new ViewChangeNotification <AlertRule>
            {
                Change  = update.Change,
                OldData =
                    (AlertRule)update.OldItem?.Data,
                NewData =
                    (AlertRule)update.NewItem?.Data
            }), SynchronizationContext.Current);

            alertRuleCache.SubscribeNoWait <AlertRule>(Expr.ALL, null, null);
            // setup the AlertSignal view
            _alertSignalViewHelper = new AlertSignalViewHelper();
            _alertSignalDataHelper = new AlertSignalDataHelper();
            _alertSignalFilters    = new ComboxBoxFilterGroup(
                panelAlertSignal, _alertSignalViewHelper, AlertSignalSelectionChanged);
            _alertSignalSelecter = new AlertSignalSelecter(
                _alertSignalFilters, _alertSignalViewHelper, _alertSignalDataHelper);
            _alertSignalView = new ListViewManager <AlertSignal>(
                _loggerRef.Target, lvAlertSignal, _alertSignalViewHelper,
                _alertSignalSelecter, _alertSignalFilters, new AlertSignalSorter(), _alertSignalDataHelper);
            ICoreCache alertSignalCache = _client.CreateCache(
                update => _alertSignalView.UpdateData(new ViewChangeNotification <AlertSignal>
            {
                Change  = update.Change,
                OldData =
                    (AlertSignal)update.OldItem?.Data,
                NewData =
                    (AlertSignal)update.NewItem?.Data
            }), SynchronizationContext.Current);

            alertSignalCache.SubscribeNoWait <AlertSignal>(Expr.ALL, null, null);
            // setup the LogEvent view
            _logEventViewHelper = new LogEventViewHelper();
            _logEventDataHelper = new LogEventDataHelper();
            _logEventFilters    = new ComboxBoxFilterGroup(
                panelLogEvent, _logEventViewHelper, LogEventSelectionChanged);
            _logEventSelecter = new LogEventSelecter(
                _logEventFilters, _logEventViewHelper, _logEventDataHelper);
            _logEventView = new ListViewManager <DebugLogEvent>(
                _loggerRef.Target, lvLogEvent, _logEventViewHelper,
                _logEventSelecter, _logEventFilters, new LogEventSorter(), _logEventDataHelper);
            ICoreCache logEventCache = _client.CreateCache(
                update => _logEventView.UpdateData(new ViewChangeNotification <DebugLogEvent>
            {
                Change  = update.Change,
                OldData =
                    (DebugLogEvent)update.OldItem?.Data,
                NewData =
                    (DebugLogEvent)update.NewItem?.Data
            }), SynchronizationContext.Current);

            logEventCache.SubscribeNoWait <DebugLogEvent>(Expr.ALL, null, null);
            // init controls
            // server 0
            _serverAddress[0] = txtServer0Address;
            _ping[0]          = chkServer0Ping;
            _lastChecked[0]   = txtServer0LastChecked;
            _lastReplied[0]   = txtServer0LastReplied;
            _serverStatus[0]  = txtServer0Status;
            _serverReason[0]  = txtServer0OtherInfo;
            // server 1
            _serverAddress[1] = txtServer1Address;
            _ping[1]          = chkServer1Ping;
            _lastChecked[1]   = txtServer1LastChecked;
            _lastReplied[1]   = txtServer1LastReplied;
            _serverStatus[1]  = txtServer1Status;
            _serverReason[1]  = txtServer1OtherInfo;
            // server 2
            _serverAddress[2] = txtServer2Address;
            _ping[2]          = chkServer2Ping;
            _lastChecked[2]   = txtServer2LastChecked;
            _lastReplied[2]   = txtServer2LastReplied;
            _serverStatus[2]  = txtServer2Status;
            _serverReason[2]  = txtServer2OtherInfo;
            // server 3
            _serverAddress[3] = txtServer3Address;
            _ping[3]          = chkServer3Ping;
            _lastChecked[3]   = txtServer3LastChecked;
            _lastReplied[3]   = txtServer3LastReplied;
            _serverStatus[3]  = txtServer3Status;
            _serverReason[3]  = txtServer3OtherInfo;
            // server 4
            _serverAddress[4] = txtServer4Address;
            _ping[4]          = chkServer4Ping;
            _lastChecked[4]   = txtServer4LastChecked;
            _lastReplied[4]   = txtServer4LastReplied;
            _serverStatus[4]  = txtServer4Status;
            _serverReason[4]  = txtServer4OtherInfo;
            // server 5
            _serverAddress[5] = txtServer5Address;
            _ping[5]          = chkServer5Ping;
            _lastChecked[5]   = txtServer5LastChecked;
            _lastReplied[5]   = txtServer5LastReplied;
            _serverStatus[5]  = txtServer5Status;
            _serverReason[5]  = txtServer5OtherInfo;
            for (int i = 0; i < NServers; i++)
            {
                _lastChecked[i].BackColor  = Color.FromKnownColor(KnownColor.Window);
                _lastReplied[i].BackColor  = Color.FromKnownColor(KnownColor.Window);
                _serverStatus[i].BackColor = Color.FromKnownColor(KnownColor.Window);
                _serverReason[i].BackColor = Color.FromKnownColor(KnownColor.Window);
            }
        }
Esempio n. 23
0
 // this class is currently is a placeholder for future selection rules
 public AllEventSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <AllEventObj> dataHelper)
     : base(filterValues, viewHelper, dataHelper)
 {
 }
 public static List<IToken> GetInGroupTokens(this TreeContext context, IFilterGroup filterGroup)
 {
     return context.AllProviderTokensInGroup
                   .GetOrAdd(filterGroup.FilterInfo.FilterToken,
                             () => context.CollectInGroupTokens(filterGroup));
 }
 public static List <IToken> GetInGroupTokens(this TreeContext context, IFilterGroup filterGroup)
 {
     return(context.AllProviderTokensInGroup
            .GetOrAdd(filterGroup.FilterInfo.FilterToken,
                      () => context.CollectInGroupTokens(filterGroup)));
 }
        public static bool IsFilterAbsorbed(this TreeContext context, IFilter filter, IFilterGroup group)
        {
            var node = context.GetGroupNode(group);

            if (node == null)
            {
                return(false);
            }

            return(node.Children.Any(x => context.FilterIsAbsorbedBy(filter, x)));
        }
Esempio n. 27
0
 /// <summary>
 /// Add a new <see cref="IFilterGroup"></see> to the <see cref="IFilterGroup"></see>.
 /// </summary>
 /// <param name="filterGroup">
 /// A <see cref="IFilterGroup"></see> to modify.
 /// </param>
 /// <param name="group">An <see cref="IFilterGroup"></see> to add.</param>
 /// <returns>
 /// A reference to the <paramref name="filterGroup"/> after the
 /// operation has completed.
 /// </returns>
 public static IFilterGroup AddGroup(this IFilterGroup filterGroup, IFilterGroup group)
 {
     filterGroup.Filters.Add(group);
     return(filterGroup);
 }
Esempio n. 28
0
 private static void AddGroupDependency(this IFilterGroup parentGroup,
                                        TreeContext context,
                                        List <INode> dependencies)
 {
     dependencies.Add(context.Tree.GetNode(parentGroup.NodeToken));
 }
Esempio n. 29
0
 // this class is currently is a placeholder for future selection rules
 public QASDefSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <RatesObj> dataHelper)
     : base(filterValues, viewHelper, dataHelper)
 {
 }
        public static IEnumerable <IDependency> GetGroupDependencies(TreeContext context, IFilterGroup filterGroup)
        {
            var inGroupTokens     = context.GetInGroupTokens(filterGroup);
            var groupDependencies = inGroupTokens
                                    .SelectMany(x => context.Store.Providers[x].Dependencies)
                                    .Concat(context.GetInGroupFilters(filterGroup).SelectMany(x => x.Dependencies))
                                    .Concat(filterGroup.GroupDependencies)
                                    .Where(dependency => !inGroupTokens.Contains(dependency.Token))
                                    .DistinctDependencies()
                                    .ToList();

            return(groupDependencies);
        }
Esempio n. 31
0
 /// <summary>
 /// Add a new <see cref="IFilterExpression"></see> to the <see cref="IFilterGroup"></see>.
 /// </summary>
 /// <param name="filterGroup">
 /// A <see cref="IFilterGroup"></see> to modify.
 /// </param>
 /// <param name="filter">
 /// An <see cref="IFilterExpression"></see> to add.
 /// </param>
 /// <returns>
 /// A reference to the <paramref name="filterGroup"/> after the
 /// operation has completed.
 /// </returns>
 public static IFilterGroup AddExpression(this IFilterGroup filterGroup, IFilterExpression filter)
 {
     filterGroup.Filters.Add(filter);
     return(filterGroup);
 }
Esempio n. 32
0
        private void Form1_Load(object sender, EventArgs e)
        {
            _MainLog    = new TextBoxLogger(txtLog);
            _WorkerALog = new TextBoxLogger(txtWorkerALog);
            _WorkerBLog = new TextBoxLogger(txtWorkerBLog);
            _ManagerLog = new TextBoxLogger(txtManagerLog);
            _ClientRef  = Reference <ICoreClient> .Create(new CoreClientFactory(_MainLog).Create());

            // init controls
            txtWorkerComputer.Text = Environment.MachineName;
            txtWorkerInstance.Text = "A";
            // - form title
            WinFormHelper.SetAppFormTitle(this, BuildConst.BuildEnv);

            cbMarketName.Items.Add(CurveConst.QR_EOD);
            cbMarketName.Items.Add(CurveConst.NAB_EOD);
            cbMarketName.SelectedIndex = 0;

            cbCounterParty.Items.Add("14859,Woolworths");
            cbCounterParty.Items.Add("13142,Barclays");
            cbCounterParty.SelectedIndex = 0;


            // setup the request progress view
            _ProgressViewHelper = new ProgressViewHelper();
            _ProgressDataHelper = new ProgressDataHelper();
            _ProgressFilters    = new ComboxBoxFilterGroup(
                panelProgress, _ProgressViewHelper, new EventHandler(ProgressSelectionChanged));
            _ProgressSelecter = new ProgressSelecter(
                _ProgressFilters, _ProgressViewHelper, _ProgressDataHelper);
            _ProgressView = new ListViewManager <ProgressObj>(
                _MainLog, lvProgress, _ProgressViewHelper,
                _ProgressSelecter, _ProgressFilters, new ProgressSorter(), _ProgressDataHelper);

            _ClientRef.Target.SubscribeNoWait <PortfolioValuationRequest>(Expr.ALL, ProgressCallback, null);
            _ClientRef.Target.SubscribeNoWait <TradeValuationRequest>(Expr.ALL, ProgressCallback, null);
            _ClientRef.Target.SubscribeNoWait <OrdinaryCurveGenRequest>(Expr.ALL, ProgressCallback, null);
            _ClientRef.Target.SubscribeNoWait <StressedCurveGenRequest>(Expr.ALL, ProgressCallback, null);
            _ClientRef.Target.SubscribeNoWait <UnassignedWorkflowRequest>(Expr.ALL, ProgressCallback, null);
            _ClientRef.Target.SubscribeNoWait <AssignedWorkflowRequest>(Expr.ALL, ProgressCallback, null);
            _ClientRef.Target.SubscribeNoWait <HandlerResponse>(Expr.ALL, ProgressCallback, null);
            _ClientRef.Target.SubscribeNoWait <WorkerResponse>(Expr.ALL, ProgressCallback, null);
            _ClientRef.Target.SubscribeNoWait <ManagerResponse>(Expr.ALL, ProgressCallback, null);

            // setup the worker availability view
            _AvailabilityViewHelper = new AvailabilityViewHelper();
            _AvailabilityDataHelper = new AvailabilityDataHelper();
            _AvailabilityFilters    = new ComboxBoxFilterGroup(
                panelAvailability, _AvailabilityViewHelper, new EventHandler(AvailabilitySelectionChanged));
            _AvailabilitySelecter = new AvailabilitySelecter(
                _AvailabilityFilters, _AvailabilityViewHelper, _AvailabilityDataHelper);
            _AvailabilityView = new ListViewManager <WorkerAvailability>(
                _MainLog, lvAvailability, _AvailabilityViewHelper,
                _AvailabilitySelecter, _AvailabilityFilters, new AvailabilitySorter(), _AvailabilityDataHelper);

            ICoreCache _AvailabilityCache = _ClientRef.Target.CreateCache(
                delegate(CacheChangeData update)
            {
                _AvailabilityView.UpdateData(new ViewChangeNotification <WorkerAvailability>()
                {
                    Change  = update.Change,
                    OldData = (update.OldItem != null) ? (WorkerAvailability)update.OldItem.Data : null,
                    NewData = (update.NewItem != null) ? (WorkerAvailability)update.NewItem.Data : null
                });
            }, WindowsFormsSynchronizationContext.Current);

            _AvailabilityCache.SubscribeNoWait <WorkerAvailability>(Expr.ALL, null, null);
        }
Esempio n. 33
0
 // this class is currently is a placeholder for future selection rules
 public AvailabilitySelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <WorkerAvailability> dataHelper)
     : base(filterValues, viewHelper, dataHelper)
 {
 }
        private static List <IFilter> CollectInGroupFilters(this TreeContext context, IFilterGroup filterGroup)
        {
            var filters = context.FiltersInGroup
                          .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List <IFilter>())
                          .ToList();

            filters.AddRange(filters.OfType <IFilterGroup>().SelectMany(context.GetInGroupFilters).ToList());
            return(filters);
        }
Esempio n. 35
0
 // this class is currently is a placeholder for future selection rules
 public ProgressSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <ProgressObj> dataHelper)
     : base(filterValues, viewHelper, dataHelper)
 {
 }
 private static IFilter CreateExistsFilter(INode node, IFilterGroup filterGroup)
 {
     var dependency = new CollectionDependency(node.Token);
     return new ExistsFilter(dependency, filterGroup.FilterInfo);
 }
 private static INode CreateNodeForFilterGroup(this TreeContext context, IFilterGroup filterGroup)
 {
     var groupDependencies = GroupFiltersService.GetGroupDependencies(context, filterGroup);
     var provider = new GroupProvider(groupDependencies, filterGroup, context.Store, filterGroup.DiagInfo);
     return Node.CreateNode(filterGroup.NodeToken, provider, true, context);
 }
Esempio n. 38
0
        /// <summary>
        /// Filter a collection of ruminants by the parameters defined in the filter group
        /// </summary>
        public static IEnumerable <Ruminant> FilterRuminants(this IEnumerable <Ruminant> individuals, IFilterGroup group)
        {
            var filters = group.FindAllChildren <RuminantFilter>();

            string TestGender(RuminantFilter filter, string gender)
            {
                /* CONDITIONAL LOGIC IS ORDER DEPENDENT, DO NOT REARRANGE */

                // Gender is already determined
                if (gender == "Both")
                {
                    return(gender);
                }

                // If gender is undetermined, use the filter gender
                if (gender == "Either")
                {
                    return(filter.Gender);
                }

                // No need to change gender if parameter is genderless
                if (filter.Gender == "Either")
                {
                    return(gender);
                }

                // If the genders do not match, return both
                if (filter.Gender != gender)
                {
                    return("Both");
                }
                // If the genders match, return the current gender
                else
                {
                    return(gender);
                }
            }

            // Which gender do the parameters belong to
            string genders = filters.Aggregate("Either", (s, f) => TestGender(f, s));

            group.CombinedRules = filters.Select(f => f.ToRule());

            // There will be no ruminants with parameters belonging to both genders
            IEnumerable <Ruminant> result = new List <Ruminant>();

            if (genders == "Either")
            {
                result = individuals;
            }

            else if (genders == "Female")
            {
                result = individuals.OfType <RuminantFemale>();
            }

            else if (genders == "Male")
            {
                result = individuals.OfType <RuminantMale>();
            }

            else
            {
                return(result);
            }

            double proportion = group.Proportion <= 0 ? 1 : group.Proportion;
            int    number     = Convert.ToInt32(Math.Ceiling(proportion * individuals.Count()));

            var sorts = group.FindAllChildren <ISort>();

            return(result.Filter(group).Sort(sorts).Take(number));
        }
        private static IFilter CreateExistsFilter(INode node, IFilterGroup filterGroup)
        {
            var dependency = new CollectionDependency(node.Token);

            return(new ExistsFilter(dependency, filterGroup.FilterInfo));
        }