Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
EventUpdateHandler.java
Go to the documentation of this file.
1/*
2 * Autopsy Forensic Browser
3 *
4 * Copyright 2020 Basis Technology Corp.
5 * Contact: carrier <at> sleuthkit <dot> org
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19package org.sleuthkit.autopsy.datasourcesummary.uiutils;
20
21import java.beans.PropertyChangeEvent;
22import java.beans.PropertyChangeListener;
23import java.util.Set;
24import org.sleuthkit.autopsy.casemodule.Case;
25import org.sleuthkit.autopsy.guiutils.RefreshThrottler;
26import org.sleuthkit.autopsy.ingest.IngestManager;
27import org.sleuthkit.autopsy.ingest.IngestManager.IngestJobEvent;
28import org.sleuthkit.autopsy.ingest.ModuleContentEvent;
29import org.sleuthkit.autopsy.ingest.ModuleDataEvent;
30import org.sleuthkit.datamodel.AbstractFile;
31
36public class EventUpdateHandler {
37
42 @Override
43 public void refresh() {
44 // delegate to EventUpdateHandler method.
45 EventUpdateHandler.this.onRefresh();
46 }
47
48 @Override
49 public boolean isRefreshRequired(PropertyChangeEvent evt) {
50 String eventType = evt.getPropertyName();
51 if (Case.isCaseOpen()) {
52 if (IngestManager.IngestModuleEvent.DATA_ADDED.toString().equals(eventType) && evt.getOldValue() instanceof ModuleDataEvent) {
53 ModuleDataEvent dataEvent = (ModuleDataEvent) evt.getOldValue();
54 return EventUpdateHandler.this.isRefreshRequired(dataEvent);
55 } else if (IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString().equals(eventType) && evt.getOldValue() instanceof ModuleContentEvent) {
56 ModuleContentEvent contentEvent = (ModuleContentEvent) evt.getOldValue();
57 return EventUpdateHandler.this.isRefreshRequired(contentEvent);
58 } else if (IngestManager.IngestModuleEvent.FILE_DONE.toString().equals(eventType) && evt.getNewValue() instanceof AbstractFile) {
59 AbstractFile analyzedFile = (AbstractFile) evt.getNewValue();
60 return EventUpdateHandler.this.isRefreshRequired(analyzedFile);
61 }
62 }
63 return false;
64 }
65 });
66
70 private final PropertyChangeListener caseEventsListener = (evt) -> {
72 onRefresh();
73 }
74 };
75
76 private final PropertyChangeListener ingestJobEventsListener = (evt) -> {
77 if (evt == null) {
78 return;
79 }
80
81 String eventName = evt.getPropertyName();
82 for (IngestJobEvent ingestEvt : IngestJobEvent.values()) {
83 if (ingestEvt.name().equals(eventName) && isRefreshRequired(ingestEvt)) {
84 onRefresh();
85 }
86 }
87 };
88
89 private final UpdateGovernor governor;
90 private final Set<Case.Events> caseEvents;
91 private final Set<IngestJobEvent> ingestEvents;
92 private final Runnable onUpdate;
93
103 if (onUpdate == null) {
104 throw new IllegalArgumentException("onUpdate parameter must be non-null.");
105 }
106
107 this.onUpdate = onUpdate;
108 this.governor = governor;
109 this.caseEvents = governor.getCaseEventUpdates();
110 this.ingestEvents = governor.getIngestJobEventUpdates();
111 }
112
120 protected boolean isRefreshRequired(ModuleDataEvent evt) {
121 return governor.isRefreshRequired(evt);
122 }
123
131 protected boolean isRefreshRequired(ModuleContentEvent evt) {
132 return governor.isRefreshRequired(evt);
133 }
134
143 protected boolean isRefreshRequired(AbstractFile evt) {
144 return governor.isRefreshRequired(evt);
145 }
146
154 protected boolean isRefreshRequired(IngestJobEvent evt) {
155 return governor.isRefreshRequired(evt);
156 }
157
165 protected boolean isRefreshRequiredForCaseEvent(PropertyChangeEvent evt) {
166 return governor.isRefreshRequiredForCaseEvent(evt);
167 }
168
172 protected void onRefresh() {
173 onUpdate.run();
174 }
175
179 public void register() {
180 if (!caseEvents.isEmpty()) {
182 }
183
185 refreshThrottler.registerForIngestModuleEvents();
186 }
187
199}
static void removeEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
Definition Case.java:757
static void addEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
Definition Case.java:712
static synchronized IngestManager getInstance()
void removeIngestJobEventListener(final PropertyChangeListener listener)
void addIngestJobEventListener(final PropertyChangeListener listener)

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.