package org.jolokia.history; /* * Copyright 2009-2013 Roland Huss * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.io.Serializable; /** * Helper class used for specifying history entry limits * * @author roland * @since 05.03.12 */ public class HistoryLimit implements Serializable { private static final long serialVersionUID = 42L; // maximum number of entries private int maxEntries; // maximum duration to keep private long maxDuration; /** * Create a limit with either or both maxEntries and maxDuration set * * @param pMaxEntries maximum number of entries to keep * @param pMaxDuration maximum duration for entries to keep (in seconds) */ public HistoryLimit(int pMaxEntries, long pMaxDuration) { if (pMaxEntries == 0 && pMaxDuration == 0) { throw new IllegalArgumentException("Invalid limit, either maxEntries or maxDuration must be != 0"); } if (pMaxEntries < 0) { throw new IllegalArgumentException("Invalid limit, maxEntries must be >= 0"); } if (pMaxDuration < 0) { throw new IllegalArgumentException("Invalid limit, maxDuration must be >= 0"); } maxEntries = pMaxEntries; maxDuration = pMaxDuration; } public int getMaxEntries() { return maxEntries; } public long getMaxDuration() { return maxDuration; } // Return a limit which has for sure as upper limit the given argument /** * Return a limit whose max entries are smaller or equals the given upper limit. For effieciency reasons, this object's * state might change with this method (i.e. the maxEntry number might be set or decreased) * * @param pGlobalMaxEntries upper limit * @return this if this limit already is below the upper limit or a new limit which lies in this limit */ public HistoryLimit respectGlobalMaxEntries(int pGlobalMaxEntries) { if (maxEntries > pGlobalMaxEntries || maxEntries == 0) { maxEntries = pGlobalMaxEntries; } return this; } @Override public String toString() { return "HistoryLimit{" + "maxEntries=" + maxEntries + ", maxDuration=" + maxDuration + '}'; } }