🎨 Use StandardCharsets instead of Charset.forName
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / states / TorrentState.java
index c0ba68a..3a7bf54 100644 (file)
 
 package net.pterodactylus.rhynodge.states;
 
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 
 import net.pterodactylus.rhynodge.State;
 import net.pterodactylus.rhynodge.states.TorrentState.TorrentFile;
@@ -65,6 +66,11 @@ public class TorrentState extends AbstractState implements Iterable<TorrentFile>
        // ACCESSORS
        //
 
+       @Override
+       public boolean isEmpty() {
+               return files.isEmpty();
+       }
+
        /**
         * Returns all torrent files of this state.
         *
@@ -266,11 +272,7 @@ public class TorrentState extends AbstractState implements Iterable<TorrentFile>
                 */
                private String generateId() {
                        if (magnetUri != null) {
-                               String id = extractId(magnetUri);
-                               if (id != null) {
-                                       return id;
-                               }
-                               return magnetUri;
+                               return extractId(magnetUri).orElse(magnetUri);
                        }
                        return (downloadUri != null) ? downloadUri : name;
                }
@@ -286,14 +288,17 @@ public class TorrentState extends AbstractState implements Iterable<TorrentFile>
                 *            The magnet URI to extract the “xt” from
                 * @return The extracted ID, or {@code null} if no ID could be found
                 */
-               private static String extractId(String magnetUri) {
-                       List<NameValuePair> parameters = URLEncodedUtils.parse(magnetUri.substring("magnet:?".length()), Charset.forName("UTF-8"));
+               private static Optional<String> extractId(String magnetUri) {
+                       if ((magnetUri == null) || (magnetUri.length() < 8)) {
+                               return Optional.empty();
+                       }
+                       List<NameValuePair> parameters = URLEncodedUtils.parse(magnetUri.substring("magnet:?".length()), StandardCharsets.UTF_8);
                        for (NameValuePair parameter : parameters) {
                                if (parameter.getName().equals("xt")) {
-                                       return parameter.getValue().toLowerCase();
+                                       return Optional.of(parameter.getValue().toLowerCase());
                                }
                        }
-                       return null;
+                       return Optional.empty();
                }
 
                //