/// <summary>
        /// Testira lineRelativeCriteria uslov
        /// </summary>
        /// <param name="line"></param>
        /// <param name="criteria"></param>
        /// <returns></returns>
        public Boolean testLineRelativeCriteria(ncLine line, ncLineRelativeCriteria criteria)
        {
            Boolean selectOk = false;

            switch (criteria.relativeType)
            {
            case ncLineRelativeCriteriaType.disabled:
                selectOk = true;
                break;

            case ncLineRelativeCriteriaType.onExactPosition:
                if (criteria.relativePosition == 0)
                {
                    selectOk = true;
                }
                else
                {
                    ncLine relLine = getLineAt(line.index + criteria.relativePosition, false);
                    if (relLine == null)
                    {
                        selectOk = false;
                    }
                    else
                    {
                        selectOk = criteria.testLineCriteria(relLine, false);    //testLineCriteria(relLine, criteria);
                    }
                }
                break;

            case ncLineRelativeCriteriaType.anywhereWithin:
                List <ncLine> relLines = getLines(line.index, line.index + criteria.relativePosition, true);
                foreach (ncLine ln in relLines)
                {
                    if (criteria.testLineCriteria(ln, false))
                    {
                        selectOk = true;
                        break;
                    }
                }
                break;
            }
            return(selectOk);
        }
        /// <summary>
        /// Filtrira listu linija na osnovu relativnog kriterijuma
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        public List <ncLine> filterSelectedLines(ncLineRelativeCriteria criteria, IEnumerable <ncLine> input = null)
        {
            if (input == null)
            {
                input = this;
            }
            List <ncLine> output = new List <ncLine>();

            foreach (ncLine line in input)
            {
                Boolean selectOk = testLineRelativeCriteria(line, criteria);
                if (selectOk)
                {
                    output.Add(line);
                }
            }

            return(output);
        }
Ejemplo n.º 3
0
        public static String writeLineCriteriaInline(this ncLineCriteria criteria)
        {
            String output = "";

            output = output.add("Criteria type[" + criteria.GetType().Name + "]");

            if (criteria.commandCriteria == ncLineCommandPredefined.custom)
            {
                output.add("cust.command[" + criteria.customCommand + "]");
            }
            else
            {
                output.add("command[" + criteria.commandCriteria.ToString() + "]");
            }

            if (criteria is ncLineRelativeCriteria)
            {
                ncLineRelativeCriteria rc = criteria as ncLineRelativeCriteria;

                output.addVal("relation type: ", rc.relativeType.ToString());

                output.addVal("relation offset: ", rc.relativePosition.ToString());
            }

            if (criteria is ncLineSelector)
            {
                ncLineSelector sc = criteria as ncLineSelector;

                output.addVal("included relative criterias: ", sc.Count().ToString());

                foreach (ncLineRelativeCriteria rc in sc)
                {
                    output.log(rc.writeLineCriteriaInline());
                }
            }
            return(output);
        }