From 132059bca1d8ae8fdaf3b3138683d37f82051ca9 Mon Sep 17 00:00:00 2001
From: badrr <badr.radellah@etu.univ-amu.fr>
Date: Fri, 13 Sep 2024 18:12:48 +0200
Subject: [PATCH] TP1 final

---
 src/main/java/AsciiStringFilter.java     | 13 +++++++++++++
 src/main/java/CompositeStringFilter.java | 17 +++++++++++++++++
 src/main/java/LowerCaseStringFilter.java |  7 +++++++
 src/main/java/PostfixStringFilter.java   | 13 +++++++++++++
 src/main/java/PrefixStringFilter.java    | 13 +++++++++++++
 src/main/java/StringFilter.java          |  3 +++
 src/main/java/StringFilterUtils.java     | 10 ++++++++++
 src/main/java/UpperCaseStringFilter.java |  7 +++++++
 8 files changed, 83 insertions(+)
 create mode 100644 src/main/java/AsciiStringFilter.java
 create mode 100644 src/main/java/CompositeStringFilter.java
 create mode 100644 src/main/java/LowerCaseStringFilter.java
 create mode 100644 src/main/java/PostfixStringFilter.java
 create mode 100644 src/main/java/PrefixStringFilter.java
 create mode 100644 src/main/java/StringFilter.java
 create mode 100644 src/main/java/StringFilterUtils.java
 create mode 100644 src/main/java/UpperCaseStringFilter.java

diff --git a/src/main/java/AsciiStringFilter.java b/src/main/java/AsciiStringFilter.java
new file mode 100644
index 0000000..57b3ae7
--- /dev/null
+++ b/src/main/java/AsciiStringFilter.java
@@ -0,0 +1,13 @@
+public class AsciiStringFilter implements StringFilter {
+
+    @Override
+    public String filter(String string) {
+        StringBuilder sb = new StringBuilder();
+        for (char c : string.toCharArray()) {
+            if ((int) c < 128) {
+                sb.append(c);
+            }
+        }
+        return sb.toString();
+    }
+}
diff --git a/src/main/java/CompositeStringFilter.java b/src/main/java/CompositeStringFilter.java
new file mode 100644
index 0000000..af171e4
--- /dev/null
+++ b/src/main/java/CompositeStringFilter.java
@@ -0,0 +1,17 @@
+public class CompositeStringFilter implements StringFilter {
+
+    private StringFilter[] filters;
+
+    public CompositeStringFilter(StringFilter... filters) {
+        this.filters = filters;
+    }
+
+    @Override
+    public String filter(String string) {
+        String result = string;
+        for (StringFilter filter : filters) {
+            result = filter.filter(result);
+        }
+        return result;
+    }
+}
diff --git a/src/main/java/LowerCaseStringFilter.java b/src/main/java/LowerCaseStringFilter.java
new file mode 100644
index 0000000..ce01336
--- /dev/null
+++ b/src/main/java/LowerCaseStringFilter.java
@@ -0,0 +1,7 @@
+public class LowerCaseStringFilter implements StringFilter {
+
+    @Override
+    public String filter(String string) {
+        return string.toLowerCase();
+    }
+}
diff --git a/src/main/java/PostfixStringFilter.java b/src/main/java/PostfixStringFilter.java
new file mode 100644
index 0000000..1c51f01
--- /dev/null
+++ b/src/main/java/PostfixStringFilter.java
@@ -0,0 +1,13 @@
+public class PostfixStringFilter implements StringFilter {
+
+    private int n;
+
+    public PostfixStringFilter(int n) {
+        this.n = n;
+    }
+
+    @Override
+    public String filter(String string) {
+        return string.length() > n ? string.substring(string.length() - n) : string;
+    }
+}
diff --git a/src/main/java/PrefixStringFilter.java b/src/main/java/PrefixStringFilter.java
new file mode 100644
index 0000000..6495ec8
--- /dev/null
+++ b/src/main/java/PrefixStringFilter.java
@@ -0,0 +1,13 @@
+public class PrefixStringFilter implements StringFilter {
+
+    private int n;
+
+    public PrefixStringFilter(int n) {
+        this.n = n;
+    }
+
+    @Override
+    public String filter(String string) {
+        return string.length() > n ? string.substring(0, n) : string;
+    }
+}
diff --git a/src/main/java/StringFilter.java b/src/main/java/StringFilter.java
new file mode 100644
index 0000000..cf2fd35
--- /dev/null
+++ b/src/main/java/StringFilter.java
@@ -0,0 +1,3 @@
+public interface StringFilter {
+    String filter(String string);
+}
diff --git a/src/main/java/StringFilterUtils.java b/src/main/java/StringFilterUtils.java
new file mode 100644
index 0000000..2e17094
--- /dev/null
+++ b/src/main/java/StringFilterUtils.java
@@ -0,0 +1,10 @@
+public class StringFilterUtils {
+
+    public static String[] filter(String[] strings, StringFilter filter) {
+        String[] result = new String[strings.length];
+        for (int i = 0; i < strings.length; i++) {
+            result[i] = filter.filter(strings[i]);
+        }
+        return result;
+    }
+}
diff --git a/src/main/java/UpperCaseStringFilter.java b/src/main/java/UpperCaseStringFilter.java
new file mode 100644
index 0000000..621b2b7
--- /dev/null
+++ b/src/main/java/UpperCaseStringFilter.java
@@ -0,0 +1,7 @@
+public class UpperCaseStringFilter implements StringFilter {
+
+    @Override
+    public String filter(String string) {
+        return string.toUpperCase();
+    }
+}
-- 
GitLab