19 package org.sleuthkit.autopsy.communications.snapshot;
21 import java.util.List;
22 import java.awt.image.BufferedImage;
23 import java.io.IOException;
24 import java.nio.file.Path;
25 import java.text.SimpleDateFormat;
26 import java.time.Instant;
27 import java.util.ArrayList;
28 import java.util.Collection;
29 import java.util.Date;
30 import java.util.HashMap;
32 import javax.imageio.ImageIO;
37 import org.
sleuthkit.datamodel.CommunicationsFilter.AccountTypeFilter;
38 import org.
sleuthkit.datamodel.CommunicationsFilter.DateRangeFilter;
39 import org.
sleuthkit.datamodel.CommunicationsFilter.DeviceFilter;
40 import org.
sleuthkit.datamodel.CommunicationsFilter.SubFilter;
50 private final BufferedImage
image;
51 private final CommunicationsFilter
filter;
65 super(currentCase, reportFolderPath, reportName, generationDate);
67 this.image = snapshot;
80 SimpleDateFormat formatter =
new SimpleDateFormat(
"MMMMM dd, yyyy");
85 HashMap<String, Object> snapShotContext =
new HashMap<>();
88 List<SubFilter> filters = filter.getAndFilters();
90 for (SubFilter filter : filters) {
91 if (filter instanceof DateRangeFilter) {
92 long startDate = ((DateRangeFilter) filter).getStartDate();
93 long endDate = ((DateRangeFilter) filter).getEndDate();
97 snapShotContext.put(
"startTime", formatter.format(
new Date((Instant.ofEpochSecond(startDate)).toEpochMilli())));
101 snapShotContext.put(
"endTime", formatter.format(
new Date((Instant.ofEpochSecond(endDate)).toEpochMilli())));
103 }
else if (filter instanceof AccountTypeFilter) {
105 Set<Account.Type> selectedAccounts = ((AccountTypeFilter) filter).getAccountTypes();
106 ArrayList<ReportWriterHelper> fullAccountList =
new ArrayList<>();
107 for (Account.Type type : Account.Type.PREDEFINED_ACCOUNT_TYPES) {
108 if (type == Account.Type.CREDIT_CARD) {
112 fullAccountList.add(
new ReportWriterHelper(type.getDisplayName(), selectedAccounts.contains(type)));
115 snapShotContext.put(
"accounts", fullAccountList);
116 }
else if (filter instanceof DeviceFilter) {
117 Collection<String> ids = ((DeviceFilter) filter).getDevices();
118 ArrayList<ReportWriterHelper> list =
new ArrayList<>();
121 for (DataSource dataSource : sleuthkitCase.getDataSources()) {
122 boolean selected = ids.contains(dataSource.getDeviceId());
123 String dsName = sleuthkitCase.getContentById(dataSource.getId()).getName();
126 }
catch (TskCoreException ex) {
130 snapShotContext.put(
"devices", list);
Path getReportFolderPath()
final CommunicationsFilter filter
void writeSnapShotHTMLFile()
final BufferedImage image
SleuthkitCase getSleuthkitCase()
void fillTemplateAndWrite(final String templateLocation, final String templateName, Object context, final Path outPutFile)
final Path reportFolderPath
CommSnapShotReportWriter(Case currentCase, Path reportFolderPath, String reportName, Date generationDate, BufferedImage snapshot, CommunicationsFilter filter)