19package org.sleuthkit.autopsy.datamodel;
21import com.google.common.collect.Lists;
22import com.google.common.eventbus.EventBus;
23import com.google.common.eventbus.Subscribe;
24import java.util.ArrayList;
25import java.util.Collections;
28import java.util.concurrent.ConcurrentHashMap;
29import java.util.function.Predicate;
30import java.util.logging.Level;
31import org.sleuthkit.autopsy.coreutils.Logger;
32import java.util.prefs.PreferenceChangeEvent;
33import java.util.stream.Collectors;
34import org.openide.nodes.ChildFactory;
35import org.openide.util.NbBundle.Messages;
36import org.sleuthkit.autopsy.core.UserPreferences;
37import org.sleuthkit.datamodel.Content;
45public abstract class BaseChildFactory<T
extends Content> extends ChildFactory.Detachable<T> {
62 "# {0} - node name",
"BaseChildFactory.NoSuchEventBusException.message=No event bus for node: {0}"
67 super(Bundle.BaseChildFactory_NoSuchEventBusException_message(nodeName));
78 public static void register(String nodeName, Object subscriber) {
81 bus =
new EventBus(nodeName);
84 bus.register(subscriber);
108 this(nodeName, x ->
true);
158 pagingSupport.splitKeysIntoPages(allKeys.stream().filter(
filter).collect(Collectors.toList()));
229 private class PagingSupport {
247 pages =
new ArrayList<>();
270 List<T> getCurrentPage() {
271 if (!
pages.isEmpty()) {
275 return Collections.emptyList();
283 void splitKeysIntoPages(List<T> keys) {
284 int oldPageCount =
pages.size();
290 if (keys.isEmpty() && !
pages.isEmpty()) {
297 pages =
new ArrayList<>();
302 if (
pages.size() != oldPageCount) {
306 }
catch (NoSuchEventBusException ex) {
307 logger.log(Level.WARNING,
"Failed to post page change event.", ex);
336 int newPageSize =
event.getPageSize();
343 splitKeysIntoPages(
pages.stream().flatMap(List::stream).collect(Collectors.toList()));
static final String RESULTS_TABLE_PAGE_SIZE
static int getResultsTablePageSize()
static void addChangeListener(PreferenceChangeListener listener)
synchronized static Logger getLogger(String name)
NoSuchEventBusException(String nodeName)
PageChangeEvent(int newPageNumber)
PageCountChangeEvent(int newPageCount)
PageSizeChangeEvent(int newPageSize)
void subscribeToPageChange(PageChangeEvent event)
void subscribeToRefreshKeys(RefreshKeysEvent event)
void subscribeToPageSizeChange(PageSizeChangeEvent event)
static final Logger logger
boolean createKeys(List< T > toPopulate)
final PagingSupport pagingSupport
static void post(String nodeName, Object event)
boolean isPageChangeEvent
static Map< String, EventBus > nodeNameToEventBusMap
BaseChildFactory(String nodeName, Predicate< T > filter)
boolean isPageSizeChangeEvent
abstract List< T > makeKeys()
BaseChildFactory(String nodeName)
static void register(String nodeName, Object subscriber)