Autopsy  4.17.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
AnalysisPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2020 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.datasourcesummary.ui;
20 
21 import java.util.Arrays;
22 import java.util.List;
23 import java.util.function.Function;
24 import org.apache.commons.lang3.tuple.Pair;
25 import org.openide.util.NbBundle.Messages;
32 import org.sleuthkit.datamodel.DataSource;
33 
38 @Messages({
39  "AnalysisPanel_keyColumn_title=Name",
40  "AnalysisPanel_countColumn_title=Count",
41  "AnalysisPanel_keywordSearchModuleName=Keyword Search"
42 })
43 public class AnalysisPanel extends BaseDataSourceSummaryPanel {
44 
45  private static final long serialVersionUID = 1L;
46 
50  private static final List<ColumnModel<Pair<String, Long>>> DEFAULT_COLUMNS = Arrays.asList(
51  new ColumnModel<>(
52  Bundle.AnalysisPanel_keyColumn_title(),
53  (pair) -> new DefaultCellModel(pair.getKey()),
54  300
55  ),
56  new ColumnModel<>(
57  Bundle.AnalysisPanel_countColumn_title(),
58  (pair) -> new DefaultCellModel(String.valueOf(pair.getValue())),
59  100
60  )
61  );
62 
63  private static final Function<Pair<String, Long>, String> DEFAULT_KEY_PROVIDER = (pair) -> pair.getKey();
64 
65  private final JTablePanel<Pair<String, Long>> hashsetHitsTable
66  = JTablePanel.getJTablePanel(DEFAULT_COLUMNS)
67  .setKeyFunction(DEFAULT_KEY_PROVIDER);
68 
69  private final JTablePanel<Pair<String, Long>> keywordHitsTable
70  = JTablePanel.getJTablePanel(DEFAULT_COLUMNS)
71  .setKeyFunction(DEFAULT_KEY_PROVIDER);
72 
73  private final JTablePanel<Pair<String, Long>> interestingItemsTable
74  = JTablePanel.getJTablePanel(DEFAULT_COLUMNS)
75  .setKeyFunction(DEFAULT_KEY_PROVIDER);
76 
77  private final List<JTablePanel<?>> tables = Arrays.asList(
78  hashsetHitsTable,
79  keywordHitsTable,
80  interestingItemsTable
81  );
82 
83  private final IngestRunningLabel ingestRunningLabel = new IngestRunningLabel();
84 
89  private final List<DataFetchWorker.DataFetchComponents<DataSource, ?>> dataFetchComponents;
90 
94  public AnalysisPanel() {
95  this(new AnalysisSummary());
96  }
97 
98  public AnalysisPanel(AnalysisSummary analysisData) {
99  super(analysisData);
100 
101  // set up data acquisition methods
102  dataFetchComponents = Arrays.asList(
103  // hashset hits loading components
105  (dataSource) -> analysisData.getHashsetCounts(dataSource),
106  (result) -> hashsetHitsTable.showDataFetchResult(result)),
107  // keyword hits loading components
109  (dataSource) -> analysisData.getKeywordCounts(dataSource),
110  (result) -> keywordHitsTable.showDataFetchResult(result)),
111  // interesting item hits loading components
113  (dataSource) -> analysisData.getInterestingItemCounts(dataSource),
114  (result) -> interestingItemsTable.showDataFetchResult(result))
115  );
116 
117  initComponents();
118  }
119 
120  @Override
121  public void close() {
122  ingestRunningLabel.unregister();
123  super.close();
124  }
125 
126  @Override
127  protected void fetchInformation(DataSource dataSource) {
128  fetchInformation(dataFetchComponents, dataSource);
129  }
130 
131  @Override
132  protected void onNewDataSource(DataSource dataSource) {
133  onNewDataSource(dataFetchComponents, tables, dataSource);
134  }
135 
141  @SuppressWarnings("unchecked")
142  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
143  private void initComponents() {
144 
145  javax.swing.JScrollPane mainScrollPane = new javax.swing.JScrollPane();
146  javax.swing.JPanel mainContentPanel = new javax.swing.JPanel();
147  javax.swing.JPanel ingestRunningPanel = ingestRunningLabel;
148  javax.swing.JLabel hashsetHitsLabel = new javax.swing.JLabel();
149  javax.swing.Box.Filler filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2), new java.awt.Dimension(32767, 2));
150  javax.swing.JPanel hashSetHitsPanel = hashsetHitsTable;
151  javax.swing.Box.Filler filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20), new java.awt.Dimension(32767, 20));
152  javax.swing.JLabel keywordHitsLabel = new javax.swing.JLabel();
153  javax.swing.Box.Filler filler4 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2), new java.awt.Dimension(32767, 2));
154  javax.swing.JPanel keywordHitsPanel = keywordHitsTable;
155  javax.swing.Box.Filler filler5 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20), new java.awt.Dimension(32767, 20));
156  javax.swing.JLabel interestingItemLabel = new javax.swing.JLabel();
157  javax.swing.Box.Filler filler6 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2), new java.awt.Dimension(32767, 2));
158  javax.swing.JPanel interestingItemPanel = interestingItemsTable;
159  javax.swing.Box.Filler filler3 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767));
160 
161  mainContentPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10));
162  mainContentPanel.setMaximumSize(new java.awt.Dimension(32767, 452));
163  mainContentPanel.setMinimumSize(new java.awt.Dimension(200, 452));
164  mainContentPanel.setLayout(new javax.swing.BoxLayout(mainContentPanel, javax.swing.BoxLayout.PAGE_AXIS));
165 
166  ingestRunningPanel.setAlignmentX(0.0F);
167  ingestRunningPanel.setMaximumSize(new java.awt.Dimension(32767, 25));
168  ingestRunningPanel.setMinimumSize(new java.awt.Dimension(10, 25));
169  ingestRunningPanel.setPreferredSize(new java.awt.Dimension(10, 25));
170  mainContentPanel.add(ingestRunningPanel);
171 
172  org.openide.awt.Mnemonics.setLocalizedText(hashsetHitsLabel, org.openide.util.NbBundle.getMessage(AnalysisPanel.class, "AnalysisPanel.hashsetHitsLabel.text")); // NOI18N
173  mainContentPanel.add(hashsetHitsLabel);
174  mainContentPanel.add(filler1);
175 
176  hashSetHitsPanel.setAlignmentX(0.0F);
177  hashSetHitsPanel.setMaximumSize(new java.awt.Dimension(32767, 106));
178  hashSetHitsPanel.setMinimumSize(new java.awt.Dimension(10, 106));
179  hashSetHitsPanel.setPreferredSize(new java.awt.Dimension(10, 106));
180  mainContentPanel.add(hashSetHitsPanel);
181  mainContentPanel.add(filler2);
182 
183  org.openide.awt.Mnemonics.setLocalizedText(keywordHitsLabel, org.openide.util.NbBundle.getMessage(AnalysisPanel.class, "AnalysisPanel.keywordHitsLabel.text")); // NOI18N
184  mainContentPanel.add(keywordHitsLabel);
185  mainContentPanel.add(filler4);
186 
187  keywordHitsPanel.setAlignmentX(0.0F);
188  keywordHitsPanel.setMaximumSize(new java.awt.Dimension(32767, 106));
189  keywordHitsPanel.setMinimumSize(new java.awt.Dimension(10, 106));
190  keywordHitsPanel.setPreferredSize(new java.awt.Dimension(10, 106));
191  mainContentPanel.add(keywordHitsPanel);
192  mainContentPanel.add(filler5);
193 
194  org.openide.awt.Mnemonics.setLocalizedText(interestingItemLabel, org.openide.util.NbBundle.getMessage(AnalysisPanel.class, "AnalysisPanel.interestingItemLabel.text")); // NOI18N
195  mainContentPanel.add(interestingItemLabel);
196  mainContentPanel.add(filler6);
197 
198  interestingItemPanel.setAlignmentX(0.0F);
199  interestingItemPanel.setMaximumSize(new java.awt.Dimension(32767, 106));
200  interestingItemPanel.setMinimumSize(new java.awt.Dimension(10, 106));
201  interestingItemPanel.setPreferredSize(new java.awt.Dimension(10, 106));
202  mainContentPanel.add(interestingItemPanel);
203  mainContentPanel.add(filler3);
204 
205  mainScrollPane.setViewportView(mainContentPanel);
206 
207  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
208  this.setLayout(layout);
209  layout.setHorizontalGroup(
210  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
211  .addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 756, Short.MAX_VALUE)
212  );
213  layout.setVerticalGroup(
214  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
215  .addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
216  );
217  }// </editor-fold>//GEN-END:initComponents
218 
219 
220  // Variables declaration - do not modify//GEN-BEGIN:variables
221  // End of variables declaration//GEN-END:variables
222 }
List< Pair< String, Long > > getInterestingItemCounts(DataSource dataSource)
List< Pair< String, Long > > getHashsetCounts(DataSource dataSource)
static< T > JTablePanel< T > getJTablePanel(List< ColumnModel< T >> columns)
List< Pair< String, Long > > getKeywordCounts(DataSource dataSource)
final List< DataFetchWorker.DataFetchComponents< DataSource,?> > dataFetchComponents

Copyright © 2012-2021 Basis Technology. Generated on: Tue Jan 19 2021
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.