public static int compareParentToChild()

in src/org/jetbrains/tfsIntegration/core/tfs/VersionControlPath.java [108:148]


  public static int compareParentToChild(@NotNull String path1, boolean isDirectory1, @NotNull String path2, boolean isDrectory2) {
    String[] pathComponents1 = getPathComponents(path1);
    String[] pathComponents2 = getPathComponents(path2);

    final int minLength = Math.min(pathComponents1.length, pathComponents2.length);

    // first compare all the levels except last one
    for (int i = 0; i < minLength - 1; i++) {
      String s1 = pathComponents1[i];
      String s2 = pathComponents2[i];
      if (!s1.equals(s2)) {
        return s1.compareTo(s2);
      }
    }

    // compare last level
    if (pathComponents1.length == pathComponents2.length) {
      if (isDirectory1 == isDrectory2) {
        return pathComponents1[pathComponents1.length - 1].compareTo(pathComponents2[pathComponents2.length - 1]);
      }
      else {
        return isDirectory1 ? 1 : -1;
      }
    }
    else {
      if (pathComponents1.length == minLength && !isDirectory1) {
        return -1;
      }
      else if (pathComponents2.length == minLength && !isDrectory2) {
        return 1;
      }
      else {
        if (pathComponents1[minLength - 1].equals(pathComponents2[minLength - 1])) {
          return pathComponents1.length - pathComponents2.length;
        }
        else {
          return pathComponents1[minLength - 1].compareTo(pathComponents2[minLength - 1]);
        }
      }
    }
  }