blob: b30990a12d4f876ea6ce3e1df23b3eae1a834386 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.directory.studio.ldapbrowser.core;
import java.util.HashSet;
import java.util.Set;
import org.apache.directory.studio.ldapbrowser.core.model.schema.BinaryAttribute;
import org.apache.directory.studio.ldapbrowser.core.model.schema.BinarySyntax;
import org.apache.directory.studio.ldapbrowser.core.model.schema.ObjectClassIconPair;
import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
import org.eclipse.core.runtime.Preferences;
/**
* This class is used to manage and access the preferences of the Browser Core Plugin
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public class BrowserCorePreferences
{
private Set<String> binaryAttributeCache;
private Set<String> binarySyntaxCache;
/**
* Gets the OIDs and names of the binary attributes
*
* @return
* the OIDs and names of the binary attributes
*/
public Set<String> getUpperCasedBinaryAttributeOidsAndNames()
{
if ( binaryAttributeCache == null )
{
binaryAttributeCache = new HashSet<String>();
BinaryAttribute[] binaryAttributes = getBinaryAttributes();
for ( BinaryAttribute binaryAttribute : binaryAttributes )
{
if ( binaryAttribute.getAttributeNumericOidOrName() != null )
{
binaryAttributeCache.add( binaryAttribute.getAttributeNumericOidOrName().toUpperCase() );
}
}
}
return binaryAttributeCache;
}
/**
* Gets an array containing the binary attributes
*
* @return
* an array containing the binary attributes
*/
public BinaryAttribute[] getBinaryAttributes()
{
BinaryAttribute[] binaryAttributes = ( BinaryAttribute[] ) load( BrowserCoreConstants.PREFERENCE_BINARY_ATTRIBUTES );
return binaryAttributes;
}
/**
* Sets the binary attributes
*
* @param binaryAttributes
* the binary attributes to set
*/
public void setBinaryAttributes( BinaryAttribute[] binaryAttributes )
{
store( BrowserCoreConstants.PREFERENCE_BINARY_ATTRIBUTES, binaryAttributes );
binaryAttributeCache = null;
}
/**
* Gets the default binary attributes
*
* @return
* the default binary attributes
*/
public BinaryAttribute[] getDefaultBinaryAttributes()
{
BinaryAttribute[] binaryAttributes = ( BinaryAttribute[] ) loadDefault( BrowserCoreConstants.PREFERENCE_BINARY_ATTRIBUTES );
return binaryAttributes;
}
/**
* Sets the default binary attributes
*
* @param defaultBinaryAttributes
* the default binary attributes to set
*/
public void setDefaultBinaryAttributes( BinaryAttribute[] defaultBinaryAttributes )
{
storeDefault( BrowserCoreConstants.PREFERENCE_BINARY_ATTRIBUTES, defaultBinaryAttributes );
}
/**
* Gets the binary syntax OIDs.
*
* @return the binary syntax OIDs
*/
public Set<String> getUpperCasedBinarySyntaxOids()
{
if ( binarySyntaxCache == null )
{
binarySyntaxCache = new HashSet<String>();
BinarySyntax[] binarySyntaxes = getBinarySyntaxes();
for ( BinarySyntax binarySyntax : binarySyntaxes )
{
if ( binarySyntax.getSyntaxNumericOid() != null )
{
binarySyntaxCache.add( binarySyntax.getSyntaxNumericOid().toUpperCase() );
}
}
}
return binarySyntaxCache;
}
/**
* Gets the binary syntaxes
*
* @return
* the binary syntaxes
*/
public BinarySyntax[] getBinarySyntaxes()
{
BinarySyntax[] binarySyntaxes = ( BinarySyntax[] ) load( BrowserCoreConstants.PREFERENCE_BINARY_SYNTAXES );
return binarySyntaxes;
}
/**
* Sets the binary syntaxes
*
* @param binarySyntaxes
* the binary syntaxes to set
*/
public void setBinarySyntaxes( BinarySyntax[] binarySyntaxes )
{
store( BrowserCoreConstants.PREFERENCE_BINARY_SYNTAXES, binarySyntaxes );
binarySyntaxCache = null;
}
/**
* Gets the default binary syntaxes
*
* @return
* the default binary syntaxes
*/
public BinarySyntax[] getDefaultBinarySyntaxes()
{
BinarySyntax[] binarySyntaxes = ( BinarySyntax[] ) loadDefault( BrowserCoreConstants.PREFERENCE_BINARY_SYNTAXES );
return binarySyntaxes;
}
/**
* Sets the default binary syntaxes
*
* @param defaultBinarySyntaxes
* the default binary syntaxes to set
*/
public void setDefaultBinarySyntaxes( BinarySyntax[] defaultBinarySyntaxes )
{
storeDefault( BrowserCoreConstants.PREFERENCE_BINARY_SYNTAXES, defaultBinarySyntaxes );
}
/**
* Gets the object class icons.
*
* @return the object class icons
*/
public ObjectClassIconPair[] getObjectClassIcons()
{
ObjectClassIconPair[] ocIcons = ( ObjectClassIconPair[] ) load( BrowserCoreConstants.PREFERENCE_OBJECT_CLASS_ICONS );
return ocIcons;
}
/**
* Sets the object class icons.
*
* @param ocIcons the new object class icons
*/
public void setObjectClassIcons( ObjectClassIconPair[] ocIcons )
{
store( BrowserCoreConstants.PREFERENCE_OBJECT_CLASS_ICONS, ocIcons );
}
/**
* Gets the default object class icon.
*
* @return the default object class icon
*/
public ObjectClassIconPair[] getDefaultObjectClassIcon()
{
ObjectClassIconPair[] ocIcons = ( ObjectClassIconPair[] ) loadDefault( BrowserCoreConstants.PREFERENCE_OBJECT_CLASS_ICONS );
return ocIcons;
}
/**
* Sets the default object class icons.
*
* @param ocIcons the new default object class icons
*/
public void setDefaultObjectClassIcons( ObjectClassIconPair[] ocIcons )
{
storeDefault( BrowserCoreConstants.PREFERENCE_OBJECT_CLASS_ICONS, ocIcons );
}
/**
* Loads the current value of the string-valued property with the given name.
*
* @param key
* the name of the property
* @return
* the corresponding object
*/
private static Object load( String key )
{
Preferences store = BrowserCorePlugin.getDefault().getPluginPreferences();
String s = store.getString( key );
return Utils.deserialize( s );
}
/**
* Stores the current value of the string-valued property with the given name.
*
* @param key
* the name of the property
* @param o
* the new current value of the property
*/
private static void store( String key, Object o )
{
Preferences store = BrowserCorePlugin.getDefault().getPluginPreferences();
String s = Utils.serialize( o );
store.setValue( key, s );
BrowserCorePlugin.getDefault().savePluginPreferences();
}
/**
* Loads the default value for the string-valued property with the given name.
*
* @param key
* the name of the property
* @return
* the default value of the named property
*/
private static Object loadDefault( String key )
{
Preferences store = BrowserCorePlugin.getDefault().getPluginPreferences();
String s = store.getDefaultString( key );
return Utils.deserialize( s );
}
/**
* Stores the default value for the string-valued property with the given name.
*
* @param key
* the name of the property
* @param o
* the new default value for the property
*/
private static void storeDefault( String key, Object o )
{
Preferences store = BrowserCorePlugin.getDefault().getPluginPreferences();
String s = Utils.serialize( o );
store.setDefault( key, s );
BrowserCorePlugin.getDefault().savePluginPreferences();
}
}