mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-13 00:16:16 +00:00
ImageGalleryController checks RuntimeProperties.coreComponentsAreActive
This commit is contained in:
parent
bd587ce664
commit
39632a0815
@ -19,6 +19,7 @@
|
|||||||
package org.sleuthkit.autopsy.imagegallery;
|
package org.sleuthkit.autopsy.imagegallery;
|
||||||
|
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -59,6 +60,7 @@ import org.openide.util.Exceptions;
|
|||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.events.ContentTagAddedEvent;
|
import org.sleuthkit.autopsy.casemodule.events.ContentTagAddedEvent;
|
||||||
import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent;
|
import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent;
|
||||||
|
import org.sleuthkit.autopsy.core.RuntimeProperties;
|
||||||
import org.sleuthkit.autopsy.coreutils.History;
|
import org.sleuthkit.autopsy.coreutils.History;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.coreutils.ThreadConfined;
|
import org.sleuthkit.autopsy.coreutils.ThreadConfined;
|
||||||
@ -455,88 +457,8 @@ public final class ImageGalleryController {
|
|||||||
LOGGER.info("setting up ImageGallery listeners");
|
LOGGER.info("setting up ImageGallery listeners");
|
||||||
//TODO can we do anything usefull in an InjestJobEventListener?
|
//TODO can we do anything usefull in an InjestJobEventListener?
|
||||||
//IngestManager.getInstance().addIngestJobEventListener((PropertyChangeEvent evt) -> {});
|
//IngestManager.getInstance().addIngestJobEventListener((PropertyChangeEvent evt) -> {});
|
||||||
IngestManager.getInstance().addIngestModuleEventListener((PropertyChangeEvent evt) -> {
|
IngestManager.getInstance().addIngestModuleEventListener(new IngestModuleEventListener());
|
||||||
switch (IngestManager.IngestModuleEvent.valueOf(evt.getPropertyName())) {
|
Case.addPropertyChangeListener(new CaseEventListener());
|
||||||
case CONTENT_CHANGED:
|
|
||||||
//TODO: do we need to do anything here? -jm
|
|
||||||
case DATA_ADDED:
|
|
||||||
/*
|
|
||||||
* we could listen to DATA events and progressivly update
|
|
||||||
* files, and get data from DataSource ingest modules, but
|
|
||||||
* given that most modules don't post new artifacts in the
|
|
||||||
* events and we would have to query for them, without
|
|
||||||
* knowing which are the new ones, we just ignore these
|
|
||||||
* events for now. The relevant data should all be captured
|
|
||||||
* by file done event, anyways -jm
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
case FILE_DONE:
|
|
||||||
/**
|
|
||||||
* getOldValue has fileID getNewValue has
|
|
||||||
* {@link Abstractfile}
|
|
||||||
*/
|
|
||||||
|
|
||||||
AbstractFile file = (AbstractFile) evt.getNewValue();
|
|
||||||
|
|
||||||
if (isListeningEnabled()) {
|
|
||||||
if (file.isFile()) {
|
|
||||||
try {
|
|
||||||
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));
|
|
||||||
} 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));
|
|
||||||
}
|
|
||||||
} catch (TskCoreException ex) {
|
|
||||||
//TODO: What to do here?
|
|
||||||
LOGGER.log(Level.WARNING, "Unable to determine if file is drawable and not known. Not making any changes to DB", ex);
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else { //TODO: keep track of what we missed for later
|
|
||||||
setStale(true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Case.addPropertyChangeListener((PropertyChangeEvent evt) -> {
|
|
||||||
switch (Case.Events.valueOf(evt.getPropertyName())) {
|
|
||||||
case CURRENT_CASE:
|
|
||||||
Case newCase = (Case) evt.getNewValue();
|
|
||||||
if (newCase != null) { // case has been opened
|
|
||||||
setCase(newCase); //connect db, groupmanager, start worker thread
|
|
||||||
} else { // case is closing
|
|
||||||
//close window, reset everything
|
|
||||||
SwingUtilities.invokeLater(ImageGalleryTopComponent::closeTopComponent);
|
|
||||||
reset();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DATA_SOURCE_ADDED:
|
|
||||||
//copy all file data to drawable databse
|
|
||||||
Content newDataSource = (Content) evt.getNewValue();
|
|
||||||
if (isListeningEnabled()) {
|
|
||||||
queueDBWorkerTask(new PrePopulateDataSourceFiles(newDataSource));
|
|
||||||
} else {//TODO: keep track of what we missed for later
|
|
||||||
setStale(true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case CONTENT_TAG_ADDED:
|
|
||||||
final ContentTagAddedEvent tagAddedEvent = (ContentTagAddedEvent) evt;
|
|
||||||
if (getDatabase().isInDB(tagAddedEvent.getAddedTag().getContent().getId())) {
|
|
||||||
getTagsManager().fireTagAddedEvent(tagAddedEvent);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case CONTENT_TAG_DELETED:
|
|
||||||
final ContentTagDeletedEvent tagDeletedEvent = (ContentTagDeletedEvent) evt;
|
|
||||||
if (getDatabase().isInDB(tagDeletedEvent.getDeletedTagInfo().getContentID())) {
|
|
||||||
getTagsManager().fireTagDeletedEvent(tagDeletedEvent);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashSetManager getHashSetManager() {
|
public HashSetManager getHashSetManager() {
|
||||||
@ -977,4 +899,114 @@ public final class ImageGalleryController {
|
|||||||
progressHandle.finish();
|
progressHandle.finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class IngestModuleEventListener implements PropertyChangeListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
|
if (RuntimeProperties.coreComponentsAreActive() == false) {
|
||||||
|
/*
|
||||||
|
* Running in "headless" mode, no need to process any events.
|
||||||
|
* This cannot be done earlier because the switch to core
|
||||||
|
* components inactive may not have been made at start up.
|
||||||
|
*/
|
||||||
|
IngestManager.getInstance().removeIngestModuleEventListener(this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (IngestManager.IngestModuleEvent.valueOf(evt.getPropertyName())) {
|
||||||
|
case CONTENT_CHANGED:
|
||||||
|
//TODO: do we need to do anything here? -jm
|
||||||
|
case DATA_ADDED:
|
||||||
|
/*
|
||||||
|
* we could listen to DATA events and progressivly update
|
||||||
|
* files, and get data from DataSource ingest modules, but
|
||||||
|
* given that most modules don't post new artifacts in the
|
||||||
|
* events and we would have to query for them, without
|
||||||
|
* knowing which are the new ones, we just ignore these
|
||||||
|
* events for now. The relevant data should all be captured
|
||||||
|
* by file done event, anyways -jm
|
||||||
|
*/
|
||||||
|
break;
|
||||||
|
case FILE_DONE:
|
||||||
|
/**
|
||||||
|
* getOldValue has fileID getNewValue has
|
||||||
|
* {@link Abstractfile}
|
||||||
|
*/
|
||||||
|
|
||||||
|
AbstractFile file = (AbstractFile) evt.getNewValue();
|
||||||
|
|
||||||
|
if (isListeningEnabled()) {
|
||||||
|
if (file.isFile()) {
|
||||||
|
try {
|
||||||
|
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));
|
||||||
|
} 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));
|
||||||
|
}
|
||||||
|
} catch (TskCoreException ex) {
|
||||||
|
//TODO: What to do here?
|
||||||
|
LOGGER.log(Level.WARNING, "Unable to determine if file is drawable and not known. Not making any changes to DB", ex);
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { //TODO: keep track of what we missed for later
|
||||||
|
setStale(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class CaseEventListener implements PropertyChangeListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
|
if (RuntimeProperties.coreComponentsAreActive() == false) {
|
||||||
|
/*
|
||||||
|
* Running in "headless" mode, no need to process any events.
|
||||||
|
* This cannot be done earlier because the switch to core
|
||||||
|
* components inactive may not have been made at start up.
|
||||||
|
*/
|
||||||
|
Case.removePropertyChangeListener(this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (Case.Events.valueOf(evt.getPropertyName())) {
|
||||||
|
case CURRENT_CASE:
|
||||||
|
Case newCase = (Case) evt.getNewValue();
|
||||||
|
if (newCase != null) { // case has been opened
|
||||||
|
setCase(newCase); //connect db, groupmanager, start worker thread
|
||||||
|
} else { // case is closing
|
||||||
|
//close window, reset everything
|
||||||
|
SwingUtilities.invokeLater(ImageGalleryTopComponent::closeTopComponent);
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DATA_SOURCE_ADDED:
|
||||||
|
//copy all file data to drawable databse
|
||||||
|
Content newDataSource = (Content) evt.getNewValue();
|
||||||
|
if (isListeningEnabled()) {
|
||||||
|
queueDBWorkerTask(new PrePopulateDataSourceFiles(newDataSource));
|
||||||
|
} else {//TODO: keep track of what we missed for later
|
||||||
|
setStale(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CONTENT_TAG_ADDED:
|
||||||
|
final ContentTagAddedEvent tagAddedEvent = (ContentTagAddedEvent) evt;
|
||||||
|
if (getDatabase().isInDB(tagAddedEvent.getAddedTag().getContent().getId())) {
|
||||||
|
getTagsManager().fireTagAddedEvent(tagAddedEvent);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CONTENT_TAG_DELETED:
|
||||||
|
final ContentTagDeletedEvent tagDeletedEvent = (ContentTagDeletedEvent) evt;
|
||||||
|
if (getDatabase().isInDB(tagDeletedEvent.getDeletedTagInfo().getContentID())) {
|
||||||
|
getTagsManager().fireTagDeletedEvent(tagDeletedEvent);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user