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 2019/01/04 20:48:56 UTC

svn commit: r1850436 - in /ctakes/trunk: ctakes-core/src/main/java/org/apache/ctakes/core/cr/ ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/ ctakes-core/src/main/java/org/apache/ctakes/core/util/ ctakes-gui/src/main/java/org/apache/ctakes/g...

Author: seanfinan
Date: Fri Jan  4 20:48:56 2019
New Revision: 1850436

URL: http://svn.apache.org/viewvc?rev=1850436&view=rev
Log:
Add progress bar to piper file submitter gui

Added:
    ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/ProgressManager.java
Modified:
    ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/AbstractFileTreeReader.java
    ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/FinishedLogger.java
    ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java

Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/AbstractFileTreeReader.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/AbstractFileTreeReader.java?rev=1850436&r1=1850435&r2=1850436&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/AbstractFileTreeReader.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/AbstractFileTreeReader.java Fri Jan  4 20:48:56 2019
@@ -3,6 +3,7 @@ package org.apache.ctakes.core.cr;
 import org.apache.ctakes.core.config.ConfigParameterConstants;
 import org.apache.ctakes.core.note.NoteSpecs;
 import org.apache.ctakes.core.patient.PatientNoteStore;
+import org.apache.ctakes.core.pipeline.ProgressManager;
 import org.apache.ctakes.core.resource.FileLocator;
 import org.apache.ctakes.core.util.NumberedSuffixComparator;
 import org.apache.ctakes.core.util.SourceMetadataUtil;
@@ -269,6 +270,7 @@ abstract public class AbstractFileTreeRe
          _files = getDescendentFiles( _rootDir, _validExtensions, 0 );
          _patientDocCounts.forEach( ( k, v ) -> PatientNoteStore.getInstance().setWantedDocCount( k, v ) );
       }
+      ProgressManager.getInstance().initializeProgress( _rootDirPath, _files.size() );
    }
 
    /**
@@ -440,7 +442,11 @@ abstract public class AbstractFileTreeRe
     */
    @Override
    public boolean hasNext() {
-      return _currentIndex < _files.size();
+      final boolean hasNext = _currentIndex < _files.size();
+      if ( !hasNext ) {
+         ProgressManager.getInstance().updateProgress( _files.size() );
+      }
+      return hasNext;
    }
 
    /**
@@ -449,6 +455,7 @@ abstract public class AbstractFileTreeRe
    @Override
    public void getNext( final JCas jcas ) throws IOException, CollectionException {
       final File file = _files.get( _currentIndex );
+      ProgressManager.getInstance().updateProgress( _currentIndex );
       _currentIndex++;
       final String id = createDocumentID( file, getValidExtensions() );
       LOGGER.info( "Reading " + id + " : " + file.getPath() );

Added: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/ProgressManager.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/ProgressManager.java?rev=1850436&view=auto
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/ProgressManager.java (added)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/ProgressManager.java Fri Jan  4 20:48:56 2019
@@ -0,0 +1,102 @@
+package org.apache.ctakes.core.pipeline;
+
+import javax.swing.*;
+import javax.swing.event.ChangeListener;
+
+/**
+ * @author SPF , chip-nlp
+ * @version %I%
+ * @since 1/4/2019
+ */
+public enum ProgressManager {
+   INSTANCE;
+
+   public static ProgressManager getInstance() {
+      return INSTANCE;
+   }
+
+   private String _name;
+   private final BoundedRangeModel _model;
+
+   ProgressManager() {
+      _model = new DefaultBoundedRangeModel();
+   }
+
+   public void initializeProgress( final String name, final int max ) {
+      _name = name;
+      _model.setRangeProperties( 0, 0, 0, max, false );
+   }
+
+   public String getName() {
+      if ( _name == null || _name.trim().isEmpty() ) {
+         return "Progress";
+      }
+      return _name;
+   }
+
+   public void updateProgress( final int value ) {
+      if ( value <= _model.getValue() ) {
+         return;
+      }
+      if ( _model.getMaximum() < value ) {
+         _model.setMaximum( value );
+      }
+      _model.setValue( value );
+   }
+
+   public BoundedRangeModel getModel() {
+      return _model;
+   }
+
+   public void addListener( final ChangeListener listener ) {
+      _model.addChangeListener( listener );
+   }
+
+   public void removeListener( final ChangeListener listener ) {
+      _model.removeChangeListener( listener );
+   }
+
+//
+//   private final Map<String, BoundedRangeModel> _progressMap;
+//
+//
+//   ProgressManager() {
+//      _progressMap = new HashMap<>();
+//   }
+//
+//   public void initializeProgress( final String name, final Object object, final int max ) {
+//      initializeProgress( createHashName( name, object ), max );
+//   }
+//
+//   private void initializeProgress( final String name, final int max ) {
+//      final BoundedRangeModel model = _progressMap.computeIfAbsent( name, n -> new DefaultBoundedRangeModel() );
+//      model.setValue( 0 );
+//      model.setMaximum( max );
+//   }
+//
+//   public void updateProgress( final String name, final Object object, final int value ) {
+//      updateProgress( createHashName( name, object ), value );
+//   }
+//
+//   private void updateProgress( final String name, final int value ) {
+//      final BoundedRangeModel model = _progressMap.computeIfAbsent( name, n -> new DefaultBoundedRangeModel() );
+//      if ( model.getMaximum() < value ) {
+//         model.setMaximum( value );
+//      }
+//      model.setValue( value );
+//   }
+//
+//   public void removeProgress( final String name, final Object object ) {
+//      removeProgress( createHashName( name, object ) );
+//   }
+//
+//   private void removeProgress( final String name ) {
+//      _progressMap.remove( name );
+//   }
+//
+//   static private String createHashName( final String name, final Object object ) {
+//      return name + "_" + object.hashCode();
+//   }
+
+
+}

Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/FinishedLogger.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/FinishedLogger.java?rev=1850436&r1=1850435&r2=1850436&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/FinishedLogger.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/FinishedLogger.java Fri Jan  4 20:48:56 2019
@@ -1,6 +1,7 @@
 package org.apache.ctakes.core.util;
 
 import org.apache.ctakes.core.pipeline.PipeBitInfo;
