Autopsy  4.5.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
HashDbCreateDatabaseDialog.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2013 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.modules.hashdatabase;
20 
21 import java.awt.Dimension;
22 import java.awt.Toolkit;
23 import java.io.File;
24 import java.io.IOException;
25 import java.nio.file.Paths;
26 import java.util.List;
27 import java.util.logging.Level;
28 import javax.swing.JFileChooser;
29 import javax.swing.JFrame;
30 import javax.swing.JOptionPane;
31 import org.apache.commons.io.FilenameUtils;
32 import org.openide.util.NbBundle;
33 import org.openide.windows.WindowManager;
47 import org.sleuthkit.datamodel.TskData;
48 import org.sleuthkit.datamodel.TskCoreException;
49 
55 final class HashDbCreateDatabaseDialog extends javax.swing.JDialog {
56 
57  private static final String DEFAULT_FILE_NAME = NbBundle
58  .getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.defaultFileName");
59  private JFileChooser fileChooser = null;
60  private HashDb newHashDb = null;
61  private final static String LAST_FILE_PATH_KEY = "HashDbCreate_Path";
62  private EamOrganization selectedOrg = null;
63  private List<EamOrganization> orgs = null;
64 
70  HashDbCreateDatabaseDialog() {
71  super((JFrame) WindowManager.getDefault().getMainWindow(), NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.createHashDbMsg"), true);
72  initFileChooser();
73  initComponents();
74  enableComponents();
75  display();
76  }
77 
83  HashDb getHashDatabase() {
84  return newHashDb;
85  }
86 
87  private void initFileChooser() {
88  fileChooser = new JFileChooser() {
89  @Override
90  public void approveSelection() {
91  File selectedFile = getSelectedFile();
92  if (!FilenameUtils.getExtension(selectedFile.getName()).equalsIgnoreCase(HashDbManager.getHashDatabaseFileExtension())) {
93  if (JOptionPane.showConfirmDialog(this,
94  NbBundle.getMessage(this.getClass(),
95  "HashDbCreateDatabaseDialog.hashDbMustHaveFileExtensionMsg",
96  HashDbManager.getHashDatabaseFileExtension()),
97  NbBundle.getMessage(this.getClass(),
98  "HashDbCreateDatabaseDialog.fileNameErr"),
99  JOptionPane.OK_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION) {
100  cancelSelection();
101  }
102  return;
103  }
104  if (selectedFile.exists()) {
105  if (JOptionPane.showConfirmDialog(this,
106  NbBundle.getMessage(this.getClass(),
107  "HashDbCreateDatabaseDialog.fileNameAlreadyExistsMsg"),
108  NbBundle.getMessage(this.getClass(),
109  "HashDbCreateDatabaseDialog.fileExistsErr"),
110  JOptionPane.OK_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION) {
111  cancelSelection();
112  }
113  return;
114  }
115  super.approveSelection();
116  }
117  };
118  fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
119  fileChooser.setDragEnabled(false);
120  fileChooser.setMultiSelectionEnabled(false);
121  }
122 
123  private void display() {
124  Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
125  setLocation((screenDimension.width - getSize().width) / 2, (screenDimension.height - getSize().height) / 2);
126  setVisible(true);
127  }
128 
129  private void enableComponents(){
130 
131  if(! EamDb.isEnabled()){
132  centralRepoRadioButton.setEnabled(false);
133  fileTypeRadioButton.setSelected(true);
134  } else {
135  populateCombobox();
136  }
137 
138  boolean isFileType = fileTypeRadioButton.isSelected();
139 
140  // Type type only
141  databasePathLabel.setEnabled(isFileType);
142  databasePathTextField.setEnabled(isFileType);
143  saveAsButton.setEnabled(isFileType);
144 
145  // Central repo only
146  lbOrg.setEnabled(! isFileType);
147  orgButton.setEnabled(! isFileType);
148  orgComboBox.setEnabled(! isFileType);
149  }
150 
151  @NbBundle.Messages({"HashDbCreateDatabaseDialog.populateOrgsError.message=Failure loading organizations."})
152  private void populateCombobox() {
153  orgComboBox.removeAllItems();
154  try {
155  EamDb dbManager = EamDb.getInstance();
156  orgs = dbManager.getOrganizations();
157  orgs.forEach((org) -> {
158  orgComboBox.addItem(org.getName());
159  if(EamDbUtil.isDefaultOrg(org)){
160  orgComboBox.setSelectedItem(org.getName());
161  selectedOrg = org;
162  }
163  });
164  if ((selectedOrg == null) && (!orgs.isEmpty())) {
165  selectedOrg = orgs.get(0);
166  }
167  } catch (EamDbException ex) {
168  JOptionPane.showMessageDialog(null, Bundle.HashDbCreateDatabaseDialog_populateOrgsError_message());
169  Logger.getLogger(ImportCentralRepoDbProgressDialog.class.getName()).log(Level.SEVERE, "Failure loading organizations", ex);
170  }
171  }
172 
178  @SuppressWarnings("unchecked")
179  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
180  private void initComponents() {
181 
182  buttonGroup1 = new javax.swing.ButtonGroup();
183  storageTypeButtonGroup = new javax.swing.ButtonGroup();
184  saveAsButton = new javax.swing.JButton();
185  cancelButton = new javax.swing.JButton();
186  knownRadioButton = new javax.swing.JRadioButton();
187  knownBadRadioButton = new javax.swing.JRadioButton();
188  databasePathLabel = new javax.swing.JLabel();
189  hashSetNameTextField = new javax.swing.JTextField();
190  jLabel2 = new javax.swing.JLabel();
191  sendIngestMessagesCheckbox = new javax.swing.JCheckBox();
192  jLabel3 = new javax.swing.JLabel();
193  databasePathTextField = new javax.swing.JTextField();
194  okButton = new javax.swing.JButton();
195  jLabel4 = new javax.swing.JLabel();
196  fileTypeRadioButton = new javax.swing.JRadioButton();
197  centralRepoRadioButton = new javax.swing.JRadioButton();
198  lbOrg = new javax.swing.JLabel();
199  orgComboBox = new javax.swing.JComboBox<>();
200  orgButton = new javax.swing.JButton();
201 
202  setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
203 
204  org.openide.awt.Mnemonics.setLocalizedText(saveAsButton, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.saveAsButton.text")); // NOI18N
205  saveAsButton.addActionListener(new java.awt.event.ActionListener() {
206  public void actionPerformed(java.awt.event.ActionEvent evt) {
207  saveAsButtonActionPerformed(evt);
208  }
209  });
210 
211  org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.cancelButton.text")); // NOI18N
212  cancelButton.addActionListener(new java.awt.event.ActionListener() {
213  public void actionPerformed(java.awt.event.ActionEvent evt) {
214  cancelButtonActionPerformed(evt);
215  }
216  });
217 
218  buttonGroup1.add(knownRadioButton);
219  org.openide.awt.Mnemonics.setLocalizedText(knownRadioButton, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.knownRadioButton.text")); // NOI18N
220  knownRadioButton.addActionListener(new java.awt.event.ActionListener() {
221  public void actionPerformed(java.awt.event.ActionEvent evt) {
222  knownRadioButtonActionPerformed(evt);
223  }
224  });
225 
226  buttonGroup1.add(knownBadRadioButton);
227  knownBadRadioButton.setSelected(true);
228  org.openide.awt.Mnemonics.setLocalizedText(knownBadRadioButton, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.knownBadRadioButton.text")); // NOI18N
229  knownBadRadioButton.addActionListener(new java.awt.event.ActionListener() {
230  public void actionPerformed(java.awt.event.ActionEvent evt) {
231  knownBadRadioButtonActionPerformed(evt);
232  }
233  });
234 
235  org.openide.awt.Mnemonics.setLocalizedText(databasePathLabel, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.databasePathLabel.text")); // NOI18N
236 
237  hashSetNameTextField.setText(org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.hashSetNameTextField.text")); // NOI18N
238 
239  org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.jLabel2.text")); // NOI18N
240 
241  sendIngestMessagesCheckbox.setSelected(true);
242  org.openide.awt.Mnemonics.setLocalizedText(sendIngestMessagesCheckbox, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.sendIngestMessagesCheckbox.text")); // NOI18N
243  sendIngestMessagesCheckbox.addActionListener(new java.awt.event.ActionListener() {
244  public void actionPerformed(java.awt.event.ActionEvent evt) {
245  sendIngestMessagesCheckboxActionPerformed(evt);
246  }
247  });
248 
249  org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.jLabel3.text")); // NOI18N
250 
251  databasePathTextField.setEditable(false);
252  databasePathTextField.setText(org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.databasePathTextField.text")); // NOI18N
253 
254  org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.okButton.text")); // NOI18N
255  okButton.addActionListener(new java.awt.event.ActionListener() {
256  public void actionPerformed(java.awt.event.ActionEvent evt) {
257  okButtonActionPerformed(evt);
258  }
259  });
260 
261  org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.jLabel4.text")); // NOI18N
262 
263  storageTypeButtonGroup.add(fileTypeRadioButton);
264  fileTypeRadioButton.setSelected(true);
265  org.openide.awt.Mnemonics.setLocalizedText(fileTypeRadioButton, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.fileTypeRadioButton.text")); // NOI18N
266  fileTypeRadioButton.addActionListener(new java.awt.event.ActionListener() {
267  public void actionPerformed(java.awt.event.ActionEvent evt) {
268  fileTypeRadioButtonActionPerformed(evt);
269  }
270  });
271 
272  storageTypeButtonGroup.add(centralRepoRadioButton);
273  org.openide.awt.Mnemonics.setLocalizedText(centralRepoRadioButton, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.centralRepoRadioButton.text")); // NOI18N
274  centralRepoRadioButton.addActionListener(new java.awt.event.ActionListener() {
275  public void actionPerformed(java.awt.event.ActionEvent evt) {
276  centralRepoRadioButtonActionPerformed(evt);
277  }
278  });
279 
280  org.openide.awt.Mnemonics.setLocalizedText(lbOrg, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.lbOrg.text")); // NOI18N
281 
282  orgComboBox.addActionListener(new java.awt.event.ActionListener() {
283  public void actionPerformed(java.awt.event.ActionEvent evt) {
284  orgComboBoxActionPerformed(evt);
285  }
286  });
287 
288  org.openide.awt.Mnemonics.setLocalizedText(orgButton, org.openide.util.NbBundle.getMessage(HashDbCreateDatabaseDialog.class, "HashDbCreateDatabaseDialog.orgButton.text")); // NOI18N
289  orgButton.addActionListener(new java.awt.event.ActionListener() {
290  public void actionPerformed(java.awt.event.ActionEvent evt) {
291  orgButtonActionPerformed(evt);
292  }
293  });
294 
295  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
296  getContentPane().setLayout(layout);
297  layout.setHorizontalGroup(
298  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
299  .addGroup(layout.createSequentialGroup()
300  .addContainerGap()
301  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
302  .addComponent(sendIngestMessagesCheckbox)
303  .addComponent(jLabel2)
304  .addGroup(layout.createSequentialGroup()
305  .addGap(20, 20, 20)
306  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
307  .addComponent(knownRadioButton)
308  .addComponent(knownBadRadioButton)))
309  .addGroup(layout.createSequentialGroup()
310  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
311  .addGroup(layout.createSequentialGroup()
312  .addComponent(lbOrg)
313  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
314  .addComponent(orgComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
315  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
316  .addComponent(orgButton, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE))
317  .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
318  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
319  .addComponent(jLabel3)
320  .addComponent(jLabel4)
321  .addComponent(databasePathLabel))
322  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
323  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
324  .addGroup(layout.createSequentialGroup()
325  .addComponent(fileTypeRadioButton)
326  .addGap(22, 22, 22)
327  .addComponent(centralRepoRadioButton))
328  .addComponent(hashSetNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 305, Short.MAX_VALUE)
329  .addComponent(databasePathTextField))))
330  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
331  .addComponent(saveAsButton)))
332  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
333  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
334  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
335  .addComponent(okButton)
336  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
337  .addComponent(cancelButton)
338  .addContainerGap())
339  );
340 
341  layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cancelButton, okButton});
342 
343  layout.setVerticalGroup(
344  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
345  .addGroup(layout.createSequentialGroup()
346  .addContainerGap()
347  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
348  .addComponent(jLabel4)
349  .addComponent(fileTypeRadioButton)
350  .addComponent(centralRepoRadioButton))
351  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
352  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
353  .addComponent(jLabel3)
354  .addComponent(hashSetNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
355  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
356  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
357  .addComponent(databasePathLabel)
358  .addComponent(databasePathTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
359  .addComponent(saveAsButton))
360  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
361  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
362  .addComponent(lbOrg)
363  .addComponent(orgComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
364  .addComponent(orgButton))
365  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
366  .addComponent(jLabel2)
367  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
368  .addComponent(knownRadioButton)
369  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
370  .addComponent(knownBadRadioButton)
371  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
372  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
373  .addGroup(layout.createSequentialGroup()
374  .addComponent(sendIngestMessagesCheckbox)
375  .addGap(0, 27, Short.MAX_VALUE))
376  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
377  .addGap(0, 0, Short.MAX_VALUE)
378  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
379  .addComponent(cancelButton)
380  .addComponent(okButton))))
381  .addContainerGap())
382  );
383 
384  pack();
385  }// </editor-fold>//GEN-END:initComponents
386 
387  private void knownRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_knownRadioButtonActionPerformed
388  sendIngestMessagesCheckbox.setSelected(false);
389  sendIngestMessagesCheckbox.setEnabled(false);
390  }//GEN-LAST:event_knownRadioButtonActionPerformed
391 
392  private void knownBadRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_knownBadRadioButtonActionPerformed
393  sendIngestMessagesCheckbox.setSelected(true);
394  sendIngestMessagesCheckbox.setEnabled(true);
395  }//GEN-LAST:event_knownBadRadioButtonActionPerformed
396 
397  private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
398  dispose();
399  }//GEN-LAST:event_cancelButtonActionPerformed
400 
401  private void saveAsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAsButtonActionPerformed
402  try {
403  String lastBaseDirectory = Paths.get(PlatformUtil.getUserConfigDirectory(), "HashDatabases").toString();
404  if (ModuleSettings.settingExists(ModuleSettings.MAIN_SETTINGS, LAST_FILE_PATH_KEY)) {
405  lastBaseDirectory = ModuleSettings.getConfigSetting(ModuleSettings.MAIN_SETTINGS, LAST_FILE_PATH_KEY);
406  }
407  StringBuilder path = new StringBuilder();
408  path.append(lastBaseDirectory);
409  File hashDbFolder = new File(path.toString());
410  // create the folder if it doesn't exist
411  if (!hashDbFolder.exists()){
412  hashDbFolder.mkdir();
413  }
414  if (!hashSetNameTextField.getText().isEmpty()) {
415  path.append(File.separator).append(hashSetNameTextField.getText());
416  } else {
417  path.append(File.separator).append(DEFAULT_FILE_NAME);
418  }
419  path.append(".").append(HashDbManager.getHashDatabaseFileExtension());
420  fileChooser.setSelectedFile(new File(path.toString()));
421  if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
422  File databaseFile = fileChooser.getSelectedFile();
423  databasePathTextField.setText(databaseFile.getCanonicalPath());
424  ModuleSettings.setConfigSetting(ModuleSettings.MAIN_SETTINGS, LAST_FILE_PATH_KEY, databaseFile.getParent());
425  }
426  } catch (IOException ex) {
427  Logger.getLogger(HashDbCreateDatabaseDialog.class.getName()).log(Level.WARNING, "Couldn't get selected file path.", ex); //NON-NLS
428  }
429  }//GEN-LAST:event_saveAsButtonActionPerformed
430 
431  @NbBundle.Messages({"HashDbCreateDatabaseDialog.missingOrg=An organization must be selected",
432  "HashDbCreateDatabaseDialog.duplicateName=A hashset with this name already exists",
433  "HashDbCreateDatabaseDialog.databaseLookupError=Error accessing central repository",
434  "HashDbCreateDatabaseDialog.databaseCreationError=Error creating new hash set"
435  })
436  private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
437  // Note that the error handlers in this method call return without disposing of the
438  // dialog to allow the user to try again, if desired.
439 
440  if (hashSetNameTextField.getText().isEmpty()) {
441  JOptionPane.showMessageDialog(this,
442  NbBundle.getMessage(this.getClass(),
443  "HashDbCreateDatabaseDialog.mustEnterHashSetNameMsg"),
444  NbBundle.getMessage(this.getClass(),
445  "HashDbCreateDatabaseDialog.createHashDbErr"),
446  JOptionPane.ERROR_MESSAGE);
447  return;
448  }
449 
450  if(fileTypeRadioButton.isSelected()){
451  if (databasePathTextField.getText().isEmpty()) {
452  JOptionPane.showMessageDialog(this,
453  NbBundle.getMessage(this.getClass(),
454  "HashDbCreateDatabaseDialog.mustEnterHashDbPathMsg"),
455  NbBundle.getMessage(this.getClass(),
456  "HashDbCreateDatabaseDialog.createHashDbErr"),
457  JOptionPane.ERROR_MESSAGE);
458  return;
459  }
460  } else {
461  if(selectedOrg == null){
462  JOptionPane.showMessageDialog(this,
463  NbBundle.getMessage(this.getClass(),
464  "HashDbCreateDatabaseDialog.missingOrg"),
465  NbBundle.getMessage(this.getClass(),
466  "HashDbCreateDatabaseDialog.createHashDbErr"),
467  JOptionPane.ERROR_MESSAGE);
468  return;
469  }
470  }
471 
472  KnownFilesType type;
473  TskData.FileKnown fileKnown;
474  if (knownRadioButton.isSelected()) {
475  type = KnownFilesType.KNOWN;
476  fileKnown = TskData.FileKnown.KNOWN;
477  } else {
478  type = KnownFilesType.KNOWN_BAD;
479  fileKnown = TskData.FileKnown.BAD;
480  }
481 
482  String errorMessage = NbBundle
483  .getMessage(this.getClass(), "HashDbCreateDatabaseDialog.errMsg.hashDbCreationErr");
484 
485  if(fileTypeRadioButton.isSelected()){
486  try {
487  newHashDb = HashDbManager.getInstance().addNewHashDatabaseNoSave(hashSetNameTextField.getText(), fileChooser.getSelectedFile().getCanonicalPath(), true, sendIngestMessagesCheckbox.isSelected(), type);
488  } catch (IOException ex) {
489  Logger.getLogger(HashDbCreateDatabaseDialog.class.getName()).log(Level.WARNING, errorMessage, ex);
490  JOptionPane.showMessageDialog(this,
491  NbBundle.getMessage(this.getClass(),
492  "HashDbCreateDatabaseDialog.cannotCreateFileAtLocMsg"),
493  NbBundle.getMessage(this.getClass(),
494  "HashDbCreateDatabaseDialog.createHashDbErr"),
495  JOptionPane.ERROR_MESSAGE);
496  return;
497  } catch (HashDbManagerException ex) {
498  Logger.getLogger(HashDbCreateDatabaseDialog.class.getName()).log(Level.WARNING, errorMessage, ex);
499  JOptionPane.showMessageDialog(this,
500  ex.getMessage(),
501  NbBundle.getMessage(this.getClass(),
502  "HashDbCreateDatabaseDialog.createHashDbErr"),
503  JOptionPane.ERROR_MESSAGE);
504  return;
505  }
506  } else {
507  // Check if a hash set with the same name/version already exists
508  try{
509  if(EamDb.getInstance().referenceSetExists(hashSetNameTextField.getText(), "")){
510  JOptionPane.showMessageDialog(this,
511  NbBundle.getMessage(this.getClass(),
512  "HashDbCreateDatabaseDialog.duplicateName"),
513  NbBundle.getMessage(this.getClass(),
514  "HashDbCreateDatabaseDialog.createHashDbErr"),
515  JOptionPane.ERROR_MESSAGE);
516  return;
517  }
518  } catch (EamDbException ex){
519  Logger.getLogger(HashDbImportDatabaseDialog.class.getName()).log(Level.SEVERE, "Error looking up reference set", ex);
520  JOptionPane.showMessageDialog(this,
521  NbBundle.getMessage(this.getClass(),
522  "HashDbCreateDatabaseDialog.databaseLookupError"),
523  NbBundle.getMessage(this.getClass(),
524  "HashDbCreateDatabaseDialog.createHashDbErr"),
525  JOptionPane.ERROR_MESSAGE);
526  return;
527  }
528 
529  try{
530  int referenceSetID = EamDb.getInstance().newReferenceSet(new EamGlobalSet(selectedOrg.getOrgID(), hashSetNameTextField.getText(),
531  "", fileKnown, false, EamDb.getInstance().getCorrelationTypeById(CorrelationAttribute.FILES_TYPE_ID)));
532  newHashDb = HashDbManager.getInstance().addExistingCentralRepoHashSet(hashSetNameTextField.getText(),
533  "", referenceSetID,
534  true, sendIngestMessagesCheckbox.isSelected(), type, false);
535  } catch (EamDbException | TskCoreException ex){
536  Logger.getLogger(HashDbImportDatabaseDialog.class.getName()).log(Level.SEVERE, "Error creating new reference set", ex);
537  JOptionPane.showMessageDialog(this,
538  NbBundle.getMessage(this.getClass(),
539  "HashDbCreateDatabaseDialog.databaseCreationError"),
540  NbBundle.getMessage(this.getClass(),
541  "HashDbCreateDatabaseDialog.createHashDbErr"),
542  JOptionPane.ERROR_MESSAGE);
543  return;
544  }
545  }
546 
547  dispose();
548  }//GEN-LAST:event_okButtonActionPerformed
549 
550  private void sendIngestMessagesCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sendIngestMessagesCheckboxActionPerformed
551  // TODO add your handling code here:
552  }//GEN-LAST:event_sendIngestMessagesCheckboxActionPerformed
553 
554  private void orgButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_orgButtonActionPerformed
555  ManageOrganizationsDialog dialog = new ManageOrganizationsDialog();
556  // update the combobox options
557  if (dialog.isChanged()) {
558  populateCombobox();
559  }
560  }//GEN-LAST:event_orgButtonActionPerformed
561 
562  private void orgComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_orgComboBoxActionPerformed
563  if (null == orgComboBox.getSelectedItem()) return;
564  String orgName = this.orgComboBox.getSelectedItem().toString();
565  for (EamOrganization org : orgs) {
566  if (org.getName().equals(orgName)) {
567  selectedOrg = org;
568  return;
569  }
570  }
571  }//GEN-LAST:event_orgComboBoxActionPerformed
572 
573  private void fileTypeRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileTypeRadioButtonActionPerformed
574  enableComponents();
575  }//GEN-LAST:event_fileTypeRadioButtonActionPerformed
576 
577  private void centralRepoRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_centralRepoRadioButtonActionPerformed
578  enableComponents();
579  }//GEN-LAST:event_centralRepoRadioButtonActionPerformed
580 
581  // Variables declaration - do not modify//GEN-BEGIN:variables
582  private javax.swing.ButtonGroup buttonGroup1;
583  private javax.swing.JButton cancelButton;
584  private javax.swing.JRadioButton centralRepoRadioButton;
585  private javax.swing.JLabel databasePathLabel;
586  private javax.swing.JTextField databasePathTextField;
587  private javax.swing.JRadioButton fileTypeRadioButton;
588  private javax.swing.JTextField hashSetNameTextField;
589  private javax.swing.JLabel jLabel2;
590  private javax.swing.JLabel jLabel3;
591  private javax.swing.JLabel jLabel4;
592  private javax.swing.JRadioButton knownBadRadioButton;
593  private javax.swing.JRadioButton knownRadioButton;
594  private javax.swing.JLabel lbOrg;
595  private javax.swing.JButton okButton;
596  private javax.swing.JButton orgButton;
597  private javax.swing.JComboBox<String> orgComboBox;
598  private javax.swing.JButton saveAsButton;
599  private javax.swing.JCheckBox sendIngestMessagesCheckbox;
600  private javax.swing.ButtonGroup storageTypeButtonGroup;
601  // End of variables declaration//GEN-END:variables
602 }

Copyright © 2012-2016 Basis Technology. Generated on: Tue Feb 20 2018
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.