From 5d9882c650636ecce36acdd99e7a108b0d536057 Mon Sep 17 00:00:00 2001
From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de>
Date: Sun, 11 Oct 2020 21:38:26 +0200
Subject: [PATCH] Add configurable factory for predators

---
 .../predators/PredatorFactory.java            | 20 ++++++++++++++-----
 .../predators/predator.properties             |  2 ++
 2 files changed, 17 insertions(+), 5 deletions(-)
 create mode 100644 src/aliensimulator/predators/predator.properties

diff --git a/src/aliensimulator/predators/PredatorFactory.java b/src/aliensimulator/predators/PredatorFactory.java
index 14ad9e3..6629222 100644
--- a/src/aliensimulator/predators/PredatorFactory.java
+++ b/src/aliensimulator/predators/PredatorFactory.java
@@ -1,13 +1,23 @@
 package aliensimulator.predators;
 
 
+import java.io.IOException;
+import java.util.Properties;
+
 public class PredatorFactory {
 
 	public Predator createPredator(String type) {
-    	if (type.equals("yautja")) {
-    		return new Yautja();
-	} else if (type.equals("hishquten")) {
-	    	return new HishQuTen();
-	} else return null;
+		Predator predator = null;
+		Properties properties = new Properties();
+
+		try {
+			properties.load(this.getClass().getResourceAsStream("predator.properties"));
+			String className = properties.getProperty(type);
+			Class<?> classOfPredator = Class.forName(className);
+			predator = (Predator) classOfPredator.newInstance();
+		} catch (IOException | ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+			e.printStackTrace();
+		}
+		return predator;
 	}
 }
diff --git a/src/aliensimulator/predators/predator.properties b/src/aliensimulator/predators/predator.properties
new file mode 100644
index 0000000..a1f5396
--- /dev/null
+++ b/src/aliensimulator/predators/predator.properties
@@ -0,0 +1,2 @@
+yautja=aliensimulator.predators.Yautja
+hishquten=aliensimulator.predators.HishQuTen
-- 
GitLab