private void sort()

in nuget-feed/src/jetbrains/buildServer/nuget/feed/server/olingo/processor/NuGetPackagesProcessor.java [596:626]


  private <T> void sort(final List<T> data, final OrderByExpression orderBy) {
    Collections.sort(data, (entity1, entity2) -> {
      try {
        int result = 0;
        for (final OrderExpression expression : orderBy.getOrders()) {
          final String first = myEvaluator.evaluateExpression(entity1, expression.getExpression());
          final String second = myEvaluator.evaluateExpression(entity2, expression.getExpression());

          if (first != null && second != null) {
            result = first.compareTo(second);
          } else if (first == null && second != null) {
            result = 1;
          } else if (first != null) {
            result = -1;
          }

          if (expression.getSortOrder() == SortOrder.desc) {
            result = -result;
          }

          if (result != 0) {
            break;
          }
        }
        return result;
      } catch (final ODataException e) {
        LOG.infoAndDebugDetails("Unable to order collection", e);
        return 0;
      }
    });
  }