From d953692443c8e5ae03027210f8a7dcb306e4730d Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 6 Nov 2019 17:17:20 +0100 Subject: [PATCH] Removed commons text library that was just used 2 times --- build.gradle | 1 - core/build.gradle | 1 - .../namespace/atom/AtomTextTest.java | 49 +++++++++++++ .../syndication/namespace/atom/AtomText.java | 68 +++++++++-------- .../core/util/FileNameGenerator.java | 73 ++++++++++--------- 5 files changed, 123 insertions(+), 69 deletions(-) create mode 100644 core/src/androidTest/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomTextTest.java diff --git a/build.gradle b/build.gradle index 73eab1704..d6a70e158 100644 --- a/build.gradle +++ b/build.gradle @@ -49,7 +49,6 @@ project.ext { awaitilityVersion = "3.1.6" commonsioVersion = "2.5" commonslangVersion = "3.6" - commonstextVersion = "1.3" eventbusVersion = "3.1.1" glideVersion = "4.8.0" glideOkhttpIntegrationVersion = "4.8.0" diff --git a/core/build.gradle b/core/build.gradle index fe6ed824a..42d983ccb 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -62,7 +62,6 @@ dependencies { implementation "android.arch.work:work-runtime:$workManagerVersion" implementation "androidx.media:media:1.1.0" implementation "org.apache.commons:commons-lang3:$commonslangVersion" - implementation "org.apache.commons:commons-text:$commonstextVersion" implementation "commons-io:commons-io:$commonsioVersion" implementation "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion" implementation "org.jsoup:jsoup:$jsoupVersion" diff --git a/core/src/androidTest/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomTextTest.java b/core/src/androidTest/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomTextTest.java new file mode 100644 index 000000000..1ab194133 --- /dev/null +++ b/core/src/androidTest/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomTextTest.java @@ -0,0 +1,49 @@ +package de.danoeh.antennapod.core.syndication.namespace.atom; + +import androidx.test.filters.SmallTest; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; +import java.util.Collection; + +import static org.junit.runners.Parameterized.Parameter; +import static org.junit.runners.Parameterized.Parameters; +import static org.junit.Assert.assertEquals; + +/** + * Unit test for {@link AtomText}. + */ +@SmallTest +@RunWith(Parameterized.class) +public class AtomTextTest { + + @Parameter(value = 0) + public String input; + + @Parameter(value = 1) + public String expectedOutput; + + @Parameters + public static Collection initParameters() { + return Arrays.asList(new Object[][] { + {">", ">"}, + {">", ">"}, + {"<Français>", ""}, + {"ßÄÖÜ", "ßÄÖÜ"}, + {""", "\""}, + {"ß", "ß"}, + {"’", "’"}, + {"‰", "‰"}, + {"€", "€"}, + }); + } + + @Test + public void testProcessingHtml() { + final AtomText atomText = new AtomText("", new NSAtom(), AtomText.TYPE_HTML); + atomText.setContent(input); + assertEquals(expectedOutput, atomText.getProcessedContent()); + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java index b512dce3f..714b8d8a7 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java @@ -1,47 +1,51 @@ package de.danoeh.antennapod.core.syndication.namespace.atom; -import org.apache.commons.text.StringEscapeUtils; - +import android.os.Build; +import android.text.Html; import de.danoeh.antennapod.core.syndication.namespace.Namespace; import de.danoeh.antennapod.core.syndication.namespace.SyndElement; /** Represents Atom Element which contains text (content, title, summary). */ public class AtomText extends SyndElement { - public static final String TYPE_TEXT = "text"; - private static final String TYPE_HTML = "html"; - private static final String TYPE_XHTML = "xhtml"; + public static final String TYPE_TEXT = "text"; + public static final String TYPE_HTML = "html"; + private static final String TYPE_XHTML = "xhtml"; - private final String type; - private String content; + private final String type; + private String content; - public AtomText(String name, Namespace namespace, String type) { - super(name, namespace); - this.type = type; - } + public AtomText(String name, Namespace namespace, String type) { + super(name, namespace); + this.type = type; + } - /** Processes the content according to the type and returns it. */ - public String getProcessedContent() { - if (type == null) { - return content; - } else if (type.equals(TYPE_HTML)) { - return StringEscapeUtils.unescapeHtml4(content); - } else if (type.equals(TYPE_XHTML)) { - return content; - } else { // Handle as text by default - return content; - } - } + /** Processes the content according to the type and returns it. */ + public String getProcessedContent() { + if (type == null) { + return content; + } else if (type.equals(TYPE_HTML)) { + if (Build.VERSION.SDK_INT >= 24) { + return Html.fromHtml(content, Html.FROM_HTML_MODE_LEGACY).toString(); + } else { + return Html.fromHtml(content).toString(); + } + } else if (type.equals(TYPE_XHTML)) { + return content; + } else { // Handle as text by default + return content; + } + } - public String getContent() { - return content; - } + public String getContent() { + return content; + } - public void setContent(String content) { - this.content = content; - } + public void setContent(String content) { + this.content = content; + } - public String getType() { - return type; - } + public String getType() { + return type; + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java index e99461806..5579ec27d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java @@ -3,45 +3,48 @@ package de.danoeh.antennapod.core.util; import android.text.TextUtils; import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.text.RandomStringGenerator; /** Generates valid filenames for a given string. */ public class FileNameGenerator { - - private static final char[] validChars = ( - "abcdefghijklmnopqrstuvwxyz" + - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + - "0123456789" + - " _-").toCharArray(); - - private FileNameGenerator() { - } - /** - * This method will return a new string that doesn't contain any illegal - * characters of the given string. - */ - public static String generateFileName(String string) { - StringBuilder buf = new StringBuilder(); - for (int i = 0; i < string.length(); i++) { - char c = string.charAt(i); - if(Character.isSpaceChar(c) && (buf.length() == 0 || Character.isSpaceChar(buf.charAt(buf.length()-1)))) { - continue; - } - if (ArrayUtils.contains(validChars, c)) { - buf.append(c); - } - } - String filename = buf.toString().trim(); - if(TextUtils.isEmpty(filename)) { - return new RandomStringGenerator.Builder() - .withinRange('0', 'z') - .filteredBy(Character::isLetterOrDigit) - .build() - .generate(8); - } - return filename; - } + private static final char[] validChars = + ("abcdefghijklmnopqrstuvwxyz" + + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + "0123456789" + + " _-").toCharArray(); + private FileNameGenerator() { + } + + /** + * This method will return a new string that doesn't contain any illegal + * characters of the given string. + */ + public static String generateFileName(String string) { + StringBuilder buf = new StringBuilder(); + for (int i = 0; i < string.length(); i++) { + char c = string.charAt(i); + if (Character.isSpaceChar(c) + && (buf.length() == 0 || Character.isSpaceChar(buf.charAt(buf.length() - 1)))) { + continue; + } + if (ArrayUtils.contains(validChars, c)) { + buf.append(c); + } + } + String filename = buf.toString().trim(); + if (TextUtils.isEmpty(filename)) { + return randomString(8); + } + return filename; + } + + private static String randomString(int length) { + StringBuilder sb = new StringBuilder(length); + for (int i = 0; i < length; i++) { + sb.append(validChars[(int) (Math.random() * validChars.length)]); + } + return sb.toString(); + } }