From 72b44bdd52f8a968c71d269a5f90fbf54ef76a58 Mon Sep 17 00:00:00 2001
From: tobias <tobias.ullerich@icloud.com>
Date: Fri, 19 Aug 2016 20:38:51 +0200
Subject: [PATCH] Move XML Classes to libUtils

---
 .../playpad/action/ActionSerializer.java      |   6 +-
 .../de/tobias/playpad/action/MappingList.java |   2 +-
 .../playpad/action/MappingSerializer.java     |   6 +-
 .../action/mapper/MapperSerializer.java       |   4 +-
 .../de/tobias/playpad/pad/PadSerializer.java  |   4 +-
 .../de/tobias/playpad/project/Project.java    |   2 +-
 .../playpad/project/ProjectReference.java     |   2 +-
 .../project/ProjectReferenceSerializer.java   |   4 +-
 .../playpad/settings/ProfileReference.java    |   2 +-
 .../settings/ProfileReferenceSerializer.java  |   4 +-
 .../playpad/settings/keys/KeyCollection.java  |   2 +-
 .../playpad/settings/keys/KeySerializer.java  |   4 +-
 .../tobias/playpad/xml/XMLDeserializer.java   |  24 ----
 .../src/de/tobias/playpad/xml/XMLHandler.java | 131 ------------------
 .../de/tobias/playpad/xml/XMLSerializer.java  |  26 ----
 15 files changed, 21 insertions(+), 202 deletions(-)
 delete mode 100644 PlayWallCore/src/de/tobias/playpad/xml/XMLDeserializer.java
 delete mode 100644 PlayWallCore/src/de/tobias/playpad/xml/XMLHandler.java
 delete mode 100644 PlayWallCore/src/de/tobias/playpad/xml/XMLSerializer.java

diff --git a/PlayWallCore/src/de/tobias/playpad/action/ActionSerializer.java b/PlayWallCore/src/de/tobias/playpad/action/ActionSerializer.java
index ff4c629b..4fe1c68b 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/ActionSerializer.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/ActionSerializer.java
@@ -8,9 +8,9 @@ import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.action.mapper.Mapper;
 import de.tobias.playpad.action.mapper.MapperSerializer;
 import de.tobias.playpad.registry.NoSuchComponentException;
