@Override
  public void saveDatabaseConfiguration(DatabaseConfig config) {
    Document document = DocumentHelper.createDocument();
    Element rootElement = document.addElement(CONFIG_ROOT);

    DatabaseConfigHandler dbConfigHandler = new DatabaseConfigHandler();
    dbConfigHandler.writeTo(rootElement, config);
    Writer writer = null;
    try {
      writer = getWriter();
      XMLWriter xmlWriter = new XMLWriter(writer, OutputFormat.createPrettyPrint());
      xmlWriter.write(document);
    } catch (IOException ioe) {
      throw new RuntimeIOException("Error writing database configuration file.", ioe);
    } finally {
      IOUtils.closeQuietly(writer);
    }
  }
  @Override
  public DatabaseConfig loadDatabaseConfiguration() {
    DatabaseConfigHandler dbConfigHandler = new DatabaseConfigHandler();

    Reader fileReader = null;
    SAXReader xmlReader = new SAXReader();
    try {
      fileReader = getReader();
      Document root = xmlReader.read(fileReader);
      return dbConfigHandler.parse(root.getRootElement());
    } catch (DocumentException de) {
      throw new RuntimeException("Error parsing database configuration file.", de);
    } catch (IOException ioe) {
      throw new RuntimeIOException("Error reading database configuration file.", ioe);
    } finally {
      IOUtils.closeQuietly(fileReader);
    }
  }