mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-08 14:19:32 +00:00
Recent Files and File Types adjustments in Directory Tree
This commit is contained in:
parent
608337d3b7
commit
056867d61a
@ -18,8 +18,13 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.datamodel;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.openide.nodes.ChildFactory;
|
||||
import org.openide.nodes.Node;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
@ -31,6 +36,8 @@ import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
public class RecentFilesChildren extends ChildFactory<RecentFiles.RecentFilesFilter>{
|
||||
|
||||
SleuthkitCase skCase;
|
||||
long latestUpdateTime;
|
||||
private final static Logger logger = Logger.getLogger(RecentFilesChildren.class.getName());
|
||||
|
||||
public RecentFilesChildren(SleuthkitCase skCase) {
|
||||
this.skCase = skCase;
|
||||
@ -39,12 +46,45 @@ public class RecentFilesChildren extends ChildFactory<RecentFiles.RecentFilesFil
|
||||
@Override
|
||||
protected boolean createKeys(List<RecentFiles.RecentFilesFilter> list) {
|
||||
list.addAll(Arrays.asList(RecentFiles.RecentFilesFilter.values()));
|
||||
latestUpdateTime = getLastTime();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Node createNodeForKey(RecentFiles.RecentFilesFilter key){
|
||||
return new RecentFilesFilterNode(skCase, key);
|
||||
return new RecentFilesFilterNode(skCase, key, latestUpdateTime);
|
||||
}
|
||||
|
||||
private long getLastTime() {
|
||||
String query = createMaxQuery("crtime");
|
||||
long maxcr = runTimeQuery(query);
|
||||
query = createMaxQuery("ctime");
|
||||
long maxc = runTimeQuery(query);
|
||||
query = createMaxQuery("mtime");
|
||||
long maxm = runTimeQuery(query);
|
||||
query = createMaxQuery("atime");
|
||||
long maxa = runTimeQuery(query);
|
||||
return Math.max(maxcr, Math.max(maxc, Math.max(maxm, maxa)));
|
||||
}
|
||||
|
||||
private String createMaxQuery(String attr){
|
||||
return "select max(" + attr + ") from tsk_files where " + attr + " < " + System.currentTimeMillis()/1000;
|
||||
}
|
||||
|
||||
private long runTimeQuery(String query) {
|
||||
long result = 0;
|
||||
try {
|
||||
ResultSet rs = skCase.runQuery(query);
|
||||
result = rs.getLong(1);
|
||||
Statement s = rs.getStatement();
|
||||
rs.close();
|
||||
if (s != null)
|
||||
s.close();
|
||||
} catch (SQLException ex) {
|
||||
Logger.getLogger(RecentFilesFilterChildren.class.getName())
|
||||
.log(Level.INFO, "Couldn't get search results", ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -44,11 +44,13 @@ public class RecentFilesFilterChildren extends ChildFactory<Content>{
|
||||
|
||||
SleuthkitCase skCase;
|
||||
RecentFilesFilter filter;
|
||||
long latestUpdate;
|
||||
private final static Logger logger = Logger.getLogger(RecentFilesFilterChildren.class.getName());
|
||||
|
||||
RecentFilesFilterChildren(RecentFilesFilter filter, SleuthkitCase skCase) {
|
||||
RecentFilesFilterChildren(RecentFilesFilter filter, SleuthkitCase skCase, long latestUpdate) {
|
||||
this.skCase = skCase;
|
||||
this.filter = filter;
|
||||
this.latestUpdate = latestUpdate;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -59,7 +61,6 @@ public class RecentFilesFilterChildren extends ChildFactory<Content>{
|
||||
|
||||
private String createQuery(){
|
||||
String query = "select * from tsk_files where ";
|
||||
long latestUpdate = getLastTime();
|
||||
long threshold = latestUpdate-filter.getDurationSeconds();
|
||||
query += "(crtime between " + threshold + " and " + latestUpdate + ") or ";
|
||||
query += "(ctime between " + threshold + " and " + latestUpdate + ") or ";
|
||||
@ -109,36 +110,4 @@ public class RecentFilesFilterChildren extends ChildFactory<Content>{
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private long getLastTime() {
|
||||
String query = createMaxQuery("crtime");
|
||||
long maxcr = runTimeQuery(query);
|
||||
query = createMaxQuery("ctime");
|
||||
long maxc = runTimeQuery(query);
|
||||
query = createMaxQuery("mtime");
|
||||
long maxm = runTimeQuery(query);
|
||||
query = createMaxQuery("atime");
|
||||
long maxa = runTimeQuery(query);
|
||||
return Math.max(maxcr, Math.max(maxc, Math.max(maxm, maxa)));
|
||||
}
|
||||
|
||||
private String createMaxQuery(String attr){
|
||||
return "select max(" + attr + ") from tsk_files where " + attr + " < " + System.currentTimeMillis()/1000;
|
||||
}
|
||||
|
||||
private long runTimeQuery(String query) {
|
||||
long result = 0;
|
||||
try {
|
||||
ResultSet rs = skCase.runQuery(query);
|
||||
result = rs.getLong(1);
|
||||
Statement s = rs.getStatement();
|
||||
rs.close();
|
||||
if (s != null)
|
||||
s.close();
|
||||
} catch (SQLException ex) {
|
||||
Logger.getLogger(RecentFilesFilterChildren.class.getName())
|
||||
.log(Level.INFO, "Couldn't get search results", ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,12 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.datamodel;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.Date;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.openide.nodes.AbstractNode;
|
||||
import org.openide.nodes.Children;
|
||||
import org.openide.nodes.Sheet;
|
||||
@ -34,12 +40,15 @@ public class RecentFilesFilterNode extends AbstractNode implements DisplayableIt
|
||||
SleuthkitCase skCase;
|
||||
RecentFilesFilter filter;
|
||||
|
||||
RecentFilesFilterNode(SleuthkitCase skCase, RecentFilesFilter filter) {
|
||||
super(Children.create(new RecentFilesFilterChildren(filter, skCase), true), Lookups.singleton(filter));
|
||||
RecentFilesFilterNode(SleuthkitCase skCase, RecentFilesFilter filter, long latestUpdate) {
|
||||
super(Children.create(new RecentFilesFilterChildren(filter, skCase, latestUpdate), true), Lookups.singleton(filter));
|
||||
super.setName(filter.getName());
|
||||
super.setDisplayName(filter.getDisplayName());
|
||||
this.skCase = skCase;
|
||||
this.filter = filter;
|
||||
String tooltip = "Between " + new Date((latestUpdate-filter.getDurationSeconds())*1000).toString();
|
||||
tooltip += "\n and " + new Date(latestUpdate*1000).toString();
|
||||
this.setShortDescription(tooltip);
|
||||
this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/recent-icon.png");
|
||||
}
|
||||
|
||||
|
@ -30,10 +30,15 @@ public class SearchFilters implements AutopsyVisitableItem{
|
||||
SleuthkitCase skCase;
|
||||
|
||||
public enum FileSearchFilter implements AutopsyVisitableItem {
|
||||
TSK_IMAGE_FILTER(0, "TSK_IMAGE_FILTER", "Images", Arrays.asList(".jpg", ".jpeg", ".png", ".psd", ".nef")),
|
||||
TSK_VIDEO_FILTER(1, "TSK_VIDEO_FILTER", "Videos", Arrays.asList(".mov", ".avi", ".m4v")),
|
||||
TSK_AUDIO_FILTER(2, "TSK_AUDIO_FILTER", "Audio", Arrays.asList(".mp3", ".aac", ".wav", ".ogg", ".wma", ".m4a")),
|
||||
TSK_DOCUMENT_FILTER(3, "TSK_DOCUMENT_FILTER", "Documents", Arrays.asList(".doc", ".docx", ".pdf", ".xls"));
|
||||
TSK_IMAGE_FILTER(0, "TSK_IMAGE_FILTER", "Images", Arrays.asList(".jpg", ".jpeg", ".png", ".psd", ".nef", ".tiff")),
|
||||
TSK_VIDEO_FILTER(1, "TSK_VIDEO_FILTER", "Videos",
|
||||
Arrays.asList(".aaf", ".3gp", ".asf", ".avi", ".m1v", ".m2v", ".m4v",
|
||||
".mov", ".mpeg", ".mpg", ".mpe", ".mp4", ".rm", ".wmv", ".mpv")),
|
||||
TSK_AUDIO_FILTER(2, "TSK_AUDIO_FILTER", "Audio",
|
||||
Arrays.asList(".aiff", ".aif", ".flac", ".wav", ".m4a", ".ape", ".wma", ".mp2",
|
||||
".mp1", ".mp3", ".aac", ".mp4", ".m4p", ".m1a", ".m2a", ".m4r", ".mpa",
|
||||
".m3u", ".mid", ".midi", ".ogg")),
|
||||
TSK_DOCUMENT_FILTER(3, "TSK_DOCUMENT_FILTER", "Documents", Arrays.asList(".doc", ".docx", ".pdf", ".xls", ".rtf", ".txt"));
|
||||
|
||||
int id;
|
||||
String name;
|
||||
|
@ -32,8 +32,8 @@ public class SearchFiltersNode extends AbstractNode implements DisplayableItemNo
|
||||
|
||||
SearchFiltersNode(SleuthkitCase skCase) {
|
||||
super(Children.create(new SearchFiltersChildren(skCase), true));
|
||||
super.setName("Search Filters");
|
||||
super.setDisplayName("Search Filters");
|
||||
super.setName("File Types");
|
||||
super.setDisplayName("File Types");
|
||||
this.skCase = skCase;
|
||||
this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/filter-icon.png");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user