/// <summary> /// Vraca sve linije koje ispunjavaju prost linijski kriterijum /// </summary> /// <param name="criteria"></param> /// <returns></returns> public List <ncLine> selectLines(ncLineCriteria criteria, IEnumerable <ncLine> input = null) { if (input == null) { input = this; } List <ncLine> output = new List <ncLine>(); if (!String.IsNullOrEmpty(criteria.customCommand)) { criteria.customCommand = criteria.customCommand.ToUpper(); } foreach (ncLine line in input) { Boolean selectOk = criteria.testLineCriteria(line); // testLineCriteria(line, criteria); if (selectOk) { output.Add(line); } } return(output); }
/// <summary> /// Pasivni konstruktor - nista ne kalkulise samo definise /// </summary> /// <param name="__source"></param> /// <param name="__criteria"></param> /// <param name="selected"></param> public ncLineSelectedCollection(ncLineCollection __source, ncLineCriteria __criteria, IEnumerable <ncLine> selected) { source = __source; criteria = __criteria; foreach (ncLine ln in selected) { Add(ln); } }
/// <summary> /// Pravi kolekciju selektovanih linija na osnovu prosledjenog kriterijuma koji moze biti selektor ili obican kriterijum /// </summary> /// <param name="criteria"></param> /// <returns></returns> public ncLineSelectedCollection getSelection(ncLineCriteria criteria) { List <ncLine> lns = new List <ncLine>();// selectLines(criteria); if (criteria.GetType() == typeof(ncLineCriteria)) { lns = selectLines(criteria); } if (criteria.GetType() == typeof(ncLineRelativeCriteria)) { lns = filterSelectedLines(criteria as ncLineRelativeCriteria); } if (criteria.GetType() == typeof(ncLineSelector)) { lns = selectLinesBySelector(criteria as ncLineSelector); } return(new ncLineSelectedCollection(this, criteria, lns)); }
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); }