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