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

View File

@ -58,7 +58,6 @@ import org.sleuthkit.datamodel.TskData;
class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
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
* 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();
if (eventType.equals(IngestManager.IngestJobEvent.COMPLETED.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())) {
/**
* 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().addIngestModuleEventListener(pcl);
// Case.addPropertyChangeListener(pcl);
// populateHashMap();
FileTypesByMimeType.skCase = skCase;
}
@ -172,7 +171,7 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
@Override
public boolean isLeafTypeNode() {
// if (!existingMimeTypes.isEmpty()) {
return false;
return false;
// }
// else {
// return true;
@ -194,6 +193,7 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
class FileTypesByMimeTypeNodeChildren extends ChildFactory<String> implements Observer {
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
protected boolean createKeys(List<String> mediaTypeNodes) {
// if (!existingMimeTypes.isEmpty()) {
mediaTypeNodes.addAll(getMediaTypeList());
// } else {
// mediaTypeNodes.add(EMPTY_MIME_TREE_STRING);
// }
if (!existingMimeTypes.isEmpty()) {
mediaTypeNodes.addAll(getMediaTypeList());
} else {
mediaTypeNodes.add(EMPTY_MIME_TREE_STRING);
}
return true;
}
@Override
protected Node createNodeForKey(String key) {
if (!existingMimeTypes.isEmpty()) {
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 {
String mediaType;
@ -267,20 +296,14 @@ class FileTypesByMimeType extends Observable implements AutopsyVisitableItem {
@Override
protected boolean createKeys(List<String> mediaTypeNodes) {
// if (!existingMimeTypes.isEmpty() && !mediaType.equals(EMPTY_MIME_TREE_STRING)) {
// System.out.println(mediaType);
// System.out.println(existingMimeTypes.size());
mediaTypeNodes.addAll(existingMimeTypes.get(mediaType));
return true;
// } else {
// return false;
// }
mediaTypeNodes.addAll(existingMimeTypes.get(mediaType));
return true;
}
@Override
protected Node createNodeForKey(String subtype) {
String mimeType = mediaType + "/" + subtype;
return new MediaSubTypeNode(mimeType);
String mimeType = mediaType + "/" + subtype;
return new MediaSubTypeNode(mimeType);
}
@Override