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/nikiroo/fanfix/raw/master/changelog${LANG}.md";
private Version current;
private List<Version> newer;
* time has elapsed.
*/
public void ok() {
- Instance.setVersionChecked();
+ Instance.getInstance().setVersionChecked();
}
/**
List<Version> newer = new ArrayList<Version>();
Map<Version, List<String>> changes = new HashMap<Version, List<String>>();
- if (Instance.isVersionCheckNeeded()) {
+ if (Instance.getInstance().isVersionCheckNeeded()) {
try {
- InputStream in = Instance.getCache().openNoCache(new URL(url),
- null);
+ // 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 {
reader.close();
}
} catch (IOException e) {
- Instance.syserr(e);
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot download latest changelist on github.com", e));
}
}