/// <summary> /// Формирование дерева с результатом. /// </summary> //private void insertSoldier(int table, int index, string parsingString, cRsrcsNode parent, int deep, string nariad, string nariadGroup, bool kontrakt, bool free) public void insertSoldier(cSoldier soldier, cRsrcsNode parent, int index, int deep) { // Добавляем солдата в список, если он не скрыт: if (!soldier.inUse) { return; } // Вспомогательные переменные: string group; // Ищем в parent группу с именем group: // Определяем, какого служащего добавляем. Свободного или нет: if (String.IsNullOrEmpty(soldier.task)) // Свободного: { group = getGroupName(soldier.place, deep); if ((deep == 0 && group == null) || (deep == 1 && group == null)) { return; } parent.Count++; // Количество личного состава в поддереве. if (group == null) // значит элемент записываем в parent: { parent.Nodes.Add(new cRsrcsNode(soldier, index, deep)); } else // Необходимо дальше искать группу для элемента: { int ind = getGroupIndex(parent, group); if (ind == -1) // Группу с таким именем не нашли, создаем новую: { cRsrcsNode n = new cRsrcsNode(null, parent.Nodes.Count, deep + 1); n.Group = group; parent.Nodes.Add(n); insertSoldier(soldier, n, index, deep + 1); } else { insertSoldier(soldier, parent.Nodes[ind], index, deep + 1); } } } else // Добавление столбцов с нарядами: { switch (deep) { case 0: group = getGroupName(soldier.place, 0); break; case 1: group = getTaskCategory(soldier.task); break; case 2: group = soldier.task; break; default: group = null; break; } parent.Count++; // Количество личного состава в поддереве. if (group == null) { parent.Nodes.Add(new cRsrcsNode(soldier, index, deep)); // ???. } else { int ind = getGroupIndex(parent, group); if (ind == -1) // Группу с таким именем не нашли, создаем новую: { cRsrcsNode n = new cRsrcsNode(null, parent.Nodes.Count, deep + 1); n.Group = group; parent.Nodes.Add(n); insertSoldier(soldier, n, index, deep + 1); } else { insertSoldier(soldier, parent.Nodes[ind], index, deep + 1); } } } }
public cRsrcsNode(cSoldier soldier, int index, int deep) { _soldier = soldier; Deep = deep; Index = index; }