From 59e90553974525363e5b34feb1405101d3829b05 Mon Sep 17 00:00:00 2001 From: jmillman Date: Fri, 4 Sep 2015 13:58:50 -0400 Subject: [PATCH 1/6] make IG PrePopulateDataSourceFiles cancellable --- .../imagegallery/ImageGalleryController.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java index 61a1a459e2..5b874cfbc0 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java @@ -53,6 +53,7 @@ import javax.swing.SwingUtilities; import org.apache.commons.lang3.StringUtils; import org.netbeans.api.progress.ProgressHandle; import org.netbeans.api.progress.ProgressHandleFactory; +import org.openide.util.Cancellable; import org.openide.util.Exceptions; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.History; @@ -584,7 +585,7 @@ public final class ImageGalleryController { try { InnerTask it = workQueue.take(); - if (it.cancelled == false) { + if (it.isCancelled() == false) { it.run(); } @@ -606,7 +607,7 @@ public final class ImageGalleryController { /** * Abstract base class for task to be done on {@link DBWorkerThread} */ - static public abstract class InnerTask implements Runnable { + static public abstract class InnerTask implements Runnable, Cancellable { public double getProgress() { return progress.get(); @@ -650,13 +651,13 @@ public final class ImageGalleryController { protected InnerTask() { } - protected volatile boolean cancelled = false; - - public void cancel() { + @Override + synchronized public boolean cancel() { updateState(Worker.State.CANCELLED); + return true; } - protected boolean isCancelled() { + synchronized protected boolean isCancelled() { return getState() == Worker.State.CANCELLED; } } @@ -798,7 +799,7 @@ public final class ImageGalleryController { DrawableDB.DrawableTransaction tr = taskDB.beginTransaction(); int units = 0; for (final AbstractFile f : files) { - if (cancelled) { + if (isCancelled()) { LOGGER.log(Level.WARNING, "task cancelled: not all contents may be transfered to database"); progressHandle.finish(); break; @@ -876,7 +877,7 @@ public final class ImageGalleryController { // (name like '.jpg' or name like '.png' ...) private final String DRAWABLE_QUERY = "(name LIKE '%." + StringUtils.join(FileTypeUtils.getAllSupportedExtensions(), "' or name LIKE '%.") + "') "; - private ProgressHandle progressHandle = ProgressHandleFactory.createHandle("prepopulating image/video database"); + private ProgressHandle progressHandle = ProgressHandleFactory.createHandle("prepopulating image/video database", this); /** * @@ -929,7 +930,7 @@ public final class ImageGalleryController { DrawableDB.DrawableTransaction tr = db.beginTransaction(); int units = 0; for (final AbstractFile f : files) { - if (cancelled) { + if (isCancelled()) { LOGGER.log(Level.WARNING, "task cancelled: not all contents may be transfered to database"); progressHandle.finish(); break; From c1aa3775380a15c56f88f2e54a72c59eec855aea Mon Sep 17 00:00:00 2001 From: jmillman Date: Thu, 22 Oct 2015 10:35:14 -0400 Subject: [PATCH 2/6] cancel db tasks when case is closed --- .../imagegallery/ImageGalleryController.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java index 21494fd79d..a2a7e274f4 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java @@ -396,6 +396,9 @@ public final class ImageGalleryController { tagsManager.clearFollowUpTagName(); tagsManager.unregisterListener(groupManager); tagsManager.unregisterListener(categoryManager); + dbWorkerThread.cancelAllTasks(); + dbWorkerThread = null; + restartWorker(); Toolbar.getDefault(this).reset(); groupManager.clear(); @@ -694,7 +697,7 @@ public final class ImageGalleryController { */ static private class UpdateFileTask extends FileTask { - public UpdateFileTask(AbstractFile f, DrawableDB taskDB) { + UpdateFileTask(AbstractFile f, DrawableDB taskDB) { super(f, taskDB); } @@ -721,7 +724,7 @@ public final class ImageGalleryController { */ static private class RemoveFileTask extends FileTask { - public RemoveFileTask(AbstractFile f, DrawableDB taskDB) { + RemoveFileTask(AbstractFile f, DrawableDB taskDB) { super(f, taskDB); } @@ -767,8 +770,8 @@ public final class ImageGalleryController { + StringUtils.join(FileTypeUtils.getAllSupportedExtensions(), "' or name LIKE '%.") + "')"; - static private final String MIMETYPE_CLAUSE - = "blackboard_attributes.value_text LIKE '" + static private final String MIMETYPE_CLAUSE = + "blackboard_attributes.value_text LIKE '" + StringUtils.join(FileTypeUtils.getAllSupportedMimeTypes(), "' OR blackboard_attributes.value_text LIKE '") + "' "; @@ -849,7 +852,7 @@ public final class ImageGalleryController { } catch (TskCoreException ex) { Logger.getLogger(CopyAnalyzedFiles.class.getName()).log(Level.WARNING, "failed to transfer all database contents", ex); - } + } progressHandle.finish(); @@ -884,7 +887,7 @@ public final class ImageGalleryController { * * @param dataSourceId Data source object ID */ - public PrePopulateDataSourceFiles(Content dataSource) { + PrePopulateDataSourceFiles(Content dataSource) { super(); this.dataSource = dataSource; } @@ -952,7 +955,7 @@ public final class ImageGalleryController { } catch (TskCoreException ex) { Logger.getLogger(PrePopulateDataSourceFiles.class.getName()).log(Level.WARNING, "failed to transfer all database contents", ex); - } + } progressHandle.finish(); } From 6eb6c8165f459c15f92cd81aa6e55bc4c0cfe258 Mon Sep 17 00:00:00 2001 From: jmillman Date: Thu, 22 Oct 2015 11:30:22 -0400 Subject: [PATCH 3/6] catch EOF error and don't print stacktrace in log --- .../sleuthkit/autopsy/coreutils/ImageUtils.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java b/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java index c9e337a29c..d44111a231 100755 --- a/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java +++ b/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java @@ -26,6 +26,7 @@ import com.google.common.io.Files; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; +import java.io.EOFException; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -135,8 +136,8 @@ public class ImageUtils { /** * thread that saves generated thumbnails to disk in the background */ - private static final Executor imageSaver - = Executors.newSingleThreadExecutor(new BasicThreadFactory.Builder() + private static final Executor imageSaver = + Executors.newSingleThreadExecutor(new BasicThreadFactory.Builder() .namingPattern("icon saver-%d").build()); public static List getSupportedImageExtensions() { @@ -524,14 +525,13 @@ public class ImageUtils { return ScalrWrapper.cropImage(bi, Math.min(iconSize, bi.getWidth()), Math.min(iconSize, bi.getHeight())); } } catch (OutOfMemoryError e) { - LOGGER.log(Level.WARNING, "Could not scale image (too large): " + content.getName(), e); //NON-NLS - - return null; + LOGGER.log(Level.WARNING, "Could not scale image (too large) " + content.getName(), e); //NON-NLS + } catch (EOFException e) { + LOGGER.log(Level.WARNING, "Could not load image (EOF) {0}", content.getName()); //NON-NLS } catch (Exception e) { - LOGGER.log(Level.WARNING, "Could not load image: " + content.getName(), e); //NON-NLS - return null; - + LOGGER.log(Level.WARNING, "Could not load image " + content.getName(), e); //NON-NLS } + return null; } } From 16ee1eb325f060e7f2a3653a236440efc51e8dc6 Mon Sep 17 00:00:00 2001 From: jmillman Date: Thu, 22 Oct 2015 11:37:59 -0400 Subject: [PATCH 4/6] catch null db and log friendlier message --- .../autopsy/imagegallery/ImageGalleryController.java | 6 ++++++ .../imagegallery/gui/drawableviews/DrawableUIBase.java | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java index a2a7e274f4..a1a548947d 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java @@ -49,6 +49,7 @@ import javafx.scene.layout.CornerRadii; import javafx.scene.layout.Region; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; +import javax.annotation.Nullable; import javax.swing.SwingUtilities; import org.apache.commons.lang3.StringUtils; import org.netbeans.api.progress.ProgressHandle; @@ -422,7 +423,12 @@ public final class ImageGalleryController { dbWorkerThread.addTask(innerTask); } + @Nullable synchronized public DrawableFile getFileFromId(Long fileID) throws TskCoreException { + if (Objects.isNull(db)){ + LOGGER.log(Level.WARNING, "Could not get file from id, no DB set. The case is probably closed."); + return null; + } return db.getFileFromID(fileID); } diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/DrawableUIBase.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/DrawableUIBase.java index f238e454b1..6983f49180 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/DrawableUIBase.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/DrawableUIBase.java @@ -89,7 +89,7 @@ abstract public class DrawableUIBase extends AnchorPane implements DrawableView return fileOpt; } else { try { - fileOpt = Optional.of(getController().getFileFromId(fileIDOpt.get())); + fileOpt = Optional.ofNullable(getController().getFileFromId(fileIDOpt.get())); } catch (TskCoreException ex) { Logger.getAnonymousLogger().log(Level.WARNING, "failed to get DrawableFile for obj_id" + fileIDOpt.get(), ex); fileOpt = Optional.empty(); @@ -206,7 +206,6 @@ abstract public class DrawableUIBase extends AnchorPane implements DrawableView super.failed(); LOGGER.log(Level.SEVERE, "Failed to cache content for" + file.getName(), getException()); } - abstract void saveToCache(X result); } From a64afe318b3b29182ebba1142ec2bbd3eec06b11 Mon Sep 17 00:00:00 2001 From: jmillman Date: Thu, 22 Oct 2015 11:38:28 -0400 Subject: [PATCH 5/6] use 32x32 icon for image callery in options panels to mathc other tabs --- .../ImageGalleryOptionsPanelController.java | 2 +- .../images/polaroid_32_silhouette.png | Bin 0 -> 5434 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 ImageGallery/src/org/sleuthkit/autopsy/imagegallery/images/polaroid_32_silhouette.png diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java index 78ed75fe6d..28d507619e 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java @@ -31,7 +31,7 @@ import org.openide.util.Lookup; */ @OptionsPanelController.TopLevelRegistration( categoryName = "#OptionsCategory_Name_Options", - iconBase = "org/sleuthkit/autopsy/imagegallery/images/polaroid_48_silhouette.png", + iconBase = "org/sleuthkit/autopsy/imagegallery/images/polaroid_32_silhouette.png", keywords = "#OptionsCategory_Keywords_Options", keywordsCategory = "Options", position = 10 diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/images/polaroid_32_silhouette.png b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/images/polaroid_32_silhouette.png new file mode 100644 index 0000000000000000000000000000000000000000..aa203a12702f6bd336235bb5131a3bc52d1063fd GIT binary patch literal 5434 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 literal 0 HcmV?d00001 From 6a81eeefba507a8226680ae0a6325a7732bd0f08 Mon Sep 17 00:00:00 2001 From: jmillman Date: Thu, 22 Oct 2015 12:29:07 -0400 Subject: [PATCH 6/6] catch EOF exception from image load in MediaViewImagePanel.java --- .../autopsy/corecomponents/MediaViewImagePanel.java | 4 ++++ .../autopsy/imagegallery/ImageGalleryController.java | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MediaViewImagePanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/MediaViewImagePanel.java index 6872aace78..cf8fd11741 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/MediaViewImagePanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MediaViewImagePanel.java @@ -22,6 +22,7 @@ import java.awt.Dimension; import java.awt.EventQueue; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; +import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import java.util.Collections; @@ -174,6 +175,9 @@ public class MediaViewImagePanel extends JPanel implements DataContentViewerMedi borderpane.setCenter(fxImageView); } } + } catch (EOFException ex) { + LOGGER.log(Level.WARNING, "Could not load image file into media view (EOF): {0}", file.getName()); //NON-NLS + borderpane.setCenter(errorLabel); } catch (IllegalArgumentException | IOException ex) { LOGGER.log(Level.WARNING, "Could not load image file into media view: " + file.getName(), ex); //NON-NLS borderpane.setCenter(errorLabel); diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java index a1a548947d..2b472ac422 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java @@ -425,7 +425,7 @@ public final class ImageGalleryController { @Nullable synchronized public DrawableFile getFileFromId(Long fileID) throws TskCoreException { - if (Objects.isNull(db)){ + if (Objects.isNull(db)) { LOGGER.log(Level.WARNING, "Could not get file from id, no DB set. The case is probably closed."); return null; } @@ -766,7 +766,7 @@ public final class ImageGalleryController { private final DrawableDB taskDB; private final SleuthkitCase tskCase; - public CopyAnalyzedFiles(ImageGalleryController controller, DrawableDB taskDB, SleuthkitCase tskCase) { + CopyAnalyzedFiles(ImageGalleryController controller, DrawableDB taskDB, SleuthkitCase tskCase) { this.controller = controller; this.taskDB = taskDB; this.tskCase = tskCase; @@ -777,7 +777,7 @@ public final class ImageGalleryController { "' or name LIKE '%.") + "')"; static private final String MIMETYPE_CLAUSE = - "blackboard_attributes.value_text LIKE '" + "blackboard_attributes.value_text LIKE '" + StringUtils.join(FileTypeUtils.getAllSupportedMimeTypes(), "' OR blackboard_attributes.value_text LIKE '") + "' "; @@ -859,11 +859,11 @@ public final class ImageGalleryController { } catch (TskCoreException ex) { Logger.getLogger(CopyAnalyzedFiles.class.getName()).log(Level.WARNING, "failed to transfer all database contents", ex); } - progressHandle.finish(); updateMessage(""); updateProgress(-1.0); + controller.setStale(false); } }