package com.sleepycat.je.utilint;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Set;
import com.sleepycat.je.DatabaseException;
import de.ovgu.cide.jakutil.*;
/**
* Convenience methods for handling JE properties.
*/
public class PropUtil {
/**
* @return true if the property is set to "true".
*/
public static boolean getBoolean( Properties props, String propName){
String value=props.getProperty(propName);
if ((value != null) && (value.equalsIgnoreCase("true"))) {
return true;
}
else {
return false;
}
}
/**
* Validate properties in the property bag. If null was passed, return an
* empty property object, else return the original property object.
* @throws DatabaseException if the property bag contains
* a property not specified in the set of allowed properties.
*/
public static Properties validateProps( Properties props, Set allowedProps, String apiMethod) throws DatabaseException {
if (props == null) {
return new Properties();
}
else {
if (props.size() > 0) {
Enumeration e=props.propertyNames();
while (e.hasMoreElements()) {
String propName=(String)e.nextElement();
validateProp(propName,allowedProps,apiMethod);
}
}
return props;
}
}
/**
* @throws DatabaseException if the property is not valid.
*/
public static void validateProp( String propName, Set allowedProps, String apiMethod) throws DatabaseException {
if (!allowedProps.contains(propName)) {
throw new DatabaseException(propName + " is not a valid property for " + apiMethod);
}
}
/**
* Convert microseconds to milliseconds, ensuring that any microsecond
* value greater than zero converts to at least one millisecond to avoid a
* zero millisecond result since Object.wait(0) waits forever.
*/
public static long microsToMillis( long micros){
return (micros + 999) / 1000;
}
}