package engine; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import file.BookmarkReader; public class MostPopularCollectiveEngine implements EngineInterface { private BookmarkReader reader; private final Map<String, Double> collectiveTags = new LinkedHashMap<String, Double>(); public void loadFile(String path, String filename) throws Exception { BookmarkReader reader = EngineUtils.getSortedBookmarkReader(path, filename); Map<Integer, Double> collectiveTags = EngineUtils.calcTopEntities(reader, EntityType.TAG); // map to strings Map<String, Double> collectiveTagNames = new LinkedHashMap<String, Double>(); for (Map.Entry<Integer, Double> tag : collectiveTags.entrySet()) { collectiveTagNames.put(reader.getTags().get(tag.getKey()), tag.getValue()); } resetStructures(reader, collectiveTagNames); } @Override public synchronized Map<String, Double> getEntitiesWithLikelihood(String user, String resource, List<String> topics, Integer count, Boolean filterOwnEntities, Algorithm algorithm, EntityType type) { if (count == null || count.doubleValue() < 1) { count = 10; } List<Integer> filterTags = EngineUtils.getFilterTags(filterOwnEntities, this.reader, user, resource); Map<String, Double> returnMap = new LinkedHashMap<String, Double>(); for (Map.Entry<String, Double> entry : collectiveTags.entrySet()) { if (returnMap.size() < count.intValue()) { if (!filterTags.contains(entry.getKey())) { returnMap.put(entry.getKey(), entry.getValue()); } } else { break; } } return returnMap; } private synchronized void resetStructures(BookmarkReader reader, Map<String, Double> collectiveTags) { this.reader = reader; this.collectiveTags.clear(); this.collectiveTags.putAll(collectiveTags); } }