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)