diff --git a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.form b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.form index 2c233caa50..9ae257607d 100644 --- a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.form +++ b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.form @@ -36,7 +36,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -91,11 +91,11 @@ - - - + + + @@ -119,7 +119,7 @@ - + @@ -217,11 +217,11 @@ - - - + + + @@ -233,7 +233,7 @@ - + @@ -245,7 +245,7 @@ - + diff --git a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.java b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.java index 0767b944ab..30d211f4ed 100644 --- a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.java +++ b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchConfigPanel.java @@ -160,7 +160,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme } }); - jSplitPane1.setDividerLocation(300); + jSplitPane1.setDividerLocation(430); jLabel1.setText(org.openide.util.NbBundle.getMessage(FileExtMismatchConfigPanel.class, "FileExtMismatchConfigPanel.jLabel1.text")); // NOI18N @@ -202,16 +202,16 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addGroup(mimePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addGroup(mimePanelLayout.createSequentialGroup() - .addGroup(mimePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(mimePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1) .addGroup(mimePanelLayout.createSequentialGroup() .addComponent(userTypeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(addTypeButton)) - .addComponent(removeTypeButton) - .addComponent(mimeErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(mimeRemoveErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(0, 66, Short.MAX_VALUE))) + .addComponent(removeTypeButton)) + .addGap(0, 196, Short.MAX_VALUE)) + .addComponent(mimeErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(mimeRemoveErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); mimePanelLayout.setVerticalGroup( @@ -231,7 +231,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addComponent(removeTypeButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(mimeRemoveErrLabel) - .addContainerGap(77, Short.MAX_VALUE)) + .addContainerGap(45, Short.MAX_VALUE)) ); jSplitPane1.setLeftComponent(mimePanel); @@ -282,10 +282,10 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addGroup(extensionPanelLayout.createSequentialGroup() .addComponent(userExtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(addExtButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(extErrorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(extRemoveErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(0, 31, Short.MAX_VALUE))) + .addComponent(addExtButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGap(0, 66, Short.MAX_VALUE)) + .addComponent(extErrorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(extRemoveErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); extensionPanelLayout.setVerticalGroup( @@ -294,7 +294,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addContainerGap() .addComponent(extHeaderLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 313, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(extensionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(userExtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -305,7 +305,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme .addComponent(removeExtButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(extRemoveErrLabel) - .addContainerGap(15, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jSplitPane1.setRightComponent(extensionPanel); @@ -332,7 +332,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(jSplitPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 460, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jSplitPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(saveButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -356,6 +356,12 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme return; } + if (currentExtensions.contains(newExt)) { + extErrorLabel.setForeground(Color.red); + extErrorLabel.setText("Extension already exists!"); + return; + } + ArrayList editedExtensions = new ArrayList<>(Arrays.asList(editableMap.get(selectedMime))); editedExtensions.add(newExt); @@ -386,6 +392,12 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme return; } + if (mimeList.contains(newMime)) { + mimeErrLabel.setForeground(Color.red); + mimeErrLabel.setText("MIME type already exists!"); + return; + } + editableMap.put(newMime, new String[0]); // Refresh table @@ -461,12 +473,21 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme private void updateMimeList() { mimeList = new ArrayList<>(editableMap.keySet()); - Collections.sort(mimeList); + if (mimeList.size() > 0) { + Collections.sort(mimeList); + } } private void updateExtList() { - currentExtensions = new ArrayList<>(Arrays.asList(editableMap.get(selectedMime))); - Collections.sort(currentExtensions); + String[] temp = editableMap.get(selectedMime); + if (temp != null) { + currentExtensions = new ArrayList<>(Arrays.asList(temp)); + if (temp.length > 0) { + Collections.sort(currentExtensions); + } + } else { + currentExtensions = null; + } } @Override @@ -475,6 +496,7 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme // to save it back to the file after making changes. editableMap = FileExtMismatchXML.getDefault().load(); updateMimeList(); + updateExtList(); } @Override @@ -499,8 +521,8 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme } public void cancel() { - //FileExtMismatchXML.getDefault().reload(); clearErrLabels(); + load(); // The next time this panel is opened, we want it to be fresh } public void ok() { @@ -512,10 +534,10 @@ public final class FileExtMismatchConfigPanel extends javax.swing.JPanel impleme } } clearErrLabels(); + load(); // The next time this panel is opened, we want it to be fresh } boolean valid() { - // TODO check whether form is consistent and complete return true; } diff --git a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchXML.java b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchXML.java index 27002bcebe..8de27f4b6f 100644 --- a/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchXML.java +++ b/FileExtMismatch/src/org/sleuthkit/autopsy/fileextmismatch/FileExtMismatchXML.java @@ -123,6 +123,8 @@ public class FileExtMismatchXML { } String[] sarray = (String[])extStrings.toArray(new String[0]); sigTypeToExtMap.put(mimetype, sarray); + } else { + sigTypeToExtMap.put(mimetype, null); //ok to have an empty type (the ingest module will not use it) } } @@ -159,13 +161,15 @@ public class FileExtMismatchXML { Element sigEl = doc.createElement(SIG_EL); sigEl.setAttribute(SIG_MIMETYPE_ATTR, key); - ArrayList extList = new ArrayList<>(Arrays.asList(sigTypeToExtMap.get(key))); - for (String ext : extList) { - Element extEl = doc.createElement(EXT_EL); - extEl.setTextContent(ext); - sigEl.appendChild(extEl); + String[] extArray = sigTypeToExtMap.get(key); + if (extArray != null) { + ArrayList extList = new ArrayList<>(Arrays.asList(extArray)); + for (String ext : extList) { + Element extEl = doc.createElement(EXT_EL); + extEl.setTextContent(ext); + sigEl.appendChild(extEl); + } } - rootEl.appendChild(sigEl); }