19 package org.sleuthkit.autopsy.report.modules.datasourcesummaryexport;
21 import java.awt.Color;
22 import java.sql.SQLException;
23 import java.util.ArrayList;
24 import java.util.Arrays;
25 import java.util.Collections;
26 import java.util.HashSet;
27 import java.util.List;
28 import java.util.stream.Collectors;
29 import java.util.stream.Stream;
30 import org.openide.util.NbBundle.Messages;
49 "ExportTypes_artifactsTypesPieChart_title=Artifact Types",
50 "ExportTypes_filesByCategoryTable_allocatedRow_title=Allocated Files",
51 "ExportTypes_filesByCategoryTable_unallocatedRow_title=Unallocated Files",
52 "ExportTypes_filesByCategoryTable_slackRow_title=Slack Files",
53 "ExportTypes_filesByCategoryTable_directoryRow_title=Directories",
54 "ExportTypes_fileMimeTypesChart_title=File Types",
55 "ExportTypes_fileMimeTypesChart_valueLabel=Count",
56 "ExportTypes_fileMimeTypesChart_audio_title=Audio",
57 "ExportTypes_fileMimeTypesChart_documents_title=Documents",
58 "ExportTypes_fileMimeTypesChart_executables_title=Executables",
59 "ExportTypes_fileMimeTypesChart_images_title=Images",
60 "ExportTypes_fileMimeTypesChart_videos_title=Videos",
61 "ExportTypes_fileMimeTypesChart_other_title=Other",
62 "ExportTypes_fileMimeTypesChart_unknown_title=Unknown",
63 "ExportTypes_fileMimeTypesChart_notAnalyzed_title=Not Analyzed",
64 "ExportTypes_usageLabel_title=Usage",
65 "ExportTypes_osLabel_title=OS",
66 "ExportTypes_sizeLabel_title=Size",
67 "ExportTypes_excelTabName=Types"})
86 this.pieSlices = pieSlices;
87 this.usefulContent = usefulContent;
93 List<PieChartItem> getPieSlices() {
100 boolean isUsefulContent() {
101 return usefulContent;
110 private static final Color IMAGES_COLOR =
new Color(156, 39, 176);
111 private static final Color VIDEOS_COLOR = Color.YELLOW;
112 private static final Color AUDIO_COLOR = Color.BLUE;
113 private static final Color DOCUMENTS_COLOR = Color.GREEN;
114 private static final Color EXECUTABLES_COLOR =
new Color(0, 188, 212);
115 private static final Color UNKNOWN_COLOR = Color.ORANGE;
116 private static final Color OTHER_COLOR =
new Color(78, 52, 46);
117 private static final Color NOT_ANALYZED_COLOR = Color.WHITE;
120 private static final List<FileTypeCategoryData> FILE_MIME_TYPE_CATEGORIES = Arrays.asList(
126 new FileTypeCategoryData(Bundle.ExportTypes_fileMimeTypesChart_unknown_title(),
new HashSet<>(Arrays.asList(
"application/octet-stream")), UNKNOWN_COLOR)
147 if (dataSource == null) {
152 List<PieChartItem> fileCategoryItems =
new ArrayList<>();
153 long categoryTotalCount = 0;
157 categoryTotalCount += thisValue;
172 long otherCount = allRegularFiles - (categoryTotalCount + noMimeTypeCount);
174 otherCount, OTHER_COLOR);
177 boolean usefulContent = categoryTotalCount > 0 || otherCount > 0;
181 noMimeTypeCount, NOT_ANALYZED_COLOR);
184 List<PieChartItem> items = Stream.concat(
185 fileCategoryItems.stream(),
186 Stream.of(otherPieItem, notAnalyzedItem))
188 .filter(slice -> slice.getValue() > 0)
189 .collect(Collectors.toList());
204 String result = ExcelExportAction.getFetchResult(fetcher,
"Types", dataSource);
205 return (result == null) ? null :
new KeyValueItemExportable(key,
new DefaultCellModel<>(result));
219 Long count = ExcelExportAction.getFetchResult(fetcher,
"Types", dataSource);
220 return (count == null) ? null :
new KeyValueItemExportable(key,
224 List<ExcelExport.ExcelSheetExport> getExports(DataSource dataSource) {
225 if (dataSource == null) {
226 return Collections.emptyList();
241 TypesPieChartData typesData = ExcelExportAction.getFetchResult(typesFetcher,
"Types", dataSource);
242 PieChartExport typesChart = (typesData == null || !typesData.isUsefulContent()) ? null
243 :
new PieChartExport(
244 Bundle.ExportTypes_fileMimeTypesChart_title(),
245 Bundle.ExportTypes_fileMimeTypesChart_valueLabel(),
247 Bundle.ExportTypes_fileMimeTypesChart_title(),
248 typesData.getPieSlices());
250 return Arrays.asList(
new ExcelSpecialFormatExport(Bundle.ExportTypes_excelTabName(),
252 getStrExportable(usageFetcher, Bundle.ExportTypes_usageLabel_title(), dataSource),
253 getStrExportable(osFetcher, Bundle.ExportTypes_osLabel_title(), dataSource),
254 new KeyValueItemExportable(Bundle.ExportTypes_sizeLabel_title(),
255 SizeRepresentationUtil.getBytesCell(ExcelExportAction.getFetchResult(sizeFetcher,
"Types", dataSource))),
257 getCountExportable(allocatedFetcher, Bundle.ExportTypes_filesByCategoryTable_allocatedRow_title(), dataSource),
258 getCountExportable(unallocatedFetcher, Bundle.ExportTypes_filesByCategoryTable_unallocatedRow_title(), dataSource),
259 getCountExportable(slackFetcher, Bundle.ExportTypes_filesByCategoryTable_slackRow_title(), dataSource),
260 getCountExportable(directoriesFetcher, Bundle.ExportTypes_filesByCategoryTable_directoryRow_title(), dataSource))
261 .filter(sheet -> sheet != null)
262 .collect(Collectors.toList())
static Long getCountOfRegNonSlackFiles(SleuthkitCase skCase, DataSource currentDataSource, String additionalWhere)
SleuthkitCaseProvider DEFAULT
Long getCountOfFilesForMimeTypes(DataSource currentDataSource, Set< String > setOfMimeTypes)
Long getCountOfSlackFiles(DataSource currentDataSource)
static long getLongOrZero(Long longVal)
Long getCountOfFilesWithNoMimeType(DataSource currentDataSource)
Long getCountOfAllocatedFiles(DataSource currentDataSource)
Long getCountOfDirectories(DataSource currentDataSource)
String getOperatingSystems(DataSource dataSource)
String getDataSourceType(DataSource dataSource)
final boolean usefulContent
Long getCountOfUnallocatedFiles(DataSource currentDataSource)
static final String COMMA_FORMAT_STR
final List< PieChartItem > pieSlices