franta-hg@179: /** franta-hg@179: * SQL-DK franta-hg@179: * Copyright © 2014 František Kučera (frantovo.cz) franta-hg@179: * franta-hg@179: * This program is free software: you can redistribute it and/or modify franta-hg@179: * it under the terms of the GNU General Public License as published by franta-hg@250: * the Free Software Foundation, version 3 of the License. franta-hg@179: * franta-hg@179: * This program is distributed in the hope that it will be useful, franta-hg@179: * but WITHOUT ANY WARRANTY; without even the implied warranty of franta-hg@179: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the franta-hg@179: * GNU General Public License for more details. franta-hg@179: * franta-hg@179: * You should have received a copy of the GNU General Public License franta-hg@179: * along with this program. If not, see . franta-hg@179: */ franta-hg@179: package info.globalcode.sql.dk.jmx; franta-hg@179: franta-hg@179: import java.util.EnumMap; franta-hg@179: import java.util.Map; franta-hg@179: franta-hg@179: /** franta-hg@179: * JMX management bean for progress reporting. franta-hg@179: * franta-hg@179: * @author Ing. František Kučera (frantovo.cz) franta-hg@179: */ franta-hg@179: public class ConnectionManagement implements ConnectionManagementMBean { franta-hg@179: franta-hg@179: private final String databaseName; franta-hg@179: private final Map counters = new EnumMap(COUNTER.class); franta-hg@179: franta-hg@179: public ConnectionManagement(String databaseName) { franta-hg@179: this.databaseName = databaseName; franta-hg@179: for (COUNTER c : COUNTER.values()) { franta-hg@179: counters.put(c, 0); franta-hg@179: } franta-hg@179: } franta-hg@179: franta-hg@179: public enum COUNTER { franta-hg@179: franta-hg@179: COMMAND, franta-hg@179: RECORD_CURRENT, franta-hg@179: RECORD_TOTAL franta-hg@179: }; franta-hg@179: franta-hg@179: public void incrementCounter(COUNTER counter) { franta-hg@179: synchronized (counters) { franta-hg@179: int old = counters.get(counter); franta-hg@179: counters.put(counter, old + 1); franta-hg@179: } franta-hg@179: } franta-hg@179: franta-hg@179: public void resetCounter(COUNTER counter) { franta-hg@179: synchronized (counters) { franta-hg@179: counters.put(counter, 0); franta-hg@179: } franta-hg@179: } franta-hg@179: franta-hg@179: public static void incrementCounter(ConnectionManagement mbean, COUNTER counter) { franta-hg@179: if (mbean != null) { franta-hg@179: mbean.incrementCounter(counter); franta-hg@179: } franta-hg@179: } franta-hg@179: franta-hg@179: public static void resetCounter(ConnectionManagement mbean, COUNTER counter) { franta-hg@179: if (mbean != null) { franta-hg@179: mbean.resetCounter(counter); franta-hg@179: } franta-hg@179: } franta-hg@179: franta-hg@179: @Override franta-hg@179: public String getDatabaseName() { franta-hg@179: return databaseName; franta-hg@179: } franta-hg@179: franta-hg@179: @Override franta-hg@179: public int getCommandCount() { franta-hg@179: synchronized (counters) { franta-hg@179: return counters.get(COUNTER.COMMAND); franta-hg@179: } franta-hg@179: } franta-hg@179: franta-hg@179: @Override franta-hg@179: public int getCurrentRecordCount() { franta-hg@179: synchronized (counters) { franta-hg@179: return counters.get(COUNTER.RECORD_CURRENT); franta-hg@179: } franta-hg@179: } franta-hg@179: franta-hg@179: @Override franta-hg@179: public int getTotalRecordCount() { franta-hg@179: synchronized (counters) { franta-hg@179: return counters.get(COUNTER.RECORD_TOTAL); franta-hg@179: } franta-hg@179: } franta-hg@179: }