@Override
 public int getColumnToSort() {
   if (state != null) {
     return state.getSortColumn();
   } else {
     return 0;
   }
 }
  @Override
  public void init(String name, String url, ServletRequest request, HttpSession session) {
    columns = new ArrayList<>();
    lines = new ArrayList<>();
    this.name = name;
    setRoutingAddress(url);
    this.session = session;
    this.request = request;

    state = (ArrayPaneStatusBean) session.getAttribute(getName());
    if (state == null) {
      state = new ArrayPaneStatusBean();
      session.setAttribute(getName(), state);
    }

    String target = request.getParameter(TARGET_PARAMETER_NAME);

    if (target != null && target.equals(name)) {
      String action = request.getParameter(ACTION_PARAMETER_NAME);

      if ("Sort".equals(action)) {
        String newState = request.getParameter(COLUMN_PARAMETER_NAME);
        if (newState != null) {
          int ns = Integer.parseInt(newState);
          if ((ns == state.getSortColumn()) || (ns + state.getSortColumn() == 0)) {
            state.setSortColumn(-state.getSortColumn());
          } else {
            state.setSortColumn(ns);
          }
        }
      } else if ("ChangePage".equals(action)) {
        String index = request.getParameter(INDEX_PARAMETER_NAME);
        state.setFirstVisibleLine(Integer.parseInt(index));
      }
    }

    if (state.getSortColumn() >= 1) {
      setColumnToSort(state.getSortColumn());
    }
  }
  @Override
  public void setColumnToSort(int columnNumber) {

    state.setSortColumn(columnNumber);
  }
 @Override
 public void setVisibleLineNumber(int maximum) {
   state.setMaximumVisibleLine(maximum);
 }