protected List<OrderByClause> getOrderByClauses(final String orderBy) {
    if (StringUtils.isBlank(orderBy)) {
      return Collections.<OrderByClause>emptyList();
    }

    List<OrderByClause> result = new ArrayList<>();

    for (String clause : orderBy.split(",")) {
      String[] elems = clause.split(" ");

      if (elems.length > 0 && StringUtils.isNotBlank(elems[0])) {
        OrderByClause obc = new OrderByClause();
        obc.setField(elems[0].trim());
        if (elems.length > 1 && StringUtils.isNotBlank(elems[1])) {
          obc.setDirection(
              elems[1].trim().equalsIgnoreCase(OrderByClause.Direction.ASC.name())
                  ? OrderByClause.Direction.ASC
                  : OrderByClause.Direction.DESC);
        }
        result.add(obc);
      }
    }

    return result;
  }