X-Git-Url: http://git.wpitchoune.net/gitweb/?p=pnews.git;a=blobdiff_plain;f=war%2Fsrc%2Fmain%2Fjava%2Fpnews%2Fservlet%2FConfig.java;fp=war%2Fsrc%2Fmain%2Fjava%2Fpnews%2Fservlet%2FConfig.java;h=0000000000000000000000000000000000000000;hp=78db69450d15e10a2c5ae9ef1741cfa723ca32e1;hb=aff83c8798602b535d13edeaffdb8f4238e2bbf5;hpb=88a7ba9745b8318ca6c4f741906a40e3d6a8f07e diff --git a/war/src/main/java/pnews/servlet/Config.java b/war/src/main/java/pnews/servlet/Config.java deleted file mode 100644 index 78db694..0000000 --- a/war/src/main/java/pnews/servlet/Config.java +++ /dev/null @@ -1,259 +0,0 @@ -package pnews.servlet; - -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; - -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(CLASS_NAME); - - private void loadCategories(JsonArray jcats) { - List cats; - JsonObject jcat; - Category cat; - String id, label, title, language; - - cats = new ArrayList<>(jcats.size()); - - for (JsonValue v: jcats) { - jcat = (JsonObject)v; - id = jcat.getString("id"); - label = jcat.getString("label"); - title = jcat.getString("title"); - language = jcat.getString("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]); - } - - 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) - if (c.getId().equals(id)) - return c; - 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; - List feedList; - - r = null; - try { - r = new InputStreamReader(Config.class.getClassLoader().getResourceAsStream("feeds.json"), - "UTF-8"); - jroot = Json.createReader(r).readObject(); - } finally { - if (r != null) - try { r.close(); } catch (IOException e) { }; - } - - loadLanguages(jroot.getJsonArray("languages")); - loadCategories(jroot.getJsonArray("categories")); - - jfeeds = jroot.getJsonObject("feeds"); - - feedList = new ArrayList(jfeeds.size()); - - jfeeds.forEach((k, v)-> { - JsonObject jf; - String str; - Category cat; - JsonArray jcategories; - - jf = (JsonObject)v; - jcategories = jf.getJsonArray("categories"); - str = jcategories.getString(0); - - cat = getCategory(str); - - if (cat != null) - feedList.add(new Feed(k, cat)); - else - LOG.severe("Missing category: " + str); - }); - - 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() { - return feeds; - } - - public Map> getFeedsByCategory() { - Map> result; - Feed[] feeds; - List catFeeds; - Category cat; - - result = new HashMap<>(); - - feeds = getFeeds(); - for (Feed f: feeds) { - cat = f.getCategory(); - - catFeeds = result.get(cat); - if (catFeeds == null) { - catFeeds = new ArrayList(); - result.put(cat, catFeeds); - } - catFeeds.add(f); - } - - return result; - } - - public Category[] getCategories() { - return categories; - } - - public Category getDefaultCategory(Language lang) { - return defaultCategories.get(lang.getId()); - } - - public Language[] getLanguages() { - return languages; - } - - public Language getDefaultLanguage() { - return languages[0]; - } - - public static void main(String[] args) throws UnsupportedEncodingException { - Config cfg; - Feed[] feeds; - Category[] cats; - - cfg = new Config(); - cfg.loadConfig(); - - cats = cfg.getCategories(); - for (Category cat: cats) - System.out.println(cat); - - feeds = cfg.getFeeds(); - - System.out.println("Number of feeds: " + feeds.length); - for (Feed f: feeds) - System.out.println(f); - } -}