@SuppressWarnings("unchecked")
  private void sortBranches(List<Branch> branches) {
    // sort if requested
    SortInfo sortInfo = RestUtilities.calculateSorting(m_form);

    if (!sortInfo.getSort()) {
      return;
    }

    SortField sortField = SortField.toSortField(sortInfo.getSortField());
    boolean sortForward = sortInfo.getDirectionForward();

    switch (sortField) {
      case CITY:
        if (sortForward) {
          Collections.sort(branches, new CityComparator());
        } else {
          Collections.sort(branches, new ReverseComparator(new CityComparator()));
        }
        break;

      case OFFICEDESIGNATION:
        if (sortForward) {
          Collections.sort(branches, new OfficeDesignationComparator());
        } else {
          Collections.sort(branches, new ReverseComparator(new OfficeDesignationComparator()));
        }
        break;

      case NAME:
        if (sortForward) {
          Collections.sort(branches, new NameComparator());
        } else {
          Collections.sort(branches, new ReverseComparator(new NameComparator()));
        }
        break;

      case DESCRIPTION:
        if (sortForward) {
          Collections.sort(branches, new DescriptionComparator());
        } else {
          Collections.sort(branches, new ReverseComparator(new DescriptionComparator()));
        }
        break;

      default:
        break;
    }
  }
  @SuppressWarnings("unchecked")
  private void sortAgents(List<OpenAcdAgent> agents) {
    // sort groups if requested
    SortInfo sortInfo = RestUtilities.calculateSorting(m_form);

    if (!sortInfo.getSort()) {
      return;
    }

    SortField sortField = SortField.toSortField(sortInfo.getSortField());
    boolean sortForward = sortInfo.getDirectionForward();

    switch (sortField) {
      case NAME:
        if (sortForward) {
          Collections.sort(agents, new NameComparator());
        } else {
          Collections.sort(agents, new ReverseComparator(new NameComparator()));
        }
        break;

      case GROUP:
        if (sortForward) {
          Collections.sort(agents, new GroupComparator());
        } else {
          Collections.sort(agents, new ReverseComparator(new GroupComparator()));
        }
        break;

      case SECURITY:
        if (sortForward) {
          Collections.sort(agents, new SecurityComparator());
        } else {
          Collections.sort(agents, new ReverseComparator(new SecurityComparator()));
        }
        break;

      case USERNAME:
        if (sortForward) {
          Collections.sort(agents, new UserNameComparator());
        } else {
          Collections.sort(agents, new ReverseComparator(new UserNameComparator()));
        }
        break;

      case FIRSTNAME:
        if (sortForward) {
          Collections.sort(agents, new FirstNameComparator());
        } else {
          Collections.sort(agents, new ReverseComparator(new FirstNameComparator()));
        }
        break;

      case LASTNAME:
        if (sortForward) {
          Collections.sort(agents, new LastNameComparator());
        } else {
          Collections.sort(agents, new ReverseComparator(new LastNameComparator()));
        }
        break;

      case BRANCH:
        if (sortForward) {
          Collections.sort(agents, new BranchComparator());
        } else {
          Collections.sort(agents, new ReverseComparator(new BranchComparator()));
        }
        break;

      case EXTENSION:
        if (sortForward) {
          Collections.sort(agents, new ExtensionComparator());
        } else {
          Collections.sort(agents, new ReverseComparator(new ExtensionComparator()));
        }
        break;

      default:
        break;
    }
  }