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@179: * the Free Software Foundation, either version 3 of the License, or
franta-hg@179: * (at your option) any later version.
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: }