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

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