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;
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(Config.class.getName());
+ private static final Logger LOG = Logger.getLogger(CLASS_NAME);
private void loadCategories(JsonArray jcats) {
List<Category> cats;
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;
});
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;
}