mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-30 07:38:51 +00:00
43 lines
2.1 KiB
Java
43 lines
2.1 KiB
Java
package com.imprimelibros.erp.datatables;
|
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
import java.util.*;
|
|
|
|
public class DataTablesParser {
|
|
public static DataTablesRequest from(HttpServletRequest req) {
|
|
DataTablesRequest dt = new DataTablesRequest();
|
|
dt.draw = parseInt(req.getParameter("draw"), 0);
|
|
dt.start = parseInt(req.getParameter("start"), 0);
|
|
dt.length = parseInt(req.getParameter("length"), 10);
|
|
|
|
if (req.getParameter("search[value]") != null) {
|
|
dt.search.value = req.getParameter("search[value]");
|
|
dt.search.regex = Boolean.parseBoolean(req.getParameter("search[regex]"));
|
|
}
|
|
|
|
for (int i=0;; i++) {
|
|
String data = req.getParameter("columns["+i+"][data]");
|
|
if (data == null) break;
|
|
DataTablesRequest.Column c = new DataTablesRequest.Column();
|
|
c.data = data;
|
|
c.name = Optional.ofNullable(req.getParameter("columns["+i+"][name]")).orElse(data);
|
|
c.searchable = Boolean.parseBoolean(Optional.ofNullable(req.getParameter("columns["+i+"][searchable]")).orElse("true"));
|
|
c.orderable = Boolean.parseBoolean(Optional.ofNullable(req.getParameter("columns["+i+"][orderable]")).orElse("true"));
|
|
c.search.value = Optional.ofNullable(req.getParameter("columns["+i+"][search][value]")).orElse("");
|
|
dt.columns.add(c);
|
|
}
|
|
for (int i=0;; i++) {
|
|
String colIdx = req.getParameter("order["+i+"][column]");
|
|
if (colIdx == null) break;
|
|
DataTablesRequest.Order o = new DataTablesRequest.Order();
|
|
o.column = parseInt(colIdx,0);
|
|
o.dir = Optional.ofNullable(req.getParameter("order["+i+"][dir]")).orElse("asc");
|
|
dt.order.add(o);
|
|
}
|
|
|
|
// guarda TODOS los params crudos (para filtros custom)
|
|
req.getParameterMap().forEach((k,v) -> dt.raw.put(k, v!=null && v.length>0 ? v[0] : null));
|
|
return dt;
|
|
}
|
|
private static int parseInt(String s, int def){ try{return Integer.parseInt(s);}catch(Exception e){return def;}}
|
|
} |