org.cesecore.config.GlobalCesecoreConfiguration Maven / Gradle / Ivy
/*************************************************************************
* *
* CESeCore: CE Security Core *
* *
* This software is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2.1 of the License, or any later version. *
* *
* See terms of license at gnu.org. *
* *
*************************************************************************/
package org.cesecore.config;
import org.cesecore.configuration.ConfigurationBase;
import org.cesecore.internal.InternalResources;
/**
* Handles global CESeCore configuration values.
*
* @version $Id: GlobalCesecoreConfiguration.java 23515 2016-05-20 10:08:20Z jeklund $
*
*/
public class GlobalCesecoreConfiguration extends ConfigurationBase {
private static final long serialVersionUID = 1L;
private static final InternalResources intres = InternalResources.getInstance();
/** A fixed maximum value to ensure that */
private static final int FIXED_MAXIMUM_QUERY_COUNT = 25_000;
public static final String CESECORE_CONFIGURATION_ID = "CESECORE_CONFIGURATION";
private static final String MAXIMUM_QUERY_COUNT_KEY = "maximum.query.count";
private static final String MAXIMUM_QUERY_TIMEOUT_KEY = "maximum.query.timeout";
@Override
public void upgrade() {
}
@Override
public String getConfigurationId() {
return CESECORE_CONFIGURATION_ID;
}
/** @return the maximum size of the result from SQL select queries */
public int getMaximumQueryCount() {
Object num = data.get(MAXIMUM_QUERY_COUNT_KEY);
if(num == null){
return 500;
} else {
return ((Integer) num).intValue();
}
}
/**
* Set's the maximum query count
*
* @param maximumQueryCount the maximum query count
* @throws InvalidConfigurationException if value was negative or above the limit set by {@link GlobalCesecoreConfiguration#MAXIMUM_QUERY_COUNT_KEY}
*/
public void setMaximumQueryCount(int maximumQueryCount) throws InvalidConfigurationException {
if (maximumQueryCount > FIXED_MAXIMUM_QUERY_COUNT) {
throw new InvalidConfigurationException(intres.getLocalizedMessage("globalconfig.error.querysizetoolarge", maximumQueryCount, FIXED_MAXIMUM_QUERY_COUNT));
}
if (maximumQueryCount < 1) {
throw new InvalidConfigurationException(intres.getLocalizedMessage("globalconfig.error.querysizetoolow"));
}
data.put(MAXIMUM_QUERY_COUNT_KEY, Integer.valueOf(maximumQueryCount));
}
/** @return database dependent query timeout hint in milliseconds or 0 if this is disabled. */
public long getMaximumQueryTimeout() {
final Object num = data.get(MAXIMUM_QUERY_TIMEOUT_KEY);
return num==null ? 10000L : ((Long) num).longValue();
}
/** Set's the database dependent query timeout hint in milliseconds or 0 if this is disabled. */
public void setMaximumQueryTimeout(final long maximumQueryTimeoutMs) throws InvalidConfigurationException {
data.put(MAXIMUM_QUERY_TIMEOUT_KEY, Long.valueOf(maximumQueryTimeoutMs < 0L ? 0L : maximumQueryTimeoutMs));
}
}