X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=war%2Fsrc%2Fmain%2Fjava%2Fpnews%2Fservlet%2FConfig.java;h=36bdc620d7c2bf09a6a54b16bf41643c12562fc9;hb=e28fb81c2f705d5bc47464ccbf08481a06b1035d;hp=bafb60690084056cf5e6e27d76cef47f4681d089;hpb=08ed43939f542770afa3c47522ec914cd300feba;p=pnews.git diff --git a/war/src/main/java/pnews/servlet/Config.java b/war/src/main/java/pnews/servlet/Config.java index bafb606..36bdc62 100644 --- a/war/src/main/java/pnews/servlet/Config.java +++ b/war/src/main/java/pnews/servlet/Config.java @@ -4,17 +4,25 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.io.UnsupportedEncodingException; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.time.temporal.TemporalUnit; 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.Article; import pnews.Category; import pnews.Feed; import pnews.Language; @@ -23,11 +31,15 @@ public class Config { private Feed[] feeds; private Category[] categories; private Language[] languages; + private final Set blacklistedEntities = new HashSet<>(); + private final HashMap entityAliases = new HashMap<>(); + 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(Config.class.getName()); + private static final Logger LOG = Logger.getLogger(CLASS_NAME); private void loadCategories(JsonArray jcats) { List cats; @@ -75,6 +87,45 @@ public class Config { return null; } + private void loadEntities(JsonObject jroot) { + JsonObject jentities, jaliases; + 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()); + }); + + jaliases = jentities.getJsonObject("aliases"); + jaliases.forEach((k, v)-> { + JsonArray jsources = (JsonArray)v; + + jsources.forEach((jsource)-> { + entityAliases.put(((JsonString)jsource).getString(), k); + }); + }); + + LOG.logp(Level.FINEST, CLASS_NAME, METHOD_NAME, " blacklistedEntities=" + blacklistedEntities); + LOG.logp(Level.FINEST, CLASS_NAME, METHOD_NAME, " entityAliases=" + entityAliases); + } + + public String getEntityAlias(String entity) { + String result; + + result = entityAliases.get(entity); + + if (result == null) + return entity; + else + return result; + } + public void loadConfig() throws UnsupportedEncodingException { Reader r; JsonObject jfeeds, jroot; @@ -116,6 +167,32 @@ 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 boolean isObsolete(Instant instant) { + Instant olderInstant; + + olderInstant = Instant.now().minus(60, ChronoUnit.DAYS); + + if (instant.isAfter(olderInstant)) + return false; + else + return true; } public Feed[] getFeeds() {