Example #1
0
        private void displaySearch_Click(object sender, EventArgs e)
        {
            h      = new EventFrameSearch(this, db);
            search = (OSIsoft.AF.UI.PropertyPage.EventFrameSearchPage)h.Controls["eventFrameSearchPage"];
            //search.EventFrameCriteria.RestoreCriteria(calculationName.Text);
            //search.EventFrameCriteria.LastFullSearchString = queryTextBox.Text;*/
            search.CriteriaInitiallyOpened = true;
            OSIsoft.AF.Search.AFEventFrameSearch query = new OSIsoft.AF.Search.AFEventFrameSearch(db, "search", queryTextBox.Text);
            //OSIsoft.AF.UI.PropertyPage.EventFrameSearchPage search = (OSIsoft.AF.UI.PropertyPage.EventFrameSearchPage)h.Controls["eventFrameSearchPage"];
            AFEventFrameCriteria criteria = queryToCriteria(query);

            search.EventFrameCriteria = criteria;
            //refreshSearchWindow();
            // TODO, try and find the control that shows or doesn't show a certain value filter
            h.Show();
        }
        public static OSIsoft.AF.Search.AFEventFrameSearch criteriaToQuery(AFEventFrameCriteria criteria)
        {
            OSIsoft.AF.Search.AFSearchOperator   ge = OSIsoft.AF.Search.AFSearchOperator.GreaterThanOrEqual;
            OSIsoft.AF.Search.AFSearchOperator   le = OSIsoft.AF.Search.AFSearchOperator.LessThanOrEqual;
            OSIsoft.AF.Search.AFSearchToken      start;
            OSIsoft.AF.Search.AFSearchToken      startGE   = new OSIsoft.AF.Search.AFSearchToken(OSIsoft.AF.Search.AFSearchFilter.Start, ge, "*");
            OSIsoft.AF.Search.AFEventFrameSearch query     = new OSIsoft.AF.Search.AFEventFrameSearch(criteria.Database, "search", criteria.LastFullSearchString);
            OSIsoft.AF.Search.AFSearchToken      endTime   = new OSIsoft.AF.Search.AFSearchToken(OSIsoft.AF.Search.AFSearchFilter.End, OSIsoft.AF.Search.AFSearchOperator.LessThanOrEqual, criteria.EndTime);
            OSIsoft.AF.Search.AFSearchToken      inProgess = new OSIsoft.AF.Search.AFSearchToken(OSIsoft.AF.Search.AFSearchFilter.InProgress, OSIsoft.AF.Search.AFSearchOperator.Equal, criteria.InProgress.ToString());

            if (criteria.SearchMode == AFSearchMode.StartInclusive)
            {
                start = new OSIsoft.AF.Search.AFSearchToken(OSIsoft.AF.Search.AFSearchFilter.Start, le, criteria.StartTime);
                query.Tokens.Add(start);
                start = new OSIsoft.AF.Search.AFSearchToken(OSIsoft.AF.Search.AFSearchFilter.Start, le, criteria.EndTime);
                query.Tokens.Add(start);
            }

            query.Tokens.Add(inProgess);
            return(query);
        }
