From e9cd0e49d1141640dc139ec17ef81c16191b7677 Mon Sep 17 00:00:00 2001 From: millmanorama Date: Mon, 19 Sep 2016 16:48:46 +0200 Subject: [PATCH] query for account types --- .../sleuthkit/autopsy/datamodel/Accounts.java | 37 ++++++++++++++----- .../datamodel/DisplayableItemNodeVisitor.java | 4 +- .../directorytree/DataResultFilterNode.java | 2 +- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Accounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/Accounts.java index 046534f773..408383bd65 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Accounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Accounts.java @@ -52,10 +52,12 @@ import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; import org.apache.commons.lang3.StringUtils; +import org.openide.nodes.AbstractNode; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.nodes.Sheet; +import org.openide.util.Exceptions; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; @@ -521,15 +523,32 @@ public class Accounts extends Observable implements AutopsyVisitableItem { }; @Override - @NbBundle.Messages({"Accounts.AccountTypeFactory.accountType.creditCards=Credit Card Numbers"}) + protected boolean createKeys(List list) { - list.add(Bundle.Accounts_AccountTypeFactory_accountType_creditCards()); + + try (SleuthkitCase.CaseDbQuery executeQuery = skCase.executeQuery( + "SELECT DISTINCT blackboard_attributes.value_text as account_type " + + " FROM blackboard_attributes " + + " WHERE blackboard_attributes.attribute_type_id = " + BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ACCOUNT_TYPE.getTypeID()); + ResultSet resultSet = executeQuery.getResultSet()) { + while (resultSet.next()) { + list.add(resultSet.getString("account_type")); + } + } catch (TskCoreException | SQLException ex) { + Exceptions.printStackTrace(ex); + return false; + } return true; } @Override protected Node createNodeForKey(String key) { - return new AccountTypeNode(key); + if (key.equals(CREDIT_CARD_NUMBER_ACCOUNT_TYPE)) { + return new CreditCardNumberAccountTypeNode(key); + } else { + //Flesh out what happens with other account types here. + return new AbstractNode(Children.LEAF); + } } @Override @@ -555,9 +574,9 @@ public class Accounts extends Observable implements AutopsyVisitableItem { * * NOTE: currently hard coded to work for Credit Card only */ - public class AccountTypeNode extends DisplayableItemNode { + public class CreditCardNumberAccountTypeNode extends DisplayableItemNode { - private AccountTypeNode(String accountTypeName) { + private CreditCardNumberAccountTypeNode(String accountTypeName) { super(Children.create(new ViewModeFactory(), true)); super.setName(accountTypeName); this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/credit-cards.png"); //NON-NLS @@ -916,13 +935,13 @@ public class Accounts extends Observable implements AutopsyVisitableItem { public class BINNode extends DisplayableItemNode implements Observer { private final BinResult bin; - private final AccountFactory accountFactory; + private final CreditCardNumberFactory accountFactory; private BINNode(BinResult bin) { super(Children.LEAF); this.bin = bin; - accountFactory = new AccountFactory(bin); + accountFactory = new CreditCardNumberFactory(bin); setChildren(Children.create(accountFactory, true)); setName(bin.toString()); updateDisplayName(); @@ -1170,11 +1189,11 @@ public class Accounts extends Observable implements AutopsyVisitableItem { /** * Creates the nodes for the accounts of a given type */ - private class AccountFactory extends ObservingChildFactory { + private class CreditCardNumberFactory extends ObservingChildFactory { private final BinResult bin; - private AccountFactory(BinResult bin) { + private CreditCardNumberFactory(BinResult bin) { this.bin = bin; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java b/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java index fe3445728b..14171a6201 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java @@ -127,7 +127,7 @@ public interface DisplayableItemNodeVisitor { */ T visit(Accounts.AccountsRootNode accountRootNode); - T visit(Accounts.AccountTypeNode accountTypeNode); + T visit(Accounts.CreditCardNumberAccountTypeNode accountTypeNode); T visit(Accounts.ByBINNode byArtifactNode); @@ -350,7 +350,7 @@ public interface DisplayableItemNodeVisitor { } @Override - public T visit(Accounts.AccountTypeNode node) { + public T visit(Accounts.CreditCardNumberAccountTypeNode node) { return defaultVisit(node); } diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DataResultFilterNode.java b/Core/src/org/sleuthkit/autopsy/directorytree/DataResultFilterNode.java index d8985ac8a7..33d15b14f9 100755 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DataResultFilterNode.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DataResultFilterNode.java @@ -497,7 +497,7 @@ public class DataResultFilterNode extends FilterNode { } @Override - public AbstractAction visit(Accounts.AccountTypeNode node) { + public AbstractAction visit(Accounts.CreditCardNumberAccountTypeNode node) { return openChild(node); }