mirror of
https://github.com/elisspace/autopsy.git
synced 2026-10-03 15:59:52 +00:00
Removed inner classes ShortNameVisitor and GetPathVisitor from
ContentUtils as well as method 'getSystemPath()' per AUT-753. This functionality has been replaced by use of Content.getUniquePath().
This commit is contained in:
@@ -22,6 +22,7 @@ import java.awt.Cursor;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.prefs.Preferences;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import javax.swing.JTabbedPane;
|
||||
@@ -36,9 +37,8 @@ import org.openide.util.NbPreferences;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContent;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer;
|
||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||
import org.sleuthkit.autopsy.datamodel.DataConversion;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
/**
|
||||
* Top component that organizes all of the data content viewers. Doing a lookup on this class will
|
||||
@@ -46,6 +46,8 @@ import org.sleuthkit.datamodel.Content;
|
||||
*/
|
||||
// Registered as a service provider in layer.xml
|
||||
public final class DataContentTopComponent extends TopComponent implements DataContent, ChangeListener {
|
||||
|
||||
private static Logger logger = Logger.getLogger(DataContentTopComponent.class.getName());
|
||||
|
||||
// reference to the "default" TC that always stays open
|
||||
private static DataContentTopComponent defaultInstance;
|
||||
@@ -170,14 +172,13 @@ public final class DataContentTopComponent extends TopComponent implements DataC
|
||||
public static synchronized DataContentTopComponent findInstance() {
|
||||
TopComponent win = WindowManager.getDefault().findTopComponent(PREFERRED_ID);
|
||||
if (win == null) {
|
||||
Logger.getLogger(DataContentTopComponent.class.getName()).warning(
|
||||
"Cannot find " + PREFERRED_ID + " component. It will not be located properly in the window system.");
|
||||
logger.warning("Cannot find " + PREFERRED_ID + " component. It will not be located properly in the window system.");
|
||||
return getDefault();
|
||||
}
|
||||
if (win instanceof DataContentTopComponent) {
|
||||
return (DataContentTopComponent) win;
|
||||
}
|
||||
Logger.getLogger(DataContentTopComponent.class.getName()).warning(
|
||||
logger.warning(
|
||||
"There seem to be multiple components with the '" + PREFERRED_ID
|
||||
+ "' ID. That is a potential source of errors and unexpected behavior.");
|
||||
return getDefault();
|
||||
@@ -242,7 +243,13 @@ public final class DataContentTopComponent extends TopComponent implements DataC
|
||||
} else {
|
||||
Content content = selectedNode.getLookup().lookup(Content.class);
|
||||
if (content != null) {
|
||||
String path = DataConversion.getformattedPath(ContentUtils.getDisplayPath(selectedNode.getLookup().lookup(Content.class)), 0);
|
||||
//String path = DataConversion.getformattedPath(ContentUtils.getDisplayPath(selectedNode.getLookup().lookup(Content.class)), 0);
|
||||
String path = defaultName;
|
||||
try {
|
||||
path = content.getUniquePath();
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Exception while calling Content.getUniquePath() for " + content);
|
||||
}
|
||||
setName(path);
|
||||
} else {
|
||||
setName(defaultName);
|
||||
|
||||
@@ -18,21 +18,21 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.datamodel;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import org.openide.nodes.Sheet;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.datamodel.FsContent;
|
||||
import org.sleuthkit.datamodel.TskData.TSK_FS_META_FLAG_ENUM;
|
||||
import org.sleuthkit.datamodel.TskData.TSK_FS_META_MODE_ENUM;
|
||||
import org.sleuthkit.datamodel.TskData.TSK_FS_NAME_FLAG_ENUM;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
/**
|
||||
* Abstract class that implements the commonality between File and Directory
|
||||
* Nodes (same properties).
|
||||
*/
|
||||
public abstract class AbstractFsContentNode<T extends FsContent> extends AbstractAbstractFileNode<T> {
|
||||
|
||||
private static Logger logger = Logger.getLogger(AbstractFsContentNode.class.getName());
|
||||
|
||||
// Note: this order matters for the search result, changed it if the order of property headers on the "KeywordSearchNode"changed
|
||||
public static enum FsContentPropertyType {
|
||||
@@ -208,8 +208,15 @@ public abstract class AbstractFsContentNode<T extends FsContent> extends Abstrac
|
||||
*/
|
||||
public static void fillPropertyMap(Map<String, Object> map, FsContent content) {
|
||||
|
||||
String path = "";
|
||||
try {
|
||||
path = content.getUniquePath();
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Except while calling Content.getUniquePath() on " + content);
|
||||
}
|
||||
|
||||
map.put(FsContentPropertyType.NAME.toString(), getFsContentName(content));
|
||||
map.put(FsContentPropertyType.LOCATION.toString(), DataConversion.getformattedPath(ContentUtils.getDisplayPath(content), 0, 1));
|
||||
map.put(FsContentPropertyType.LOCATION.toString(), path);
|
||||
map.put(FsContentPropertyType.MOD_TIME.toString(), ContentUtils.getStringTime(content.getMtime(), content));
|
||||
map.put(FsContentPropertyType.CHANGED_TIME.toString(), ContentUtils.getStringTime(content.getCtime(), content));
|
||||
map.put(FsContentPropertyType.ACCESS_TIME.toString(), ContentUtils.getStringTime(content.getAtime(), content));
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||
import org.sleuthkit.datamodel.BlackboardAttribute;
|
||||
import org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
import org.sleuthkit.datamodel.TskException;
|
||||
|
||||
/**
|
||||
@@ -105,18 +106,26 @@ public class ArtifactStringContent implements StringContent {
|
||||
buffer.append("</tr>");
|
||||
}
|
||||
|
||||
final Content content = getAssociatedContent(wrapped);
|
||||
|
||||
String path = "";
|
||||
try {
|
||||
path = content.getUniquePath();
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Except while calling Content.getUniquePath() on " + content);
|
||||
}
|
||||
|
||||
//add file path
|
||||
buffer.append("<tr>");
|
||||
buffer.append("<td>Source File</td>");
|
||||
buffer.append("<td>");
|
||||
final Content content = getAssociatedContent(wrapped);
|
||||
buffer.append(content.getName());
|
||||
buffer.append("</td>");
|
||||
buffer.append("</tr>");
|
||||
buffer.append("<tr>");
|
||||
buffer.append("<td>Source File Path</td>");
|
||||
buffer.append("<td>");
|
||||
buffer.append(DataConversion.getformattedPath(ContentUtils.getDisplayPath(content), 0, 1));
|
||||
buffer.append(path);
|
||||
buffer.append("</td>");
|
||||
buffer.append("</tr>");
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.openide.nodes.AbstractNode;
|
||||
import org.openide.nodes.Children;
|
||||
import org.openide.nodes.Sheet;
|
||||
import org.openide.util.Lookup;
|
||||
@@ -33,6 +32,7 @@ import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||
import org.sleuthkit.datamodel.BlackboardAttribute;
|
||||
import org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
import org.sleuthkit.datamodel.TskException;
|
||||
|
||||
/**
|
||||
@@ -101,13 +101,19 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|
||||
entry.getValue()));
|
||||
}
|
||||
|
||||
String path = "";
|
||||
try {
|
||||
path = associated.getUniquePath();
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Except while calling Content.getUniquePath() on " + associated);
|
||||
}
|
||||
final int artifactTypeID = artifact.getArtifactTypeID();
|
||||
if (artifactTypeID == BlackboardArtifact.ARTIFACT_TYPE.TSK_HASHSET_HIT.getTypeID()
|
||||
|| artifactTypeID == BlackboardArtifact.ARTIFACT_TYPE.TSK_KEYWORD_HIT.getTypeID()) {
|
||||
ss.put(new NodeProperty("File Path",
|
||||
"File Path",
|
||||
NO_DESCR,
|
||||
DataConversion.getformattedPath(ContentUtils.getDisplayPath(associated), 0, 1)));
|
||||
path));
|
||||
}
|
||||
|
||||
return s;
|
||||
|
||||
@@ -22,29 +22,19 @@ import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
import java.util.logging.Level;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import javax.swing.SwingWorker;
|
||||
import org.netbeans.api.progress.ProgressHandle;
|
||||
import org.openide.util.Exceptions;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.ContentVisitor;
|
||||
import org.sleuthkit.datamodel.Directory;
|
||||
import org.sleuthkit.datamodel.File;
|
||||
import org.sleuthkit.datamodel.FileSystem;
|
||||
import org.sleuthkit.datamodel.Image;
|
||||
import org.sleuthkit.datamodel.VirtualDirectory;
|
||||
import org.sleuthkit.datamodel.LayoutFile;
|
||||
import org.sleuthkit.datamodel.ReadContentInputStream;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
import org.sleuthkit.datamodel.TskException;
|
||||
import org.sleuthkit.datamodel.Volume;
|
||||
import org.sleuthkit.datamodel.VolumeSystem;
|
||||
|
||||
/**
|
||||
* Static class of utility methods for Content objects
|
||||
@@ -60,18 +50,7 @@ public final class ContentUtils {
|
||||
private ContentUtils() {
|
||||
throw new AssertionError();
|
||||
}
|
||||
private static final ShortNameVisitor shortName = new ShortNameVisitor();
|
||||
private static final GetPathVisitor getDisplayPath = new GetPathVisitor(shortName);
|
||||
|
||||
/**
|
||||
* Returns full path to this node.
|
||||
*
|
||||
* @return the path of this node
|
||||
*/
|
||||
public static String[] getDisplayPath(Content content) {
|
||||
return content.accept(getDisplayPath).toArray(new String[]{});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert epoch seconds to a string value in the given time zone
|
||||
*
|
||||
@@ -131,17 +110,7 @@ public final class ContentUtils {
|
||||
}
|
||||
}
|
||||
private static final SystemNameVisitor systemName = new SystemNameVisitor();
|
||||
private static final GetPathVisitor getSystemPath = new GetPathVisitor(systemName);
|
||||
|
||||
/**
|
||||
* Returns full path to this node.
|
||||
*
|
||||
* @return the path of this node
|
||||
*/
|
||||
public static String[] getSystemPath(Content content) {
|
||||
return content.accept(getSystemPath).toArray(new String[]{});
|
||||
}
|
||||
|
||||
|
||||
static String getSystemName(Content content) {
|
||||
return content.accept(systemName);
|
||||
}
|
||||
@@ -153,148 +122,10 @@ public final class ContentUtils {
|
||||
|
||||
@Override
|
||||
protected String defaultVisit(Content cntnt) {
|
||||
return cntnt.accept(shortName) + ":" + Long.toString(cntnt.getId());
|
||||
return cntnt.getName() + ":" + Long.toString(cntnt.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private static class ShortNameVisitor extends ContentVisitor.Default<String> {
|
||||
|
||||
ShortNameVisitor() {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String defaultVisit(Content cntnt) {
|
||||
return cntnt.getName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class GetPathVisitor implements ContentVisitor<List<String>> {
|
||||
|
||||
ContentVisitor<String> toString;
|
||||
|
||||
GetPathVisitor(ContentVisitor<String> toString) {
|
||||
this.toString = toString;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> visit(LayoutFile lay) {
|
||||
Content parent = null;
|
||||
try {
|
||||
parent = lay.getParent();
|
||||
} catch (TskCoreException ex) {
|
||||
throw new RuntimeException("Problem getting parent from " + LayoutFile.class.getName(), ex);
|
||||
}
|
||||
List<String> path = Collections.EMPTY_LIST;
|
||||
if (parent != null) {
|
||||
path = parent.accept(this);
|
||||
path.add(toString.visit(lay));
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> visit(VirtualDirectory ld) {
|
||||
Content parent = null;
|
||||
try {
|
||||
parent = ld.getParent();
|
||||
} catch (TskCoreException ex) {
|
||||
throw new RuntimeException("Problem getting parent from " + VirtualDirectory.class.getName(), ex);
|
||||
}
|
||||
List<String> path = Collections.EMPTY_LIST;
|
||||
if (parent != null) {
|
||||
path = parent.accept(this);
|
||||
path.add(toString.visit(ld));
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> visit(Directory dir) {
|
||||
Content parent = null;
|
||||
try {
|
||||
parent = dir.getParent();
|
||||
} catch (TskCoreException ex) {
|
||||
throw new RuntimeException("Problem getting parent from " + Directory.class.getName(), ex);
|
||||
}
|
||||
List<String> path = Collections.EMPTY_LIST;
|
||||
if (parent != null) {
|
||||
path = parent.accept(this);
|
||||
path.add(toString.visit(dir));
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> visit(File file) {
|
||||
Content parent = null;
|
||||
try {
|
||||
parent = file.getParent();
|
||||
} catch (TskCoreException ex) {
|
||||
throw new RuntimeException("Problem getting parent from " + File.class.getName(), ex);
|
||||
}
|
||||
List<String> path = Collections.EMPTY_LIST;
|
||||
if (parent != null) {
|
||||
path = parent.accept(this);
|
||||
path.add(toString.visit(file));
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> visit(FileSystem fs) {
|
||||
Content parent = null;
|
||||
try {
|
||||
parent = fs.getParent();
|
||||
} catch (TskCoreException ex) {
|
||||
throw new RuntimeException("Problem getting parent from " + FileSystem.class.getName(), ex);
|
||||
}
|
||||
List<String> path = Collections.EMPTY_LIST;
|
||||
if (parent != null) {
|
||||
path = parent.accept(this);
|
||||
path.add(toString.visit(fs));
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> visit(Image image) {
|
||||
List<String> path = new LinkedList<String>();
|
||||
path.add(toString.visit(image));
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> visit(Volume volume) {
|
||||
Content parent = null;
|
||||
try {
|
||||
parent = volume.getParent();
|
||||
} catch (TskCoreException ex) {
|
||||
throw new RuntimeException("Problem getting parent from " + Volume.class.getName(), ex);
|
||||
}
|
||||
List<String> path = Collections.EMPTY_LIST;
|
||||
if (parent != null) {
|
||||
path = parent.accept(this);
|
||||
path.add(toString.visit(volume));
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> visit(VolumeSystem vs) {
|
||||
Content parent = null;
|
||||
try {
|
||||
parent = vs.getParent();
|
||||
} catch (TskCoreException ex) {
|
||||
throw new RuntimeException("Problem getting parent from " + VolumeSystem.class.getName(), ex);
|
||||
}
|
||||
List<String> path = Collections.EMPTY_LIST;
|
||||
if (parent != null) {
|
||||
path = parent.accept(this);
|
||||
path.add(toString.visit(vs));
|
||||
}
|
||||
return path;
|
||||
}
|
||||
}
|
||||
private static final int TO_FILE_BUFFER_SIZE = 8192;
|
||||
|
||||
/**
|
||||
|
||||
@@ -108,29 +108,4 @@ public class DataConversion {
|
||||
return Arrays.toString(binary);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Converts the given paths into the formatted path. This mainly used for
|
||||
* the paths for the "new directory table" and "new output view".
|
||||
* Will return path from beginIndex to ((length of paths) - endIndex)
|
||||
*
|
||||
* @param paths the given paths
|
||||
* @param beginIndex the starting index of the given paths
|
||||
* @param endIndex the ending index
|
||||
* @return path the formatted path
|
||||
*
|
||||
* @author jantonius
|
||||
*/
|
||||
public static String getformattedPath(String[] paths, int beginIndex, int endIndex) {
|
||||
String result = "";
|
||||
for (int i = beginIndex; i < (paths.length - endIndex); i++) {
|
||||
result = result + "\\" + paths[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String getformattedPath(String[] paths, int index) {
|
||||
return getformattedPath(paths, index, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,11 @@ package org.sleuthkit.autopsy.datamodel;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import org.openide.nodes.Sheet;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.datamodel.LayoutFileNode.LayoutContentPropertyType;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
import org.sleuthkit.datamodel.VirtualDirectory;
|
||||
import org.sleuthkit.datamodel.TskData;
|
||||
|
||||
@@ -29,6 +32,8 @@ import org.sleuthkit.datamodel.TskData;
|
||||
* Node for layout dir
|
||||
*/
|
||||
public class VirtualDirectoryNode extends AbstractAbstractFileNode<VirtualDirectory> {
|
||||
|
||||
private static Logger logger = Logger.getLogger(VirtualDirectoryNode.class.getName());
|
||||
|
||||
public static String nameForLayoutFile(VirtualDirectory ld) {
|
||||
return ld.getName();
|
||||
@@ -87,10 +92,18 @@ public class VirtualDirectoryNode extends AbstractAbstractFileNode<VirtualDirect
|
||||
//TODO consider extend AbstractFsContent node and use that
|
||||
//first need methods such as getDirType() to be pushed to AbstractFile class
|
||||
private static void fillPropertyMap(Map<String, Object> map, VirtualDirectory content) {
|
||||
|
||||
String path = "";
|
||||
try {
|
||||
path = content.getUniquePath();
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Except while calling Content.getUniquePath() on " + content);
|
||||
}
|
||||
|
||||
map.put(LayoutContentPropertyType.NAME.toString(), content.getName());
|
||||
map.put(LayoutContentPropertyType.SIZE.toString(), content.getSize());
|
||||
|
||||
map.put(AbstractFsContentNode.FsContentPropertyType.LOCATION.toString(), DataConversion.getformattedPath(ContentUtils.getDisplayPath(content), 0, 1));
|
||||
map.put(AbstractFsContentNode.FsContentPropertyType.LOCATION.toString(), path);
|
||||
map.put(AbstractFsContentNode.FsContentPropertyType.MOD_TIME.toString(), ContentUtils.getStringTime(0, content));
|
||||
map.put(AbstractFsContentNode.FsContentPropertyType.CHANGED_TIME.toString(), ContentUtils.getStringTime(0, content));
|
||||
map.put(AbstractFsContentNode.FsContentPropertyType.ACCESS_TIME.toString(), ContentUtils.getStringTime(0, content));
|
||||
|
||||
@@ -20,21 +20,22 @@
|
||||
package org.sleuthkit.autopsy.directorytree;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.AbstractAction;
|
||||
import org.openide.nodes.Node;
|
||||
import org.openide.windows.Mode;
|
||||
import org.openide.windows.WindowManager;
|
||||
import org.sleuthkit.autopsy.corecomponents.DataContentTopComponent;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||
import org.sleuthkit.autopsy.datamodel.DataConversion;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
/**
|
||||
* Opens new ContentViewer pane in a detached window
|
||||
*/
|
||||
public class NewWindowViewAction extends AbstractAction{
|
||||
|
||||
private static Logger logger = Logger.getLogger(NewWindowViewAction.class.getName());
|
||||
|
||||
private Node contentNode ;
|
||||
|
||||
@@ -48,14 +49,19 @@ public class NewWindowViewAction extends AbstractAction{
|
||||
Logger.noteAction(this.getClass());
|
||||
|
||||
String name = "DataContent";
|
||||
Content c = contentNode.getLookup().lookup(Content.class);
|
||||
if (c != null) {
|
||||
String[] filePaths = ContentUtils.getDisplayPath(c);
|
||||
name = DataConversion.getformattedPath(filePaths, 0);
|
||||
}
|
||||
String s = contentNode.getLookup().lookup(String.class);
|
||||
if (s != null)
|
||||
if (s != null) {
|
||||
name = s;
|
||||
} else {
|
||||
Content c = contentNode.getLookup().lookup(Content.class);
|
||||
if (c != null) {
|
||||
try {
|
||||
name = c.getUniquePath();
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Except while calling Content.getUniquePath() on " + c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DataContentTopComponent dctc = DataContentTopComponent.createUndocked(name, this.contentNode);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user