blacklisted entities are now in the configuration file
[pnews.git] / war / src / main / java / pnews / servlet / Config.java
index bafb606..fec3770 100644 (file)
@@ -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,14 @@ public class Config {
         private Feed[] feeds;
         private Category[] categories;
         private Language[] languages;
+        private final Set<String> 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<String, Category> 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<Category> cats;
@@ -75,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;
@@ -116,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() {