From 0541a3368b12007934ec9fc16e7bf9903dcf7c44 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dsmyda" Date: Wed, 5 Jun 2019 16:16:13 -0400 Subject: [PATCH] Fixed some codacy suggestions, added comments, minor changes --- .../contentviewers/Bundle.properties-MERGED | 2 +- .../contentviewers/MediaViewImagePanel.java | 115 +++++++++--------- ...ageTagsUtil.java => ImageTagsUtility.java} | 34 ++++-- 3 files changed, 85 insertions(+), 66 deletions(-) rename Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/{ImageTagsUtil.java => ImageTagsUtility.java} (58%) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED index 2779cef39a..d13fe56608 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED @@ -46,7 +46,7 @@ MediaViewImagePanel.errorLabel.OOMText=Could not load file into Media View: insu MediaViewImagePanel.errorLabel.text=Could not load file into Media View. MediaViewImagePanel.exportSaveText=Save MediaViewImagePanel.externalViewerButton.text=Open in External Viewer Ctrl+E -MediaViewImagePanel.fileChooserTitle=Choose a directory to save the image +MediaViewImagePanel.fileChooserTitle=Choose a save location MediaViewImagePanel.successfulExport=Tagged image was successfully saved. MediaViewImagePanel.unsuccessfulExport=Unable to export tagged image to disk. MediaViewVideoPanel.pauseButton.text=\u25ba diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java b/Core/src/org/sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java index e1c0e70281..b4d1202f15 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java @@ -77,7 +77,7 @@ import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.applicationtags.ContentViewerTagManager; import org.sleuthkit.autopsy.casemodule.services.applicationtags.ContentViewerTagManager.ContentViewerTag; import org.sleuthkit.autopsy.casemodule.services.applicationtags.ContentViewerTagManager.SerializationException; -import org.sleuthkit.autopsy.contentviewers.imagetagging.ImageTagsUtil; +import org.sleuthkit.autopsy.contentviewers.imagetagging.ImageTagsUtility; import org.sleuthkit.autopsy.contentviewers.imagetagging.ImageTagControls; import org.sleuthkit.autopsy.contentviewers.imagetagging.ImageTagRegion; import org.sleuthkit.autopsy.contentviewers.imagetagging.ImageTagCreator; @@ -102,7 +102,7 @@ import org.sleuthkit.datamodel.TskCoreException; class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPanel { private static final Image EXTERNAL = new Image(MediaViewImagePanel.class.getResource("/org/sleuthkit/autopsy/images/external.png").toExternalForm()); - private final Logger LOGGER = Logger.getLogger(MediaViewImagePanel.class.getName()); + private final static Logger LOGGER = Logger.getLogger(MediaViewImagePanel.class.getName()); private final boolean fxInited; @@ -117,10 +117,10 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan private final MaskerPane maskerPane = new MaskerPane(); private final JPopupMenu popupMenu = new JPopupMenu(); - private final JMenuItem createTag; - private final JMenuItem deleteTag; - private final JMenuItem hideTags; - private final JMenuItem exportTags; + private final JMenuItem createTagMenuItem; + private final JMenuItem deleteTagMenuItem; + private final JMenuItem hideTagsMenuItem; + private final JMenuItem exportTagsMenuItem; private final JFileChooser exportChooser; @@ -166,27 +166,27 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan exportChooser.setDialogTitle(Bundle.MediaViewImagePanel_fileChooserTitle()); //Build popupMenu when Tags Menu button is pressed. - createTag = new JMenuItem("Create"); - createTag.addActionListener((event) -> createTag()); - popupMenu.add(createTag); + createTagMenuItem = new JMenuItem("Create"); + createTagMenuItem.addActionListener((event) -> createTag()); + popupMenu.add(createTagMenuItem); popupMenu.add(new JSeparator()); - deleteTag = new JMenuItem("Delete"); - deleteTag.addActionListener((event) -> deleteTag()); - popupMenu.add(deleteTag); + deleteTagMenuItem = new JMenuItem("Delete"); + deleteTagMenuItem.addActionListener((event) -> deleteTag()); + popupMenu.add(deleteTagMenuItem); popupMenu.add(new JSeparator()); - hideTags = new JMenuItem("Hide"); - hideTags.addActionListener((event) -> showOrHideTags()); - popupMenu.add(hideTags); + hideTagsMenuItem = new JMenuItem("Hide"); + hideTagsMenuItem.addActionListener((event) -> showOrHideTags()); + popupMenu.add(hideTagsMenuItem); popupMenu.add(new JSeparator()); - exportTags = new JMenuItem("Export"); - exportTags.addActionListener((event) -> exportTags()); - popupMenu.add(exportTags); + exportTagsMenuItem = new JMenuItem("Export"); + exportTagsMenuItem.addActionListener((event) -> exportTags()); + popupMenu.add(exportTagsMenuItem); popupMenu.setPopupSize(300, 150); @@ -211,57 +211,59 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan State currentState = (State) event.getNewValue(); switch (currentState) { case CREATE: - createTag.setEnabled(true); - deleteTag.setEnabled(false); - hideTags.setEnabled(true); - exportTags.setEnabled(true); + createTagMenuItem.setEnabled(true); + deleteTagMenuItem.setEnabled(false); + hideTagsMenuItem.setEnabled(true); + exportTagsMenuItem.setEnabled(true); break; case SELECTED: if (masterGroup.getChildren().contains(imageTagCreator)) { imageTagCreator.disconnect(); masterGroup.getChildren().remove(imageTagCreator); } - createTag.setEnabled(false); - deleteTag.setEnabled(true); - hideTags.setEnabled(true); - exportTags.setEnabled(true); + createTagMenuItem.setEnabled(false); + deleteTagMenuItem.setEnabled(true); + hideTagsMenuItem.setEnabled(true); + exportTagsMenuItem.setEnabled(true); break; case HIDDEN: - createTag.setEnabled(false); - deleteTag.setEnabled(false); - hideTags.setEnabled(true); - hideTags.setText(DisplayOptions.SHOW_TAGS.getName()); - exportTags.setEnabled(false); + createTagMenuItem.setEnabled(false); + deleteTagMenuItem.setEnabled(false); + hideTagsMenuItem.setEnabled(true); + hideTagsMenuItem.setText(DisplayOptions.SHOW_TAGS.getName()); + exportTagsMenuItem.setEnabled(false); break; case VISIBLE: - createTag.setEnabled(true); - deleteTag.setEnabled(false); - hideTags.setEnabled(true); - hideTags.setText(DisplayOptions.HIDE_TAGS.getName()); - exportTags.setEnabled(true); + createTagMenuItem.setEnabled(true); + deleteTagMenuItem.setEnabled(false); + hideTagsMenuItem.setEnabled(true); + hideTagsMenuItem.setText(DisplayOptions.HIDE_TAGS.getName()); + exportTagsMenuItem.setEnabled(true); break; case DEFAULT: case EMPTY: if (masterGroup.getChildren().contains(imageTagCreator)) { imageTagCreator.disconnect(); } - createTag.setEnabled(true); - deleteTag.setEnabled(false); - hideTags.setEnabled(false); - hideTags.setText(DisplayOptions.HIDE_TAGS.getName()); - exportTags.setEnabled(false); + createTagMenuItem.setEnabled(true); + deleteTagMenuItem.setEnabled(false); + hideTagsMenuItem.setEnabled(false); + hideTagsMenuItem.setText(DisplayOptions.HIDE_TAGS.getName()); + exportTagsMenuItem.setEnabled(false); break; case NONEMPTY: - createTag.setEnabled(true); - deleteTag.setEnabled(false); - hideTags.setEnabled(true); - exportTags.setEnabled(true); + createTagMenuItem.setEnabled(true); + deleteTagMenuItem.setEnabled(false); + hideTagsMenuItem.setEnabled(true); + exportTagsMenuItem.setEnabled(true); break; case DISABLE: - createTag.setEnabled(false); - deleteTag.setEnabled(false); - hideTags.setEnabled(false); - exportTags.setEnabled(false); + createTagMenuItem.setEnabled(false); + deleteTagMenuItem.setEnabled(false); + hideTagsMenuItem.setEnabled(false); + exportTagsMenuItem.setEnabled(false); + break; + default: break; } }); @@ -811,8 +813,7 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan try { ContentTag contentTag = Case.getCurrentCaseThrows().getServices().getTagsManager() .addContentTag(file, result.getTagName(), result.getComment()); - ContentViewerTag contentViewerTag = ContentViewerTagManager.saveTag(contentTag, data); - return contentViewerTag; + return ContentViewerTagManager.saveTag(contentTag, data); } finally { scrollPane.setCursor(Cursor.DEFAULT); } @@ -824,17 +825,17 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan */ private void showOrHideTags() { Platform.runLater(() -> { - if (DisplayOptions.HIDE_TAGS.getName().equals(hideTags.getText())) { + if (DisplayOptions.HIDE_TAGS.getName().equals(hideTagsMenuItem.getText())) { //Temporarily remove the tags group and update buttons masterGroup.getChildren().remove(tagsGroup); - hideTags.setText(DisplayOptions.SHOW_TAGS.getName()); + hideTagsMenuItem.setText(DisplayOptions.SHOW_TAGS.getName()); tagsGroup.clearFocus(); pcs.firePropertyChange(new PropertyChangeEvent(this, "state", null, State.HIDDEN)); } else { //Add tags group back in and update buttons masterGroup.getChildren().add(tagsGroup); - hideTags.setText(DisplayOptions.HIDE_TAGS.getName()); + hideTagsMenuItem.setText(DisplayOptions.HIDE_TAGS.getName()); pcs.firePropertyChange(new PropertyChangeEvent(this, "state", null, State.VISIBLE)); } @@ -845,7 +846,7 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan "MediaViewImagePanel.exportSaveText=Save", "MediaViewImagePanel.successfulExport=Tagged image was successfully saved.", "MediaViewImagePanel.unsuccessfulExport=Unable to export tagged image to disk.", - "MediaViewImagePanel.fileChooserTitle=Choose a directory to save the image" + "MediaViewImagePanel.fileChooserTitle=Choose a save location" }) private void exportTags() { tagsGroup.clearFocus(); @@ -855,14 +856,14 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan exportChooser.setCurrentDirectory(exportChooser.getSelectedFile()); new SwingWorker() { @Override - protected Void doInBackground() throws Exception { + protected Void doInBackground() { try { List tags = Case.getCurrentCase().getServices() .getTagsManager().getContentTagsByContent(file); List> contentViewerTags = getContentViewerTags(tags); Collection regions = contentViewerTags.stream() .map(cvTag -> cvTag.getDetails()).collect(Collectors.toList()); - byte[] jpgImage = ImageTagsUtil.exportTags(file, regions, ".jpg"); + byte[] jpgImage = ImageTagsUtility.exportTags(file, regions, ".jpg"); Path output = Paths.get(exportChooser.getSelectedFile().getPath(), FilenameUtils.getBaseName(file.getName()) + "-with_tags.jpg"); //NON-NLS Files.write(output, jpgImage); diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtil.java b/Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtility.java similarity index 58% rename from Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtil.java rename to Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtility.java index 391a8700ea..67ec058c84 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtil.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtility.java @@ -1,7 +1,20 @@ /* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. + * Autopsy Forensic Browser + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package org.sleuthkit.autopsy.contentviewers.imagetagging; @@ -15,12 +28,17 @@ import org.opencv.highgui.Highgui; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.TskCoreException; -/** - * - * @author dsmyda - */ -public class ImageTagsUtil { +public class ImageTagsUtility { + /** + * Embeds the tag regions into an image (represented as an AbstractFile). + * + * @param file Base Image + * @param tagRegions Tag regions to be saved into the image + * @param outputEncoding Output file type encoding (ex. .jpg, .png) + * @return output image in byte array + * @throws TskCoreException + */ public static byte[] exportTags(AbstractFile file, Collection tagRegions, String outputEncoding) throws TskCoreException { byte[] imageInMemory = new byte[(int) file.getSize()]; file.read(imageInMemory, 0, file.getSize());