19 package org.sleuthkit.autopsy.timeline.ui.filtering.datamodel;
21 import com.google.common.collect.ImmutableMap;
22 import com.google.common.collect.Lists;
23 import java.util.Arrays;
24 import java.util.HashSet;
25 import java.util.Objects;
27 import javafx.beans.property.BooleanProperty;
28 import javafx.beans.property.SimpleBooleanProperty;
29 import javafx.collections.ObservableList;
30 import org.openide.util.NbBundle;
32 import org.
sleuthkit.datamodel.TimelineFilter.DataSourceFilter;
33 import org.
sleuthkit.datamodel.TimelineFilter.DataSourcesFilter;
34 import org.
sleuthkit.datamodel.TimelineFilter.EventTypeFilter;
35 import org.
sleuthkit.datamodel.TimelineFilter.FileTypeFilter;
36 import org.
sleuthkit.datamodel.TimelineFilter.FileTypesFilter;
37 import org.
sleuthkit.datamodel.TimelineFilter.HashHitsFilter;
38 import org.
sleuthkit.datamodel.TimelineFilter.HideKnownFilter;
39 import org.
sleuthkit.datamodel.TimelineFilter.RootFilter;
40 import org.
sleuthkit.datamodel.TimelineFilter.TextFilter;
41 import org.
sleuthkit.datamodel.TimelineFilter.TagsFilter;
52 private final static BooleanProperty
ALWAYS_TRUE =
new SimpleBooleanProperty(
true);
53 private final static BooleanProperty
ALWAYS_FALSE =
new SimpleBooleanProperty(
false);
61 private final Set<FilterState<? extends TimelineFilter>>
namedFilterStates =
new HashSet<>();
109 super(rootFilter, Arrays.asList(eventTypeFilterState, knownFilterState, textFilterState, tagsFilterState, hashHitsFilterState, dataSourcesFilterState, fileTypesFilterState));
117 namedFilterStates.addAll(Arrays.asList(eventTypeFilterState, knownFilterState, textFilterState, tagsFilterState, hashHitsFilterState, dataSourcesFilterState, fileTypesFilterState));
147 .filter(filterState -> namedFilterStates.contains(filterState) ==
false)
148 .forEach(copy::addSubFilterState);
182 return new RootFilter(knownFilterState.getActiveFilter(),
183 tagsFilterState.getActiveFilter(),
184 hashHitsFilterState.getActiveFilter(),
185 textFilterState.getActiveFilter(),
194 ImmutableMap<FilterState<? extends TimelineFilter>, Integer> filterOrder
196 .put(knownFilterState, 0)
197 .put(textFilterState, 1)
198 .put(tagsFilterState, 2)
199 .put(hashHitsFilterState, 3)
200 .put(dataSourcesFilterState, 4)
202 .put(eventTypeFilterState, 6)
205 return super.getSubFilterStates().sorted((state1, state2)
206 -> Integer.compare(filterOrder.getOrDefault(state1, Integer.MAX_VALUE), filterOrder.getOrDefault(state2, Integer.MAX_VALUE)));
217 if (getClass() != obj.getClass()) {
223 if (
false == Objects.equals(
this.getFilter(), other.getFilter())) {
245 @NbBundle.Messages(
"RootFilterState.displayName=Root")
248 return Bundle.RootFilterState_displayName();
289 return "RootFilterState{"
290 +
"\neventTypeFilterState=" + eventTypeFilterState +
","
291 +
"\nknownFilterState=" + knownFilterState +
","
292 +
"\ntextFilterState=" + textFilterState +
","
293 +
"\ntagsFilterState=" + tagsFilterState +
","
294 +
"\nhashHitsFilterState=" + hashHitsFilterState +
","
295 +
"\ndataSourcesFilterState=" + dataSourcesFilterState +
","
298 +
"\nnamedFilterStates=" + namedFilterStates +
","
299 +
"\ndelegate=" + getFilter() +
'}';
SqlFilterState< HideKnownFilter > getKnownFilterState()
final CompoundFilterState< EventTypeFilter, EventTypeFilter > eventTypeFilterState
final HashHitsFilterState hashHitsFilterState
static final BooleanProperty ALWAYS_FALSE
final SqlFilterState< HideKnownFilter > knownFilterState
final TextFilterState textFilterState
BooleanProperty activeProperty()
void addSubFilterState(FilterState< ?extends SubFilterType > newSubFilterState)
CompoundFilterState< FileTypeFilter, FileTypesFilter > getFileTypesFilterState()
SqlFilterState< TagsFilter > getTagsFilterState()
SqlFilterState< TextFilter > getTextFilterState()
void setDisabled(Boolean act)
RootFilter getActiveFilter()
boolean equals(Object obj)
final CompoundFilterState< TimelineFilter.FileTypeFilter, TimelineFilter.FileTypesFilter > fileTypesFilterState
SqlFilterState< HashHitsFilter > getHashHitsFilterState()
CompoundFilterState< EventTypeFilter, EventTypeFilter > getEventTypeFilterState()
FilterType getActiveFilter()
RootFilterState(RootFilter rootFilter)
RootFilterState(RootFilter rootFilter, CompoundFilterState< EventTypeFilter, EventTypeFilter > eventTypeFilterState, SqlFilterState< HideKnownFilter > knownFilterState, TextFilterState textFilterState, TagsFilterState tagsFilterState, HashHitsFilterState hashHitsFilterState, CompoundFilterState< DataSourceFilter, DataSourcesFilter > dataSourcesFilterState, CompoundFilterState< FileTypeFilter, FileTypesFilter > fileTypesFilterState)
BooleanProperty selectedProperty()
ObservableList< FilterState<?extends TimelineFilter > > getSubFilterStates()
final TagsFilterState tagsFilterState
final CompoundFilterState< DataSourceFilter, DataSourcesFilter > dataSourcesFilterState
final Set< FilterState<?extends TimelineFilter > > namedFilterStates
RootFilterState intersect(FilterState< ?extends TimelineFilter > other)
static final BooleanProperty ALWAYS_TRUE
void setSelected(Boolean act)
CompoundFilterState< DataSourceFilter, DataSourcesFilter > getDataSourcesFilterState()
FilterType getActiveFilter()
BooleanProperty disabledProperty()