Example #3
0
        static AFEventFrameCriteria queryToCriteria(OSIsoft.AF.Search.AFEventFrameSearch query)
        {
            AFEventFrameCriteria criteria = new AFEventFrameCriteria();

            criteria.Database = query.Database;
            IList <AFSearchToken> starts;

            query.TryFindSearchTokens(OSIsoft.AF.Search.AFSearchFilter.Start, out starts);
            IList <AFSearchToken> ends;

            query.TryFindSearchTokens(OSIsoft.AF.Search.AFSearchFilter.End, out ends);
            AFSearchToken templatename;

            query.TryFindSearchToken(OSIsoft.AF.Search.AFSearchFilter.Template, out templatename);
            IList <AFSearchToken> values;

            query.TryFindSearchTokens(OSIsoft.AF.Search.AFSearchFilter.Value, out values);

            if (values.Count != 0)
            {
                AFAttributeValueQuery[] queries = new AFAttributeValueQuery[values.Count];
                criteria.AttributeValueQueries = new AFAttributeValueQuery[values.Count];
                criteria.TemplateName          = templatename.Value;
                for (int i = 0; i < values.Count; i++)
                {
                    AFSearchToken       value             = values[i];
                    string              attributeName     = value.Path.TrimStart(new char[] { '|' });
                    AFElementTemplate   template          = query.Database.ElementTemplates[templatename.Value];
                    AFAttributeTemplate templateAttribute = template.AttributeTemplates[attributeName];
                    queries[i] = new AFAttributeValueQuery(templateAttribute, value.Operator, value.Value, templateAttribute.DefaultUOM);
                    criteria.AttributeValueQueries[i] = new AFAttributeValueQuery(templateAttribute, value.Operator, value.Value, templateAttribute.DefaultUOM);
                }

                //criteria.AttributeValueQueries = queries;
                //criteria.ValueQueryString = value.ToString();
                //criteria.
            }
            if (ends.Count == 2)
            {
                criteria.SearchType = OSIsoft.AF.UI.Search.AFBaseEventFrameCriteria.EventFrameSearchType.EndingBetween;
                criteria.StartTime  = ends[0].Value;
                criteria.EndTime    = ends[1].Value;
            }
            else if (starts.Count == 2)
            {
                criteria.SearchType = OSIsoft.AF.UI.Search.AFBaseEventFrameCriteria.EventFrameSearchType.StartingBetween;
                criteria.StartTime  = starts[0].Value;
                criteria.EndTime    = starts[1].Value;
            }
            else if (starts.Count == 1 && ends.Count == 1)
            {
                AFSearchToken start = starts[0];
                AFSearchToken end   = ends[0];
                if (start.Operator == AFSearchOperator.LessThanOrEqual && end.Operator == AFSearchOperator.GreaterThanOrEqual)
                {
                    criteria.SearchType = OSIsoft.AF.UI.Search.AFBaseEventFrameCriteria.EventFrameSearchType.ActiveBetween;
                    criteria.StartTime  = end.Value;
                    criteria.EndTime    = start.Value;
                }
                else if (start.Operator == AFSearchOperator.GreaterThanOrEqual && end.Operator == AFSearchOperator.LessThanOrEqual)
                {
                    criteria.SearchType = OSIsoft.AF.UI.Search.AFBaseEventFrameCriteria.EventFrameSearchType.EntirelyBetween;
                    criteria.StartTime  = start.Value;
                    criteria.EndTime    = end.Value;
                }
            }
            else if (starts.Count == 1)
            {
                AFSearchToken start = starts[0];
                if (start.Operator == AFSearchOperator.GreaterThanOrEqual)
                {
                    criteria.SearchType = OSIsoft.AF.UI.Search.AFBaseEventFrameCriteria.EventFrameSearchType.StartingAfter;
                }
                else
                {
                    criteria.SearchType = OSIsoft.AF.UI.Search.AFBaseEventFrameCriteria.EventFrameSearchType.StartingBefore;
                }
                criteria.AFStartTimeString = start.Value;
            }
            else if (ends.Count == 1)
            {
                AFSearchToken end = ends[0];
                if (end.Operator == AFSearchOperator.GreaterThanOrEqual)
                {
                    criteria.SearchType = OSIsoft.AF.UI.Search.AFBaseEventFrameCriteria.EventFrameSearchType.EndingAfter;
                }
                else
                {
                    criteria.SearchType = OSIsoft.AF.UI.Search.AFBaseEventFrameCriteria.EventFrameSearchType.EndingBefore;
                }
                criteria.AFStartTimeString = end.Value;
            }

            criteria.LastFullSearchString = stripTokens(query);
            return(criteria);
        }
        //private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        public static AFEventFrameCriteria queryToCriteria(OSIsoft.AF.Search.AFEventFrameSearch query)
        {
            AFEventFrameCriteria criteria = new AFEventFrameCriteria();

            IList <OSIsoft.AF.Search.AFSearchToken> starttimes;

            query.TryFindSearchTokens(OSIsoft.AF.Search.AFSearchFilter.Start, out starttimes);

            if (starttimes.Count == 2)
            {
                criteria.SearchMode = AFSearchMode.StartInclusive;
                AFTime start = new AFTime(starttimes[0].Value);
                AFTime end   = new AFTime(starttimes[1].Value);
                if (start < end)
                {
                    criteria.StartTime = starttimes[0].Value;
                    criteria.EndTime   = starttimes[1].Value;
                }
                else
                {
                    criteria.StartTime = starttimes[1].Value;
                    criteria.EndTime   = starttimes[0].Value;
                }
            }
            else if (starttimes.Count == 1)
            {
                criteria.StartTime = starttimes[0].Value;
            }

            OSIsoft.AF.Search.AFSearchToken endtime = new OSIsoft.AF.Search.AFSearchToken();
            query.TryFindSearchToken(OSIsoft.AF.Search.AFSearchFilter.End, out endtime);
            if (endtime.Value != null)
            {
                criteria.EndTime = endtime.Value;
            }
            query.Tokens.Remove(endtime);

            OSIsoft.AF.Search.AFSearchToken inprogress = new OSIsoft.AF.Search.AFSearchToken();
            query.TryFindSearchToken(OSIsoft.AF.Search.AFSearchFilter.InProgress, out inprogress);
            if (inprogress.Value != null)
            {
                criteria.InProgress = inprogress.Value == "True" ? true : false;
            }
            query.Tokens.Remove(inprogress);



            /*
             * //
             * // Summary:
             * //     This is the value of an uninitialized search mode.
             * None = 0,
             * //
             * // Summary:
             * //     Includes all objects whose start time is within the specified range. Also known
             * //     as "Starting Between".
             * StartInclusive = 1,
             * //
             * // Summary:
             * //     Includes all objects whose end time is within the specified range. Also known
             * //     as "Ending Between".
             * EndInclusive = 2,
             * //
             * // Summary:
             * //     Includes all objects whose start and end time are within the specified range.
             * //     Also know as "Entirely Between".
             * Inclusive = 3,
             * //
             * // Summary:
             * //     Includes all objects whose time range overlaps with the specified range at any
             * //     point in time. Also known as "Active Between".
             * Overlapped = 4,
             * //
             * // Summary:
             * //     Includes all objects whose start time is within the specified range and end time
             * //     is OSIsoft.AF.Time.AFTime.MaxValue. Also known as "Starting Between and In Progress".
             * InProgress = 5
             */
            criteria.LastFullSearchString = query.ToString();
            return(criteria);
        }