Example usage for org.hibernate.engine.jdbc.internal BasicFormatterImpl BasicFormatterImpl

List of usage examples for org.hibernate.engine.jdbc.internal BasicFormatterImpl BasicFormatterImpl

Introduction

In this page you can find the example usage for org.hibernate.engine.jdbc.internal BasicFormatterImpl BasicFormatterImpl.

Prototype

BasicFormatterImpl

Source Link

Usage

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(" ", "&nbsp;");
    }
    if (sql.length() > 0)
        request.setAttribute("sql", sql);

    saveErrors(request, errors);
    return mapping.findForward("displayQueryForm");

}