19package org.sleuthkit.autopsy.communications.relationships;
21import java.util.ArrayList;
22import java.util.Collection;
24import java.util.Optional;
25import java.util.logging.Level;
26import javax.swing.SwingWorker;
27import org.sleuthkit.autopsy.casemodule.Case;
28import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoAccount;
29import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoException;
30import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository;
31import org.sleuthkit.autopsy.centralrepository.datamodel.Persona;
32import org.sleuthkit.autopsy.centralrepository.datamodel.PersonaAccount;
33import org.sleuthkit.autopsy.coreutils.Logger;
34import org.sleuthkit.datamodel.Account;
35import org.sleuthkit.datamodel.AccountFileInstance;
36import org.sleuthkit.datamodel.InvalidAccountIDException;
41class SummaryPanelWorker
extends SwingWorker<SummaryPanelWorker.SummaryWorkerResults, Void> {
43 private final static Logger logger = Logger.getLogger(SummaryPanelWorker.class.getName());
45 private final Account account;
46 private final SelectionInfo selectionInfo;
49 SummaryPanelWorker(SelectionInfo selectionInfo, Account account) {
50 this.account = account;
51 this.selectionInfo = selectionInfo;
59 Account getAccount() {
64 protected SummaryWorkerResults doInBackground() throws Exception {
65 CentralRepoAccount crAccount =
null;
66 List<String> stringList =
new ArrayList<>();
67 List<AccountFileInstance> accountFileInstanceList = Case.getCurrentCase().getSleuthkitCase().getCommunicationsManager().getAccountFileInstances(account);
68 if (accountFileInstanceList !=
null) {
69 for (AccountFileInstance instance : accountFileInstanceList) {
70 stringList.add(instance.getFile().getUniquePath());
74 List<Persona> personaList =
new ArrayList<>();
75 if (CentralRepository.isEnabled()) {
76 Collection<PersonaAccount> personaAccountList = PersonaAccount.getPersonaAccountsForAccount(account);
77 PersonaAccount.getPersonaAccountsForAccount(account);
79 for (PersonaAccount pAccount : personaAccountList) {
80 personaList.add(pAccount.getPersona());
83 Optional<CentralRepoAccount.CentralRepoAccountType> optCrAccountType = CentralRepository.getInstance().getAccountTypeByName(account.getAccountType().getTypeName());
84 if (optCrAccountType.isPresent()) {
86 crAccount = CentralRepository.getInstance().getAccount(optCrAccountType.get(), account.getTypeSpecificID());
87 }
catch (InvalidAccountIDException unused) {
90 logger.log(Level.WARNING, String.format(
"Exception thrown from CR getAccount for account %s (%d)", account.getTypeSpecificID(), account.getAccountID()));
95 return new SummaryWorkerResults(stringList, personaList, crAccount,
new AccountSummary(account, selectionInfo.getArtifacts()));
102 final static class SummaryWorkerResults {
104 private final List<String> accountFileInstancePaths;
105 private final List<Persona> personaList;
106 private final CentralRepoAccount centralRepoAccount;
107 private final AccountSummary accountSummary;
118 SummaryWorkerResults(List<String> accountFileInstancePaths, List<Persona> personaList, CentralRepoAccount centralRepoAccount, AccountSummary accountSummary) {
119 this.accountFileInstancePaths = accountFileInstancePaths;
120 this.personaList = personaList;
121 this.centralRepoAccount = centralRepoAccount;
122 this.accountSummary = accountSummary;
131 List<String> getPaths() {
132 return accountFileInstancePaths;
142 List<Persona> getPersonaList() {
152 CentralRepoAccount getCRAccount() {
153 return centralRepoAccount;
156 AccountSummary getAccountSummary() {
157 return accountSummary;