Author: seanfinan
Date: Fri Jul 29 22:52:07 2022
New Revision: 1903115
URL: http://svn.apache.org/viewvc?rev=1903115&view=rev
Log:
package inert for abstract AEs.
Pausable abstract AE that has a config param for Pause and a callable method to
pause some number of seconds.
ExitForcer forces ctakes to exit. Useful when there are hanging connections to
external processes.
Added:
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/ExitForcer.java
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/inert/
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/inert/PausableAE.java
Added:
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/ExitForcer.java
URL:
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/ExitForcer.java?rev=1903115&view=auto
==============================================================================
---
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/ExitForcer.java
(added)
+++
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/ExitForcer.java
Fri Jul 29 22:52:07 2022
@@ -0,0 +1,60 @@
+package org.apache.ctakes.core.ae;
+
+import org.apache.ctakes.core.ae.inert.PausableAE;
+import org.apache.ctakes.core.pipeline.PipeBitInfo;
+import org.apache.log4j.Logger;
+import org.apache.uima.UimaContext;
+import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
+import org.apache.uima.jcas.JCas;
+import org.apache.uima.resource.ResourceInitializationException;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ * @author SPF , chip-nlp
+ * @since {7/29/2022}
+ */
+@PipeBitInfo(
+ name = "ExitForcer",
+ description = "Forcibly Exits cTAKES. Use only at the end of a
pipeline.",
+ role = PipeBitInfo.Role.SPECIAL
+)
+public class ExitForcer extends PausableAE {
+
+ static private final Logger LOGGER = Logger.getLogger( "ExitForcer" );
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void initialize( final UimaContext context ) throws
ResourceInitializationException {
+ super.initialize( context );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void process( final JCas jcas ) throws
AnalysisEngineProcessException {
+ // Do nothing
+ }
+
+ /**
+ * Forcibly exit. If ctakes happens to be running within a gui then a
message dialog is displayed.
+ * {@inheritDoc}
+ */
+ @Override
+ public void collectionProcessComplete() throws
AnalysisEngineProcessException {
+ super.collectionProcessComplete();
+ pause( LOGGER );
+ final Frame[] frames = Frame.getFrames();
+ if ( frames != null && frames.length > 0 ) {
+ JOptionPane.showMessageDialog( null, "Processing Complete. Click OK
to exit." );
+ }
+ LOGGER.info( "Exiting." );
+ System.exit( 0 );
+ }
+
+
+}
Added:
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/inert/PausableAE.java
URL:
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/inert/PausableAE.java?rev=1903115&view=auto
==============================================================================
---
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/inert/PausableAE.java
(added)
+++
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/inert/PausableAE.java
Fri Jul 29 22:52:07 2022
@@ -0,0 +1,61 @@
+package org.apache.ctakes.core.ae.inert;
+
+import org.apache.ctakes.core.pipeline.PipeBitInfo;
+import org.apache.ctakes.core.util.log.DotLogger;
+import org.apache.log4j.Logger;
+import org.apache.uima.UimaContext;
+import org.apache.uima.fit.component.JCasAnnotator_ImplBase;
+import org.apache.uima.fit.descriptor.ConfigurationParameter;
+import org.apache.uima.resource.ResourceInitializationException;
+
+import java.io.IOException;
+
+/**
+ * @author SPF , chip-nlp
+ * @since {7/29/2022}
+ */
+@PipeBitInfo(
+ name = "PausableAE",
+ description = "Does something.",
+ role = PipeBitInfo.Role.ANNOTATOR
+)
+abstract public class PausableAE extends JCasAnnotator_ImplBase {
+
+ static public final String PAUSE_PARAM = "Pause";
+ static public final String PAUSE_DESC = "Pause for some seconds. Default
is 0";
+
+ @ConfigurationParameter(
+ name = PAUSE_PARAM,
+ description = PAUSE_DESC,
+ mandatory = false
+ )
+ protected int _pause = 0;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void initialize( final UimaContext context ) throws
ResourceInitializationException {
+ super.initialize( context );
+ }
+
+ protected void pause() {
+ pause( null );
+ }
+
+ protected void pause( final Logger logger ) {
+ if ( _pause > 0 ) {
+ final long pause = _pause * 1000L;
+ if ( logger != null ) {
+ logger.info( "Pausing " + _pause + " seconds ..." );
+ }
+ try ( DotLogger dotter = new DotLogger() ) {
+ Thread.sleep( pause );
+ } catch ( IOException | InterruptedException multE ) {
+ // do nothing
+ }
+ }
+ }
+
+
+}