From 36ffbcdbe46428b46e98c7b8b0bd9b95e8315159 Mon Sep 17 00:00:00 2001
From: apriestman <apriestman@basistech.com>
Date: Thu, 30 Apr 2020 11:32:47 -0400
Subject: [PATCH] Caching is working.

---
 .../org/sleuthkit/datamodel/JniDbHelper.java    | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/bindings/java/src/org/sleuthkit/datamodel/JniDbHelper.java b/bindings/java/src/org/sleuthkit/datamodel/JniDbHelper.java
index 8ec513146..62a74037d 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/JniDbHelper.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/JniDbHelper.java
@@ -19,6 +19,8 @@
 package org.sleuthkit.datamodel;
 
 import org.apache.commons.lang3.StringUtils;
+import java.util.List; // TEMP
+import java.util.ArrayList; // TEMP
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
@@ -42,6 +44,7 @@ class JniDbHelper {
     private final Map<Long, Long> fsIdToRootDir = new HashMap<>();
 	private final Map<Long, TskData.TSK_FS_TYPE_ENUM> fsIdToFsType = new HashMap<>();
 	private final Map<ParentCacheKey, Long> parentDirCache = new HashMap<>();
+	private final List<ParentCacheKey> tempDidNotFind = new ArrayList<>();
     
     JniDbHelper(SleuthkitCase caseDb) {
         this.caseDb = caseDb;
@@ -294,14 +297,17 @@ long addFile(long parentObjId,
 			
 			
 			// Testing!
-			if (metaType == TskData.TSK_FS_META_TYPE_ENUM.TSK_FS_META_TYPE_DIR.getValue()
+			if ((metaType == TskData.TSK_FS_META_TYPE_ENUM.TSK_FS_META_TYPE_DIR.getValue()
+					|| (metaType == TskData.TSK_FS_META_TYPE_ENUM.TSK_FS_META_TYPE_VIRT_DIR.getValue()))
 					&& (name != null)
 					&& ! name.equals(".")
 					&& ! name.equals("..")) {
 				String dirName = escaped_path + name;
 				ParentCacheKey key = new ParentCacheKey(fsObjId, metaAddr, seq, dirName);
 				parentDirCache.put(key, objId);
-				//System.out.println("### Saving: " + objId + " : " + metaAddr + " " + seq + " " + dirName);
+				if (metaAddr == 34064 || dirName.contains("$Orphan")) {
+					//System.out.println("### Saving: " + objId + " : " + metaAddr + " " + seq + " " + dirName);
+				}
 			}
 			
 			// Let's see if the parent lookup matches - skip for root folder
@@ -320,7 +326,10 @@ long addFile(long parentObjId,
 						System.out.println("### Mismatch : cached: " + cachedId + ", given: " + parentObjId + " : " + keyStr);
 					}
 				} else {
-					System.out.println("### Did not find " + parentObjId + " : " + keyStr + " - orig parent_path: <" + escaped_path + ">");
+					if (!tempDidNotFind.contains(key)) {
+						System.out.println("### Did not find " + parentObjId + " : " + keyStr + " - orig parent_path: <" + escaped_path + ">");
+						tempDidNotFind.add(key);
+					}
 				}
 			}
 			
@@ -413,7 +422,7 @@ long addLayoutFileRange(long objId, long byteStart, long byteLen, long seq) {
      */
     long findParentObjId(long metaAddr, long fsObjId, String path, String name) {
         try {
-			System.out.println("### Had to do lookup for meta addr: " + metaAddr + " and path: " + path + " " + name);
+			//System.out.println("### Had to do lookup for meta addr: " + metaAddr + " and path: " + path + " " + name);
             return caseDb.findParentObjIdJNI(metaAddr, fsObjId, path, name, trans);
         } catch (TskCoreException ex) {
             logger.log(Level.WARNING, "Error looking up parent with meta addr: " + metaAddr + " and name " + name, ex);
-- 
GitLab