private String previousElement(VariablesSecureApp vars, String strSelected, TableSQLData tableSQL)
     throws IOException, ServletException {
   if (strSelected == null || strSelected.equals("")) return firstElement(vars, tableSQL);
   if (tableSQL != null) {
     String data = null;
     try {
       String strSQL =
           ModelSQLGeneration.generateSQLonlyId(
               this,
               vars,
               tableSQL,
               (tableSQL.getTableName() + "." + tableSQL.getKeyColumn() + " AS ID"),
               new Vector<String>(),
               new Vector<String>(),
               0,
               0);
       ExecuteQuery execquery =
           new ExecuteQuery(this, strSQL, tableSQL.getParameterValuesOnlyId());
       data =
           execquery.selectAndSearch(
               ExecuteQuery.SearchType.PREVIOUS, strSelected, tableSQL.getKeyColumn());
     } catch (Exception e) {
       log4j.error("Error getting previous element", e);
     }
     if (data != null) {
       return data;
     }
   }
   return strSelected;
 }
 private String lastElement(VariablesSecureApp vars, TableSQLData tableSQL)
     throws IOException, ServletException {
   if (tableSQL != null) {
     String data = null;
     try {
       String strSQL =
           ModelSQLGeneration.generateSQLonlyId(
               this,
               vars,
               tableSQL,
               (tableSQL.getTableName() + "." + tableSQL.getKeyColumn() + " AS ID"),
               new Vector<String>(),
               new Vector<String>(),
               0,
               0);
       ExecuteQuery execquery =
           new ExecuteQuery(this, strSQL, tableSQL.getParameterValuesOnlyId());
       data = execquery.selectAndSearch(ExecuteQuery.SearchType.LAST, "", tableSQL.getKeyColumn());
     } catch (Exception e) {
       log4j.error("Error getting last element", e);
     }
     if (data != null) return data;
   }
   return "";
 }
 private int getKeyPosition(VariablesSecureApp vars, String strSelected, TableSQLData tableSQL)
     throws IOException, ServletException {
   if (log4j.isDebugEnabled()) log4j.debug("getKeyPosition: " + strSelected);
   if (tableSQL != null) {
     String data = null;
     try {
       String strSQL =
           ModelSQLGeneration.generateSQLonlyId(
               this,
               vars,
               tableSQL,
               (tableSQL.getTableName() + "." + tableSQL.getKeyColumn() + " AS ID"),
               new Vector<String>(),
               new Vector<String>(),
               0,
               0);
       ExecuteQuery execquery =
           new ExecuteQuery(this, strSQL, tableSQL.getParameterValuesOnlyId());
       data =
           execquery.selectAndSearch(
               ExecuteQuery.SearchType.GETPOSITION, strSelected, tableSQL.getKeyColumn());
     } catch (Exception e) {
       log4j.error("Error getting key position", e);
     }
     if (data != null) {
       // split offset -> (page,relativeOffset)
       int absoluteOffset = Integer.valueOf(data);
       int page = absoluteOffset / TableSQLData.maxRowsPerGridPage;
       int relativeOffset = absoluteOffset % TableSQLData.maxRowsPerGridPage;
       log4j.debug(
           "getKeyPosition: absOffset: "
               + absoluteOffset
               + "=> page: "
               + page
               + " relOffset: "
               + relativeOffset);
       String currPageKey = tabId + "|" + "currentPage";
       vars.setSessionValue(currPageKey, String.valueOf(page));
       return relativeOffset;
     }
   }
   return 0;
 }