+import org.apache.ctakes.core.pipeline.ProgressManager;
 import org.apache.log4j.Logger;
 import org.apache.uima.UimaContext;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
@@ -43,6 +44,7 @@ final public class FinishedLogger extend
    @Override
    public void process( final JCas jCas ) throws AnalysisEngineProcessException {
       _docCount++;
+      ProgressManager.getInstance().updateProgress( Long.valueOf( _docCount ).intValue() );
    }
 
    public void collectionProcessComplete() throws AnalysisEngineProcessException {

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=1850436&r1=1850435&r2=1850436&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 Jan  4 20:48:56 2019
@@ -4,6 +4,7 @@ package org.apache.ctakes.gui.pipeline;
 import org.apache.ctakes.core.pipeline.PipeBitLocator;
 import org.apache.ctakes.core.pipeline.PiperFileReader;
 import org.apache.ctakes.core.pipeline.PiperFileRunner;
+import org.apache.ctakes.core.pipeline.ProgressManager;
 import org.apache.ctakes.core.resource.FileLocator;
 import org.apache.ctakes.gui.component.*;
 import org.apache.ctakes.gui.pipeline.bit.parameter.ParameterCellRenderer;
@@ -121,10 +122,23 @@ final public class PiperRunnerPanel exte
       _parmButton.addActionListener( new OpenParmAction() );
       _saveButton = addButton( toolBar, "Save Parameter File" );
       _saveButton.addActionListener( new SaveParmAction() );
-      toolBar.add( Box.createHorizontalGlue() );
+//      toolBar.add( Box.createHorizontalGlue() );
+      toolBar.addSeparator( new Dimension( 50, 0 ) );
       _runButton = addButton( toolBar, "Run Current Piper File" );
       _runButton.addActionListener( new RunAction() );
       _runButton.setEnabled( false );
+
+      toolBar.addSeparator( new Dimension( 50, 0 ) );
+      final JProgressBar progressBar = new JProgressBar( ProgressManager.getInstance().getModel() ) {
+         protected void fireStateChanged() {
+            super.fireStateChanged();
+            SwingUtilities.invokeLater( () -> setString( getValue() + " / " + getMaximum() ) );
+         }
+      };
+      progressBar.setStringPainted( true );
+      toolBar.add( progressBar );
+      toolBar.addSeparator( new Dimension( 10, 0 ) );
+
       return toolBar;
    }