blob: 507cfafde2fd0f47ad8eaa50a1f933123853863d [file] [log] [blame]
/*
* ========================================================================= (c)
* Copyright 2002-2011, GemStone Systems, Inc. All Rights Reserved. 1260 NW
* Waterhouse Ave., Suite 200, Beaverton, OR 97006 All Rights Reserved.
* ========================================================================
*/
package com.gemstone.gemfire.mgmt.DataBrowser.prefs;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
import com.gemstone.gemfire.mgmt.DataBrowser.app.VersionInfo;
import com.gemstone.gemfire.mgmt.DataBrowser.ui.SecurityPropComposite.SecurityProp;
import com.gemstone.gemfire.mgmt.DataBrowser.utils.LogUtil;
/**
* This class represents the Preferences to be set for Data Browser.
*
* @author mjha
*/
public class DataBrowserPreferences extends PreferencesAdapter {
// Connection Preferences key
public static final String KEY_NO_CON_RETRY_ATTEMPTS = "connection-retry-attempts";
public static final String KEY_CON_RETRY_INTERVAL = "connection-retry-interval";
public static final String KEY_CONNECTION_HOSTS = "connection-default-host";
public static final String KEY_CONNECTION_PORTS = "connection-default-port";
public static final String KEY_MRU_HOST_PORT_LIST_LIMIT = "mru-host-port-list-limit";
public static final String KEY_CONNECTION_TIMEOUT = "connection-timeout";
// Query Preferences key
public static final String KEY_QUERY_TIMEOUT = "query-timeout"; //TODO: This property is currently unused. Why was it added?
public static final String KEY_SCOKET_READ_TIMEOUT = "socket-read-timeout";
public static final String KEY_QUERY_RESULT_LIMIT = "query-result-limit";
public static final String KEY_RESULT_AUTO_SCROLL = "result-auto-scroll";
public static final String KEY_ENFORCE_LIMIT_TO_QUERY_RESULT = "enforce-limit-to-query";
// Security Preferences key
public static final String KEY_SEURITY_PLUGIN = "security-plugin";
public static final String KEY_SEURITY_PROPS_HIDDEN = "security-proprties-hidden";
// Misc Preferences key
public static final String KEY_LOGGING_LEVEL = "logging-level";
public static final String KEY_DS_REFRESH_INTERVAL = "ds-refresh-interval";
public static final String KEY_APPLICATION_CLASSES = "application-classes";
public static final String KEY_LOG_DIR = "log-dir";
public static final String KEY_LOG_FILE_SIZE = "log-file-size"; //In MB
public static final String KEY_LOG_FILE_COUNT = "log-file-count";
//Prefernce node
private static final String CURRENT_USER = System.getProperty("user.name");
private static final Preferences USER_ROOT = Preferences.userRoot();
private static final String GEMSTONE_NAME = "GemStone";
private static final String DATA_BROWSER_NAME = "Data Browser";
private static final String DATA_BROWSER_VERSION = VersionInfo.getInstance().toString();
private static final Preferences DATA_BROWSER_NODE = USER_ROOT.node(GEMSTONE_NAME).node(DATA_BROWSER_NAME).node(DATA_BROWSER_VERSION);
private static final Preferences CURRENT_USER_NODE = DATA_BROWSER_NODE.node(CURRENT_USER);
private static final Preferences SECURITY_NODE = CURRENT_USER_NODE.node("Security-Prop");
private static final Preferences APPLICATION_JAR = CURRENT_USER_NODE.node("Application-Jars");
private static DataBrowserPreferences dbPrefernces_ = new DataBrowserPreferences(CURRENT_USER_NODE);
private static DataBrowserPreferences dbSecurityProps_ = new DataBrowserPreferences(SECURITY_NODE);
private static DataBrowserPreferences dbApplicationJars_ = new DataBrowserPreferences(APPLICATION_JAR);
/**
* Fix added for BUG711 to make sure that logging configuration is loaded only once during the application startup and any
* changes to the logging preferences are activated only after tool restart.
**/
private static String log_dir = null;
private static String log_level = null;
private static int log_file_size = DefaultPreferences.DEFAULT_LOG_FILE_SIZE;
private static int log_file_count = DefaultPreferences.DEFAULT_LOG_FILE_COUNT;
static {
try {
log_dir = dbPrefernces_.get(KEY_LOG_DIR, DefaultPreferences.DEFAULT_LOG_DIR);
} catch (Throwable e) {
//System.out.println("Failed to get the logging directory preference :"+e); // Since the Logger is not yet initialized...
log_dir = DefaultPreferences.DEFAULT_LOG_DIR;
}
try {
log_level = dbPrefernces_.get(KEY_LOGGING_LEVEL, DefaultPreferences.DEFAULT_LOGGING_LEVEL);
} catch (Throwable e) {
//System.out.println("Failed to get the log level preference :"+e); // Since the Logger is not yet initialized...
log_level = DefaultPreferences.DEFAULT_LOGGING_LEVEL;
}
try {
log_file_size = dbPrefernces_.getInt(KEY_LOG_FILE_SIZE, DefaultPreferences.DEFAULT_LOG_FILE_SIZE);
} catch (Throwable e) {
//System.out.println("Failed to get the log file size preference :"+e); // Since the Logger is not yet initialized...
log_file_size = DefaultPreferences.DEFAULT_LOG_FILE_SIZE;
}
try {
log_file_count = dbPrefernces_.getInt(KEY_LOG_FILE_COUNT, DefaultPreferences.DEFAULT_LOG_FILE_COUNT);
} catch (Throwable e) {
//System.out.println("Failed to get the log file count preference :"+e); // Since the Logger is not yet initialized...
log_file_count = DefaultPreferences.DEFAULT_LOG_FILE_COUNT;
}
}
private DataBrowserPreferences(Preferences toBeWrapped) {
super(toBeWrapped);
}
public static void setConRetryAttempts(int val) {
dbPrefernces_.put(KEY_NO_CON_RETRY_ATTEMPTS, String.valueOf(val));
}
public static int getConRetryAttempts() {
return dbPrefernces_.getInt(KEY_NO_CON_RETRY_ATTEMPTS, DefaultPreferences.DEFAULT_NO_CON_RETRY_ATTEMPTS);
}
public static void setDefaultConRetryAttempts() {
dbPrefernces_.put(KEY_NO_CON_RETRY_ATTEMPTS, String.valueOf(DefaultPreferences.DEFAULT_NO_CON_RETRY_ATTEMPTS));
}
public static void setConRetryInterval(long val) {
dbPrefernces_.put(KEY_CON_RETRY_INTERVAL, String.valueOf(val));
}
public static long getConRetryInterval() {
return dbPrefernces_.getLong(KEY_CON_RETRY_INTERVAL, DefaultPreferences.DEFAULT_CON_RETRY_INTERVAL);
}
public static void setDefaultConRetryInterval() {
dbPrefernces_.put(KEY_CON_RETRY_INTERVAL, String.valueOf(DefaultPreferences.DEFAULT_CON_RETRY_INTERVAL));
}
public static long getConnectionTimeoutInterval() {
return dbPrefernces_.getLong(KEY_CONNECTION_TIMEOUT, DefaultPreferences.DEFAULT_CONNECTION_TIMEOUT);
}
public static void setConnectionTimeoutInterval(long val) {
dbPrefernces_.put(KEY_CONNECTION_TIMEOUT, String.valueOf(val));
}
public static void setDefaultConnectionTimeoutInterval() {
dbPrefernces_.put(KEY_CONNECTION_TIMEOUT, String.valueOf(DefaultPreferences.DEFAULT_CONNECTION_TIMEOUT));
}
public static int getSocketReadTimeoutInterval() {
return dbPrefernces_.getInt(KEY_SCOKET_READ_TIMEOUT, DefaultPreferences.DEFAULT_SOCKET_READ_TIMEOUT);
}
public static void setSocketReadTimeoutInterval(int val) {
dbPrefernces_.put(KEY_SCOKET_READ_TIMEOUT, String.valueOf(val));
}
public static void setDefaultSocketReadTimeoutInterval() {
dbPrefernces_.put(KEY_SCOKET_READ_TIMEOUT, String.valueOf(DefaultPreferences.DEFAULT_SOCKET_READ_TIMEOUT));
}
public static void setConnectionMRUHListLimit(int val) {
dbPrefernces_.put(KEY_MRU_HOST_PORT_LIST_LIMIT, String.valueOf(val));
}
public static int getConnectionMRUHListLimit() {
return dbPrefernces_.getInt(KEY_MRU_HOST_PORT_LIST_LIMIT,DefaultPreferences.DEFAULT_MRU_HOST_PORT_LIST_LIMIT);
}
public static void setDefaultConnectionMRUHListLimit() {
dbPrefernces_.put(KEY_MRU_HOST_PORT_LIST_LIMIT, String.valueOf(DefaultPreferences.DEFAULT_MRU_HOST_PORT_LIST_LIMIT));
}
public static void setConnectionMRUPorts(LinkedList<String> val) {
dbPrefernces_.put(KEY_CONNECTION_PORTS,
getSelectedStringSetAsCommaSeperatedString(val));
}
public static LinkedList<String> getConnectionMRUPorts() {
String value = dbPrefernces_.get(KEY_CONNECTION_PORTS,
DefaultPreferences.DEFAULT_CONNECTION_PORTS);
return getCommaSeperatedStringAsStringList(value);
}
public static LinkedList<String> getConnectionMRUHosts() {
String value = dbPrefernces_.get(KEY_CONNECTION_HOSTS,
DefaultPreferences.DEFAULT_CONNECTION_HOSTS);
return getCommaSeperatedStringAsStringList(value);
}
public static void setConnectionMRUHosts(LinkedList<String> val) {
dbPrefernces_.put(KEY_CONNECTION_HOSTS,
getSelectedStringSetAsCommaSeperatedString(val));
}
public static boolean getEnforceLimitToQuery() {
return dbPrefernces_.getBoolean(KEY_ENFORCE_LIMIT_TO_QUERY_RESULT, DefaultPreferences.DEFAULT_ENFORCE_LIMIT_TO_QUERY_RESULT);
}
public static void setEnforceLimitToQuery(boolean limit) {
dbPrefernces_.putBoolean(KEY_ENFORCE_LIMIT_TO_QUERY_RESULT, Boolean.valueOf(limit));
}
public static void setDefaultEnforceLimitToQuery() {
dbPrefernces_.putBoolean(KEY_ENFORCE_LIMIT_TO_QUERY_RESULT, Boolean.valueOf(DefaultPreferences.DEFAULT_ENFORCE_LIMIT_TO_QUERY_RESULT));
}
public static long getQueryLimit() {
return dbPrefernces_.getLong(KEY_QUERY_RESULT_LIMIT, DefaultPreferences.DEFAULT_QUERY_RESULT_LIMIT);
}
public static void setQueryLimit(long limit) {
dbPrefernces_.put(KEY_QUERY_RESULT_LIMIT, String.valueOf(limit));
}
public static void setDefaultQueryLimit() {
dbPrefernces_.put(KEY_QUERY_RESULT_LIMIT, String.valueOf(DefaultPreferences.DEFAULT_QUERY_RESULT_LIMIT));
}
public static long getQueryExecutionTimeout() {
return dbPrefernces_.getLong(KEY_QUERY_TIMEOUT, DefaultPreferences.DEFAULT_QUERY_TIMEOUT);
}
public static void setQueryExecutionTimeout(long interval) {
dbPrefernces_.put(KEY_QUERY_TIMEOUT, String.valueOf(interval));
}
public static void setDefaultQueryExecutionTimeout() {
dbPrefernces_.put(KEY_QUERY_TIMEOUT, String.valueOf(DefaultPreferences.DEFAULT_QUERY_TIMEOUT));
}
public static boolean getResultAutoScroll() {
return dbPrefernces_.getBoolean(KEY_RESULT_AUTO_SCROLL, DefaultPreferences.DEFAULT_RESULT_AUTO_SCROLL);
}
public static void setResultAutoScroll(boolean auto) {
dbPrefernces_.putBoolean(KEY_RESULT_AUTO_SCROLL, Boolean.valueOf(auto));
}
public static void setDefaultResultAutoScroll() {
dbPrefernces_.putBoolean(KEY_RESULT_AUTO_SCROLL, Boolean.valueOf(DefaultPreferences.DEFAULT_RESULT_AUTO_SCROLL));
}
public static String getSecurityPlugin() {
return dbPrefernces_.get(KEY_SEURITY_PLUGIN, DefaultPreferences.DEFAULT_SEURITY_PLUGIN);
}
public static void setSecurityPlugin(String plugin) {
dbPrefernces_.put(KEY_SEURITY_PLUGIN, plugin);
}
public static void setDefaultSecurityPlugin() {
dbPrefernces_.put(KEY_SEURITY_PLUGIN, DefaultPreferences.DEFAULT_SEURITY_PLUGIN);
}
public static boolean getSecurityPropsHidden() {
return dbPrefernces_.getBoolean(KEY_SEURITY_PROPS_HIDDEN, DefaultPreferences.DEFAULT_SEURITY_PROPS_HIDDEN);
}
public static void setSecurityPropsHidden(boolean hidden) {
dbPrefernces_.putBoolean(KEY_SEURITY_PROPS_HIDDEN, hidden);
}
public static void setDefaultSecurityPropsHidden() {
dbPrefernces_.putBoolean(KEY_SEURITY_PROPS_HIDDEN, DefaultPreferences.DEFAULT_SEURITY_PROPS_HIDDEN);
}
public static List<SecurityProp> getSecurityProperties() throws BackingStoreException {
String[] childrenNames = dbSecurityProps_.keys();
List<SecurityProp> props = new ArrayList<SecurityProp>();
boolean hidden = getSecurityPropsHidden();
for (int i = 0; i < childrenNames.length; i++) {
String key = childrenNames[i];
String value = dbSecurityProps_.get(key, null);
if(value != null){
SecurityProp prop = new SecurityProp(key,value,hidden);
props.add(prop);
}
}
return props;
}
public static void setSecurityProperties(List<SecurityProp> props) {
try {
dbSecurityProps_.clear();
for (SecurityProp prop : props) {
String key = prop.getKey();
String value = prop.getValue();
dbSecurityProps_.put(key, value);
}
}
catch (BackingStoreException e) {
LogUtil.warning("Exception while saving security preferences.", e);
}
}
public static void setDefaultSecurityProperties() throws BackingStoreException {
List<SecurityProp> defaultSeurityProperties = DefaultPreferences.DEFAULT_SEURITY_PROPERTIES;
if(defaultSeurityProperties != null)
setSecurityProperties(defaultSeurityProperties);
else{
String[] childrenNames = dbSecurityProps_.keys();
for (int i = 0; i < childrenNames.length; i++) {
String key = childrenNames[i];
dbSecurityProps_.remove(key);
}
}
}
public static void save() throws BackingStoreException{
dbPrefernces_.flush();
dbSecurityProps_.flush();
}
public static String getLogDirectory() {
return log_dir;
}
public static String getLogDirectoryPref() {
return dbPrefernces_.get(KEY_LOG_DIR, DefaultPreferences.DEFAULT_LOG_DIR);
}
public static void setLogDirectory(String dir) {
dbPrefernces_.put(KEY_LOG_DIR, dir);
}
public static void setDefaultLogDirectory() {
dbPrefernces_.put(KEY_LOG_DIR, DefaultPreferences.DEFAULT_LOG_DIR);
}
public static String getLoggingLevel() {
return log_level;
}
public static String getLoggingLevelPref() {
return dbPrefernces_.get(KEY_LOGGING_LEVEL, DefaultPreferences.DEFAULT_LOGGING_LEVEL);
}
public static void setLoggingLevel(String level) {
dbPrefernces_.put(KEY_LOGGING_LEVEL, level);
}
public static void setDefaultLoggingLevel() {
dbPrefernces_.put(KEY_LOGGING_LEVEL, DefaultPreferences.DEFAULT_LOGGING_LEVEL);
}
public static int getLogFileSize() {
return log_file_size;
}
public static int getLogFileSizePref() {
return dbPrefernces_.getInt(KEY_LOG_FILE_SIZE, DefaultPreferences.DEFAULT_LOG_FILE_SIZE);
}
public static void setLogFileSize(int size) {
dbPrefernces_.putInt(KEY_LOG_FILE_SIZE, size);
}
public static void setDefaultLogFileSize() {
dbPrefernces_.putInt(KEY_LOG_FILE_SIZE, DefaultPreferences.DEFAULT_LOG_FILE_SIZE);
}
public static int getLogFileCount() {
return log_file_count;
}
public static int getLogFileCountPref() {
return dbPrefernces_.getInt(KEY_LOG_FILE_COUNT, DefaultPreferences.DEFAULT_LOG_FILE_COUNT);
}
public static void setLogFileCount(int count) {
dbPrefernces_.putInt(KEY_LOG_FILE_COUNT, count);
}
public static void setDefaultLogFileCount() {
dbPrefernces_.putInt(KEY_LOG_FILE_COUNT, DefaultPreferences.DEFAULT_LOG_FILE_COUNT);
}
public static long getDSRefreshInterval() {
return dbPrefernces_.getLong(KEY_DS_REFRESH_INTERVAL, DefaultPreferences.DEFAULT_DS_REFRESH_INTERVAL);
}
public static void setDSRefreshInterval(long interval) {
dbPrefernces_.put(KEY_DS_REFRESH_INTERVAL, String.valueOf(interval));
}
public static void setDefaultDSRefreshInterval() {
dbPrefernces_.put(KEY_DS_REFRESH_INTERVAL, String.valueOf(DefaultPreferences.DEFAULT_DS_REFRESH_INTERVAL));
}
public static String[] getApplicationClasses() {
String[] keys;
String[]applicationClasses = new String[0];
try {
keys = dbApplicationJars_.keys();
applicationClasses = new String[keys.length];
for (int i = 0; i < keys.length; i++) {
applicationClasses[i]= dbApplicationJars_.get(keys[i], null);
}
}
catch (BackingStoreException e) {
LogUtil.warning("Exception while fetching application class from prefrences.", e);
}
return applicationClasses;
}
public static void setApplicationClasses(String[] jars){
try {
dbApplicationJars_.clear();
java.util.List<String> jarList = new ArrayList<String>();
for (int i = 0; i < jars.length; i++) {
jarList.add(jars[i]);
dbApplicationJars_.put("ApplicationJar" + i, jars[i]);
}
}
catch (BackingStoreException e) {
LogUtil.warning("Exception while saving application class.", e);
}
}
public static void setDefaultApplicationClasses() {
setApplicationClasses(DefaultPreferences.DEFAULT_APPLICATION_CLASSES);
}
private static String getSelectedStringSetAsCommaSeperatedString(List<String> selections) {
StringBuffer buf = new StringBuffer();
for (String next: selections) {
buf.append(next + ",");
}
return buf.toString();
}
private static LinkedList<String> getCommaSeperatedStringAsStringList(String selection) {
LinkedList<String> list = new LinkedList<String>();
StringTokenizer tokenizer = new StringTokenizer(selection, ",");
int limit = getConnectionMRUHListLimit();
int index = 0;
while (tokenizer.hasMoreTokens() && (index < limit)) {
String info = tokenizer.nextToken().trim();
list.add(info);
index++;
}
return list;
}
}