/* * */ package org.lightview.business.pool.entity; import javafx.beans.property.IntegerProperty; import javafx.beans.property.SimpleIntegerProperty; import javax.json.JsonObject; /** * * @author adam-bien.com */ public class PoolStatistics { private JsonObject statistics; private final String THREADS_STATISTICS = "numthreadswaiting"; private final IntegerProperty currentThreadsWaiting = new SimpleIntegerProperty(); private final IntegerProperty totalBeansCreated = new SimpleIntegerProperty(); private final IntegerProperty totalBeansDestroyed = new SimpleIntegerProperty(); private IntegerProperty NOT_AVAILABLE = new SimpleIntegerProperty(-1); public PoolStatistics(JsonObject statistics) { this.statistics = statistics; } public IntegerProperty currentThreadsWaitingProperty() { final JsonObject threadsStatistics = getThreadsStatistics(); if (threadsStatistics == null) { return NOT_AVAILABLE; } int value = threadsStatistics.getInt("current"); currentThreadsWaiting.set(value); return this.currentThreadsWaiting; } public int getCurrentThreadsWaiting() { return currentThreadsWaitingProperty().get(); } public IntegerProperty threadsWaitingHighwatermarkProperty() { final JsonObject threadsStatistics = getThreadsStatistics(); if (threadsStatistics == null) { return NOT_AVAILABLE; } int value = threadsStatistics.getInt("highwatermark"); currentThreadsWaiting.set(value); return this.currentThreadsWaiting; } public int getThreadsWaitingHighwatermark() { return threadsWaitingHighwatermarkProperty().get(); } public IntegerProperty totalBeansCreatedProperty() { if (statistics == null) { return NOT_AVAILABLE; } final JsonObject jsonObject = statistics.getJsonObject("totalbeanscreated"); int value = jsonObject.getInt("count"); totalBeansCreated.set(value); return totalBeansCreated; } public int getTotalBeansCreated() { return this.totalBeansCreatedProperty().get(); } public IntegerProperty totalBeansDestroyedProperty() { if (statistics == null) { return NOT_AVAILABLE; } final JsonObject jsonObject = statistics.getJsonObject("totalbeansdestroyed"); int value = jsonObject.getInt("count"); totalBeansDestroyed.set(value); return totalBeansDestroyed; } public int getTotalBeansDestroyed() { return this.totalBeansCreatedProperty().get(); } JsonObject getThreadsStatistics() { if (statistics == null) { return null; } return statistics.getJsonObject(THREADS_STATISTICS); } public boolean isValid(){ return this.getTotalBeansCreated() != -1 && this.getTotalBeansDestroyed() != -1; } }