From c2446ecff002f7ffd6fd147956081fd0d2ae84db Mon Sep 17 00:00:00 2001 From: Stypox Date: Thu, 17 Mar 2022 16:05:43 +0100 Subject: [PATCH] Use Java 8 streams and deduplicate code in MediaFormat class --- .../schabi/newpipe/extractor/MediaFormat.java | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/MediaFormat.java b/extractor/src/main/java/org/schabi/newpipe/extractor/MediaFormat.java index 719484707..5836f5b8f 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/MediaFormat.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/MediaFormat.java @@ -22,6 +22,9 @@ package org.schabi.newpipe.extractor; * along with NewPipe. If not, see . */ +import java.util.Arrays; +import java.util.function.Function; + /** * Static data about various media formats support by NewPipe, eg mime type, extension */ @@ -61,46 +64,47 @@ public enum MediaFormat { this.mimeType = mimeType; } + private static T getById(final int id, + final Function field, + final T orElse) { + return Arrays.stream(MediaFormat.values()) + .filter(mediaFormat -> mediaFormat.id == id) + .map(field) + .findFirst() + .orElse(orElse); + } + /** * Return the friendly name of the media format with the supplied id * - * @param ident the id of the media format. Currently an arbitrary, NewPipe-specific number. + * @param id the id of the media format. Currently an arbitrary, NewPipe-specific number. * @return the friendly name of the MediaFormat associated with this ids, * or an empty String if none match it. */ - public static String getNameById(int ident) { - for (MediaFormat vf : MediaFormat.values()) { - if (vf.id == ident) return vf.name; - } - return ""; + public static String getNameById(final int id) { + return getById(id, MediaFormat::getName, ""); } /** * Return the file extension of the media format with the supplied id * - * @param ident the id of the media format. Currently an arbitrary, NewPipe-specific number. + * @param id the id of the media format. Currently an arbitrary, NewPipe-specific number. * @return the file extension of the MediaFormat associated with this ids, * or an empty String if none match it. */ - public static String getSuffixById(int ident) { - for (MediaFormat vf : MediaFormat.values()) { - if (vf.id == ident) return vf.suffix; - } - return ""; + public static String getSuffixById(final int id) { + return getById(id, MediaFormat::getSuffix, ""); } /** * Return the MIME type of the media format with the supplied id * - * @param ident the id of the media format. Currently an arbitrary, NewPipe-specific number. + * @param id the id of the media format. Currently an arbitrary, NewPipe-specific number. * @return the MIME type of the MediaFormat associated with this ids, * or an empty String if none match it. */ - public static String getMimeById(int ident) { - for (MediaFormat vf : MediaFormat.values()) { - if (vf.id == ident) return vf.mimeType; - } - return ""; + public static String getMimeById(final int id) { + return getById(id, MediaFormat::getMimeType, null); } /** @@ -109,11 +113,11 @@ public enum MediaFormat { * @return MediaFormat associated with this mime type, * or null if none match it. */ - public static MediaFormat getFromMimeType(String mimeType) { - for (MediaFormat vf : MediaFormat.values()) { - if (vf.mimeType.equals(mimeType)) return vf; - } - return null; + public static MediaFormat getFromMimeType(final String mimeType) { + return Arrays.stream(MediaFormat.values()) + .filter(mediaFormat -> mediaFormat.mimeType.equals(mimeType)) + .findFirst() + .orElse(null); } /** @@ -122,18 +126,15 @@ public enum MediaFormat { * @param id the id * @return the id of the media format or null. */ - public static MediaFormat getFormatById(int id) { - for (MediaFormat vf : values()) { - if (vf.id == id) return vf; - } - return null; + public static MediaFormat getFormatById(final int id) { + return getById(id, mediaFormat -> mediaFormat, null); } - public static MediaFormat getFromSuffix(String suffix) { - for (MediaFormat vf : values()) { - if (vf.suffix.equals(suffix)) return vf; - } - return null; + public static MediaFormat getFromSuffix(final String suffix) { + return Arrays.stream(MediaFormat.values()) + .filter(mediaFormat -> mediaFormat.suffix.equals(suffix)) + .findFirst() + .orElse(null); } /**