/*******************************************************************************
* Copyright (c) 2010 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.usage.internal.preferences;
import java.io.IOException;
import org.eclipse.jface.preference.IPreferenceStore;
import org.jboss.tools.usage.internal.JBossToolsUsageActivator;
import org.jboss.tools.usage.internal.reporting.ReportingMessages;
import org.jboss.tools.usage.tracker.internal.UsagePluginLogger;
import org.osgi.service.prefs.BackingStoreException;
/**
* The Class UsageReportPreferences.
*
* @author Andre Dietisheim
*/
public class UsageReportPreferences {
/**
* Enables (<code>true</code>) or disables (<code>false</code>) usage
* reporting preferences.
*
* @param enabled
* the new enabled
*/
public static void setEnabled(boolean enabled) {
UsageReportPreferencesUtils.getStore().putValue(
IUsageReportPreferenceConstants.USAGEREPORT_ENABLED_ID, String.valueOf(enabled));
save();
}
/**
* Returns <code>true</code> if the usage reporting enablement is set in the
* preferences. Returns <code>false</code> otherwise. It is intentionally not set
* by UsageReportPreferenceInitializer
*
* @return
*/
public static boolean isEnablementSet() {
String defaultValue = "undefinedValue";
String value = UsageReportPreferencesUtils.getPreferences().get(
IUsageReportPreferenceConstants.USAGEREPORT_ENABLED_ID, defaultValue);
return value != defaultValue;
}
/**
* Returns <code>true</code> if usage reporting is enabled
*
* @return true, if is enabled
*/
public static boolean isEnabled() {
return UsageReportPreferencesUtils.getPreferences().getBoolean(
IUsageReportPreferenceConstants.USAGEREPORT_ENABLED_ID,
getEnabledDefault());
}
/**
* Returns <code>true</code> if the user shall get asked if he agrees to report its usage.
*
* @return true, if the user shall get asked
*/
public static boolean isAskUser() {
return UsageReportPreferencesUtils.getPreferences().getBoolean(
IUsageReportPreferenceConstants.ASK_USER_USAGEREPORT_ID,
getAskUserDefault());
}
/**
* Returns the default value for {@link #isAskUser()}
*
* @return
*/
static boolean getAskUserDefault() {
return UsageReportPreferencesUtils.getDefaultPreferences().getBoolean(
IUsageReportPreferenceConstants.ASK_USER_USAGEREPORT_ID,
IUsageReportPreferenceConstants.ASK_USER_USAGEREPORT_DEFAULTVALUE);
}
/**
* Returns the default value for the enablement of usage reporting
*
* @return default value that is set in plugin_customization.ini file or
* IUsageReportPreferenceConstants.USAGEREPORT_ENABLED_DEFAULTVALUE otherwise
*
*/
public static boolean getEnabledDefault() {
return UsageReportPreferencesUtils.getDefaultPreferences().getBoolean(
IUsageReportPreferenceConstants.USAGEREPORT_ENABLED_ID,
IUsageReportPreferenceConstants.USAGEREPORT_ENABLED_DEFAULTVALUE);
}
/**
* Sets the value for {@link #isAskUser()}
*
* @param askUser
* the new ask user
*/
public static void setAskUser(boolean askUser) {
UsageReportPreferencesUtils.getStore().putValue(IUsageReportPreferenceConstants.ASK_USER_USAGEREPORT_ID,
String.valueOf(askUser));
save();
}
/**
* Save.
*/
private static void save() {
try {
UsageReportPreferencesUtils.getStore().save();
} catch (IOException e) {
new UsagePluginLogger(JBossToolsUsageActivator.getDefault()).error(
ReportingMessages.UsageReport_Error_SavePreferences);
}
}
/**
* Flushes the preferences.
*
* @throws BackingStoreException
* the backing store exception
*/
public static void flush() throws BackingStoreException {
UsageReportPreferencesUtils.getPreferences().flush();
}
/**
* Creates the preference store.
*
* @return the preference store
*/
public static IPreferenceStore createPreferenceStore() {
return UsageReportPreferencesUtils.getStore();
}
}