-import de.tobias.playpad.xml.XMLDeserializer;
-import de.tobias.playpad.xml.XMLHandler;
-import de.tobias.playpad.xml.XMLSerializer;
+import de.tobias.utils.xml.XMLDeserializer;
+import de.tobias.utils.xml.XMLHandler;
+import de.tobias.utils.xml.XMLSerializer;
 
 public class ActionSerializer implements XMLSerializer<Action>, XMLDeserializer<Action> {
 
diff --git a/PlayWallCore/src/de/tobias/playpad/action/MappingList.java b/PlayWallCore/src/de/tobias/playpad/action/MappingList.java
index 103a680c..ab8e325e 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/MappingList.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/MappingList.java
@@ -17,7 +17,7 @@ import org.dom4j.io.SAXReader;
 import org.dom4j.io.XMLWriter;
 
 import de.tobias.playpad.settings.Profile;
-import de.tobias.playpad.xml.XMLHandler;
+import de.tobias.utils.xml.XMLHandler;
 
 // COMMENT MappingList
 public class MappingList extends ArrayList<Mapping> {
diff --git a/PlayWallCore/src/de/tobias/playpad/action/MappingSerializer.java b/PlayWallCore/src/de/tobias/playpad/action/MappingSerializer.java
index e1885680..aea0d32e 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/MappingSerializer.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/MappingSerializer.java
@@ -5,9 +5,9 @@ import java.util.UUID;
 import org.dom4j.Element;
 
 import de.tobias.playpad.settings.Profile;
-import de.tobias.playpad.xml.XMLDeserializer;
-import de.tobias.playpad.xml.XMLHandler;
-import de.tobias.playpad.xml.XMLSerializer;
+import de.tobias.utils.xml.XMLDeserializer;
+import de.tobias.utils.xml.XMLHandler;
+import de.tobias.utils.xml.XMLSerializer;
 
 public class MappingSerializer implements XMLSerializer<Mapping>, XMLDeserializer<Mapping> {
 
diff --git a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperSerializer.java b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperSerializer.java
index 604f33b3..34f62160 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperSerializer.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperSerializer.java
@@ -5,8 +5,8 @@ import org.dom4j.Element;
 import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.action.Action;
 import de.tobias.playpad.registry.NoSuchComponentException;
-import de.tobias.playpad.xml.XMLDeserializer;
-import de.tobias.playpad.xml.XMLSerializer;
+import de.tobias.utils.xml.XMLDeserializer;
+import de.tobias.utils.xml.XMLSerializer;
 
 /**
  * Laden und Speichern von Mappern (Array von Mappern)
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/PadSerializer.java b/PlayWallCore/src/de/tobias/playpad/pad/PadSerializer.java
index ef1d1080..44b42cd8 100644
--- a/PlayWallCore/src/de/tobias/playpad/pad/PadSerializer.java
+++ b/PlayWallCore/src/de/tobias/playpad/pad/PadSerializer.java
@@ -15,9 +15,9 @@ import de.tobias.playpad.settings.Fade;
 import de.tobias.playpad.settings.Warning;
 import de.tobias.playpad.tigger.Trigger;
 import de.tobias.playpad.tigger.TriggerPoint;
-import de.tobias.playpad.xml.XMLDeserializer;
-import de.tobias.playpad.xml.XMLSerializer;
 import de.tobias.utils.settings.UserDefaults;
+import de.tobias.utils.xml.XMLDeserializer;
+import de.tobias.utils.xml.XMLSerializer;
 
 public class PadSerializer implements XMLSerializer<Pad>, XMLDeserializer<Pad> {
 
diff --git a/PlayWallCore/src/de/tobias/playpad/project/Project.java b/PlayWallCore/src/de/tobias/playpad/project/Project.java
index bdbb2b48..5d7b13af 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/Project.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/Project.java
@@ -19,7 +19,7 @@ import de.tobias.playpad.pad.PadStatus;
 import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileNotFoundException;
-import de.tobias.playpad.xml.XMLHandler;
+import de.tobias.utils.xml.XMLHandler;
 import javafx.application.Platform;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
diff --git a/PlayWallCore/src/de/tobias/playpad/project/ProjectReference.java b/PlayWallCore/src/de/tobias/playpad/project/ProjectReference.java
index 44724c67..dfd5aae6 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/ProjectReference.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/ProjectReference.java
@@ -16,10 +16,10 @@ import org.dom4j.Element;
 
 import de.tobias.playpad.Displayable;
 import de.tobias.playpad.settings.ProfileReference;
-import de.tobias.playpad.xml.XMLHandler;
 import de.tobias.utils.application.App;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.application.container.PathType;
+import de.tobias.utils.xml.XMLHandler;
 import javafx.beans.property.SimpleStringProperty;
 import javafx.beans.property.StringProperty;
 
diff --git a/PlayWallCore/src/de/tobias/playpad/project/ProjectReferenceSerializer.java b/PlayWallCore/src/de/tobias/playpad/project/ProjectReferenceSerializer.java
index 009b68e7..d84647a2 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/ProjectReferenceSerializer.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/ProjectReferenceSerializer.java
@@ -8,10 +8,10 @@ import java.util.UUID;
 import org.dom4j.Element;
 
 import de.tobias.playpad.settings.ProfileReference;
-import de.tobias.playpad.xml.XMLDeserializer;
-import de.tobias.playpad.xml.XMLSerializer;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.application.container.PathType;
+import de.tobias.utils.xml.XMLDeserializer;
+import de.tobias.utils.xml.XMLSerializer;
 
 public class ProjectReferenceSerializer implements XMLDeserializer<ProjectReference>, XMLSerializer<ProjectReference> {
 
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/ProfileReference.java b/PlayWallCore/src/de/tobias/playpad/settings/ProfileReference.java
index c50d1772..5da85518 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/ProfileReference.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/ProfileReference.java
@@ -14,11 +14,11 @@ import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
 
 import de.tobias.playpad.Displayable;
-import de.tobias.playpad.xml.XMLHandler;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.application.container.PathType;
 import de.tobias.utils.util.FileUtils;
 import de.tobias.utils.util.FileUtils.FileActionAdapter;
+import de.tobias.utils.xml.XMLHandler;
 import javafx.beans.property.SimpleStringProperty;
 import javafx.beans.property.StringProperty;
 
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/ProfileReferenceSerializer.java b/PlayWallCore/src/de/tobias/playpad/settings/ProfileReferenceSerializer.java
index 3a281ef1..19915d80 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/ProfileReferenceSerializer.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/ProfileReferenceSerializer.java
@@ -4,8 +4,8 @@ import java.util.UUID;
 
 import org.dom4j.Element;
 
-import de.tobias.playpad.xml.XMLDeserializer;
-import de.tobias.playpad.xml.XMLSerializer;
+import de.tobias.utils.xml.XMLDeserializer;
+import de.tobias.utils.xml.XMLSerializer;
 
 /**
  * Util zum arbeiten mit XML und ProfileReference
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java
index f47a1e5f..080d0e6a 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java
@@ -10,8 +10,8 @@ import org.dom4j.DocumentException;
 import org.dom4j.Element;
 import org.dom4j.io.SAXReader;
 
-import de.tobias.playpad.xml.XMLHandler;
 import de.tobias.utils.util.OS;
+import de.tobias.utils.xml.XMLHandler;
 
 /**
  * Verwaltung der Tastenkombinationen für das Menu.
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java
index cb8e7fc7..c61992e7 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java
@@ -2,8 +2,8 @@ package de.tobias.playpad.settings.keys;
 
 import org.dom4j.Element;
 
-import de.tobias.playpad.xml.XMLDeserializer;
-import de.tobias.playpad.xml.XMLSerializer;
+import de.tobias.utils.xml.XMLDeserializer;
+import de.tobias.utils.xml.XMLSerializer;
 
 public class KeySerializer implements XMLSerializer<Key>, XMLDeserializer<Key> {
 
diff --git a/PlayWallCore/src/de/tobias/playpad/xml/XMLDeserializer.java b/PlayWallCore/src/de/tobias/playpad/xml/XMLDeserializer.java
deleted file mode 100644
index 44581a3f..00000000
--- a/PlayWallCore/src/de/tobias/playpad/xml/XMLDeserializer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package de.tobias.playpad.xml;
-
-import org.dom4j.Element;
-
-/**
- * Schnittstelle um ein Object auf einem XML Tree zu deserialisieren.
- * 
- * @author tobias
- *
- * @param <T>
- *            Typ der Daten
- */
-public interface XMLDeserializer<T> {
-
-	/**
-	 * Lädt ein Object auf XML Daten.
-	 * 
-	 * @param element
-	 *            XML Objekt
-	 * @return Daten aus dem XML
-	 */
-	public T loadElement(Element element);
-
-}
diff --git a/PlayWallCore/src/de/tobias/playpad/xml/XMLHandler.java b/PlayWallCore/src/de/tobias/playpad/xml/XMLHandler.java
deleted file mode 100644
index b106b92f..00000000
--- a/PlayWallCore/src/de/tobias/playpad/xml/XMLHandler.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package de.tobias.playpad.xml;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.SAXReader;
-import org.dom4j.io.XMLWriter;
-
-/**
- * Util Methods zum Laden von XML Files.
- * 
- * @author tobias
- * 
- * @since 5.0.1
- */
-public class XMLHandler<T> {
-
-	private Element rootElement;
-
-	/**
-	 * Lädt ein XML Dokument und speichert sich den RootNode.
-	 * 
-	 * @param path
-	 *            Path zu XML Datei
-	 * @throws DocumentException
-	 *             Fehler in der XML Datei
-	 * @throws IOException
-	 *             IO Fehler (Bsp. Datei nicht vorhanden)
-	 */
-	public XMLHandler(Path path) throws DocumentException, IOException {
-		if (Files.exists(path)) {
-			SAXReader reader = new SAXReader();
-			Document document = reader.read(Files.newInputStream(path));
-			rootElement = document.getRootElement();
-		} else {
-			throw new FileNotFoundException(path.toString());
-		}
-	}
-
-	/**
-	 * Erstellt einen neuen Handler mit einem RootElement.
-	 * 
-	 * @param rootElement
-	 *            RootElement
-	 */
-	public XMLHandler(Element rootElement) {
-		this.rootElement = rootElement;
-	}
-
-	/**
-	 * Lädt ein Datenrecord auf einem Array von Daten
-	 * 
-	 * @param listElementTag
-	 *            Datentype
-	 * @param deserializer
-	 *            Deserializer
-	 * @return Liste von Daten
-	 */
-	public List<T> loadElements(String listElementTag, XMLDeserializer<T> deserializer) {
-		List<T> list = new ArrayList<>();
-
-		for (Object object : rootElement.elements(listElementTag)) {
-			if (object instanceof Element) {
-				Element element = (Element) object;
-				T data = deserializer.loadElement(element);
-				if (data != null) {
-					list.add(data);
-				}
-			}
-		}
-
-		return list;
-	}
-
-	/**
-	 * Speichert eine Liste von Objekten mittels Serializer.
-	 * 
-	 * @param listElementTag
-	 *            Name der XML Element
-	 * @param list
-	 *            Liste der Daten
-	 * @param serializer
-	 *            Serializer
-	 */
-	public void saveElements(String listElementTag, Iterable<T> list, XMLSerializer<T> serializer) {
-		for (T data : list) {
-			Element element = rootElement.addElement(listElementTag);
-			serializer.saveElement(element, data);
-		}
-	}
-
-	/**
-	 * Speichert eine XML in einem Path.
-	 * 
-	 * @param path
-	 *            Path der Datei
-	 * @param document
-	 *            XML Document
-	 * @throws UnsupportedEncodingException
-	 *             Falsches Encoding
-	 * @throws IOException
-	 *             IO Fehler (Bsp. File nicht vorhanden)
-	 */
-	public static void save(Path path, Document document) throws UnsupportedEncodingException, IOException {
-		if (Files.exists(path)) {
-			XMLWriter writer = new XMLWriter(Files.newOutputStream(path), OutputFormat.createPrettyPrint());
-			writer.write(document);
-			writer.close();
-		} else {
-			throw new FileNotFoundException(path.toString());
-		}
-	}
-
-	/**
-	 * Gibt das RootElement zurück.
-	 * 
-	 * @return Root Element
-	 */
-	public Element getRootElement() {
-		return rootElement;
-	}
-}
diff --git a/PlayWallCore/src/de/tobias/playpad/xml/XMLSerializer.java b/PlayWallCore/src/de/tobias/playpad/xml/XMLSerializer.java
deleted file mode 100644
index 82474186..00000000
--- a/PlayWallCore/src/de/tobias/playpad/xml/XMLSerializer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package de.tobias.playpad.xml;
-
-import org.dom4j.Element;
-
-/**
- * Schnittstelle um ein Object in eine XML Struktur zu überführen.
- * 
- * @author tobias
- *
- * @param <T>
- *            Typ der Daten
- */
-public interface XMLSerializer<T> {
-
-	/**
-	 * Überführt ein Object in eine XML Struktur. Dafür wird bereits ein XML Object angelegt, zu dem Attribute und Sub Elemente hinzugefügt
-	 * werden können.
-	 * 
-	 * @param newElement
-	 *            XML Object
-	 * @param data
-	 *            Daten
-	 */
-	public void saveElement(Element newElement, T data);
-
-}
-- 
GitLab