--- /dev/null
+package configuration;
+
+import java.io.File;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * It provides the configuration data from the "resources/config.xml" XML file
+ */
+public class ConfigXML {
+
+ private String configFile = "src/main/resources/config.xml";
+
+ private String businessLogicNode;
+
+ private String businessLogicPort;
+
+ private String businessLogicName;
+
+ private static String dbFilename;
+
+ // Two possible values: "open" or "initialize"
+ private String dataBaseOpenMode;
+
+ // Two possible values: true (no instance of RemoteServer needs to be launched)
+ // or false (RemoteServer needs to be run first)
+ private boolean businessLogicLocal;
+
+ // Two possible values: true (if the database is in same node as business logic
+ // ) or false (in other case)
+ private boolean databaseLocal;
+
+ private String databaseNode;
+
+ private int databasePort;
+
+ private String user;
+
+ private String password;
+
+ private String locale;
+
+ public String getLocale() {
+ return locale;
+ }
+
+ public int getDatabasePort() {
+ return databasePort;
+ }
+
+ public String getUser() {
+ return user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public boolean isDatabaseLocal() {
+ return databaseLocal;
+ }
+
+ public boolean isBusinessLogicLocal() {
+ return businessLogicLocal;
+ }
+
+ private static ConfigXML theInstance = new ConfigXML();
+
+ private ConfigXML() {
+
+ try {
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+ Document doc = dBuilder.parse(new File(configFile));
+ doc.getDocumentElement().normalize();
+
+ NodeList list = doc.getElementsByTagName("config");
+ Element config = (Element) list.item(0); // list.item(0) is a Node that is an Element
+
+ // Two possible values: true (no instance of RemoteServer needs to be launched)
+ // or false (RemoteServer needs to be run first)
+ String value = ((Element) config.getElementsByTagName("businessLogic").item(0)).getAttribute("local");
+ businessLogicLocal = value.equals("true");
+
+ businessLogicNode = getTagValue("businessLogicNode", config);
+
+ businessLogicPort = getTagValue("businessLogicPort", config);
+
+ businessLogicName = getTagValue("businessLogicName", config);
+
+ locale = getTagValue("locale", config);
+
+ dbFilename = getTagValue("dbFilename", config);
+
+ // Two possible values: true (no instance of RemoteServer needs to be launched)
+ // or false (RemoteServer needs to be run first)
+ value = ((Element) config.getElementsByTagName("database").item(0)).getAttribute("local");
+ databaseLocal = value.equals("true");
+
+ // Two possible values: "open" or "initialize"
+ // dataBaseOpenMode= getTagValue("dataBaseOpenMode", config);
+ dataBaseOpenMode = "open";
+
+ databaseNode = getTagValue("databaseNode", config);
+
+ databasePort = Integer.parseInt(getTagValue("databasePort", config));
+
+ user = getTagValue("user", config);
+
+ password = getTagValue("password", config);
+
+ System.out.print("Read from config.xml: ");
+ System.out.print("\t businessLogicLocal=" + businessLogicLocal);
+ System.out.print("\t databaseLocal=" + databaseLocal);
+ System.out.println("\t dataBaseOpenMode=" + dataBaseOpenMode);
+
+ } catch (Exception e) {
+ System.out.println("Error in ConfigXML.java: problems with " + configFile);
+ e.printStackTrace();
+ }
+
+ }
+
+ private static String getTagValue(String sTag, Element eElement) {
+ NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
+ Node nValue = nlList.item(0);
+
+ return nValue.getNodeValue();
+
+ }
+
+ public static ConfigXML getInstance() {
+ return theInstance;
+ }
+
+ public String getBusinessLogicNode() {
+ return businessLogicNode;
+ }
+
+ public String getBusinessLogicPort() {
+ return businessLogicPort;
+ }
+
+ public String getBusinessLogicName() {
+ return businessLogicName;
+ }
+
+ public String getDbFilename() {
+ return dbFilename;
+ }
+
+ public String getDataBaseOpenMode() {
+ return dataBaseOpenMode;
+ }
+
+ public String getDatabaseNode() {
+ return databaseNode;
+ }
+
+}