Example #1
0
  int traverse(DictIndex0Item item, int type, List itemsList) {
    int result = 0;
    Iterator i = item.childrenItemMap.values().iterator();
    DictIndex0Item child;
    boolean firstChild = true;
    int childrenNum = item.childrenItemMap.size();
    int pathNum;
    while (i.hasNext()) {
      child = (DictIndex0Item) i.next();
      switch (type) {
        case GET_CHILDREN_NUM:
          result = childrenNum;
          break;
        case GET_OFFSET:
          offset_ += 8;
          child.index0Offset = offset_;
          break;
        case GET_1STCLD_OFFSET:
          if (firstChild) {
            item.firstChildIndex0Offset = child.index0Offset;
            firstChild = false;
          }
          break;
        case GET_PATH_NUM:
          break;
        case GET_LIST:
          itemsList.add(child);
          break;
        case REMOVE_SMALLITEMS:
          pathNum = traverse(child, GET_PATH_NUM, itemsList);
          if (pathNum <= minwords) {
            child.childrenSize = pathNum;
            child.removeChildren();
          }
          break;
        case PRINT:
          print(child);
      }
    }

    i = item.childrenItemMap.values().iterator();
    while (i.hasNext()) {
      deep++;
      child = (DictIndex0Item) i.next();
      result += traverse(child, type, itemsList);
    }
    if (item.childrenItemMap.size() == 0 && type == GET_PATH_NUM) result = 1;

    deep--;
    return result;
  }