You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2021/02/12 00:00:38 UTC

svn commit: r1886450 - in /ctakes/trunk: ctakes-core-res/src/main/resources/org/apache/ctakes/core/list/ ctakes-core/src/main/java/org/apache/ctakes/core/util/annotation/ ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/cased/lo...

Author: seanfinan
Date: Fri Feb 12 00:00:38 2021
New Revision: 1886450

URL: http://svn.apache.org/viewvc?rev=1886450&view=rev
Log:
SemanticTui : add Eukaryote.
DefaultListRegex.bsv : add Name Colon Value expression.
LookupEngine : Prefix match fix.
ctakes-drug-ner : remove empty drug, edu empty directories. 
SemanticTuiModel : update default wanted tuis.
CasedPiperWriter : write relative path to database.
CasedReadmeWriter : sort listed information.
SourceTableModel : update default wanted umls sources.
RareWordDbWriter : vocabulary name mangling.
PiperRunnerPanel : pipers in load statements display in tabs.

Removed:
    ctakes/trunk/ctakes-drug-ner/src/main/java/edu/
    ctakes/trunk/ctakes-drug-ner/src/main/java/org/apache/ctakes/drug/
Modified:
    ctakes/trunk/ctakes-core-res/src/main/resources/org/apache/ctakes/core/list/DefaultListRegex.bsv
    ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/annotation/SemanticTui.java
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/cased/lookup/LookupEngine.java
    ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedPiperWriter.java
    ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedReadmeWriter.java
    ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/table/SemanticTuiModel.java
    ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/umls/SourceTableModel.java
    ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/util/RareWordDbWriter.java
    ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java

