/**
* UPnP PortMapper - A tool for managing port forwardings via UPnP
* Copyright (C) 2015 Christoph Pirkl <christoph at users.sourceforge.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.chris.portmapper;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.chris.portmapper.model.PortMappingPreset;
import org.chris.portmapper.router.cling.ClingRouterFactory;
import ch.qos.logback.classic.Level;
public class Settings implements Serializable {
private static final long serialVersionUID = -1349121864190290050L;
public final static String PROPERTY_PORT_MAPPING_PRESETS = "presets";
private List<PortMappingPreset> presets;
private boolean useEntityEncoding;
private String logLevel;
private String routerFactoryClassName;
private transient PropertyChangeSupport propertyChangeSupport;
public Settings() {
useEntityEncoding = true;
logLevel = Level.INFO.toString();
presets = new ArrayList<>();
routerFactoryClassName = ClingRouterFactory.class.getName();
propertyChangeSupport = new PropertyChangeSupport(this);
}
public void addPropertyChangeListener(final String property, final PropertyChangeListener listener) {
this.propertyChangeSupport.addPropertyChangeListener(property, listener);
}
public List<PortMappingPreset> getPresets() {
return presets;
}
public void setPresets(final List<PortMappingPreset> presets) {
this.presets = presets;
}
public void addPreset(final PortMappingPreset newPreset) {
final List<PortMappingPreset> oldPresets = new ArrayList<>(this.presets);
this.presets.add(newPreset);
this.propertyChangeSupport.firePropertyChange(PROPERTY_PORT_MAPPING_PRESETS, oldPresets,
new ArrayList<>(this.presets));
}
public void removePresets(final PortMappingPreset selectedPreset) {
final List<PortMappingPreset> oldPresets = new ArrayList<>(this.presets);
this.presets.remove(selectedPreset);
this.propertyChangeSupport.firePropertyChange(PROPERTY_PORT_MAPPING_PRESETS, oldPresets,
new ArrayList<>(this.presets));
}
public void savePreset(final PortMappingPreset portMappingPreset) {
this.propertyChangeSupport.firePropertyChange(PROPERTY_PORT_MAPPING_PRESETS, null,
new ArrayList<>(this.presets));
}
@Override
public String toString() {
return "[Settings: presets=" + presets + ", useEntityEncoding=" + useEntityEncoding + ", logLevel=" + logLevel
+ ", routerFactoryClassName=" + routerFactoryClassName + "]";
}
public boolean isUseEntityEncoding() {
return useEntityEncoding;
}
public void setUseEntityEncoding(final boolean useEntityEncoding) {
this.useEntityEncoding = useEntityEncoding;
}
public String getLogLevel() {
return this.logLevel;
}
public void setLogLevel(final String logLevel) {
this.logLevel = logLevel;
}
public String getRouterFactoryClassName() {
return routerFactoryClassName;
}
public void setRouterFactoryClassName(final String routerFactoryClassName) {
this.routerFactoryClassName = routerFactoryClassName;
}
}