/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.core;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.osgi.service.prefs.BackingStoreException;
/**
* ValidationPreferencesImpl
*
* @since 8.0
*/
public class TransformationPreferencesImpl implements TransformationPreferences {
//Used to enable Unit Testing.
public static boolean HEADLESS = false;
private static int DEFAULT_LENGTH = 0;
private static int UPPER_RECURSION_LIMIT = 10;
private static boolean DEFAULT_REMOVE_ATTRIBUTES_VALUE = false;
private boolean hasInitialized = false;
private void initializeDefaultsIfNeeded() {
if(HEADLESS) return;
IEclipsePreferences defaultPrefs = ModelerCore.getDefaultPreferences(ModelerCore.PLUGIN_ID);
int val = defaultPrefs.getInt(DEFAULT_STRING_LENGTH_KEY, 0);
if (val == 0) {
defaultPrefs.putInt(DEFAULT_STRING_LENGTH_KEY, DEFAULT_LENGTH);
}
val = defaultPrefs.getInt(UPPER_RECURSION_LIMIT_KEY, 0);
if (val == 0) {
defaultPrefs.putInt(UPPER_RECURSION_LIMIT_KEY, UPPER_RECURSION_LIMIT);
}
boolean bol = defaultPrefs.getBoolean(REMOVE_DUPLICATE_ATTRIBUTES_KEY, false);
if (!bol) {
defaultPrefs.putBoolean(REMOVE_DUPLICATE_ATTRIBUTES_KEY, DEFAULT_REMOVE_ATTRIBUTES_VALUE);
}
save();
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.core.TransformationPreferences#getDefaultStringLength()
*/
@Override
public int getDefaultStringLength() {
if (HEADLESS) return DEFAULT_LENGTH;
if (!hasInitialized) {
initializeDefaultsIfNeeded();
hasInitialized = true;
}
return getPreferences().getInt(DEFAULT_STRING_LENGTH_KEY, DEFAULT_LENGTH);
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.core.TransformationPreferences#getDefaultStringLengthDefault()
*/
@Override
public int getDefaultStringLengthDefault() {
return DEFAULT_LENGTH;
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.core.TransformationPreferences#setDefaultStringLength(int)
*/
@Override
public void setDefaultStringLength( int val ) {
if (HEADLESS) return;
getPreferences().putInt(DEFAULT_STRING_LENGTH_KEY, val);
save();
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.core.TransformationPreferences#setUpperRecursionLimit(int)
*/
@Override
public void setUpperRecursionLimit( int val ) {
if (HEADLESS) return;
getPreferences().putInt(UPPER_RECURSION_LIMIT_KEY, val);
save();
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.core.TransformationPreferences#getUpperRecursionLimit()
*/
@Override
public int getUpperRecursionLimit() {
if (HEADLESS) return UPPER_RECURSION_LIMIT;
if (!hasInitialized) {
initializeDefaultsIfNeeded();
hasInitialized = true;
}
return getPreferences().getInt(UPPER_RECURSION_LIMIT_KEY, UPPER_RECURSION_LIMIT);
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.core.TransformationPreferences#getUpperRecursionLimitDefault()
*/
@Override
public int getUpperRecursionLimitDefault() {
return UPPER_RECURSION_LIMIT;
}
@Override
public boolean getRemoveDuplicateAttibutes() {
if (HEADLESS) return DEFAULT_REMOVE_ATTRIBUTES_VALUE;
if (!hasInitialized) {
initializeDefaultsIfNeeded();
hasInitialized = true;
}
return getPreferences().getBoolean(REMOVE_DUPLICATE_ATTRIBUTES_KEY, DEFAULT_REMOVE_ATTRIBUTES_VALUE);
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.core.TransformationPreferences#getRemoveDuplicateAttibutesDefault()
*/
@Override
public boolean getRemoveDuplicateAttibutesDefault() {
return DEFAULT_REMOVE_ATTRIBUTES_VALUE;
}
@Override
public void setRemoveDuplicateAttibutes( boolean val ) {
if (HEADLESS) return;
getPreferences().putBoolean(REMOVE_DUPLICATE_ATTRIBUTES_KEY, val);
save();
}
private IEclipsePreferences getPreferences() {
return ModelerCore.getPreferences(ModelerCore.PLUGIN_ID);
}
private void save() {
try {
ModelerCore.savePreferences(ModelerCore.PLUGIN_ID);
} catch (BackingStoreException e) {
ModelerCore.Util.log(e);
}
}
}