001    /**
002     * Copyright 2010-2013 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.common.jdbc.listener;
017    
018    import org.kuali.common.util.FormatUtils;
019    import org.kuali.common.util.LoggerLevel;
020    import org.kuali.common.util.LoggerUtils;
021    import org.kuali.common.util.Str;
022    import org.slf4j.Logger;
023    import org.slf4j.LoggerFactory;
024    
025    /**
026     * @deprecated
027     */
028    @Deprecated
029    public class LogSqlListener extends NoOpSqlListener {
030    
031            private static final Logger logger = LoggerFactory.getLogger(LogSqlListener.class);
032            public static final LoggerLevel DEFAULT_LOGGER_LEVEL = LoggerLevel.TRACE;
033            public static final LogSqlMode DEFAULT_MODE = LogSqlMode.AFTER;
034    
035            LoggerLevel level = DEFAULT_LOGGER_LEVEL;
036            boolean flatten = true;
037            LogSqlMode mode = DEFAULT_MODE;
038    
039            public LogSqlListener() {
040                    this(DEFAULT_LOGGER_LEVEL, DEFAULT_MODE);
041            }
042    
043            public LogSqlListener(LoggerLevel level, LogSqlMode mode) {
044                    super();
045                    this.level = level;
046                    this.mode = mode;
047            }
048    
049            @Override
050            public void beforeExecuteSql(SqlEvent event) {
051                    switch (mode) {
052                    case BEFORE:
053                    case BOTH:
054                            String sql = getSql(event.getSql(), flatten);
055                            LoggerUtils.logMsg(sql, logger, level);
056                            return;
057                    case AFTER:
058                            return;
059                    default:
060                            throw new IllegalArgumentException("Mode [" + mode + "] is unknown");
061                    }
062            }
063    
064            @Override
065            public void afterExecuteSql(SqlEvent event) {
066                    switch (mode) {
067                    case BEFORE:
068                            return;
069                    case BOTH:
070                    case AFTER:
071                            String sql = getSql(event.getSql(), flatten);
072                            String elapsed = FormatUtils.getTime(event.getStopTimeMillis() - event.getStartTimeMillis());
073                            Object[] args = { sql, elapsed };
074                            LoggerUtils.logMsg("{} - {}", args, logger, level);
075                            return;
076                    default:
077                            throw new IllegalArgumentException("Mode [" + mode + "] is unknown");
078                    }
079            }
080    
081            protected String getSql(String sql, boolean flatten) {
082                    if (flatten) {
083                            return "[" + Str.flatten(sql) + "]";
084                    } else {
085                            return sql;
086                    }
087            }
088    
089            public LoggerLevel getLevel() {
090                    return level;
091            }
092    
093            public void setLevel(LoggerLevel level) {
094                    this.level = level;
095            }
096    
097            public boolean isFlatten() {
098                    return flatten;
099            }
100    
101            public void setFlatten(boolean flatten) {
102                    this.flatten = flatten;
103            }
104    
105            public LogSqlMode getMode() {
106                    return mode;
107            }
108    
109            public void setMode(LogSqlMode mode) {
110                    this.mode = mode;
111            }
112    
113    }