X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=war%2Fsrc%2Fmain%2Fjava%2Fpnews%2Fservlet%2FConfig.java;h=fec3770a6c0a25459afb0910af389b4ff73aa624;hb=6d94fd5a39e6f78a68201230bd57b9ceb95e125d;hp=09a545757f5ffffc19e60a9bd471007f15173688;hpb=69746f2a8087043f7548849d78353281fbb5527f;p=pnews.git diff --git a/war/src/main/java/pnews/servlet/Config.java b/war/src/main/java/pnews/servlet/Config.java index 09a5457..fec3770 100644 --- a/war/src/main/java/pnews/servlet/Config.java +++ b/war/src/main/java/pnews/servlet/Config.java @@ -6,13 +6,17 @@ import java.io.Reader; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.logging.Level; import java.util.logging.Logger; import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonObject; +import javax.json.JsonString; import javax.json.JsonValue; import pnews.Category; @@ -23,11 +27,19 @@ public class Config { private Feed[] feeds; private Category[] categories; private Language[] languages; - private static final Logger LOG = Logger.getLogger(Config.class.getName()); + private final Set blacklistedEntities = new HashSet<>(); + private static final String CLASS_NAME = Config.class.getName(); + + /** + * The key is the language, the value is the default category for this language. + */ + private Map defaultCategories = new HashMap<>(); + private static final Logger LOG = Logger.getLogger(CLASS_NAME); private void loadCategories(JsonArray jcats) { List cats; JsonObject jcat; + Category cat; String id, label, title, language; cats = new ArrayList<>(jcats.size()); @@ -38,7 +50,10 @@ public class Config { label = jcat.getString("label"); title = jcat.getString("title"); language = jcat.getString("language"); - cats.add(new Category(id, label, title, language)); + cat = new Category(id, label, title, language); + cats.add(cat); + if (defaultCategories.get(language) == null) + defaultCategories.put(language, cat); } categories = cats.toArray(new Category[0]); @@ -67,6 +82,24 @@ public class Config { return null; } + private void loadEntities(JsonObject jroot) { + JsonObject jentities; + JsonArray jblacklist; + final String METHOD_NAME = "loadEntities"; + + jentities = jroot.getJsonObject("entities"); + jblacklist = jentities.getJsonArray("blacklist"); + + jblacklist.forEach((jv)-> { + JsonString js; + + js = (JsonString)jv; + blacklistedEntities.add(js.getString()); + }); + + LOG.logp(Level.FINEST, CLASS_NAME, METHOD_NAME, " blacklistedEntities=" + blacklistedEntities); + } + public void loadConfig() throws UnsupportedEncodingException { Reader r; JsonObject jfeeds, jroot; @@ -108,6 +141,21 @@ public class Config { }); feeds = feedList.toArray(new Feed[0]); + + loadEntities(jroot); + } + + public boolean isBlacklistedEntity(String e) { + final String METHOD_NAME = "isBlacklistedEntity"; + boolean result; + + LOG.entering(CLASS_NAME, METHOD_NAME, e); + + result = blacklistedEntities.contains(e); + + LOG.exiting(CLASS_NAME, METHOD_NAME, result); + + return result; } public Feed[] getFeeds() { @@ -141,8 +189,8 @@ public class Config { return categories; } - public Category getDefaultCategory() { - return categories[0]; + public Category getDefaultCategory(Language lang) { + return defaultCategories.get(lang.getId()); } public Language[] getLanguages() {