19 package org.sleuthkit.autopsy.timeline.datamodel;
21 import com.google.common.eventbus.EventBus;
22 import java.util.Collection;
23 import java.util.Collections;
24 import java.util.List;
27 import java.util.logging.Level;
28 import javafx.beans.Observable;
29 import javafx.beans.property.ReadOnlyObjectProperty;
30 import javafx.beans.property.ReadOnlyObjectWrapper;
31 import javafx.collections.ListChangeListener;
32 import javafx.collections.MapChangeListener;
33 import javax.annotation.concurrent.GuardedBy;
34 import org.joda.time.Interval;
117 private final EventBus
eventbus = new EventBus("FilteredEventsModel_EventBus");
131 repo.getDatasourcesMap().addListener((MapChangeListener.Change<? extends Long, ? extends String> change) -> {
132 DataSourceFilter dataSourceFilter = new DataSourceFilter(change.getValueAdded(), change.getKey());
133 RootFilter rootFilter = filterProperty().get();
134 rootFilter.getDataSourcesFilter().addSubFilter(dataSourceFilter);
135 requestedFilter.set(rootFilter.copyOf());
137 repo.getHashSetMap().addListener((MapChangeListener.Change<? extends Long, ? extends String> change) -> {
138 HashSetFilter hashSetFilter = new HashSetFilter(change.getValueAdded(), change.getKey());
139 RootFilter rootFilter = filterProperty().get();
140 rootFilter.getHashHitsFilter().addSubFilter(hashSetFilter);
141 requestedFilter.set(rootFilter.copyOf());
143 repo.getTagNames().addListener((ListChangeListener.Change<? extends TagName> c) -> {
144 RootFilter rootFilter = filterProperty().get();
145 TagsFilter tagsFilter = rootFilter.getTagsFilter();
146 repo.syncTagsFilter(tagsFilter);
147 requestedFilter.set(rootFilter.copyOf());
155 if (zoomParams != null) {
238 DataSourceFilter dataSourceFilter = new DataSourceFilter(t.getValue(), t.getKey());
239 dataSourceFilter.setSelected(Boolean.TRUE);
240 dataSourcesFilter.addSubFilter(dataSourceFilter);
244 repo.
getHashSetMap().entrySet().stream().forEach((Map.Entry<Long, String> t) -> {
245 HashSetFilter hashSetFilter = new HashSetFilter(t.getValue(), t.getKey());
246 hashSetFilter.setSelected(Boolean.TRUE);
247 hashHitsFilter.addSubFilter(hashSetFilter);
284 final Interval overlap;
286 synchronized (
this) {
290 intersect.getSubFilters().add(filter);
320 synchronized (
this) {
366 final Interval range;
370 synchronized (
this) {
391 ContentTag contentTag = evt.getAddedTag();
392 Content content = contentTag.getContent();
393 Set<Long> updatedEventIDs =
repo.
addTag(content.getId(), null, contentTag, null);
398 BlackboardArtifactTag artifactTag = evt.getAddedTag();
399 BlackboardArtifact artifact = artifactTag.getArtifact();
400 Set<Long> updatedEventIDs =
repo.
addTag(artifact.getObjectID(), artifact.getArtifactID(), artifactTag, null);
409 Set<Long> updatedEventIDs =
repo.
deleteTag(content.getId(), null, deletedTagInfo.getTagID(), tagged);
411 }
catch (TskCoreException ex) {
412 LOGGER.log(Level.SEVERE,
"unable to determine tagged status of content.", ex);
422 Set<Long> updatedEventIDs =
repo.
deleteTag(artifact.getObjectID(), artifact.getArtifactID(), deletedTagInfo.getTagID(), tagged);
424 }
catch (TskCoreException ex) {
425 LOGGER.log(Level.SEVERE,
"unable to determine tagged status of artifact.", ex);
472 boolean tagsUpdated = !updatedEventIDs.isEmpty();
489 boolean tagsUpdated = !updatedEventIDs.isEmpty();
synchronized void registerForEvents(Object o)
synchronized DescriptionLoD getDescriptionLOD()
List< Long > getEventIDsForArtifact(BlackboardArtifact artifact)
List< Long > getEventIDsForFile(AbstractFile file, boolean includeDerivedArtifacts)
boolean postTagsAdded(Set< Long > updatedEventIDs)
final ReadOnlyObjectWrapper< ZoomParams > requestedZoomParamters
void postRefreshRequest()
void addSubFilter(SubFilterType subfilter)
Map< String, Long > getTagCountsByTagName(Set< Long > eventIDsWithTags)
synchronized ObservableMap< Long, String > getHashSetMap()
void postAutopsyEventLocally(AutopsyEvent event)
synchronized Interval getTimeRange()
final EventsRepository repo
synchronized Map< EventType, Long > countEvents(ZoomParams params)
List< EventStripe > getEventStripes()
synchronized List< EventStripe > getEventStripes(ZoomParams params)
synchronized ObservableMap< Long, String > getDatasourcesMap()
Interval getSpanningInterval(Collection< Long > eventIDs)
DeletedBlackboardArtifactTagInfo getDeletedTagInfo()
synchronized ReadOnlyObjectProperty< EventTypeZoomLevel > eventTypeZoomProperty()
synchronized boolean handleArtifactTagAdded(BlackBoardArtifactTagAddedEvent evt)
synchronized EventTypeZoomLevel getEventTypeZoom()
Map< EventType, Long > getEventCounts(Interval timeRange)
synchronized Set< Long > deleteTag(long objID, Long artifactID, long tagID, boolean tagged)
synchronized boolean handleContentTagDeleted(ContentTagDeletedEvent evt)
List< Long > getEventIDsForFile(AbstractFile file, boolean includeDerivedArtifacts)
synchronized ReadOnlyObjectProperty< ZoomParams > zoomParametersProperty()
synchronized Set< Long > addTag(long objID, Long artifactID, Tag tag, EventDB.EventTransaction trans)
Interval getSpanningInterval()
final ReadOnlyObjectWrapper< Interval > requestedTimeRange
final ReadOnlyObjectWrapper< RootFilter > requestedFilter
List< Long > getEventIDsForArtifact(BlackboardArtifact artifact)
boolean postTagsDeleted(Set< Long > updatedEventIDs)
static RootEventType getInstance()
synchronized ReadOnlyObjectProperty< RootFilter > filterProperty()
ObservableList< TagName > getTagNames()
synchronized RootFilter getFilter()
synchronized boolean handleContentTagAdded(ContentTagAddedEvent evt)
RootFilter getDefaultFilter()
TagsManager getTagsManager()
SingleEvent getEventById(Long eventID)
List< EventStripe > getEventStripes(ZoomParams params)
synchronized Set< SingleEvent > getEventsById(Collection< Long > eventIDs)
List< CombinedEvent > getCombinedEvents(Interval timeRange, RootFilter filter)
SleuthkitCase getSleuthkitCase()
void setSelected(Boolean act)
synchronized ZoomParams getZoomParamaters()
Set< SingleEvent > getEventsById(Collection< Long > eventIDs)
EventTypeZoomLevel getTypeZoomLevel()
final ReadOnlyObjectWrapper< EventTypeZoomLevel > requestedTypeZoom
DescriptionLoD getDescriptionLOD()
synchronized boolean handleArtifactTagDeleted(BlackBoardArtifactTagDeletedEvent evt)
Map< String, Long > getTagCountsByTagName(Set< Long > eventIDsWithTags)
synchronized static Logger getLogger(String name)
synchronized void unRegisterForEvents(Object o)
Interval getBoundingEventsInterval(Interval timeRange, RootFilter filter)
List< CombinedEvent > getCombinedEvents()
Interval getSpanningInterval(Collection< Long > eventIDs)
synchronized ReadOnlyObjectProperty< DescriptionLoD > descriptionLODProperty()
List< Long > getEventIDs(Interval timeRange, Filter filter)
Interval getBoundingEventsInterval()
SingleEvent getEventById(Long eventID)
DeletedContentTagInfo getDeletedTagInfo()
synchronized ReadOnlyObjectProperty< Interval > timeRangeProperty()
List< Long > getEventIDs(Interval timeRange, RootFilter filter)
static final Logger LOGGER
final ReadOnlyObjectWrapper< DescriptionLoD > requestedLOD