Example usage for org.hibernate.engine.jdbc.internal Formatter format

List of usage examples for org.hibernate.engine.jdbc.internal Formatter format

Introduction

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

Prototype

public String format(String source);

Source Link

Document

Format the source SQL string.

Usage

From source file:org.juke.stringutils.handlers.SrtingUtils.java

License:Open Source License

/***************************************************************************
 * Performs actions on selected strings variable.
 * /*from  w  ww .j a  v a  2  s .c  o m*/
 * @param doc
 *            Text Editor document
 * @param selection
 *            {@link TextSelection} in current document
 * @param action
 *            The action that will be performed on selected string.
 * @throws BadLocationException
 */
public void proceedSelectedString(IDocument doc, TextSelection selection, int action)
        throws BadLocationException {
    int lineNum = selection.getStartLine();
    int lineStart = findStartlineNum(doc, lineNum);
    int lineEnd = findEndlineNum(doc, lineNum);
    if (lineStart == INVALID_LINE_NUM || lineEnd == INVALID_LINE_NUM || lineStart > lineEnd) {
        return;
    }
    int startLineOffset = doc.getLineOffset(lineStart);
    int endLineOffset = doc.getLineOffset(lineEnd);
    String lineString = doc.get(startLineOffset, endLineOffset - startLineOffset);
    int startOfStringOffset = startLineOffset + lineString.indexOf(QUOTE);
    int endOfStringLength = lineString.lastIndexOf(QUOTE) + 1 - lineString.indexOf(QUOTE);
    Map<String, String> variableMap = new HashMap<String, String>();
    lineString = lineString.replaceAll(LINE_REGEXP, EMPTY_STRING);
    Matcher matcher = Pattern.compile(WHITESPACE_REGEXP).matcher(lineString);
    while (matcher.find()) {
        String variableKey = getVariableKey(variableMap.size(), matcher.group());
        variableMap.put(variableKey, matcher.group());
        lineString = lineString.replace(matcher.group(), variableKey);
    }
    Matcher stringMatcher = PATTERN.matcher(lineString);

    if (stringMatcher.find()) {
        Formatter sqlFormater = new BasicFormatterImpl(
                getPreferenceStore().getBoolean(StringUtilsPreferencePage.CLAUSE_TO_UPPERCASE));

        String formatedString = sqlFormater.format(stringMatcher.group());
        if (action == FORMATE_SQL_STRING_ACTION) {
            fornatSqkString(lineString, startOfStringOffset, endOfStringLength, variableMap, formatedString);

        } else if (action == SHOW_STRING_CONTETNT_ACTION) {
            showStringContent(variableMap, stringMatcher, formatedString);
        }
    }
}

From source file:org.unitime.timetable.action.HibernateQueryTestAction.java

License:Open Source License

/** 
 * Method execute//w  w  w  . j av  a 2s.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");

}