1916 - adjust names and comments in LocalFilesDSProcessor

This commit is contained in:
William Schaefer 2018-02-14 13:57:56 -05:00
parent addefffabc
commit 0f7814528e
3 changed files with 75 additions and 76 deletions

View File

@ -44,10 +44,10 @@ import org.sleuthkit.autopsy.coreutils.PlatformUtil;
import org.sleuthkit.autopsy.datasourceprocessors.AutoIngestDataSourceProcessor; import org.sleuthkit.autopsy.datasourceprocessors.AutoIngestDataSourceProcessor;
/** /**
* A local/logical files and/or directories data source processor that * A local/logical files/logical evidence file(.lo1)/or directories data source
* implements the DataSourceProcessor service provider interface to allow * processor that implements the DataSourceProcessor service provider interface
* integration with the add data source wizard. It also provides a run method * to allow integration with the add data source wizard. It also provides a run
* overload to allow it to be used independently of the wizard. * method overload to allow it to be used independently of the wizard.
*/ */
@ServiceProviders(value = { @ServiceProviders(value = {
@ServiceProvider(service = DataSourceProcessor.class) @ServiceProvider(service = DataSourceProcessor.class)
@ -159,7 +159,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat
if (configPanel.contentsAreL01()) { if (configPanel.contentsAreL01()) {
try { try {
//if the L01 option was chosen //if the L01 option was chosen
localFilePaths = extractL01Contents(localFilePaths); localFilePaths = extractLogicalEvidenceFileContents(localFilePaths);
} catch (L01Exception ex) { } catch (L01Exception ex) {
//contents of l01 could not be extracted don't add data source or run ingest //contents of l01 could not be extracted don't add data source or run ingest
List<String> errors = new ArrayList<>(); List<String> errors = new ArrayList<>();
@ -172,11 +172,23 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat
run(UUID.randomUUID().toString(), configPanel.getFileSetName(), localFilePaths, progressMonitor, callback); run(UUID.randomUUID().toString(), configPanel.getFileSetName(), localFilePaths, progressMonitor, callback);
} }
private List<String> extractL01Contents(List<String> l01FilePaths) throws L01Exception { /**
* Extract the contents of the logical evidence files and return the paths
* to those extracted files.
*
* @param logicalEvidenceFilePaths
*
* @return extractedPaths - the paths to all the files extracted from the
* logical evidence files
*
* @throws
* org.sleuthkit.autopsy.casemodule.LocalFilesDSProcessor.L01Exception
*/
private List<String> extractLogicalEvidenceFileContents(List<String> logicalEvidenceFilePaths) throws L01Exception {
List<String> extractedPaths = new ArrayList<>(); List<String> extractedPaths = new ArrayList<>();
Path ewfexportPath; Path ewfexportPath;
ewfexportPath = locateEwfexportExecutable(); ewfexportPath = locateEwfexportExecutable();
for (String l01Path : l01FilePaths) { for (String l01Path : logicalEvidenceFilePaths) {
List<String> command = new ArrayList<>(); List<String> command = new ArrayList<>();
command.add(ewfexportPath.toAbsolutePath().toString()); command.add(ewfexportPath.toAbsolutePath().toString());
command.add("-f"); command.add("-f");
@ -218,10 +230,22 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat
return extractedPaths; return extractedPaths;
} }
static FileFilter getLogicalEvidenceFilter(){ /**
* Get a file filter for logical evidence files.
*
* @return LOGICAL_EVIDENCE_FILTER
*/
static FileFilter getLogicalEvidenceFilter() {
return LOGICAL_EVIDENCE_FILTER; return LOGICAL_EVIDENCE_FILTER;
} }
/**
* Gets the path for the ewfexport executable.
*
* @return the path to ewfexport.exe
*
* @throws org.sleuthkit.autopsy.casemodule.LocalFilesDSProcessor.L01Exception
*/
private Path locateEwfexportExecutable() throws L01Exception { private Path locateEwfexportExecutable() throws L01Exception {
// Must be running under a Windows operating system. // Must be running under a Windows operating system.
if (!PlatformUtil.isWindowsOS()) { if (!PlatformUtil.isWindowsOS()) {
@ -254,7 +278,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat
if (!ewfexport.canExecute()) { if (!ewfexport.canExecute()) {
throw new LocalFilesDSProcessor.L01Exception("EWF export executable can not be executed"); throw new LocalFilesDSProcessor.L01Exception("EWF export executable can not be executed");
} }
return executablePath; return executablePath;
} }
@ -315,7 +339,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat
// Local files DSP can process any file by simply adding it as a logical file. // Local files DSP can process any file by simply adding it as a logical file.
// It should return lowest possible non-zero confidence level and be treated // It should return lowest possible non-zero confidence level and be treated
// as the "option of last resort" for auto ingest purposes // as the "option of last resort" for auto ingest purposes
this.localFilePaths = Arrays.asList(new String[]{dataSourcePath.toString()}); this.localFilePaths = Arrays.asList(new String[]{dataSourcePath.toString()});
//If there is only 1 file check if it is an L01 file and if it is extract the //If there is only 1 file check if it is an L01 file and if it is extract the
//contents and replace the paths, if the contents can't be extracted return 0 //contents and replace the paths, if the contents can't be extracted return 0
@ -324,7 +348,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat
if (LOGICAL_EVIDENCE_FILTER.accept(new File(path))) { if (LOGICAL_EVIDENCE_FILTER.accept(new File(path))) {
try { try {
//if the L01 option was chosen //if the L01 option was chosen
localFilePaths = extractL01Contents(localFilePaths); localFilePaths = extractLogicalEvidenceFileContents(localFilePaths);
} catch (L01Exception ex) { } catch (L01Exception ex) {
logger.log(Level.WARNING, "File extension was .l01 but contents of logical evidence file were unable to be extracted", ex); logger.log(Level.WARNING, "File extension was .l01 but contents of logical evidence file were unable to be extracted", ex);
//contents of l01 could not be extracted don't add data source or run ingest //contents of l01 could not be extracted don't add data source or run ingest

View File

@ -1,23 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> <Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<NonVisualComponents>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="jTextArea1">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="rows" type="int" value="5"/>
</Properties>
</Component>
</SubComponents>
</Container>
</NonVisualComponents>
<AuxValues> <AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
@ -37,9 +20,9 @@
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" max="-2" attributes="0"/> <EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jComboBox1" min="-2" max="-2" attributes="0"/> <Component id="dspSubtypeComboBox" min="-2" max="-2" attributes="0"/>
</Group> </Group>
<Component id="jPanel1" alignment="0" min="-2" pref="466" max="-2" attributes="0"/> <Component id="dspSubtypePanel" alignment="0" min="-2" pref="466" max="-2" attributes="0"/>
</Group> </Group>
<EmptySpace max="32767" attributes="0"/> <EmptySpace max="32767" attributes="0"/>
</Group> </Group>
@ -48,16 +31,16 @@
<DimensionLayout dim="1"> <DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0">
<Component id="jComboBox1" min="-2" max="-2" attributes="0"/> <Component id="dspSubtypeComboBox" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
<Component id="jPanel1" min="-2" max="-2" attributes="0"/> <Component id="dspSubtypePanel" min="-2" max="-2" attributes="0"/>
<EmptySpace min="0" pref="0" max="-2" attributes="0"/> <EmptySpace min="0" pref="0" max="-2" attributes="0"/>
</Group> </Group>
</Group> </Group>
</DimensionLayout> </DimensionLayout>
</Layout> </Layout>
<SubComponents> <SubComponents>
<Container class="javax.swing.JPanel" name="jPanel1"> <Container class="javax.swing.JPanel" name="dspSubtypePanel">
<Properties> <Properties>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[467, 160]"/> <Dimension value="[467, 160]"/>
@ -77,7 +60,7 @@
</DimensionLayout> </DimensionLayout>
</Layout> </Layout>
</Container> </Container>
<Component class="javax.swing.JComboBox" name="jComboBox1"> <Component class="javax.swing.JComboBox" name="dspSubtypeComboBox">
<Properties> <Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor"> <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="new javax.swing.DefaultComboBoxModel&lt;&gt;(new String[] {Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text(), Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text()})" type="code"/> <Connection code="new javax.swing.DefaultComboBoxModel&lt;&gt;(new String[] {Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text(), Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text()})" type="code"/>
@ -90,7 +73,7 @@
</Property> </Property>
</Properties> </Properties>
<Events> <Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jComboBox1ActionPerformed"/> <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="dspSubtypeComboBoxActionPerformed"/>
</Events> </Events>
<AuxValues> <AuxValues>
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/> <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>

View File

@ -52,9 +52,9 @@ final class LogicalFilesDspPanel extends JPanel {
*/ */
private LogicalFilesDspPanel() { private LogicalFilesDspPanel() {
initComponents(); initComponents();
jPanel1.setLayout(new BoxLayout(jPanel1, BoxLayout.Y_AXIS)); dspSubtypePanel.setLayout(new BoxLayout(dspSubtypePanel, BoxLayout.Y_AXIS));
jPanel1.add(l01panel); dspSubtypePanel.add(l01panel);
jPanel1.add(localFilesPanel); dspSubtypePanel.add(localFilesPanel);
l01panel.setVisible(false); l01panel.setVisible(false);
} }
@Override @Override
@ -82,12 +82,12 @@ final class LogicalFilesDspPanel extends JPanel {
} }
void select() { void select() {
jComboBox1.setSelectedIndex(0); dspSubtypeComboBox.setSelectedIndex(0);
localFilesPanel.setVisible(true); localFilesPanel.setVisible(true);
l01panel.setVisible(false); l01panel.setVisible(false);
localFilesPanel.reset(); localFilesPanel.reset();
l01panel.reset(); l01panel.reset();
jPanel1.repaint(); dspSubtypePanel.repaint();
} }
@Override @Override
@ -104,34 +104,28 @@ final class LogicalFilesDspPanel extends JPanel {
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() { private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane(); dspSubtypePanel = new javax.swing.JPanel();
jTextArea1 = new javax.swing.JTextArea(); dspSubtypeComboBox = new javax.swing.JComboBox<>();
jPanel1 = new javax.swing.JPanel();
jComboBox1 = new javax.swing.JComboBox<>();
jTextArea1.setColumns(20); dspSubtypePanel.setPreferredSize(new java.awt.Dimension(467, 160));
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jPanel1.setPreferredSize(new java.awt.Dimension(467, 160)); javax.swing.GroupLayout dspSubtypePanelLayout = new javax.swing.GroupLayout(dspSubtypePanel);
dspSubtypePanel.setLayout(dspSubtypePanelLayout);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); dspSubtypePanelLayout.setHorizontalGroup(
jPanel1.setLayout(jPanel1Layout); dspSubtypePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 466, Short.MAX_VALUE) .addGap(0, 466, Short.MAX_VALUE)
); );
jPanel1Layout.setVerticalGroup( dspSubtypePanelLayout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) dspSubtypePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 160, Short.MAX_VALUE) .addGap(0, 160, Short.MAX_VALUE)
); );
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] {Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text(), Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text()})); dspSubtypeComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] {Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text(), Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text()}));
jComboBox1.setMinimumSize(new java.awt.Dimension(379, 20)); dspSubtypeComboBox.setMinimumSize(new java.awt.Dimension(379, 20));
jComboBox1.setPreferredSize(new java.awt.Dimension(379, 20)); dspSubtypeComboBox.setPreferredSize(new java.awt.Dimension(379, 20));
jComboBox1.addActionListener(new java.awt.event.ActionListener() { dspSubtypeComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt); dspSubtypeComboBoxActionPerformed(evt);
} }
}); });
@ -143,24 +137,24 @@ final class LogicalFilesDspPanel extends JPanel {
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup() .addGroup(layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(dspSubtypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 466, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(dspSubtypePanel, javax.swing.GroupLayout.PREFERRED_SIZE, 466, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
); );
layout.setVerticalGroup( layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup() .addGroup(layout.createSequentialGroup()
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(dspSubtypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(dspSubtypePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)) .addGap(0, 0, 0))
); );
}// </editor-fold>//GEN-END:initComponents }// </editor-fold>//GEN-END:initComponents
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed private void dspSubtypeComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dspSubtypeComboBoxActionPerformed
if (evt.getSource() instanceof JComboBox<?>) { if (evt.getSource() instanceof JComboBox<?>) {
JComboBox<?> cb = (JComboBox<?>) evt.getSource(); JComboBox<?> cb = (JComboBox<?>) evt.getSource();
String selectedSubType = jComboBox1.getSelectedItem().toString(); String selectedSubType = dspSubtypeComboBox.getSelectedItem().toString();
if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text())) { if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text())) {
localFilesPanel.setVisible(true); localFilesPanel.setVisible(true);
l01panel.setVisible(false); l01panel.setVisible(false);
@ -170,12 +164,12 @@ final class LogicalFilesDspPanel extends JPanel {
} }
firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString(), false, true); firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString(), false, true);
} }
}//GEN-LAST:event_jComboBox1ActionPerformed }//GEN-LAST:event_dspSubtypeComboBoxActionPerformed
boolean validatePanel() { boolean validatePanel() {
// display warning if there is one (but don't disable "next" button) // display warning if there is one (but don't disable "next" button)
String selectedSubType = jComboBox1.getSelectedItem().toString(); String selectedSubType = dspSubtypeComboBox.getSelectedItem().toString();
if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text())) { if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text())) {
return localFilesPanel.validatePanel(); return localFilesPanel.validatePanel();
} else if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text())) { } else if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text())) {
@ -185,19 +179,17 @@ final class LogicalFilesDspPanel extends JPanel {
} }
} }
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox<String> jComboBox1; private javax.swing.JComboBox<String> dspSubtypeComboBox;
private javax.swing.JPanel jPanel1; private javax.swing.JPanel dspSubtypePanel;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration//GEN-END:variables // End of variables declaration//GEN-END:variables
boolean contentsAreL01() { boolean contentsAreL01() {
String selectedSubType = jComboBox1.getSelectedItem().toString(); String selectedSubType = dspSubtypeComboBox.getSelectedItem().toString();
return selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text()); return selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text());
} }
List<String> getContentPaths() { List<String> getContentPaths() {
String selectedSubType = jComboBox1.getSelectedItem().toString(); String selectedSubType = dspSubtypeComboBox.getSelectedItem().toString();
if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text())) { if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text())) {
return localFilesPanel.getContentPaths(); return localFilesPanel.getContentPaths();
} else if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text())) { } else if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text())) {
@ -209,7 +201,7 @@ final class LogicalFilesDspPanel extends JPanel {
} }
String getFileSetName() { String getFileSetName() {
String selectedSubType = jComboBox1.getSelectedItem().toString(); String selectedSubType = dspSubtypeComboBox.getSelectedItem().toString();
if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text())) { if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_localFilesOption_text())) {
return localFilesPanel.getFileSetName(); return localFilesPanel.getFileSetName();
} else if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text())) { } else if (selectedSubType.equals(Bundle.LogicalFilesDspPanel_subTypeComboBox_l01FileOption_text())) {