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;
}