Ejemplo n.º 1
0
  private void createAPath(Road neighbourRoad, Path path) {
    if (!path.contains(neighbourRoad)) {
      path.add(neighbourRoad);
      added.add(neighbourRoad);
    }

    addEntrances(path, neighbourRoad);

    for (Road road : roadHelper.getConnectedRoads(neighbourRoad.getID())) {
      if (entrances.contains(road) || added.contains(road)) {
        continue;
      }
      if (end || roadHelper.getConnectedRoads(neighbourRoad.getID()).size() == 1) {
        return;
      }
      if (headRoads.contains(road)) {
        if (!end) {
          end = true;
          if (!path.contains(road)) {
            path.add(road);
          }
          path.setEndOfPath(road);
        }
      } else if (!end) {
        createAPath(road, path);
      }
    }
    if (!end) {
      for (Road neighbourR : roadHelper.getConnectedRoads(neighbourRoad.getID())) {
        if (headRoads.contains(neighbourR)) {
          if (!path.contains(neighbourR)) {
            path.add(neighbourR);
          }
          path.setEndOfPath(neighbourR);
          end = true;
        }
      }
    }
  }