/// <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); }
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); }