cleanup and refactored to move to net.wpitchoune package
[pnews.git] / war / src / main / java / pnews / servlet / Config.java
diff --git a/war/src/main/java/pnews/servlet/Config.java b/war/src/main/java/pnews/servlet/Config.java
deleted file mode 100644 (file)
index 78db694..0000000
+++ /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<String> blacklistedEntities = new HashSet<>();
-        private final HashMap<String, String> 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<String, Category> defaultCategories = new HashMap<>();
-        private static final Logger LOG = Logger.getLogger(CLASS_NAME);
-                
-        private void loadCategories(JsonArray jcats) {
-                List<Category> 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<Language> 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<Feed> 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<Feed>(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<Category, List<Feed>> getFeedsByCategory() {
-                Map<Category, List<Feed>> result;
-                Feed[] feeds;
-                List<Feed> 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<Feed>();
-                                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);
-        }
-}