From 845aadb1656859873e5cd6d93e3007f31fe426fb Mon Sep 17 00:00:00 2001 From: millmanorama Date: Wed, 21 Sep 2016 18:27:13 +0200 Subject: [PATCH] account actions support multiselect via actionsGlobalLookup --- .../sleuthkit/autopsy/datamodel/Accounts.java | 73 +++++++++---------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Accounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/Accounts.java index ab4571395d..903d0bf3ed 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Accounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Accounts.java @@ -30,7 +30,6 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -57,6 +56,7 @@ import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; +import org.openide.util.Utilities; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; @@ -154,6 +154,9 @@ public class Accounts extends Observable implements AutopsyVisitableItem { } } + private final RejectAccounts rejectActionInstance; + private final ApproveAccounts approveActionInstance; + /** * Constructor * @@ -161,6 +164,9 @@ public class Accounts extends Observable implements AutopsyVisitableItem { */ Accounts(SleuthkitCase skCase) { this.skCase = skCase; + + this.rejectActionInstance = new RejectAccounts(); + this.approveActionInstance = new ApproveAccounts(); } /** @@ -183,7 +189,6 @@ public class Accounts extends Observable implements AutopsyVisitableItem { notifyObservers(); } - /** * Get an IINInfo object with details about the given IIN * @@ -888,9 +893,6 @@ public class Accounts extends Observable implements AutopsyVisitableItem { return s; } - @NbBundle.Messages({ - "ApproveAccountsAction.name=Approve Accounts", - "RejectAccountsAction.name=Reject Accounts"}) @Override public Action[] getActions(boolean context) { Action[] actions = super.getActions(context); @@ -901,8 +903,8 @@ public class Accounts extends Observable implements AutopsyVisitableItem { } catch (TskCoreException ex) { LOGGER.log(Level.SEVERE, "Error gettung content by id", ex); } - arrayList.add(new ApproveAccounts(getLookup().lookupAll(BlackboardArtifact.class))); - arrayList.add(new RejectAccounts(getLookup().lookupAll(BlackboardArtifact.class))); + arrayList.add(approveActionInstance); + arrayList.add(rejectActionInstance); return arrayList.toArray(new Action[arrayList.size()]); } } @@ -1107,7 +1109,6 @@ public class Accounts extends Observable implements AutopsyVisitableItem { return iinEnd; } - public long getCount() { return count; } @@ -1226,8 +1227,8 @@ public class Accounts extends Observable implements AutopsyVisitableItem { public Action[] getActions(boolean context) { List actionsList = new ArrayList<>(); actionsList.addAll(Arrays.asList(super.getActions(context))); - actionsList.add(new ApproveAccounts(Collections.singleton(artifact))); - actionsList.add(new RejectAccounts(Collections.singleton(artifact))); + actionsList.add(approveActionInstance); + actionsList.add(rejectActionInstance); return actionsList.toArray(new Action[actionsList.size()]); } @@ -1258,52 +1259,46 @@ public class Accounts extends Observable implements AutopsyVisitableItem { @Override public void actionPerformed(ActionEvent e) { showRejected = !showRejected; - update(); + Accounts.this.update(); } } - private class ApproveAccounts extends AbstractAction { + private abstract class ReviewStatusAction extends AbstractAction { - private final Collection artifacts; + private final BlackboardArtifact.ReviewStatus newStatus; + + private ReviewStatusAction(String displayName, BlackboardArtifact.ReviewStatus newStatus) { + super(displayName); + this.newStatus = newStatus; - ApproveAccounts(Collection artifacts) { - super(Bundle.ApproveAccountsAction_name()); - this.artifacts = artifacts; } @Override public void actionPerformed(ActionEvent e) { - try { - for (BlackboardArtifact artifact : artifacts) { - skCase.setReviewStatus(artifact, BlackboardArtifact.ReviewStatus.APPROVED); + Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class).forEach(artifact -> { + try { + skCase.setReviewStatus(artifact, newStatus); + } catch (TskCoreException ex) { + LOGGER.log(Level.SEVERE, "Error changing artifact review status.", ex); //NON-NLS } - Accounts.this.update(); - } catch (TskCoreException ex) { - LOGGER.log(Level.SEVERE, "Error approving artifacts.", ex); //NON-NLS - } + }); + Accounts.this.update(); } } - private class RejectAccounts extends AbstractAction { + private class ApproveAccounts extends ReviewStatusAction { - private final Collection artifacts; - - RejectAccounts(Collection artifacts) { - super(Bundle.RejectAccountsAction_name()); - this.artifacts = artifacts; + @NbBundle.Messages({"ApproveAccountsAction.name=Approve Accounts"}) + private ApproveAccounts() { + super(Bundle.ApproveAccountsAction_name(), BlackboardArtifact.ReviewStatus.APPROVED); } + } - @Override - public void actionPerformed(ActionEvent e) { - try { - for (BlackboardArtifact artifact : artifacts) { - skCase.setReviewStatus(artifact, BlackboardArtifact.ReviewStatus.REJECTED); - } - Accounts.this.update(); + private class RejectAccounts extends ReviewStatusAction { - } catch (TskCoreException ex) { - LOGGER.log(Level.SEVERE, "Error approving artifacts.", ex); //NON-NLS - } + @NbBundle.Messages({"RejectAccountsAction.name=Reject Accounts"}) + private RejectAccounts() { + super(Bundle.RejectAccountsAction_name(), BlackboardArtifact.ReviewStatus.REJECTED); } } }