@RequestMapping(value = "developReport/hql", method = RequestMethod.POST) public ModelAndView executeHql(@RequestParam(L_HQL) final String hql) { if (!showReportDevelopment) { return new ModelAndView(new RedirectView("/")); } try { List<Entity> entities = dataDefinitionService.get("qcadooPlugin", "plugin").find(hql).list().getEntities(); if (entities.isEmpty()) { return new ModelAndView(L_QCADOO_REPORT_HQL) .addObject(L_HQL, hql) .addObject("isEmpty", true); } else { DataDefinition dataDefinition = entities.get(0).getDataDefinition(); List<String> headers = new ArrayList<String>(); if (!isDynamicDataDefinition(dataDefinition)) { headers.add("id"); } headers.addAll(dataDefinition.getFields().keySet()); List<List<String>> rows = new ArrayList<List<String>>(); for (Entity entity : entities) { List<String> row = new ArrayList<String>(); if (!isDynamicDataDefinition(dataDefinition)) { row.add(String.valueOf(entity.getId())); } for (String field : dataDefinition.getFields().keySet()) { if (entity.getField(field) == null) { row.add(""); } else if (entity.getField(field) instanceof EntityList) { row.add("[]"); } else { row.add(String.valueOf(entity.getField(field))); } } rows.add(row); } return new ModelAndView(L_QCADOO_REPORT_HQL) .addObject(L_HQL, hql) .addObject("headers", headers) .addObject("rows", rows) .addObject("isOk", true); } } catch (Exception e) { return showException(L_QCADOO_REPORT_HQL, e).addObject(L_HQL, hql); } }