206 lines
4.0 KiB
Java
206 lines
4.0 KiB
Java
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
import javax.xml.parsers.ParserConfigurationException;
|
|
|
|
import org.w3c.dom.*;
|
|
import org.xml.sax.SAXException;
|
|
|
|
public class Settings
|
|
{
|
|
private String fileName = "..\\settings.xml";
|
|
private HashMap dbSettings;
|
|
private HashMap noiseSettings;
|
|
private HashMap vars;
|
|
|
|
|
|
public Settings(String aFileName)
|
|
{
|
|
fileName = aFileName;
|
|
dbSettings = new HashMap();
|
|
noiseSettings = new HashMap();
|
|
vars = new HashMap();
|
|
}
|
|
|
|
public boolean loadSettings()
|
|
{
|
|
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
|
DocumentBuilder db;
|
|
Document doc;
|
|
try
|
|
{
|
|
db = dbf.newDocumentBuilder();
|
|
}
|
|
catch (ParserConfigurationException e)
|
|
{
|
|
return false;
|
|
}
|
|
try
|
|
{
|
|
doc = db.parse(fileName);
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
System.out.println("File not found!");
|
|
return false;
|
|
}
|
|
catch (SAXException e)
|
|
{
|
|
System.out.println("Error parsing file!");
|
|
return false;
|
|
}
|
|
|
|
NodeList dbSettings = doc.getElementsByTagName("db");
|
|
|
|
if (dbSettings.getLength() == 1)
|
|
{
|
|
loadDBSettings(dbSettings.item(0));
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
NodeList noiseSettings = doc.getElementsByTagName("noise");
|
|
if (noiseSettings.getLength() == 1)
|
|
{
|
|
loadNoiseSettings(noiseSettings.item(0));
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
NodeList varSettings = doc.getElementsByTagName("vars");
|
|
if (varSettings.getLength() == 1)
|
|
{
|
|
loadVars(varSettings.item(0));
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
private boolean loadDBSettings(Node aRoot)
|
|
{
|
|
NodeList children = aRoot.getChildNodes();
|
|
for (int i = 0; i < children.getLength(); ++i)
|
|
{
|
|
Node child = children.item(i);
|
|
if (child.getNodeType() == Node.TEXT_NODE)
|
|
{
|
|
continue;
|
|
}
|
|
dbSettings.put(child.getNodeName(), child.getFirstChild().getNodeValue());
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private boolean loadNoiseSettings(Node aRoot)
|
|
{
|
|
NodeList children = aRoot.getChildNodes();
|
|
for (int i = 0; i < children.getLength(); ++i)
|
|
{
|
|
Node child = children.item(i);
|
|
if (child.getNodeType() == Node.TEXT_NODE)
|
|
{
|
|
continue;
|
|
}
|
|
noiseSettings.put(child.getNodeName(), child.getFirstChild().getNodeValue());
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private boolean loadVars(Node aRoot)
|
|
{
|
|
NodeList vars = aRoot.getChildNodes();
|
|
for (int i = 0; i < vars.getLength(); ++i)
|
|
{
|
|
if (vars.item(i).getNodeType() == Node.ELEMENT_NODE)
|
|
{
|
|
loadVar(vars.item(i));
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
private boolean loadVar(Node aVar)
|
|
{
|
|
aVar.normalize();
|
|
NodeList varSettings = aVar.getChildNodes();
|
|
|
|
int i = 0;
|
|
|
|
// Get the variable's name
|
|
if (varSettings.item(i).getNodeType() == Node.TEXT_NODE)
|
|
{
|
|
i++;
|
|
}
|
|
|
|
String name = varSettings.item(i).getFirstChild().getNodeValue();
|
|
i++;
|
|
|
|
// Get the values for the variable
|
|
ArrayList values = new ArrayList();
|
|
|
|
for(; i < varSettings.getLength(); ++i)
|
|
{
|
|
Node valueNode = varSettings.item(i);
|
|
if (valueNode.getNodeType() == Node.TEXT_NODE)
|
|
{
|
|
continue;
|
|
}
|
|
String value = valueNode.getFirstChild().getNodeValue();
|
|
values.add(value);
|
|
}
|
|
vars.put(name, values);
|
|
return true;
|
|
}
|
|
|
|
public ArrayList getVarValues(String aVarName)
|
|
{
|
|
if (!vars.containsKey(aVarName))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return (ArrayList) vars.get(aVarName);
|
|
}
|
|
|
|
public HashMap getVars()
|
|
{
|
|
return vars;
|
|
}
|
|
|
|
public Object[] getVarNames()
|
|
{
|
|
return vars.keySet().toArray();
|
|
}
|
|
|
|
public String getDBSetting(String aParameter)
|
|
{
|
|
if (dbSettings.containsKey(aParameter))
|
|
{
|
|
return (String) dbSettings.get(aParameter);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public String getNoiseSetting(String aParameter)
|
|
{
|
|
if (noiseSettings.containsKey(aParameter))
|
|
{
|
|
return (String) noiseSettings.get(aParameter);
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|