query for account types

This commit is contained in:
millmanorama 2016-09-19 16:48:46 +02:00
parent 42d99e31d6
commit e9cd0e49d1
3 changed files with 31 additions and 12 deletions

View File

@ -52,10 +52,12 @@ import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord; import org.apache.commons.csv.CSVRecord;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.ChildFactory; import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children; import org.openide.nodes.Children;
import org.openide.nodes.Node; import org.openide.nodes.Node;
import org.openide.nodes.Sheet; import org.openide.nodes.Sheet;
import org.openide.util.Exceptions;
import org.openide.util.NbBundle; import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups; import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.Case;
@ -521,15 +523,32 @@ public class Accounts extends Observable implements AutopsyVisitableItem {
}; };
@Override @Override
@NbBundle.Messages({"Accounts.AccountTypeFactory.accountType.creditCards=Credit Card Numbers"})
protected boolean createKeys(List<String> list) { protected boolean createKeys(List<String> 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; return true;
} }
@Override @Override
protected Node createNodeForKey(String key) { 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 @Override
@ -555,9 +574,9 @@ public class Accounts extends Observable implements AutopsyVisitableItem {
* *
* NOTE: currently hard coded to work for Credit Card only * 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(Children.create(new ViewModeFactory(), true));
super.setName(accountTypeName); super.setName(accountTypeName);
this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/credit-cards.png"); //NON-NLS 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 { public class BINNode extends DisplayableItemNode implements Observer {
private final BinResult bin; private final BinResult bin;
private final AccountFactory accountFactory; private final CreditCardNumberFactory accountFactory;
private BINNode(BinResult bin) { private BINNode(BinResult bin) {
super(Children.LEAF); super(Children.LEAF);
this.bin = bin; this.bin = bin;
accountFactory = new AccountFactory(bin); accountFactory = new CreditCardNumberFactory(bin);
setChildren(Children.create(accountFactory, true)); setChildren(Children.create(accountFactory, true));
setName(bin.toString()); setName(bin.toString());
updateDisplayName(); updateDisplayName();
@ -1170,11 +1189,11 @@ public class Accounts extends Observable implements AutopsyVisitableItem {
/** /**
* Creates the nodes for the accounts of a given type * Creates the nodes for the accounts of a given type
*/ */
private class AccountFactory extends ObservingChildFactory<Long> { private class CreditCardNumberFactory extends ObservingChildFactory<Long> {
private final BinResult bin; private final BinResult bin;
private AccountFactory(BinResult bin) { private CreditCardNumberFactory(BinResult bin) {
this.bin = bin; this.bin = bin;
} }

View File

@ -127,7 +127,7 @@ public interface DisplayableItemNodeVisitor<T> {
*/ */
T visit(Accounts.AccountsRootNode accountRootNode); T visit(Accounts.AccountsRootNode accountRootNode);
T visit(Accounts.AccountTypeNode accountTypeNode); T visit(Accounts.CreditCardNumberAccountTypeNode accountTypeNode);
T visit(Accounts.ByBINNode byArtifactNode); T visit(Accounts.ByBINNode byArtifactNode);
@ -350,7 +350,7 @@ public interface DisplayableItemNodeVisitor<T> {
} }
@Override @Override
public T visit(Accounts.AccountTypeNode node) { public T visit(Accounts.CreditCardNumberAccountTypeNode node) {
return defaultVisit(node); return defaultVisit(node);
} }

View File

@ -497,7 +497,7 @@ public class DataResultFilterNode extends FilterNode {
} }
@Override @Override
public AbstractAction visit(Accounts.AccountTypeNode node) { public AbstractAction visit(Accounts.CreditCardNumberAccountTypeNode node) {
return openChild(node); return openChild(node);
} }