Use Downloader/Cache from utils
[fanfix.git] / src / be / nikiroo / fanfix / VersionCheck.java
index 3359bacbce41b977a6a7ee9daf089a02a8331e61..932449585f6e7e93a55cf1856b5b067965b4282d 100644 (file)
@@ -12,6 +12,12 @@ import java.util.Map;
 
 import be.nikiroo.utils.Version;
 
+/**
+ * Version checker: can check the current version of the program against a
+ * remote changelog, and list the missed updates and their description.
+ * 
+ * @author niki
+ */
 public class VersionCheck {
        private static final String url = "https://github.com/nikiroo/fanfix/raw/master/changelog.md";
 
@@ -102,23 +108,26 @@ public class VersionCheck {
 
                if (Instance.isVersionCheckNeeded()) {
                        try {
-                               InputStream in = Instance.getCache().openNoCache(new URL(url),
-                                               null);
+                               InputStream in = Instance.getCache().openNoCache(new URL(url));
                                BufferedReader reader = new BufferedReader(
                                                new InputStreamReader(in, "UTF-8"));
                                try {
+                                       Version version = new Version();
                                        for (String line = reader.readLine(); line != null; line = reader
                                                        .readLine()) {
                                                if (line.startsWith("## Version ")) {
-                                                       String v = line.substring("## Version ".length());
-                                                       Version version = new Version(v);
+                                                       version = new Version(line.substring("## Version "
+                                                                       .length()));
                                                        if (version.isNewerThan(current)) {
                                                                newer.add(version);
                                                                changes.put(version, new ArrayList<String>());
+                                                       } else {
+                                                               version = new Version();
                                                        }
-                                               } else if (!newer.isEmpty() && !line.isEmpty()) {
-                                                       Version version = newer.get(newer.size() - 1);
-                                                       List<String> ch = changes.get(version);
+                                               } else if (!version.isEmpty() && !newer.isEmpty()
+                                                               && !line.isEmpty()) {
+                                                       List<String> ch = changes.get(newer.get(newer
+                                                                       .size() - 1));
                                                        if (!ch.isEmpty() && !line.startsWith("- ")) {
                                                                int i = ch.size() - 1;
                                                                ch.set(i, ch.get(i) + " " + line.trim());
@@ -131,7 +140,8 @@ public class VersionCheck {
                                        reader.close();
                                }
                        } catch (IOException e) {
-                               Instance.syserr(e);
+                               Instance.syserr(new IOException(
+                                               "Cannot download latest changelist on github.com", e));
                        }
                }