Interface Preferences
-
public interface Preferences
This interface defines the facilities available in the Preferences API. A preference is a key-value pair (both String objects). The framework also supports different levels of preferences (PreferenceLevels), such that if a value is not defined at a given level (PreferenceLevel), the lookup will default to a parent level recursively. Each preference is also associated with a definition (PreferenceDefinition). This allows us to associate extra information with a preference, such as a description, and support features such as validation. Furthermore, ensuring that every preference has a definition minimizes typographical errors when creating new preferences.
Many of the methods require a PreferenceLevel to be set. However, there are several methods that have an implicit PreferenceLevel, which depends upon the context in which the Preferences object is obtained. This provides a degree of convenience over having to specify the PreferenceLevel for every method invocation.
All of these methods also throw a
MSTRUncheckedException
, which is a RuntimeException if they are interrupted while attempting to acquire an internal synchronization lock. This should not normally happen since no explicit thread interrupt is ever used. Nevertheless, they are incorporated for correctness, and perhaps future use.- Since:
- MicroStrategy Web 7.3.1 or earlier
-
-
Method Summary
All Methods Instance Methods Abstract Methods Deprecated Methods Modifier and Type Method Description void
addPreference(PreferenceDefinition definition)
Add a new preference.void
clear()
Removes all the preferences in the preferences object at the given PreferenceLevel.void
clear(PreferenceLevel level)
Removes all the preferences at the given PreferenceLevel.void
clear(PreferenceLevel level, java.util.Collection names)
Removes named preferences at the specifiedPreferenceLevel
.boolean
containsPreference(java.lang.String name)
Returns true if preferences collection contains preference with specified name.java.util.List<PreferenceAllowableValue>
getAllowableValues(java.lang.String name)
Retrieves a list ofPreferenceAllowableValue
objects which are supported by thie preference.boolean
getBooleanValue(java.lang.String name)
Retrieve the boolean preference value for the given key name.boolean
getBooleanValue(java.lang.String name, boolean defaultValue)
Retrieve the boolean preference value for the given key name or defaultValue if preference does not exist.PreferenceDefinition
getDefinition(java.lang.String name)
In addition to the key/name-value pair, extra information such as the description of a preferences is encapsulated within aPreferenceDefinition
.PreferenceLevels
getEnumPreferenceLevels()
Returns the enumeration of PreferenceLevels supported by this Preferences declaration.int
getIntValue(java.lang.String name, int defaultValue)
Retrieve the preference value for the given key name converted into integer or defaultValue if preference does not exist.PreferenceLevel
getLevel(java.lang.String name)
Retrieves the finest level of granularity that defines the given name.PreferenceLevel
getPropagateChangeDepth(PreferenceLevel target)
Checks to see whether changing values in this preference level will remove the corresponding key in its immediate child Preferences object in the PreferenceLevel below this one.java.lang.String
getValue(java.lang.String name)
Retrieve the preference value for the given key name.java.lang.String
getValue(java.lang.String name, java.lang.String defaultValue)
Retrieve the preference value for the given key name or defaultValue if preference does not exist.java.lang.String
getValueAt(java.lang.String name, PreferenceLevel level)
Retrieve a preference value at the given PreferenceLevel, ignoring preferences defined in all other levels.java.lang.String
getValueFrom(java.lang.String name, PreferenceLevel level)
Retrieve a preference value closest but not finer than the given PreferenceLevel.boolean
isDirty()
Returns true if any of the preferences have changed, irrespective of the PreferenceLevel.java.util.Enumeration
listNames()
The names of all preferences available.void
save()
Saves the preferences to persistent storage.void
setPropagateChangeDepth(PreferenceLevel target, PreferenceLevel depth)
Deprecated.limited propagation as it only affects currently loaded preference hierarchy, i.e. cannot propagate server changes to ALL projects - only the one loadedvoid
setValue(java.lang.String name, PreferenceLevel level, java.lang.String value)
Set a new preference value.void
setValue(java.lang.String name, PreferenceLevel level, java.lang.String value, java.lang.Object validationObject)
Set a new preference value.void
setValue(java.lang.String name, java.lang.String value)
Sets a name-value preference pair.void
setValue(java.lang.String name, java.lang.String value, java.lang.Object validationObject)
Sets a name-value preference pair.void
setValues(PreferenceLevel level, java.util.Map values)
Set several values at once.void
setValues(PreferenceLevel level, java.util.Map values, java.lang.Object validationObject)
Set several values at once.void
setValues(java.util.Map values)
void
setValues(java.util.Map values, java.lang.Object validationObject)
void
validate(PreferenceLevel level, java.util.Map values)
Validate the values against their PreferenceDefinition implementation.void
validate(PreferenceLevel level, java.util.Map values, java.lang.Object validationObject)
Validate the values against their PreferenceDefinition implementation.void
validate(java.lang.String name, PreferenceLevel level, java.lang.String value)
Validate the value against its PreferenceDefinition implementation.void
validate(java.lang.String name, PreferenceLevel level, java.lang.String value, java.lang.Object validationObject)
Validate the value against its PreferenceDefinition implementation.void
validate(java.lang.String name, java.lang.String value)
Validate the value against its PreferenceDefinition implementation.void
validate(java.lang.String name, java.lang.String value, java.lang.Object validationObject)
Validate the value against its PreferenceDefinition implementation.void
validate(java.util.Map values)
Validate the values against their PreferenceDefinition implementation.void
validate(java.util.Map values, java.lang.Object validationObject)
Validate the values against their PreferenceDefinition implementation.
-
-
-
Method Detail
-
getEnumPreferenceLevels
PreferenceLevels getEnumPreferenceLevels()
Returns the enumeration of PreferenceLevels supported by this Preferences declaration. Each Preferences object is associated with a PreferenceLevel in PreferenceLevels. They are chained in a parent-child fashion according to their position in the enumeration, and are used to determine the default value chain.- Returns:
- enumeration of available PreferenceLevel scopes.
-
getValueAt
java.lang.String getValueAt(java.lang.String name, PreferenceLevel level)
Retrieve a preference value at the given PreferenceLevel, ignoring preferences defined in all other levels.- Parameters:
name
- key of the preference.level
- scope of the preference.- Returns:
- the preference value.
-
getValueFrom
java.lang.String getValueFrom(java.lang.String name, PreferenceLevel level)
Retrieve a preference value closest but not finer than the given PreferenceLevel.- Parameters:
name
- key of the preference.level
- delimiting scope of the preference.- Returns:
- the preference value.
-
setValue
void setValue(java.lang.String name, PreferenceLevel level, java.lang.String value) throws PreferencesException
Set a new preference value. Note that the preference name must already have a definition defined, otherwise an exception will be thrown.- Parameters:
level
- scope of new values.value
- new values.- Throws:
PreferencesException
- if validation fails.
-
setValue
void setValue(java.lang.String name, PreferenceLevel level, java.lang.String value, java.lang.Object validationObject) throws PreferencesException
Set a new preference value. Note that the preference name must already have a definition defined, otherwise an exception will be thrown. The validation object is only used during the validation phase.- Parameters:
level
- scope of new values.value
- new values.validationObject
- the validation object.- Throws:
PreferencesException
- if validation fails.
-
setValues
void setValues(PreferenceLevel level, java.util.Map values) throws PreferencesException
Set several values at once. Note that the new values are actually visible during the validation phase. However, if validation fails, the values will be rolled-back. For a description of each validation failure, usePreferencesException.getValidationExceptions()
- each problem is keyed by the name of the value. Note that each and every value must have a corresponding definition declared, otherwise this operation will fail with an exception.- Parameters:
level
- scope of new values.values
- new values.- Throws:
PreferencesException
- if one or more validations fail, they will be encapsulated in thePreferencesException
.
-
setValues
void setValues(PreferenceLevel level, java.util.Map values, java.lang.Object validationObject) throws PreferencesException
Set several values at once. Note that the new values are actually visible during the validation phase. However, if validation fails, the values will be rolled-back. For a description of each validation failure, usePreferencesException.getValidationExceptions()
- each problem is keyed by the name of the value. Note that each and every value must have a corresponding definition declared, otherwise this operation will fail with an exception. The validation object is only used during the validation phase.- Parameters:
level
- scope of new values.values
- new values.validationObject
- the validation object.- Throws:
PreferencesException
- if one or more validations fail, they will be encapsulated in thePreferencesException
.
-
getDefinition
PreferenceDefinition getDefinition(java.lang.String name)
In addition to the key/name-value pair, extra information such as the description of a preferences is encapsulated within aPreferenceDefinition
. If no definition is associated with the given name, null is returned - to create a new definition seePreferencesMgr
.- Parameters:
name
- key of the preference.- Returns:
- the definition detailing the preference.
-
containsPreference
boolean containsPreference(java.lang.String name)
Returns true if preferences collection contains preference with specified name.- Parameters:
name
- the preference name.- Returns:
- if the preferences collection contains preference with the given name
-
addPreference
void addPreference(PreferenceDefinition definition) throws java.lang.IllegalArgumentException, PreferencesException
Add a new preference. Several factory methods are defined inPreferencesMgr
. The definition object must not be null. The name field in the definition should not be blank either.- Parameters:
definition
- the new preference.- Throws:
java.lang.IllegalArgumentException
- if the definition is null.PreferencesException
- if the definition is not properly defined (e.g. name cannot be null).
-
save
void save() throws PreferencesException
Saves the preferences to persistent storage.- Throws:
Throws
-PreferencesException
if saving fails.PreferencesException
-
getLevel
PreferenceLevel getLevel(java.lang.String name)
Retrieves the finest level of granularity that defines the given name.- Parameters:
name
- The name of the preference.- Returns:
- The finest level defining preference.
-
listNames
java.util.Enumeration listNames()
The names of all preferences available.- Returns:
- The list of names.
-
clear
void clear(PreferenceLevel level)
Removes all the preferences at the given PreferenceLevel.- Parameters:
level
- The PreferenceLevel.
-
isDirty
boolean isDirty()
Returns true if any of the preferences have changed, irrespective of the PreferenceLevel.- Returns:
- whether any of the preference definitions have changed.
-
getValue
java.lang.String getValue(java.lang.String name)
Retrieve the preference value for the given key name. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
name
- key of the preference.- Returns:
- the preference value.
-
getValue
java.lang.String getValue(java.lang.String name, java.lang.String defaultValue)
Retrieve the preference value for the given key name or defaultValue if preference does not exist. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
name
- Key of the preference.defaultValue
- the default value.- Returns:
- The preference value or defaultValue if the preference does not exist.
-
getIntValue
int getIntValue(java.lang.String name, int defaultValue)
Retrieve the preference value for the given key name converted into integer or defaultValue if preference does not exist. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
name
- Key of the preference.defaultValue
- the default value.- Returns:
- The preference value converted into integer or defaultValue if the preference does not exist.
-
setValue
void setValue(java.lang.String name, java.lang.String value) throws PreferencesException
Sets a name-value preference pair. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
name
- key of the preference.value
- the preference value.- Throws:
PreferencesException
-
setValue
void setValue(java.lang.String name, java.lang.String value, java.lang.Object validationObject) throws PreferencesException
Sets a name-value preference pair. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed. The validaton object is only used during the validation phase.- Parameters:
name
- key of the preference.value
- the preference value.validationObject
- the validation object.- Throws:
PreferencesException
-
setValues
void setValues(java.util.Map values) throws PreferencesException
SeesetValues(PreferenceLevel, Map)
. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
values
- the new values.- Throws:
PreferencesException
- if one or more validations fail, they will be encapsulated in thePreferencesException
.
-
setValues
void setValues(java.util.Map values, java.lang.Object validationObject) throws PreferencesException
SeesetValues(PreferenceLevel, Map)
. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed. The validation object is only used during the validation phase.- Parameters:
values
- the new values.validationObject
- the validation object.- Throws:
PreferencesException
- if one or more validations fail, they will be encapsulated in thePreferencesException
.
-
clear
void clear()
Removes all the preferences in the preferences object at the given PreferenceLevel. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.
-
setPropagateChangeDepth
@Deprecated void setPropagateChangeDepth(PreferenceLevel target, PreferenceLevel depth) throws java.lang.IllegalArgumentException
Deprecated.limited propagation as it only affects currently loaded preference hierarchy, i.e. cannot propagate server changes to ALL projects - only the one loadedThis method determines whether altering a preference at the target level will trigger the removal of the same preference residing in the levels between the target and the specified depth level. The given depth must of course be at a level finer (i.e. a descendant) of the target level.- Parameters:
target
- the level where value changes occur.depth
- the child depth where keys are automatically removed.- Throws:
Designated
- depth must be a descendent depth of target, otherwise a IllegalArgumentException is thrown.java.lang.IllegalArgumentException
-
getPropagateChangeDepth
PreferenceLevel getPropagateChangeDepth(PreferenceLevel target)
Checks to see whether changing values in this preference level will remove the corresponding key in its immediate child Preferences object in the PreferenceLevel below this one.- Returns:
- whether the child key will be removed if any values are set here.
- See Also:
setPropagateChangeDepth(PreferenceLevel, PreferenceLevel)
-
validate
void validate(java.lang.String name, PreferenceLevel level, java.lang.String value) throws PreferencesException
Validate the value against its PreferenceDefinition implementation. Throws a PreferencesException if it fails.- Parameters:
level
- the scope of the preference.name
- the key of preference.value
- the intended value of the preference.- Throws:
PreferencesException
- if validation fails.
-
validate
void validate(java.lang.String name, PreferenceLevel level, java.lang.String value, java.lang.Object validationObject) throws PreferencesException
Validate the value against its PreferenceDefinition implementation. Throws a PreferencesException if it fails. The validation object partakes in the validation process, as determined by the custom PreferenceDefinition.- Parameters:
level
- the scope of the preference.name
- the key of preference.value
- the intended value of the preference.validationObject
- additional parameter to ascertain validity of name-value pair.- Throws:
PreferencesException
- if validation fails.
-
validate
void validate(java.lang.String name, java.lang.String value) throws PreferencesException
Validate the value against its PreferenceDefinition implementation. Throws a PreferencesException if it fails. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
name
- the key of preference.value
- the intended value of the preference.- Throws:
PreferencesException
- if validation fails.
-
validate
void validate(java.lang.String name, java.lang.String value, java.lang.Object validationObject) throws PreferencesException
Validate the value against its PreferenceDefinition implementation. Throws a PreferencesException if it fails. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed. The validation object partakes in the validation process, as determined by the custom PreferenceDefinition.- Parameters:
name
- the key of preference.value
- the intended value of the preference.validationObject
- additional parameter to ascertain validity of name-value pair.- Throws:
PreferencesException
- if validation fails.
-
validate
void validate(PreferenceLevel level, java.util.Map values) throws PreferencesException
Validate the values against their PreferenceDefinition implementation. Throws a PreferencesException if it fails.PreferencesException.getValidationExceptions()
returns a Map containing the PreferenceException for every preference that failed its validation. Note that the values in the input parameter will take precedence over existing preference values during validation.- Parameters:
level
- the scope of the preference.values
- the intended preference values.- Throws:
PreferencesException
- if validation fails for any of the values - each exception is individually encapsulated inPreferencesException.getValidationExceptions()
.
-
validate
void validate(PreferenceLevel level, java.util.Map values, java.lang.Object validationObject) throws PreferencesException
Validate the values against their PreferenceDefinition implementation. Throws a PreferencesException if it fails.PreferencesException.getValidationExceptions()
returns a Map containing the PreferenceException for every preference that failed its validation. Note that the values in the input parameter will take precedence over existing preference values during validation. The validation object partakes in the validation process, as determined by the custom PreferenceDefinition.- Parameters:
level
- the scope of the preference.values
- the intended preference values.validationObject
- additional parameter to ascertain validity of name-value pair.- Throws:
PreferencesException
- if validation fails for any of the values - each exception is individually encapsulated inPreferencesException.getValidationExceptions()
.
-
validate
void validate(java.util.Map values) throws PreferencesException
Validate the values against their PreferenceDefinition implementation. Throws a PreferencesException if it fails. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
values
- the intended preference values.- Throws:
PreferencesException
- if validation fails for any of the values - each exception is individually encapsulated inPreferencesException.getValidationExceptions()
.
-
validate
void validate(java.util.Map values, java.lang.Object validationObject) throws PreferencesException
Validate the values against their PreferenceDefinition implementation. Throws a PreferencesException if it fails. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed. The validation object partakes in the validation process, as determined by the custom PreferenceDefinition.- Parameters:
values
- the intended preference values.validationObject
- additional parameter to ascertain validity of name-value pair.- Throws:
PreferencesException
- if validation fails for any of the values - each exception is individually encapsulated inPreferencesException.getValidationExceptions()
.
-
clear
void clear(PreferenceLevel level, java.util.Collection names)
Removes named preferences at the specified
PreferenceLevel
.- Parameters:
names
- collection of String preference names.level
- thePreferenceLevel
to be cleared.- Since:
- MicroStrategy Web 8.0.0
-
getAllowableValues
java.util.List<PreferenceAllowableValue> getAllowableValues(java.lang.String name)
Retrieves a list ofPreferenceAllowableValue
objects which are supported by thie preference.- Returns:
- A list of allowable value objects supoprted by this preference.
- Since:
- MicroStrategy Web 9.0.0
-
getBooleanValue
boolean getBooleanValue(java.lang.String name)
Retrieve the boolean preference value for the given key name. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
name
- key of the preference.- Returns:
- the preference value.
-
getBooleanValue
boolean getBooleanValue(java.lang.String name, boolean defaultValue)
Retrieve the boolean preference value for the given key name or defaultValue if preference does not exist. This is a convenience method for which the PreferenceLevel is implicit because (1) the chain only contains one Preferences object, or (2) a default PreferenceLevel may be assumed.- Parameters:
name
- Key of the preference.defaultValue
- the default value.- Returns:
- The preference value or defaultValue if the preference does not exist.
-
-