X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FVersionCheck.java;h=fc631b0a6d1f9d8326457606ff38e9884b5357b3;hb=b64e4c30269c1f105f7041f6d280089fafe1ac3e;hp=3f63bf5e8819621eabe3c4ebb9e0a022647d8778;hpb=7e191c686f6de7cecc3979dbff136e0bf263277d;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/VersionCheck.java b/src/be/nikiroo/fanfix/VersionCheck.java index 3f63bf5..fc631b0 100644 --- a/src/be/nikiroo/fanfix/VersionCheck.java +++ b/src/be/nikiroo/fanfix/VersionCheck.java @@ -8,12 +8,19 @@ import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; 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"; + private static final String base = "https://github.com/${PROJECT}/raw/master/changelog${LANG}.md"; private Version current; private List newer; @@ -86,24 +93,50 @@ public class VersionCheck { * time has elapsed. */ public void ok() { - Instance.setVersionChecked(); + Instance.getInstance().setVersionChecked(); } /** * Check if there are available {@link Version}s of this program more recent * than the current one. * + * @param githubProject + * the GitHub project to check on, for instance "nikiroo/fanfix" + * * @return a {@link VersionCheck} */ - public static VersionCheck check() { + public static VersionCheck check(String githubProject) { Version current = Version.getCurrentVersion(); List newer = new ArrayList(); Map> changes = new HashMap>(); - if (Instance.isVersionCheckNeeded()) { + if (Instance.getInstance().isVersionCheckNeeded()) { try { - InputStream in = Instance.getCache().openNoCache(new URL(url), - null); + // Use the right project: + String base = VersionCheck.base.replace("${PROJECT}", + githubProject); + + // Prepare the URLs according to the user's language: + Locale lang = Instance.getInstance().getTrans().getLocale(); + String fr = lang.getLanguage(); + String BE = lang.getCountry().replace(".UTF8", ""); + String urlFrBE = base.replace("${LANG}", "-" + fr + "_" + BE); + String urlFr = base.replace("${LANG}", "-" + fr); + String urlDefault = base.replace("${LANG}", ""); + + InputStream in = null; + for (String url : new String[] { urlFrBE, urlFr, urlDefault }) { + try { + in = Instance.getInstance().getCache().open(new URL(url), null, false); + break; + } catch (IOException e) { + } + } + + if (in == null) { + throw new IOException("No changelog found"); + } + BufferedReader reader = new BufferedReader( new InputStreamReader(in, "UTF-8")); try { @@ -135,7 +168,8 @@ public class VersionCheck { reader.close(); } } catch (IOException e) { - Instance.syserr(e); + Instance.getInstance().getTraceHandler() + .error(new IOException("Cannot download latest changelist on github.com", e)); } }