From 6849c968e1abbc1abe601f3aabe86eb43e83c8c0 Mon Sep 17 00:00:00 2001
From: Bastian Hoffmann <basho213@student.liu.se>
Date: Mon, 9 Sep 2019 13:52:23 +0200
Subject: [PATCH] solution task B

---
 Task_B/src/main/IBuild.java                   |  7 +++++
 Task_B/src/main/IBuildConfigReader.java       |  7 +++++
 .../src/main/IBuildConfigReaderFactory.java   |  5 ++++
 Task_B/src/main/IBuildFactory.java            |  7 +++++
 Task_B/src/main/Main.java                     | 30 ++++++++++++++-----
 .../src/main/MyBuildConfigReaderFactory.java  | 22 ++++++++++++++
 Task_B/src/main/MyBuildFactory.java           | 22 ++++++++++++++
 Task_B/src/main/MyXMLBuild.java               | 19 ++++++++++++
 Task_B/src/main/MyXMLBuildConfigReader.java   | 22 ++++++++++++++
 Task_B/src/main/MyYamlBuild.java              | 17 +++++++++++
 Task_B/src/main/MyYamlBuildConfigReader.java  | 20 +++++++++++++
 11 files changed, 170 insertions(+), 8 deletions(-)
 create mode 100644 Task_B/src/main/IBuild.java
 create mode 100644 Task_B/src/main/IBuildConfigReader.java
 create mode 100644 Task_B/src/main/IBuildConfigReaderFactory.java
 create mode 100644 Task_B/src/main/IBuildFactory.java
 create mode 100644 Task_B/src/main/MyBuildConfigReaderFactory.java
 create mode 100644 Task_B/src/main/MyBuildFactory.java
 create mode 100644 Task_B/src/main/MyXMLBuild.java
 create mode 100644 Task_B/src/main/MyXMLBuildConfigReader.java
 create mode 100644 Task_B/src/main/MyYamlBuild.java
 create mode 100644 Task_B/src/main/MyYamlBuildConfigReader.java

diff --git a/Task_B/src/main/IBuild.java b/Task_B/src/main/IBuild.java
new file mode 100644
index 0000000..434f5f8
--- /dev/null
+++ b/Task_B/src/main/IBuild.java
@@ -0,0 +1,7 @@
+package main;
+
+import domain.BuildConfig;
+
+public interface IBuild {
+	public void build(int debuglevel);
+}
diff --git a/Task_B/src/main/IBuildConfigReader.java b/Task_B/src/main/IBuildConfigReader.java
new file mode 100644
index 0000000..1e7c420
--- /dev/null
+++ b/Task_B/src/main/IBuildConfigReader.java
@@ -0,0 +1,7 @@
+package main;
+
+import domain.BuildConfig;
+
+public interface IBuildConfigReader {
+	public BuildConfig getBuildConfig();
+}
diff --git a/Task_B/src/main/IBuildConfigReaderFactory.java b/Task_B/src/main/IBuildConfigReaderFactory.java
new file mode 100644
index 0000000..08ad6e0
--- /dev/null
+++ b/Task_B/src/main/IBuildConfigReaderFactory.java
@@ -0,0 +1,5 @@
+package main;
+
+public interface IBuildConfigReaderFactory {
+	public IBuildConfigReader createBuildConfigReader(String buildFileName);
+}
diff --git a/Task_B/src/main/IBuildFactory.java b/Task_B/src/main/IBuildFactory.java
new file mode 100644
index 0000000..f76947d
--- /dev/null
+++ b/Task_B/src/main/IBuildFactory.java
@@ -0,0 +1,7 @@
+package main;
+
+import domain.BuildConfig;
+
+public interface IBuildFactory {
+	public IBuild createBuild(String buildFileName, BuildConfig buildConfig, String targetName);
+}
diff --git a/Task_B/src/main/Main.java b/Task_B/src/main/Main.java
index e67fc3c..8e4c885 100755
--- a/Task_B/src/main/Main.java
+++ b/Task_B/src/main/Main.java
@@ -10,13 +10,27 @@ import yaml.YamlBuildConfigurationReader;
 public class Main {
 	
 	public static void main(String[] args) {
-		XMLBuildConfigurationReader buildConfigurationReader = new XMLBuildConfigurationReader("build.xml");
-		final Project xmlProject = buildConfigurationReader.getProject();
-		Build build = new Build(xmlProject);
-		build.build(1, "dist");
-		YamlBuildConfigurationReader yamlConfigReader = new YamlBuildConfigurationReader("build.yaml");
-		final BuildConfig yamlBuildConfig = yamlConfigReader.getBuildConfig();
-		Compile compile = new Compile(yamlBuildConfig, "dist");
-		compile.build(1);
+		
+//		XMLBuildConfigurationReader buildConfigurationReader = new XMLBuildConfigurationReader("build.xml");
+//		final Project xmlProject = buildConfigurationReader.getProject();
+//		Build build = new Build(xmlProject);
+//		build.build(1, "dist");
+//		YamlBuildConfigurationReader yamlConfigReader = new YamlBuildConfigurationReader("build.yaml");
+//		final BuildConfig yamlBuildConfig = yamlConfigReader.getBuildConfig();
+//		Compile compile = new Compile(yamlBuildConfig, "dist");
+//		compile.build(1);
+		
+		final String target = "dist";
+	    buildTarget("build.xml", target);
+	    buildTarget("build.yaml", target);
+	}
+	
+	private static void buildTarget(String buildFileName, String target) {
+		MyBuildConfigReaderFactory buildConfigReaderFactory = new MyBuildConfigReaderFactory();
+		IBuildConfigReader buildConfigReader = buildConfigReaderFactory.createBuildConfigReader(buildFileName);
+		BuildConfig buildConfig = buildConfigReader.getBuildConfig();
+		MyBuildFactory builderFactory = new MyBuildFactory();
+		IBuild build = builderFactory.createBuild(buildFileName, buildConfig, target);
+		build.build(1);
 	}
 }
