List of usage examples for org.hibernate.engine.jdbc.internal BasicFormatterImpl BasicFormatterImpl
BasicFormatterImpl
From source file:be.shad.tsqb.hql.HqlQuery.java
License:Apache License
/** * String with newlines and spaces to outline the query in a pretty format. *///from w ww. j av a 2s . c o m public String toFormattedString() { BasicFormatterImpl formatter = new BasicFormatterImpl(); String prettyHql = formatter.format(getHql()); prettyHql = prettyHql.replaceAll("((from|join|select|where)\\n\\s*)", "$2 "); return prettyHql + "\n --- with: " + params.toString().replace("PARAM [", "\n["); }
From source file:org.unitime.timetable.action.HibernateQueryTestAction.java
License:Open Source License
/** * Method execute//from www . j a v a 2 s . c om * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { sessionContext.checkPermission(Right.TestHQL); String op = request.getParameter("op"); if (op == null || !op.equals("Submit")) { if ("Clear Cache".equals(op)) HibernateUtil.clearCache(); return mapping.findForward("displayQueryForm"); } HibernateQueryTestForm frm = (HibernateQueryTestForm) form; ActionMessages errors = frm.validate(mapping, request); Logger sqlLog = Logger.getLogger("org.hibernate.SQL"); if (iOriginalLevel == null) iOriginalLevel = sqlLog.getLevel(); sqlLog.setLevel(Level.DEBUG); ByteArrayOutputStream out = new ByteArrayOutputStream(); Appender myAppender = new WriterAppender(new PatternLayout("%m%n"), out); sqlLog.addAppender(myAppender); if (errors.size() == 0) { try { int limit = ApplicationProperty.TestHQLMaxLines.intValue(); String query = frm.getQuery(); _RootDAO rdao = new _RootDAO(); Session hibSession = rdao.getSession(); Query q = hibSession.createQuery(query); try { List l = q.list(); StringBuffer s = new StringBuffer(); int line = 0; for (Iterator i = l.iterator(); i.hasNext(); line++) { if (limit > 0 && line >= limit) { s.append("<tr><td>...</td></tr>"); break; } Object o = i.next(); if (s.length() == 0) printHeader(s, o); printLine(s, o, (SessionImplementor) hibSession); } if (s.length() > 0) { printFooter(s); request.setAttribute("result", s.toString()); } frm.setListSize(String.valueOf(l.size())); } catch (QueryExecutionRequestException e) { Transaction tx = null; try { tx = hibSession.beginTransaction(); int i = q.executeUpdate(); request.setAttribute("result", i + " lines updated."); frm.setListSize(String.valueOf(i)); tx.commit(); } catch (Exception ex) { if (tx != null && tx.isActive()) tx.rollback(); throw ex; } hibSession.flush(); HibernateUtil.clearCache(); } } catch (Exception e) { errors.add("query", new ActionMessage("errors.generic", e.getMessage())); Debug.error(e); } } sqlLog.removeAppender(myAppender); sqlLog.setLevel(iOriginalLevel == null ? Level.INFO : iOriginalLevel); out.flush(); out.close(); String sql = ""; for (StringTokenizer stk = new StringTokenizer(new String(out.toByteArray()), "\n"); stk.hasMoreTokens();) { String line = (String) stk.nextToken(); String comment = null; if (line.indexOf("/*") >= 0 && line.indexOf("/*") < line.indexOf("*/")) { comment = line.substring(line.indexOf("/*") + 2, line.indexOf("*/")); line = line.substring(0, line.indexOf("/*")) + line.substring(line.indexOf("*/") + 2); } if (sql.length() > 0) sql += "<br><br>"; if (comment != null) sql += "<font color='gray'>-- " + comment + "</font>"; Formatter f = new BasicFormatterImpl(); sql += f.format(line).replaceAll("\n", "<br>").replaceAll(" ", " "); } if (sql.length() > 0) request.setAttribute("sql", sql); saveErrors(request, errors); return mapping.findForward("displayQueryForm"); }