001: /*
002: * $Id: DefaultHSQLInMemoryStorage.java,v 1.1 2006/03/06 11:30:53 azzazzel Exp $
003: *
004: * Copyright 2006 Commsen International
005: *
006: * Licensed under the Common Public License, Version 1.0 (the "License");
007: * you may not use this file except in compliance with the License.
008: * You may obtain a copy of the License at
009: *
010: * http://www.opensource.org/licenses/cpl1.0.txt
011: *
012: * THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013: * EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
014: * OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
015: *
016: */
017: package com.commsen.stopwatch.storages;
018:
019: import java.sql.SQLException;
020: import java.sql.Statement;
021:
022: import org.apache.log4j.Logger;
023:
024: import com.commsen.stopwatch.StopwatchStorageException;
025:
026: /**
027: * Default stopwatch storage. It uses in-memory HSQL database.
028: *
029: *
030: * @author Milen Dyankov
031: *
032: */
033: public class DefaultHSQLInMemoryStorage extends AbstractDatabaseStorage {
034:
035: /**
036: * Logger for this class
037: */
038: private static final Logger log = Logger
039: .getLogger(DefaultHSQLInMemoryStorage.class);
040:
041: protected String getDriver() {
042: return "org.hsqldb.jdbcDriver";
043: }
044:
045: protected String getConnectionString() {
046: return "jdbc:hsqldb:mem:stopwatch";
047: }
048:
049: protected String getUser() {
050: return "sa";
051: }
052:
053: protected String getPassword() {
054: return "";
055: }
056:
057: protected String getLastIdentityQuery() {
058: return "CALL IDENTITY()";
059: }
060:
061: protected String getTableName() {
062: return "stopwatch";
063: }
064:
065: protected String getReturnColumns() {
066: return " count(1), "
067: + " min (DATEDIFF('ms', _start, _end)) as minTime,"
068: + " max (DATEDIFF('ms', _start, _end)) as maxTime,"
069: + " avg (DATEDIFF('ms', _start, _end)) as avgTime,"
070: + " sum (DATEDIFF('ms', _start, _end)) as totalTime ";
071: }
072:
073: protected String getTruncTableQuery() {
074: return null;
075: }
076:
077: private boolean debugEnabled;
078:
079: /**
080: * @see com.commsen.stopwatch.StopwatchStorage#freeze()
081: */
082: public void freeze() throws StopwatchStorageException {
083: Statement statement;
084: try {
085: statement = updateConnection.createStatement();
086: statement
087: .execute("delete from stopwatch where _end is NULL");
088: statement.close();
089: } catch (SQLException e) {
090: getLogger().error(e, e);
091: }
092: }
093:
094: /**
095: *
096: * @throws StopwatchStorageException
097: * @see com.commsen.stopwatch.StopwatchStorage#close()
098: */
099: public void close() throws StopwatchStorageException {
100: try {
101: updateConnection.createStatement().execute("SHUTDOWN");
102: } catch (SQLException e) {
103: throw new StopwatchStorageException("database error", e);
104: }
105: super .close();
106: }
107:
108: protected Logger getLogger() {
109: return log;
110: }
111:
112: /**
113: * @return Returns the debugEnabled.
114: */
115: public boolean isDebugEnabled() {
116: return debugEnabled;
117: }
118:
119: /**
120: * @param debugEnabled The debugEnabled to set.
121: */
122: public void setDebugEnabled(boolean debugEnabled) {
123: this.debugEnabled = debugEnabled;
124: }
125:
126: }
|