diff --git a/Task_B/src/main/MyBuildConfigReaderFactory.java b/Task_B/src/main/MyBuildConfigReaderFactory.java
new file mode 100644
index 0000000..5dddcd8
--- /dev/null
+++ b/Task_B/src/main/MyBuildConfigReaderFactory.java
@@ -0,0 +1,22 @@
+package main;
+
+import xml.XMLBuildConfigurationReader;
+import yaml.YamlBuildConfigurationReader;
+
+public class MyBuildConfigReaderFactory implements IBuildConfigReaderFactory {
+
+	@Override
+	public IBuildConfigReader createBuildConfigReader(String buildFileName) {
+		String fileNameExtension = buildFileName.substring(buildFileName.lastIndexOf("."));
+		if (fileNameExtension.equals(".yaml")) {
+			return new MyYamlBuildConfigReader(new YamlBuildConfigurationReader(buildFileName));
+			
+		} else if (fileNameExtension.equals(".xml")) {
+			return new MyXMLBuildConfigReader(new XMLBuildConfigurationReader(buildFileName));
+			
+		} else {
+			return null;
+		}
+	}
+
+}
diff --git a/Task_B/src/main/MyBuildFactory.java b/Task_B/src/main/MyBuildFactory.java
new file mode 100644
index 0000000..4d301e7
--- /dev/null
+++ b/Task_B/src/main/MyBuildFactory.java
@@ -0,0 +1,22 @@
+package main;
+
+import domain.BuildConfig;
+import xml.Build;
+import yaml.Compile;
+
+public class MyBuildFactory implements IBuildFactory {
+
+	@Override
+	public IBuild createBuild(String buildFileName, BuildConfig buildConfig, String targetName) {
+		String fileNameExtension = buildFileName.substring(buildFileName.lastIndexOf("."));
+		if (fileNameExtension.equals(".yaml")) {
+			return new MyYamlBuild(new Compile(buildConfig, targetName));
+			
+		} else if (fileNameExtension.equals(".xml")) {
+			return new MyXMLBuild(new Build(buildConfig.getProject()), targetName);
+			
+		} else {
+			return null;
+		}
+	}
+}
diff --git a/Task_B/src/main/MyXMLBuild.java b/Task_B/src/main/MyXMLBuild.java
new file mode 100644
index 0000000..8d094a5
--- /dev/null
+++ b/Task_B/src/main/MyXMLBuild.java
@@ -0,0 +1,19 @@
+package main;
+
+import xml.Build;
+
+public class MyXMLBuild implements IBuild {
+	
+	Build adaptee;
+	String targetName;
+	
+	public MyXMLBuild(Build xmlBuild, String targetName) {
+		adaptee = xmlBuild;
+		this.targetName = targetName;
+	}
+
+	public void build(int debuglevel) {
+		adaptee.build(debuglevel, targetName);
+	}
+
+}
diff --git a/Task_B/src/main/MyXMLBuildConfigReader.java b/Task_B/src/main/MyXMLBuildConfigReader.java
new file mode 100644
index 0000000..4aad5be
--- /dev/null
+++ b/Task_B/src/main/MyXMLBuildConfigReader.java
@@ -0,0 +1,22 @@
+package main;
+
+import domain.BuildConfig;
+import xml.XMLBuildConfigurationReader;
+
+public class MyXMLBuildConfigReader implements IBuildConfigReader {
+
+	private XMLBuildConfigurationReader adaptee;
+
+	public MyXMLBuildConfigReader(XMLBuildConfigurationReader buildConfigReader) {
+		adaptee = buildConfigReader;
+	}
+	
+	@Override
+	public BuildConfig getBuildConfig() {
+		BuildConfig buildConfig = new BuildConfig();
+		buildConfig.setProject(adaptee.getProject());
+		
+		return buildConfig;
+	}
+
+}
diff --git a/Task_B/src/main/MyYamlBuild.java b/Task_B/src/main/MyYamlBuild.java
new file mode 100644
index 0000000..7e1027b
--- /dev/null
+++ b/Task_B/src/main/MyYamlBuild.java
@@ -0,0 +1,17 @@
+package main;
+
+import yaml.Compile;
+
+public class MyYamlBuild implements IBuild {
+	
+	Compile adaptee;
+	
+	public MyYamlBuild(Compile yamlCompile) {
+		adaptee = yamlCompile;
+	}
+
+	public void build(int debuglevel) {
+		adaptee.build(debuglevel);
+	}
+
+}
diff --git a/Task_B/src/main/MyYamlBuildConfigReader.java b/Task_B/src/main/MyYamlBuildConfigReader.java
new file mode 100644
index 0000000..9e4d4fd
--- /dev/null
+++ b/Task_B/src/main/MyYamlBuildConfigReader.java
@@ -0,0 +1,20 @@
+package main;
+
+import domain.BuildConfig;
+import yaml.YamlBuildConfigurationReader;
+
+public class MyYamlBuildConfigReader implements IBuildConfigReader {
+	
+	private YamlBuildConfigurationReader adaptee;
+
+	public MyYamlBuildConfigReader(YamlBuildConfigurationReader buildConfigReader) {
+		adaptee = buildConfigReader;
+	}
+	
+	@Override
+	public BuildConfig getBuildConfig() {
+		
+		return adaptee.getBuildConfig();
+	}
+
+}
-- 
GitLab