/*
* SoapUI, Copyright (C) 2004-2016 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/
package com.eviware.soapui.impl.settings;
import com.eviware.soapui.model.settings.Settings;
import com.eviware.soapui.model.settings.SettingsListener;
import com.eviware.soapui.support.types.StringToStringMap;
import java.util.HashSet;
import java.util.Set;
/**
* Default Settings implementation
*
* @author Ole.Matzura
*/
public class SettingsImpl implements Settings {
private final Settings parent;
private final StringToStringMap values = new StringToStringMap();
private final Set<SettingsListener> listeners = new HashSet<SettingsListener>();
public SettingsImpl() {
this(null);
}
public SettingsImpl(Settings parent) {
this.parent = parent;
}
public boolean isSet(String id) {
return values.containsKey(id);
}
public String getString(String id, String defaultValue) {
if (values.containsKey(id)) {
return values.get(id);
}
return parent == null ? defaultValue : parent.getString(id, defaultValue);
}
public void setString(String id, String value) {
String oldValue = getString(id, null);
values.put(id, value);
for (SettingsListener listener : listeners) {
listener.settingChanged(id, value, oldValue);
}
}
public void reloadSettings() {
for (SettingsListener listener : listeners) {
listener.settingsReloaded();
}
}
public boolean getBoolean(String id) {
return getBoolean(id, false);
}
@Override
public boolean getBoolean(String id, boolean defaultValue) {
if (values.containsKey(id)) {
return Boolean.parseBoolean(values.get(id));
}
return parent == null ? defaultValue : parent.getBoolean(id);
}
public void setBoolean(String id, boolean value) {
String oldValue = getString(id, null);
values.put(id, Boolean.toString(value));
for (SettingsListener listener : listeners) {
listener.settingChanged(id, Boolean.toString(value), oldValue);
}
}
public long getLong(String id, long defaultValue) {
if (values.containsKey(id)) {
try {
return Long.parseLong(values.get(id));
} catch (NumberFormatException e) {
}
}
return defaultValue;
}
public void addSettingsListener(SettingsListener listener) {
listeners.add(listener);
}
public void removeSettingsListener(SettingsListener listener) {
listeners.remove(listener);
}
public void clearSetting(String id) {
values.remove(id);
}
public void setLong(String id, long value) {
values.put(id, Long.toString(value));
}
}