From c7b7d944098e7c2f13512549b4180578116e5859 Mon Sep 17 00:00:00 2001 From: Alejandro Gervasio Date: Sun, 4 Nov 2018 00:06:46 -0300 Subject: [PATCH] BAEL-2312 - Abstract Classes in Java (#5598) * Initial Commit * Add files via upload * Update UppercaseFileReaderUnitTest.java --- .../application/Application.java | 30 +++++++++++++++++++ .../filereaders/BaseFileReader.java | 19 ++++++++++++ .../filereaders/LowercaseFileReader.java | 21 +++++++++++++ .../filereaders/StandardFileReader.java | 19 ++++++++++++ .../filereaders/UppercaseFileReader.java | 21 +++++++++++++ core-java/src/main/resources/files/test.txt | 10 +++++++ .../LowercaseFileReaderUnitTest.java | 18 +++++++++++ .../StandardFileReaderUnitTest.java | 18 +++++++++++ .../UppercaseFileReaderUnitTest.java | 18 +++++++++++ 9 files changed, 174 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/abstractclasses/application/Application.java create mode 100644 core-java/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java create mode 100644 core-java/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java create mode 100644 core-java/src/main/java/com/baeldung/abstractclasses/filereaders/StandardFileReader.java create mode 100644 core-java/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java create mode 100644 core-java/src/main/resources/files/test.txt create mode 100644 core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java create mode 100644 core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java create mode 100644 core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/application/Application.java b/core-java/src/main/java/com/baeldung/abstractclasses/application/Application.java new file mode 100644 index 0000000000..fe30c66484 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/abstractclasses/application/Application.java @@ -0,0 +1,30 @@ +package com.baeldung.abstractclasses.application; + +import com.baeldung.abstractclasses.filereaders.BaseFileReader; +import com.baeldung.abstractclasses.filereaders.LowercaseFileReader; +import com.baeldung.abstractclasses.filereaders.StandardFileReader; +import com.baeldung.abstractclasses.filereaders.UppercaseFileReader; +import java.io.IOException; + +public class Application { + + public static void main(String[] args) throws IOException { + + Application application = new Application(); + String filePath = application.getFilePathFromResourcesFolder("files/test.txt"); + + BaseFileReader lowercaseFileReader = new LowercaseFileReader(filePath); + lowercaseFileReader.readFile().forEach(line -> System.out.println(line)); + + BaseFileReader upperCaseFileReader = new UppercaseFileReader(filePath); + upperCaseFileReader.readFile().forEach(line -> System.out.println(line)); + + BaseFileReader standardFileReader = new StandardFileReader(filePath); + standardFileReader.readFile().forEach(line -> System.out.println(line)); + + } + + private String getFilePathFromResourcesFolder(String fileName) { + return getClass().getClassLoader().getResource(fileName).getPath().substring(1); + } +} diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java new file mode 100644 index 0000000000..659913f046 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java @@ -0,0 +1,19 @@ +package com.baeldung.abstractclasses.filereaders; + +import java.io.IOException; +import java.util.List; + +public abstract class BaseFileReader { + + protected String filePath; + + protected BaseFileReader(String filePath) { + this.filePath = filePath; + } + + public String getFilePath() { + return filePath; + } + + public abstract List readFile() throws IOException; +} diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java new file mode 100644 index 0000000000..0bbef45eb8 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java @@ -0,0 +1,21 @@ +package com.baeldung.abstractclasses.filereaders; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; +import java.util.stream.Collectors; + +public class LowercaseFileReader extends BaseFileReader { + + public LowercaseFileReader(String filePath) { + super(filePath); + } + + @Override + public List readFile() throws IOException { + return Files.lines(Paths.get(filePath)) + .map(String::toLowerCase) + .collect(Collectors.toList()); + } +} diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/StandardFileReader.java b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/StandardFileReader.java new file mode 100644 index 0000000000..0a90d53c38 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/StandardFileReader.java @@ -0,0 +1,19 @@ +package com.baeldung.abstractclasses.filereaders; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; +import java.util.stream.Collectors; + +public class StandardFileReader extends BaseFileReader { + + public StandardFileReader(String filePath) { + super(filePath); + } + + @Override + public List readFile() throws IOException { + return Files.lines(Paths.get(filePath)).collect(Collectors.toList()); + } +} diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java new file mode 100644 index 0000000000..4e8f150964 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java @@ -0,0 +1,21 @@ +package com.baeldung.abstractclasses.filereaders; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; +import java.util.stream.Collectors; + +public class UppercaseFileReader extends BaseFileReader { + + public UppercaseFileReader(String filePath) { + super(filePath); + } + + @Override + public List readFile() throws IOException { + return Files.lines(Paths.get(filePath)) + .map(String::toUpperCase) + .collect(Collectors.toList()); + } +} diff --git a/core-java/src/main/resources/files/test.txt b/core-java/src/main/resources/files/test.txt new file mode 100644 index 0000000000..08e53af69d --- /dev/null +++ b/core-java/src/main/resources/files/test.txt @@ -0,0 +1,10 @@ +This is line 1 +This is line 2 +This is line 3 +This is line 4 +This is line 5 +This is line 6 +This is line 7 +This is line 8 +This is line 9 +This is line 10 \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java new file mode 100644 index 0000000000..4058f6f03b --- /dev/null +++ b/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.abstractclasses; + +import com.baeldung.abstractclasses.filereaders.BaseFileReader; +import com.baeldung.abstractclasses.filereaders.LowercaseFileReader; +import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +public class LowercaseFileReaderUnitTest { + + @Test + public void givenLowercaseFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { + String filePath = getClass().getClassLoader().getResource("files/test.txt").getPath().substring(1); + BaseFileReader lowercaseFileReader = new LowercaseFileReader(filePath); + + assertThat(lowercaseFileReader.readFile()).isInstanceOf(List.class); + } +} diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java new file mode 100644 index 0000000000..e1c1435ef4 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.abstractclasses; + +import com.baeldung.abstractclasses.filereaders.BaseFileReader; +import com.baeldung.abstractclasses.filereaders.StandardFileReader; +import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +public class StandardFileReaderUnitTest { + + @Test + public void givenStandardFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { + String filePath = getClass().getClassLoader().getResource("files/test.txt").getPath().substring(1); + BaseFileReader standardFileReader = new StandardFileReader(filePath); + + assertThat(standardFileReader.readFile()).isInstanceOf(List.class); + } +} diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java new file mode 100644 index 0000000000..f9c5fbf94d --- /dev/null +++ b/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.abstractclasses; + +import com.baeldung.abstractclasses.filereaders.BaseFileReader; +import com.baeldung.abstractclasses.filereaders.UppercaseFileReader; +import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +public class UppercaseFileReaderUnitTest { + + @Test + public void givenUppercaseFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { + String filePath = getClass().getClassLoader().getResource("files/test.txt").getPath().substring(1); + BaseFileReader uppercaseFileReader = new UppercaseFileReader(filePath); + + assertThat(uppercaseFileReader.readFile()).isInstanceOf(List.class); + } +}