package org.apereo.cas.monitor;
/**
* Describes the status of a resource pool.
*
* @author Marvin S. Addison
* @since 3.5.0
*/
public class PoolStatus extends Status {
/**
* Return value for {@link #getActiveCount()} and {@link #getIdleCount()}
* when pool metrics are unknown or unknowable.
*/
public static final int UNKNOWN_COUNT = -1;
/** Number of idle pool resources. */
private int idleCount;
/** Number of active pool resources. */
private int activeCount;
/**
* Creates a new status object with the given code.
*
* @param code Status code.
* @param desc Human-readable status description.
* @param active number of active pool resources
* @param idle number of idle pool resources
* @see #getCode()
*/
public PoolStatus(final StatusCode code, final String desc, final int active, final int idle) {
super(code, buildDescription(desc, active, idle));
this.activeCount = active;
this.idleCount = idle;
}
/**
* Gets the number of idle pool resources.
*
* @return Number of idle pool members.
*/
public int getIdleCount() {
return this.idleCount;
}
/**
* Gets the number of active pool resources.
*
* @return Number of active pool members.
*/
public int getActiveCount() {
return this.activeCount;
}
/**
* Builds the description for the pool.
*
* @param desc the desc
* @param active the active
* @param idle the idle
* @return the string
*/
private static String buildDescription(final String desc, final int active, final int idle) {
final StringBuilder sb = new StringBuilder();
if (desc != null) {
sb.append(desc);
if (!desc.endsWith(".")) {
sb.append('.');
}
sb.append(' ');
}
if (active != UNKNOWN_COUNT) {
sb.append(active).append(" active");
}
if (idle != UNKNOWN_COUNT) {
sb.append(", ").append(idle).append(" idle.");
}
if (sb.length() > 0) {
return sb.toString();
}
return null;
}
}