1917 Mime Tree fixed when updating from empty to contents

This commit is contained in:
William Schaefer 2016-11-11 16:13:46 -05:00
parent cfeae34850
commit f45b0b642b
2 changed files with 49 additions and 19 deletions

View File

@ -149,6 +149,8 @@ public interface DisplayableItemNodeVisitor<T> {
T visit(FileTypesByMimeType.MediaSubTypeNode aThis); T visit(FileTypesByMimeType.MediaSubTypeNode aThis);
T visit(FileTypesByMimeType.EmptyNode aThis);
/** /**
* Visitor with an implementable default behavior for all types. Override * Visitor with an implementable default behavior for all types. Override
@ -218,6 +220,11 @@ public interface DisplayableItemNodeVisitor<T> {
public T visit(FileTypesByMimeType.MediaSubTypeNode ftByMimeTypeMediaTypeNode) { public T visit(FileTypesByMimeType.MediaSubTypeNode ftByMimeTypeMediaTypeNode) {
return defaultVisit(ftByMimeTypeMediaTypeNode); return defaultVisit(ftByMimeTypeMediaTypeNode);
} }
@Override
public T visit(FileTypesByMimeType.EmptyNode ftByMimeTypeEmptyNode) {
return defaultVisit(ftByMimeTypeEmptyNode);
}
@Override @Override
public T visit(DeletedContentNode dcn) { public T visit(DeletedContentNode dcn) {
return defaultVisit(dcn); return defaultVisit(dcn);

View File

@ -58,7 +58,6 @@ import org.sleuthkit.datamodel.TskData;
class FileTypesByMimeType extends Observable implements AutopsyVisitableItem { class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
static SleuthkitCase skCase; static SleuthkitCase skCase;
static final String EMPTY_MIME_TREE_STRING = "Data not available. Run file type identification module.";
/** /**
* The nodes of this tree will be determined dynamically by the mimetypes * The nodes of this tree will be determined dynamically by the mimetypes
* which exist in the database. This hashmap will store them with the media * which exist in the database. This hashmap will store them with the media
@ -77,7 +76,7 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
String eventType = evt.getPropertyName(); String eventType = evt.getPropertyName();
if (eventType.equals(IngestManager.IngestJobEvent.COMPLETED.toString()) if (eventType.equals(IngestManager.IngestJobEvent.COMPLETED.toString())
|| eventType.equals(IngestManager.IngestJobEvent.CANCELLED.toString()) || eventType.equals(IngestManager.IngestJobEvent.CANCELLED.toString())
// || eventType.equals(Case.Events.DATA_SOURCE_ADDED.toString()) // || eventType.equals(Case.Events.DATA_SOURCE_ADDED.toString())
|| eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString())) { || eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString())) {
/** /**
* Checking for a current case is a stop gap measure until a * Checking for a current case is a stop gap measure until a
@ -144,7 +143,7 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
IngestManager.getInstance().addIngestJobEventListener(pcl); IngestManager.getInstance().addIngestJobEventListener(pcl);
IngestManager.getInstance().addIngestModuleEventListener(pcl); IngestManager.getInstance().addIngestModuleEventListener(pcl);
// Case.addPropertyChangeListener(pcl); // Case.addPropertyChangeListener(pcl);
// populateHashMap();
FileTypesByMimeType.skCase = skCase; FileTypesByMimeType.skCase = skCase;
} }
@ -172,7 +171,7 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
@Override @Override
public boolean isLeafTypeNode() { public boolean isLeafTypeNode() {
// if (!existingMimeTypes.isEmpty()) { // if (!existingMimeTypes.isEmpty()) {
return false; return false;
// } // }
// else { // else {
// return true; // return true;
@ -194,6 +193,7 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
class FileTypesByMimeTypeNodeChildren extends ChildFactory<String> implements Observer { class FileTypesByMimeTypeNodeChildren extends ChildFactory<String> implements Observer {
private SleuthkitCase skCase; private SleuthkitCase skCase;
static final String EMPTY_MIME_TREE_STRING = "Data not available. Run file type identification module.";
/** /**
* *
@ -207,17 +207,21 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
@Override @Override
protected boolean createKeys(List<String> mediaTypeNodes) { protected boolean createKeys(List<String> mediaTypeNodes) {
// if (!existingMimeTypes.isEmpty()) { if (!existingMimeTypes.isEmpty()) {
mediaTypeNodes.addAll(getMediaTypeList()); mediaTypeNodes.addAll(getMediaTypeList());
// } else { } else {
// mediaTypeNodes.add(EMPTY_MIME_TREE_STRING); mediaTypeNodes.add(EMPTY_MIME_TREE_STRING);
// } }
return true; return true;
} }
@Override @Override
protected Node createNodeForKey(String key) { protected Node createNodeForKey(String key) {
if (!existingMimeTypes.isEmpty()) {
return new MediaTypeNode(key); return new MediaTypeNode(key);
} else {
return new EmptyNode(EMPTY_MIME_TREE_STRING);
}
} }
@ -228,6 +232,31 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
} }
class EmptyNode extends DisplayableItemNode {
EmptyNode(String name) {
super(Children.LEAF);
super.setName(name);
setName(name);
setDisplayName(name);
}
@Override
public boolean isLeafTypeNode() {
return true;
}
@Override
public <T> T accept(DisplayableItemNodeVisitor<T> v) {
return v.visit(this);
}
@Override
public String getItemType() {
return getClass().getName();
}
}
class MediaTypeNode extends DisplayableItemNode { class MediaTypeNode extends DisplayableItemNode {
String mediaType; String mediaType;
@ -267,20 +296,14 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
@Override @Override
protected boolean createKeys(List<String> mediaTypeNodes) { protected boolean createKeys(List<String> mediaTypeNodes) {
// if (!existingMimeTypes.isEmpty() && !mediaType.equals(EMPTY_MIME_TREE_STRING)) { mediaTypeNodes.addAll(existingMimeTypes.get(mediaType));
// System.out.println(mediaType); return true;
// System.out.println(existingMimeTypes.size());
mediaTypeNodes.addAll(existingMimeTypes.get(mediaType));
return true;
// } else {
// return false;
// }
} }
@Override @Override
protected Node createNodeForKey(String subtype) { protected Node createNodeForKey(String subtype) {
String mimeType = mediaType + "/" + subtype; String mimeType = mediaType + "/" + subtype;
return new MediaSubTypeNode(mimeType); return new MediaSubTypeNode(mimeType);
} }
@Override @Override