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

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.