mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 02:07:42 +00:00
rename queueDBWorkerTask ->queueDBTask, don't bother putting task on bg thread, remove unused executor
This commit is contained in:
parent
ebad833635
commit
1b26096503
@ -25,7 +25,6 @@ import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Level;
|
||||
@ -88,18 +87,11 @@ import org.sleuthkit.datamodel.TskData;
|
||||
* Connects different parts of ImageGallery together and is hub for flow of
|
||||
* control.
|
||||
*/
|
||||
public final class ImageGalleryController implements Executor {
|
||||
public final class ImageGalleryController {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(ImageGalleryController.class.getName());
|
||||
private static ImageGalleryController instance;
|
||||
|
||||
private final Region infoOverLayBackground = new Region() {
|
||||
{
|
||||
setBackground(new Background(new BackgroundFill(Color.GREY, CornerRadii.EMPTY, Insets.EMPTY)));
|
||||
setOpacity(.4);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* true if Image Gallery should listen to ingest events, false if it should
|
||||
* not listen to speed up ingest
|
||||
@ -112,7 +104,7 @@ public final class ImageGalleryController implements Executor {
|
||||
private final ReadOnlyBooleanWrapper metaDataCollapsed = new ReadOnlyBooleanWrapper(false);
|
||||
private final ReadOnlyDoubleWrapper thumbnailSize = new ReadOnlyDoubleWrapper(100);
|
||||
private final ReadOnlyBooleanWrapper regroupDisabled = new ReadOnlyBooleanWrapper(false);
|
||||
private final ReadOnlyIntegerWrapper queueSizeProperty = new ReadOnlyIntegerWrapper(0);
|
||||
private final ReadOnlyIntegerWrapper dbTaskQueueSize = new ReadOnlyIntegerWrapper(0);
|
||||
|
||||
private final FileIDSelectionModel selectionModel = new FileIDSelectionModel(this);
|
||||
|
||||
@ -128,19 +120,18 @@ public final class ImageGalleryController implements Executor {
|
||||
private StackPane fullUIStackPane;
|
||||
private StackPane centralStackPane;
|
||||
private Node infoOverlay;
|
||||
|
||||
private final Executor execDelegate = Executors.newSingleThreadExecutor();
|
||||
private final Region infoOverLayBackground = new Region() {
|
||||
{
|
||||
setBackground(new Background(new BackgroundFill(Color.GREY, CornerRadii.EMPTY, Insets.EMPTY)));
|
||||
setOpacity(.4);
|
||||
}
|
||||
};
|
||||
|
||||
private ListeningExecutorService dbExecutor;
|
||||
|
||||
private SleuthkitCase sleuthKitCase;
|
||||
private DrawableDB db;
|
||||
|
||||
@Override
|
||||
public void execute(Runnable command) {
|
||||
execDelegate.execute(command);
|
||||
}
|
||||
|
||||
public static synchronized ImageGalleryController getDefault() {
|
||||
if (instance == null) {
|
||||
instance = new ImageGalleryController();
|
||||
@ -221,7 +212,7 @@ public final class ImageGalleryController implements Executor {
|
||||
//if we just turned on listening and a case is open and that case is not up to date
|
||||
if (newValue && !oldValue && Case.isCaseOpen() && ImageGalleryModule.isDrawableDBStale(Case.getCurrentCase())) {
|
||||
//populate the db
|
||||
queueDBWorkerTask(new CopyAnalyzedFiles(instance, db, sleuthKitCase));
|
||||
queueDBTask(new CopyAnalyzedFiles(instance, db, sleuthKitCase));
|
||||
}
|
||||
});
|
||||
|
||||
@ -256,7 +247,7 @@ public final class ImageGalleryController implements Executor {
|
||||
ingestManager.addIngestModuleEventListener(ingestEventHandler);
|
||||
ingestManager.addIngestJobEventListener(ingestEventHandler);
|
||||
|
||||
queueSizeProperty.addListener(obs -> this.updateRegroupDisabled());
|
||||
dbTaskQueueSize.addListener(obs -> this.updateRegroupDisabled());
|
||||
}
|
||||
|
||||
public ReadOnlyBooleanProperty getCanAdvance() {
|
||||
@ -285,7 +276,7 @@ public final class ImageGalleryController implements Executor {
|
||||
|
||||
@ThreadConfined(type = ThreadConfined.ThreadType.JFX)
|
||||
private void updateRegroupDisabled() {
|
||||
regroupDisabled.set((queueSizeProperty.get() > 0) || IngestManager.getInstance().isIngestRunning());
|
||||
regroupDisabled.set((dbTaskQueueSize.get() > 0) || IngestManager.getInstance().isIngestRunning());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -316,7 +307,7 @@ public final class ImageGalleryController implements Executor {
|
||||
new ProgressIndicator()));
|
||||
}
|
||||
|
||||
} else if (queueSizeProperty.get() > 0) {
|
||||
} else if (dbTaskQueueSize.get() > 0) {
|
||||
replaceNotification(fullUIStackPane,
|
||||
new NoGroupsDialog(Bundle.ImageGalleryController_noGroupsDlg_msg3(),
|
||||
new ProgressIndicator()));
|
||||
@ -436,7 +427,7 @@ public final class ImageGalleryController implements Executor {
|
||||
*
|
||||
* @param bgTask
|
||||
*/
|
||||
public synchronized void queueDBWorkerTask(BackgroundTask bgTask) {
|
||||
public synchronized void queueDBTask(BackgroundTask bgTask) {
|
||||
if (dbExecutor == null || dbExecutor.isShutdown()) {
|
||||
dbExecutor = getNewDBExecutor();
|
||||
}
|
||||
@ -446,11 +437,11 @@ public final class ImageGalleryController implements Executor {
|
||||
}
|
||||
|
||||
private void incrementQueueSize() {
|
||||
Platform.runLater(() -> queueSizeProperty.set(queueSizeProperty.get() + 1));
|
||||
Platform.runLater(() -> dbTaskQueueSize.set(dbTaskQueueSize.get() + 1));
|
||||
}
|
||||
|
||||
private void decrementQueueSize() {
|
||||
Platform.runLater(() -> queueSizeProperty.set(queueSizeProperty.get() - 1));
|
||||
Platform.runLater(() -> dbTaskQueueSize.set(dbTaskQueueSize.get() - 1));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -514,7 +505,7 @@ public final class ImageGalleryController implements Executor {
|
||||
}
|
||||
|
||||
public ReadOnlyIntegerProperty getDBTasksQueueSizeProperty() {
|
||||
return queueSizeProperty.getReadOnlyProperty();
|
||||
return dbTaskQueueSize.getReadOnlyProperty();
|
||||
}
|
||||
|
||||
public synchronized SleuthkitCase getSleuthKitCase() {
|
||||
@ -895,11 +886,11 @@ public final class ImageGalleryController implements Executor {
|
||||
synchronized (ImageGalleryController.this) {
|
||||
if (ImageGalleryModule.isDrawableAndNotKnown(file)) {
|
||||
//this file should be included and we don't already know about it from hash sets (NSRL)
|
||||
queueDBWorkerTask(new UpdateFileTask(file, db));
|
||||
queueDBTask(new UpdateFileTask(file, db));
|
||||
} else if (FileTypeUtils.getAllSupportedExtensions().contains(file.getNameExtension())) {
|
||||
//doing this check results in fewer tasks queued up, and faster completion of db update
|
||||
//this file would have gotten scooped up in initial grab, but actually we don't need it
|
||||
queueDBWorkerTask(new RemoveFileTask(file, db));
|
||||
queueDBTask(new RemoveFileTask(file, db));
|
||||
}
|
||||
}
|
||||
} catch (TskCoreException | FileTypeDetector.FileTypeDetectorInitException ex) {
|
||||
@ -945,7 +936,7 @@ public final class ImageGalleryController implements Executor {
|
||||
//copy all file data to drawable databse
|
||||
Content newDataSource = (Content) evt.getNewValue();
|
||||
if (isListeningEnabled()) {
|
||||
queueDBWorkerTask(new PrePopulateDataSourceFiles(newDataSource, ImageGalleryController.this, getDatabase(), getSleuthKitCase()));
|
||||
queueDBTask(new PrePopulateDataSourceFiles(newDataSource, ImageGalleryController.this, getDatabase(), getSleuthKitCase()));
|
||||
} else {//TODO: keep track of what we missed for later
|
||||
setStale(true);
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ public class CategorizeAction extends Action {
|
||||
|
||||
final void addCatToFiles(Set<Long> ids) {
|
||||
Logger.getAnonymousLogger().log(Level.INFO, "categorizing{0} as {1}", new Object[]{ids.toString(), cat.getDisplayName()}); //NON-NLS
|
||||
controller.queueDBWorkerTask(new CategorizeTask(ids, cat, createUndo));
|
||||
controller.queueDBTask(new CategorizeTask(ids, cat, createUndo));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013-15 Basis Technology Corp.
|
||||
* Copyright 2011-17 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -21,22 +21,23 @@ package org.sleuthkit.autopsy.imagegallery.actions;
|
||||
import java.util.Optional;
|
||||
import javafx.beans.Observable;
|
||||
import javafx.beans.binding.ObjectExpression;
|
||||
import javafx.concurrent.Task;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
import org.controlsfx.control.action.Action;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.ThreadConfined;
|
||||
import org.sleuthkit.autopsy.imagegallery.ImageGalleryController;
|
||||
import org.sleuthkit.autopsy.imagegallery.datamodel.grouping.DrawableGroup;
|
||||
import org.sleuthkit.autopsy.imagegallery.datamodel.grouping.GroupManager;
|
||||
import org.sleuthkit.autopsy.imagegallery.datamodel.grouping.GroupViewState;
|
||||
|
||||
/**
|
||||
* Marks the currently fisplayed group as "seen" and advances to the next unseen
|
||||
* Marks the currently displayed group as "seen" and advances to the next unseen
|
||||
* group
|
||||
*/
|
||||
@NbBundle.Messages({"NextUnseenGroup.markGroupSeen=Mark Group Seen",
|
||||
"NextUnseenGroup.nextUnseenGroup=Next Unseen group"})
|
||||
"NextUnseenGroup.nextUnseenGroup=Next Unseen group"})
|
||||
public class NextUnseenGroup extends Action {
|
||||
|
||||
private static final Image END =
|
||||
@ -47,54 +48,41 @@ public class NextUnseenGroup extends Action {
|
||||
private static final String MARK_GROUP_SEEN = Bundle.NextUnseenGroup_markGroupSeen();
|
||||
private static final String NEXT_UNSEEN_GROUP = Bundle.NextUnseenGroup_nextUnseenGroup();
|
||||
|
||||
private final ImageGalleryController controller;
|
||||
private final GroupManager groupManager;
|
||||
private final ObservableList<DrawableGroup> unSeenGroups;
|
||||
private final ObservableList<DrawableGroup> analyzedGroups;
|
||||
|
||||
public NextUnseenGroup(ImageGalleryController controller) {
|
||||
super(NEXT_UNSEEN_GROUP);
|
||||
this.controller = controller;
|
||||
groupManager = controller.getGroupManager();
|
||||
unSeenGroups = groupManager.getUnSeenGroups();
|
||||
analyzedGroups = groupManager.getAnalyzedGroups();
|
||||
setGraphic(new ImageView(ADVANCE));
|
||||
|
||||
//TODO: do we need both these listeners?
|
||||
controller.getGroupManager().getAnalyzedGroups().addListener((Observable observable) -> {
|
||||
updateButton();
|
||||
analyzedGroups.addListener((Observable o) -> this.updateButton());
|
||||
unSeenGroups.addListener((Observable o) -> this.updateButton());
|
||||
|
||||
});
|
||||
controller.getGroupManager().getUnSeenGroups().addListener((Observable observable) -> {
|
||||
updateButton();
|
||||
});
|
||||
|
||||
setEventHandler((ActionEvent t) -> {
|
||||
setEventHandler(event -> {
|
||||
//fx-thread
|
||||
//if there is a group assigned to the view, mark it as seen
|
||||
Optional.ofNullable(controller.viewState())
|
||||
.map(ObjectExpression<GroupViewState>::getValue)
|
||||
.map(GroupViewState::getGroup)
|
||||
.ifPresent(group -> controller.getGroupManager().markGroupSeen(group, true));
|
||||
controller.execute(new Task<Void>() {
|
||||
.ifPresent(group -> groupManager.markGroupSeen(group, true));
|
||||
|
||||
@Override
|
||||
protected Void call() throws Exception {
|
||||
if (false == controller.getGroupManager().getUnSeenGroups().isEmpty()) {
|
||||
controller.advance(GroupViewState.tile(controller.getGroupManager().getUnSeenGroups().get(0)), true);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void succeeded() {
|
||||
super.succeeded();
|
||||
updateButton();
|
||||
}
|
||||
});
|
||||
if (unSeenGroups.isEmpty() == false) {
|
||||
controller.advance(GroupViewState.tile(unSeenGroups.get(0)), true);
|
||||
updateButton();
|
||||
}
|
||||
});
|
||||
|
||||
updateButton();
|
||||
}
|
||||
|
||||
@ThreadConfined(type = ThreadConfined.ThreadType.JFX)
|
||||
private void updateButton() {
|
||||
setDisabled(controller.getGroupManager().getUnSeenGroups().isEmpty());
|
||||
if (controller.getGroupManager().getUnSeenGroups().size() <= 1) {
|
||||
setDisabled(unSeenGroups.isEmpty());
|
||||
if (unSeenGroups.size() <= 1) {
|
||||
setText(MARK_GROUP_SEEN);
|
||||
setGraphic(new ImageView(END));
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user