// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.tracer2.preferences;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import org.openstreetmap.josm.Main;
public class ServerParamList {
ArrayList<ServerParam> m_listServerParam = new ArrayList<>();
ServerParam m_oActivParam = null;
String m_strFilename;
public ServerParamList(String filename) {
this.m_strFilename = filename;
if (filename == null) {
loadDefault();
} else {
load();
}
}
public void load() {
try (BufferedReader oReader = new BufferedReader(new InputStreamReader(new FileInputStream(m_strFilename), "UTF-8"))) {
StringBuilder oBuilder = new StringBuilder();
String strLine;
while ((strLine = oReader.readLine()) != null) {
oBuilder.append(strLine).append('\n');
if (strLine.equals("")) {
m_listServerParam.add(ServerParam.unserialize(oBuilder.toString()));
oBuilder = new StringBuilder();
}
}
} catch (Exception e) {
loadDefault();
}
}
public void loadDefault() {
try (
InputStream oIP = getClass().getResourceAsStream("/resources/serverParam.cfg");
BufferedReader oReader = new BufferedReader(new InputStreamReader(oIP));
) {
StringBuilder oBuilder = new StringBuilder();
String strLine;
while ((strLine = oReader.readLine()) != null) {
oBuilder.append(strLine).append('\n');
if (strLine.equals("")) {
m_listServerParam.add(ServerParam.unserialize(oBuilder.toString()));
oBuilder = new StringBuilder();
}
}
} catch (Exception e) {
Main.warn("Tracer2 warning: can't load file " + m_strFilename);
}
}
public void save() {
try (OutputStreamWriter oWriter = new OutputStreamWriter(new FileOutputStream(m_strFilename), "UTF-8")) {
for (ServerParam param : m_listServerParam) {
oWriter.write(param.serialize());
}
} catch (Exception e) {
Main.warn("Tracer2 warning: can't save file " + m_strFilename);
}
}
public List<ServerParam> getParamList() {
return m_listServerParam;
}
public ServerParam getActivParam() {
return m_oActivParam;
}
public void setActivParam(ServerParam param) {
if (m_listServerParam.contains(param)) {
m_oActivParam = param;
}
}
public List<ServerParam> getEnableParamList() {
List<ServerParam> listParam = new ArrayList<>();
for (ServerParam param: m_listServerParam) {
if (param.isEnabled()) {
listParam.add(param);
}
}
return listParam;
}
public void addParam(ServerParam param) {
m_listServerParam.add(param);
}
public void removeParam(ServerParam param) {
param.setEnabled(false);
m_listServerParam.remove(param);
}
}