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
@ -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;
} }
@ -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,14 +296,8 @@ 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)) {
// System.out.println(mediaType);
// System.out.println(existingMimeTypes.size());
mediaTypeNodes.addAll(existingMimeTypes.get(mediaType)); mediaTypeNodes.addAll(existingMimeTypes.get(mediaType));
return true; return true;
// } else {
// return false;
// }
} }
@Override @Override