Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
PageWorker.java
Go to the documentation of this file.
1/*
2 * Autopsy
3 *
4 * Copyright 2019-2021 Basis Technology Corp.
5 * Contact: carrier <at> sleuthkit <dot> org
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19package org.sleuthkit.autopsy.discovery.ui;
20
21import org.sleuthkit.autopsy.discovery.search.AbstractFilter;
22import java.util.List;
23import java.util.ArrayList;
24import java.util.logging.Level;
25import javax.swing.SwingWorker;
26import org.sleuthkit.autopsy.casemodule.Case;
27import org.sleuthkit.autopsy.coreutils.Logger;
28import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository;
29import org.sleuthkit.autopsy.discovery.search.DiscoveryAttributes;
30import org.sleuthkit.autopsy.discovery.search.DiscoveryEventUtils;
31import org.sleuthkit.autopsy.discovery.search.DiscoveryKeyUtils.GroupKey;
32import org.sleuthkit.autopsy.discovery.search.Group;
33import org.sleuthkit.autopsy.discovery.search.FileSearch;
34import org.sleuthkit.autopsy.discovery.search.SearchData;
35import org.sleuthkit.autopsy.discovery.search.DiscoveryException;
36import org.sleuthkit.autopsy.discovery.search.DomainSearch;
37import org.sleuthkit.autopsy.discovery.search.ResultsSorter;
38import org.sleuthkit.autopsy.discovery.search.Result;
39import org.sleuthkit.autopsy.discovery.search.SearchCancellationException;
40import org.sleuthkit.autopsy.discovery.search.SearchContext;
41
45final class PageWorker extends SwingWorker<Void, Void> {
46
47 private final static Logger logger = Logger.getLogger(PageWorker.class.getName());
48 private static final String USER_NAME_PROPERTY = "user.name"; //NON-NLS
49 private final List<AbstractFilter> searchfilters;
50 private final DiscoveryAttributes.AttributeType groupingAttribute;
51 private final Group.GroupSortingAlgorithm groupSort;
52 private final ResultsSorter.SortingMethod fileSortMethod;
53 private final GroupKey groupKey;
54 private final int startingEntry;
55 private final int pageSize;
56 private final SearchData.Type resultType;
57 private final CentralRepository centralRepo;
58 private final List<Result> results = new ArrayList<>();
59
76 PageWorker(List<AbstractFilter> searchfilters, DiscoveryAttributes.AttributeType groupingAttribute,
77 Group.GroupSortingAlgorithm groupSort, ResultsSorter.SortingMethod fileSortMethod, GroupKey groupKey,
78 int startingEntry, int pageSize, SearchData.Type resultType, CentralRepository centralRepo) {
79 this.searchfilters = searchfilters;
80 this.groupingAttribute = groupingAttribute;
81 this.groupSort = groupSort;
82 this.fileSortMethod = fileSortMethod;
83 this.groupKey = groupKey;
84 this.startingEntry = startingEntry;
85 this.pageSize = pageSize;
86 this.resultType = resultType;
87 this.centralRepo = centralRepo;
88 }
89
90 @Override
91 protected Void doInBackground() throws Exception {
92 SearchContext context = new SwingWorkerSearchContext(this);
93 try {
94 // Run the search
95 if (resultType == SearchData.Type.DOMAIN) {
96 DomainSearch domainSearch = new DomainSearch();
97 results.addAll(domainSearch.getDomainsInGroup(System.getProperty(USER_NAME_PROPERTY), searchfilters,
98 groupingAttribute,
99 groupSort,
100 fileSortMethod, groupKey, startingEntry, pageSize,
101 Case.getCurrentCase().getSleuthkitCase(), centralRepo, context));
102 } else {
103 results.addAll(FileSearch.getFilesInGroup(System.getProperty(USER_NAME_PROPERTY), searchfilters,
104 groupingAttribute,
105 groupSort,
106 fileSortMethod, groupKey, startingEntry, pageSize,
107 Case.getCurrentCase().getSleuthkitCase(), centralRepo, context));
108 }
109 } catch (DiscoveryException ex) {
110 logger.log(Level.SEVERE, "Error running file search test", ex);
111 cancel(true);
112 } catch (SearchCancellationException ex) {
113 //The user does not explicitly have a way to cancel the loading of a page
114 //but they could have cancelled the search during the loading of the first page
115 //So this may or may not be an issue depending on when this occurred.
116 logger.log(Level.WARNING, "Search was cancelled while retrieving data for results page with starting entry: " + startingEntry, ex);
117 }
118 return null;
119 }
120
121 @Override
122 protected void done() {
123 if (!isCancelled()) {
124 int currentPage = startingEntry / pageSize; //integer division should round down to get page number correctly
125 DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.PageRetrievedEvent(resultType, currentPage, results));
126 }
127 }
128
129}

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.