added todo
[pnews.git] / war / src / main / java / pnews / servlet / Config.java
index fec3770..78db694 100644 (file)
@@ -4,6 +4,9 @@ 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;
@@ -19,6 +22,7 @@ import javax.json.JsonObject;
 import javax.json.JsonString;
 import javax.json.JsonValue;
 
+import pnews.Article;
 import pnews.Category;
 import pnews.Feed;
 import pnews.Language;
@@ -28,6 +32,7 @@ public class Config {
         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();
         
         /**
@@ -83,13 +88,13 @@ public class Config {
         }
         
         private void loadEntities(JsonObject jroot) {
-                JsonObject jentities;
+                JsonObject jentities, jaliases;
                 JsonArray jblacklist;
                 final String METHOD_NAME = "loadEntities";
                 
                 jentities = jroot.getJsonObject("entities");
-                jblacklist = jentities.getJsonArray("blacklist");
                 
+                jblacklist = jentities.getJsonArray("blacklist");                
                 jblacklist.forEach((jv)-> {
                         JsonString js;
                         
@@ -97,7 +102,28 @@ public class Config {
                         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 {
@@ -158,6 +184,17 @@ public class Config {
                 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;
         }