Modified: ctakes/trunk/ctakes-core-res/src/main/resources/org/apache/ctakes/core/list/DefaultListRegex.bsv
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core-res/src/main/resources/org/apache/ctakes/core/list/DefaultListRegex.bsv?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core-res/src/main/resources/org/apache/ctakes/core/list/DefaultListRegex.bsv (original)
+++ ctakes/trunk/ctakes-core-res/src/main/resources/org/apache/ctakes/core/list/DefaultListRegex.bsv Fri Feb 12 00:00:38 2021
@@ -8,3 +8,4 @@ Name Value||(?:^[^\r\n:]{2,}:[\s]+[^\r\n
 Dash||(?:^[\t ]*-{1,3}[\t ]+(?:(?:[^\t\r\n-]+-?)+\r?\n){1,3}){2,}||^[\t ]*-{1,3}[\t ]+(?:(?:[^\t\r\n-]+-?)+\r?\n)+
 // Document Header||(?:^[^\t\r\n\.]+\.{3,}[^\t\r\n\.]+\r?\n){3,}||\r?\n
 Checkbox||(?:^(?:[^\r\n:]{2,80}:\r?\n)?(?:[\t ]*\[[XYN _]*\][^\r\n]+\r?\n)+)+||^(?:[^\r\n:]{2,80}:\r?\n)?(?:[\t ]*\[[XYN _]*\][^\r\n]+\r?\n)+
+// Name Colon Value||(?:^[\t ]*[^\t\r\n:]+:[^\t\r\n:]+\r?\n){2,}||^[\t ]*[^\t\r\n:]+:[^\t\r\n:]+\r?\n
\ No newline at end of file

Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/annotation/SemanticTui.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/annotation/SemanticTui.java?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/annotation/SemanticTui.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/annotation/SemanticTui.java Fri Feb 12 00:00:38 2021
@@ -152,6 +152,7 @@ public enum SemanticTui {
    T005( 5, "Virus", DISORDER ),
    T127( 127, "Vitamin", DRUG ),
    T010( 10, "Vertebrate", ENTITY ),
+   T204( 204, "Eukaryote", ENTITY ),
    UNKNOWN( 0, "Unknown", SemanticGroup.UNKNOWN );
 
    private final int _code;

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/cased/lookup/LookupEngine.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/cased/lookup/LookupEngine.java?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/cased/lookup/LookupEngine.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/cased/lookup/LookupEngine.java Fri Feb 12 00:00:38 2021
@@ -47,7 +47,7 @@ public class LookupEngine {
                                 .add( new DiscoveredTerm( candidateTerm ) );
                continue;
             }
-            if ( candidateTerm.getPrefixes().length >= lookupTokenIndex
+            if ( candidateTerm.getPrefixes().length > lookupTokenIndex
                  || lookupTokenIndex + candidateTerm.getSuffixes().length >= lookupTokens.size() ) {
                // term will extend beyond window
                continue;
@@ -92,6 +92,9 @@ public class LookupEngine {
       if ( prefixes.length == 0 ) {
          return HIT;
       }
+      if ( lookupTokenIndex < prefixes.length ) {
+         return MISS;
+      }
       int tokenIndex = lookupTokenIndex - 1;
       LookupToken lookupToken = allTokens.get( tokenIndex );
       for ( int i = prefixes.length - 1; i >= 0; i-- ) {
@@ -109,6 +112,9 @@ public class LookupEngine {
             }
          }
          if ( lowerPrefixes[ i ].equals( lookupToken.getLowerText() ) ) {
+            if ( i == 0 ) {
+               return HIT;
+            }
             tokenIndex--;
             lookupToken = allTokens.get( tokenIndex );
             continue;
@@ -153,7 +159,10 @@ public class LookupEngine {
             }
          }
          if ( lowerSuffixes[ i ].equals( lookupToken.getLowerText() ) ) {
-            tokenIndex--;
+            if ( i == suffixes.length - 1 ) {
+               return HIT;
+            }
+            tokenIndex++;
             lookupToken = allTokens.get( tokenIndex );
             continue;
          }

Modified: ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedPiperWriter.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedPiperWriter.java?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedPiperWriter.java (original)
+++ ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedPiperWriter.java Fri Feb 12 00:00:38 2021
@@ -28,8 +28,11 @@ final public class CasedPiperWriter {
    static public boolean writePiper( final String hsqlPath,
                                      final String dictionaryName,
                                      final Collection<String> writtenSchema ) {
-      final String url = HsqlUtil.URL_PREFIX + hsqlPath.replace( '\\', '/' ) + "/" + dictionaryName + "/" +
-                         dictionaryName;
+//      final String url = HsqlUtil.URL_PREFIX + hsqlPath.replace( '\\', '/' ) + "/" + dictionaryName + "/" +
+//                         dictionaryName;
+      final String url = HsqlUtil.URL_PREFIX + "resources/org/apache/ctakes/dictionary/lookup/cased/"
+                         + dictionaryName + "/"
+                         + dictionaryName;
       final List<String> schemaList = new ArrayList<>( writtenSchema );
       Collections.sort( schemaList );
       schemaList.add( "TUI" );
@@ -37,7 +40,9 @@ final public class CasedPiperWriter {
       final String schemas = String.join( ",", schemaList );
       final File piperFile = new File( hsqlPath, dictionaryName + ".piper" );
       try ( final Writer writer = new BufferedWriter( new FileWriter( piperFile ) ) ) {
-         writer.write( "// This piper file contains instructions to set up your custom dictionary and encoders for Case-sensitive Dictionary Lookup.\n" );
+         writer.write(
+               "// This piper file contains instructions to set up your custom dictionary and encoders for "
+               + "Case-sensitive Dictionary Lookup.\n" );
          writer.write( "// To use your new dictionary, load this piper in your main piper:\n" );
          writer.write( "// load " + hsqlPath + "\n" );
          writer.write( "\n" );
@@ -121,8 +126,7 @@ final public class CasedPiperWriter {
          writer.write( "//    The default JDBC driver is org.hsqldb.jdbcDriver\n\n" );
          writer.write( "//    Url for the Database.  {encoderName}_url\n" );
          for ( String schema : schemaList ) {
-            writer.write( "set " + schema + "_url=jdbc:hsqldb:file:resources/org/apache/ctakes/dictionary/lookup/cased/"
-                          + dictionaryName + "/" + dictionaryName + "\n" );
+            writer.write( "set " + schema + "_url=" + url + "\n" );
          }
          writer.write( "//    Most of the following settings are left empty to exemplify brevity.\n\n" );
          writer.write( "//    User for the Database.  {encoderName}_user   Default user is sa\n\n" );

Modified: ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedReadmeWriter.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedReadmeWriter.java?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedReadmeWriter.java (original)
+++ ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/CasedReadmeWriter.java Fri Feb 12 00:00:38 2021
@@ -64,9 +64,10 @@ final public class CasedReadmeWriter {
             }
          }
          writer.write( "\nVocabularies ...\n" );
-         for ( String vocabulary : wantedVocabularies ) {
-            writer.write( vocabulary + "\n" );
-         }
+         final String vocabs = wantedVocabularies.stream()
+                                                 .sorted()
+                                                 .collect( Collectors.joining( "\n" ) );
+         writer.write( vocabs + "\n" );
          writer.write( "\nTerm Types ...\n" );
          final String tty = wantedTermTypes.stream()
                                            .sorted()

Modified: ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/table/SemanticTuiModel.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/table/SemanticTuiModel.java?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/table/SemanticTuiModel.java (original)
+++ ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/cased/table/SemanticTuiModel.java Fri Feb 12 00:00:38 2021
@@ -24,9 +24,9 @@ public class SemanticTuiModel implements
 
    static private final Collection<SemanticTui> UNWANTED_TUIS
          = EnumSet.of( T116, T087, T123, T118, T026, T043, T025, T103, T120, T104, T077, T049, T088, T065, T196,
-         T050, T018, T126, T168, T045, T028, T125, T078, T129, T055, T197, T170, T130, T119, T063,
-         T066, T041, T073, T044, T085, T114, T124, T086, T115, T109, T040, T042, T046, T039,
-         T192, T062, T075, T054, T056, T169, T185, T058, T033, UNKNOWN );
+                       T050, T018, T126, T168, T045, T028, T125, T078, T129, T055, T197, T170, T130, T119, T063,
+                       T066, T041, T073, T044, T085, T114, T124, T086, T115, T109, T040, T042, T039,
+                       T192, T062, T075, T054, T056, T169, T185, T058, UNKNOWN );
 
    private final EventListenerList _listenerList = new EventListenerList();
    private final Collection<SemanticTui> _wantedTuis = EnumSet.noneOf( SemanticTui.class );

Modified: ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/umls/SourceTableModel.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/umls/SourceTableModel.java?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/umls/SourceTableModel.java (original)
+++ ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/umls/SourceTableModel.java Fri Feb 12 00:00:38 2021
@@ -23,7 +23,7 @@ final public class SourceTableModel impl
    static private final Class<?>[] COLUMN_CLASSES = { Boolean.class, Boolean.class, String.class, String.class,
                                                       String.class, String.class };
 
-   static private final String[] CTAKES_SOURCES = { "SNOMEDCT_US", "RXNORM", "MTH", "MSH", "LNC" };
+   static private final String[] CTAKES_SOURCES = { "SNOMEDCT_US", "RXNORM", "MTH", "MSH", "LNC", "CHV", "HPO" };
    static private final String[] CTAKES_TARGETS = { "SNOMEDCT_US", "RXNORM" };
 
    private final EventListenerList _listenerList = new EventListenerList();

Modified: ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/util/RareWordDbWriter.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/util/RareWordDbWriter.java?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/util/RareWordDbWriter.java (original)
+++ ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/dictionary/util/RareWordDbWriter.java Fri Feb 12 00:00:38 2021
@@ -114,13 +114,16 @@ final public class RareWordDbWriter {
             // write extra vocabulary code tables
             final Collection<String> vocabularies = concept.getVocabularies();
             for ( String vocabulary : vocabularies ) {
-               final PreparedStatement statement = codeStatements.get( vocabulary );
+               final String fixed = fixVocabName.apply( vocabulary );
+//               final PreparedStatement statement = codeStatements.get( vocabulary );
+               final PreparedStatement statement = codeStatements.get( fixed );
                statement.setLong( CuiTermsField.CUI.__index, cui );
                for ( String code : concept.getCodes( vocabulary ) ) {
                   setCodeAppropriately( statement, code, VocabularyStore.getInstance()
-                        .getVocabularyClass( vocabulary ) );
+                                                                        .getVocabularyClass( vocabulary ) );
                   statement.executeUpdate();
-                  codeTableCounts.put( vocabulary, incrementCount( vocabulary, codeTableCounts.get( vocabulary ) ) );
+//                  codeTableCounts.put( vocabulary, incrementCount( vocabulary, codeTableCounts.get( vocabulary ) ) );
+                  codeTableCounts.put( fixed, incrementCount( fixed, codeTableCounts.get( fixed ) ) );
                }
             }
          }

Modified: ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java?rev=1886450&r1=1886449&r2=1886450&view=diff
==============================================================================
--- ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java (original)
+++ ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java Fri Feb 12 00:00:38 2021
@@ -50,12 +50,10 @@ final public class PiperRunnerPanel exte
 
    private final JFileChooser _piperChooser = new JFileChooser();
    private final JFileChooser _parmChooser = new JFileChooser();
-   private DefaultStyledDocument _piperDocument;
-   private PiperTextFilter _piperTextFilter;
 
    private String _piperPath = "";
 
-   private JTextPane _textPane;
+   private JTabbedPane _tabbedPane;
    private JTable _cliTable;
 
    private JButton _openButton;
@@ -63,16 +61,12 @@ final public class PiperRunnerPanel exte
    private JButton _parmButton;
    private JButton _runButton;
 
-   //   private final String[] STANDARD_CHARS = { "i", "o", "s", "l", "-user", "-pass", "-xmiOut" };
    private final String[] STANDARD_CHARS = { "i", "o" };
    private final String[] STANDARD_NAMES = { "InputDirectory", "OutputDirectory" };
 
    private final Map<String, String> _charToName = new HashMap<>( STANDARD_CHARS.length );
    private final Map<String, String> _charToValue = new HashMap<>( STANDARD_CHARS.length );
 
-   //   private final java.util.List<Character> _cliChars = new ArrayList<>();
-//private final Map<Character, String> _cliCharToName = new HashMap<>();
-//   private final Map<Character, String> _cliCharToValue = new HashMap<>();
    private final java.util.List<String> _cliChars = new ArrayList<>();
    private final Map<String, String> _cliCharToName = new HashMap<>();
    private final Map<String, String> _cliCharToValue = new HashMap<>();
@@ -80,8 +74,6 @@ final public class PiperRunnerPanel exte
 
    PiperRunnerPanel() {
       super( new BorderLayout() );
-//      final String[] STANDARD_NAMES = { "InputDirectory", "OutputDirectory", "SubDirectory",
-//            "LookupXml", "UMLS Username", "UMLS Password", "XMI Output" };
       for ( int i = 0; i < STANDARD_CHARS.length; i++ ) {
          _charToName.put( STANDARD_CHARS[ i ], STANDARD_NAMES[ i ] );
       }
@@ -161,18 +153,38 @@ final public class PiperRunnerPanel exte
       return mainSplit;
    }
 
+   static private class PiperTextDisplay {
+
+      final JScrollPane _scroll;
+
+      private PiperTextDisplay( final String text ) {
+         final DefaultStyledDocument document = new DefaultStyledDocument();
+         new PiperTextFilter( document );
+         final JTextPane textPane = new JTextPane( document );
+         textPane.putClientProperty( "caretWidth", 2 );
+         textPane.setCaretColor( Color.MAGENTA );
+         textPane.setEditable( false );
+         _scroll = new JScrollPane( textPane );
+         final TextLineNumber lineNumber = new TextLineNumber( textPane, 2 );
+         _scroll.setRowHeaderView( lineNumber );
+         _scroll.setMinimumSize( new Dimension( 100, 10 ) );
+         try {
+            document.remove( 0, document.getLength() );
+            document.insertString( 0, text, null );
+         } catch ( BadLocationException blE ) {
+            LOGGER.warn( blE.getMessage() );
+         }
+      }
+
+      private JScrollPane getScrollPane() {
+         return _scroll;
+      }
+
+   }
+
    private JComponent createEastPanel() {
-      _piperDocument = new DefaultStyledDocument();
-      _piperTextFilter = new PiperTextFilter( _piperDocument );
-      _textPane = new JTextPane( _piperDocument );
-      _textPane.putClientProperty( "caretWidth", 2 );
-      _textPane.setCaretColor( Color.MAGENTA );
-      _textPane.setEditable( false );
-      final JScrollPane scroll = new JScrollPane( _textPane );
-      final TextLineNumber lineNumber = new TextLineNumber( _textPane, 2 );
-      scroll.setRowHeaderView( lineNumber );
-      scroll.setMinimumSize( new Dimension( 100, 10 ) );
-      return scroll;
+      _tabbedPane = new JTabbedPane();
+      return _tabbedPane;
    }
 
    private JComponent createWestPanel() {
@@ -183,7 +195,9 @@ final public class PiperRunnerPanel exte
       _cliTable = new SmoothTipTable( new CliOptionModel() );
       _cliTable.setRowHeight( 20 );
       _cliTable.setAutoResizeMode( JTable.AUTO_RESIZE_LAST_COLUMN );
-      _cliTable.getColumnModel().getColumn( 0 ).setPreferredWidth( 200 );
+      _cliTable.getColumnModel()
+               .getColumn( 0 )
+               .setPreferredWidth( 200 );
       _cliTable.getColumnModel().getColumn( 0 ).setMaxWidth( 200 );
       _cliTable.getColumnModel().getColumn( 1 ).setMaxWidth( 100 );
       _cliTable.getColumnModel().getColumn( 3 ).setMaxWidth( 25 );
@@ -200,7 +214,7 @@ final public class PiperRunnerPanel exte
    }
 
 
-   // -i, -o, -s, -l --user --pass --xmiOut
+   // -i, -o
    private final class CliOptionModel implements TableModel {
       private final String[] COLUMN_NAMES = { "Parameter Name", "Option", "Value", "" };
       private final Class<?>[] COLUMN_CLASSES = { String.class, String.class, String.class, File.class };
@@ -226,7 +240,6 @@ final public class PiperRunnerPanel exte
             if ( row < STANDARD_CHARS.length ) {
                return _charToName.get( STANDARD_CHARS[ row ] );
             }
-//            final Character c = _cliChars.get( row - STANDARD_CHARS.length );
             final String c = _cliChars.get( row - STANDARD_CHARS.length );
             return _cliCharToName.getOrDefault( c, "Unknown Name" );
          } else if ( column == 1 ) {
@@ -306,21 +319,27 @@ final public class PiperRunnerPanel exte
          }
          loadPiperFile( _piperChooser.getSelectedFile() );
       }
+
    }
 
    public void loadPiperFile( final File file ) {
       loadPiperFile( file.getPath() );
    }
 
+   private void addPiperTab( final String name, final String text ) {
+      PiperTextDisplay textDisplay = new PiperTextDisplay( text );
+      String title = new File( name ).getName();
+      if ( title.endsWith( ".piper" ) ) {
+         title = title.substring( 0, title.length() - 6 );
+      }
+      _tabbedPane.addTab( title, textDisplay.getScrollPane() );
+   }
+
    public void loadPiperFile( final String path ) {
       final PiperFileReader reader = new PiperFileReader();
       final String text = loadPiperText( reader, path );
-      try {
-         _piperDocument.remove( 0, _piperDocument.getLength() );
-         _piperDocument.insertString( 0, text, null );
-      } catch ( BadLocationException blE ) {
-         LOGGER.warn( blE.getMessage() );
-      }
+      _tabbedPane.removeAll();
+      addPiperTab( new File( path ).getName(), text );
       _cliChars.clear();
       _cliCharToName.clear();
       _cliCharToValue.clear();
@@ -357,12 +376,10 @@ final public class PiperRunnerPanel exte
                   error( "Illegal cli values: " + line );
                   return false;
                }
-//               if ( _cliCharToName.put( values[ 1 ].charAt( 0 ), values[ 0 ] ) != null ) {
                if ( _cliCharToName.put( values[ 1 ], values[ 0 ] ) != null ) {
                   error( "Repeated cli value: " + line );
                   return false;
                }
-//               _cliChars.add( values[ 1 ].charAt( 0 ) );
                _cliChars.add( values[ 1 ] );
             }
          } else if ( line.startsWith( "package " ) && line.length() > 9 ) {
@@ -375,6 +392,7 @@ final public class PiperRunnerPanel exte
                error( "Piper File not found: " + filePath );
                return false;
             }
+            addPiperTab( filePath, subText );
             if ( !loadPiperCli( reader, subText ) ) {
                error( "Could not load Piper File: " + filePath );
                return false;
@@ -441,8 +459,6 @@ final public class PiperRunnerPanel exte
          final String chars = values[ 0 ].substring( 1 );
          if ( _charToName.containsKey( chars ) ) {
             _charToValue.put( chars, values[ 1 ] );
-//         } else if ( chars.length() == 1 && _cliChars.contains( chars.charAt( 0 ) ) ) {
-//            _cliCharToValue.put( chars.charAt( 0 ), values[ 1 ] );
          } else if ( _cliChars.contains( chars ) ) {
             _cliCharToValue.put( chars, values[ 1 ] );
          } else {
@@ -452,7 +468,6 @@ final public class PiperRunnerPanel exte
          final String chars = getStringKey( _charToName, values[ 0 ] );
          _charToValue.put( chars, values[ 1 ] );
       } else if ( _cliCharToName.containsValue( values[ 0 ] ) ) {
-//         _cliCharToValue.put( getCharKey( _cliCharToName, values[ 0 ] ), values[ 1 ] );
          _cliCharToValue.put( getCharKey( _cliCharToName, values[ 0 ] ), values[ 1 ] );
       } else {
          LOGGER.warn( "Unknown parameter: " + values[ 0 ] );
@@ -467,14 +482,6 @@ final public class PiperRunnerPanel exte
             .orElse( "" );
    }
 
-//   private Character getCharKey( final Map<Character, String> map, final String value ) {
-//      return map.entrySet().stream()
-//            .filter( e -> value.equals( e.getValue() ) )
-//            .map( Map.Entry::getKey )
-//            .findAny()
-//            .orElse( ' ' );
-//   }
-
    private String getCharKey( final Map<String, String> map, final String value ) {
       return map.entrySet().stream()
             .filter( e -> value.equals( e.getValue() ) )
@@ -543,7 +550,6 @@ final public class PiperRunnerPanel exte
                args.add( value );
             }
          }
-//         for ( Character cli : _cliChars ) {
          for ( String cli : _cliChars ) {
             final String value = _cliCharToValue.get( cli );
             if ( value != null && !value.isEmpty() ) {