From: Jean-Philippe Orsini Date: Sun, 29 Oct 2017 21:07:16 +0000 (+0100) Subject: load languages from configuration file X-Git-Url: https://git.wpitchoune.net/gitweb/?p=pnews.git;a=commitdiff_plain;h=69746f2a8087043f7548849d78353281fbb5527f load languages from configuration file --- diff --git a/war/src/main/java/pnews/Language.java b/war/src/main/java/pnews/Language.java index dad66d2..30770dc 100644 --- a/war/src/main/java/pnews/Language.java +++ b/war/src/main/java/pnews/Language.java @@ -1,7 +1,17 @@ package pnews; public class Language { - public static String toURL(String l) { - return "/" + l + "/"; + private final String id; + + public Language(String id) { + this.id = id; + } + + public String toURL() { + return "/" + id; + } + + public String getLabel() { + return id; } } diff --git a/war/src/main/java/pnews/servlet/Config.java b/war/src/main/java/pnews/servlet/Config.java index e4c5fed..09a5457 100644 --- a/war/src/main/java/pnews/servlet/Config.java +++ b/war/src/main/java/pnews/servlet/Config.java @@ -17,11 +17,12 @@ import javax.json.JsonValue; import pnews.Category; import pnews.Feed; +import pnews.Language; public class Config { private Feed[] feeds; private Category[] categories; - private final String[] languages = { "fr", "en" }; + private Language[] languages; private static final Logger LOG = Logger.getLogger(Config.class.getName()); private void loadCategories(JsonArray jcats) { @@ -42,6 +43,22 @@ public class Config { categories = cats.toArray(new Category[0]); } + + private void loadLanguages(JsonArray jlangs) { + List langs; + JsonObject jlang; + String id; + + langs = new ArrayList<>(jlangs.size()); + + for (JsonValue v: jlangs) { + jlang = (JsonObject)v; + id = jlang.getString("id"); + langs.add(new Language(id)); + } + + languages = langs.toArray(new Language[0]); + } private Category getCategory(String id) { for (Category c: categories) @@ -65,7 +82,7 @@ public class Config { try { r.close(); } catch (IOException e) { }; } - + loadLanguages(jroot.getJsonArray("languages")); loadCategories(jroot.getJsonArray("categories")); jfeeds = jroot.getJsonObject("feeds"); @@ -128,11 +145,11 @@ public class Config { return categories[0]; } - public String[] getLanguages() { + public Language[] getLanguages() { return languages; } - public String getDefaultLanguage() { + public Language getDefaultLanguage() { return languages[0]; } diff --git a/war/src/main/java/pnews/servlet/Pnews.java b/war/src/main/java/pnews/servlet/Pnews.java index 94475f9..5800d04 100644 --- a/war/src/main/java/pnews/servlet/Pnews.java +++ b/war/src/main/java/pnews/servlet/Pnews.java @@ -174,7 +174,7 @@ public class Pnews extends HttpServlet { } if (path.equals("/")) { - doTemporaryRedirect(Language.toURL(config.getDefaultLanguage()), resp); + doTemporaryRedirect(config.getDefaultLanguage().toURL(), resp); return ; } @@ -191,8 +191,8 @@ public class Pnews extends HttpServlet { } } - for (String l: config.getLanguages()) { - if (path.equals("/" + l) || path.equals("/" + l + "/")) { + for (Language l: config.getLanguages()) { + if (path.equals(l.toURL())) { doTemporaryRedirect(config.getDefaultCategory().getURL(), resp); return ; } diff --git a/war/src/main/resources/feeds.json b/war/src/main/resources/feeds.json index 34631f2..8e71c0c 100644 --- a/war/src/main/resources/feeds.json +++ b/war/src/main/resources/feeds.json @@ -1,4 +1,8 @@ { + "languages": [ + {"id": "fr"}, + {"id": "en"} + ], "categories": [ { "id": "actualite",