Author: seanfinan
Date: Wed Oct 26 16:21:54 2022
New Revision: 1904854

URL: http://svn.apache.org/viewvc?rev=1904854&view=rev
Log:
Added build information to ctakes jar files.
Added code to fetch build information in core.util.log.FinishedLogger
Added a call to get Build information in core.util.BannerWriter
Added "set WriteBanner=yes" to default fast pipeline.

Modified:
    
ctakes/trunk/ctakes-clinical-pipeline-res/src/main/resources/org/apache/ctakes/clinical/pipeline/DefaultFastPipeline.piper
    
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/BannerWriter.java
    
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/log/FinishedLogger.java
    ctakes/trunk/pom.xml

Modified: 
ctakes/trunk/ctakes-clinical-pipeline-res/src/main/resources/org/apache/ctakes/clinical/pipeline/DefaultFastPipeline.piper
URL: 
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-clinical-pipeline-res/src/main/resources/org/apache/ctakes/clinical/pipeline/DefaultFastPipeline.piper?rev=1904854&r1=1904853&r2=1904854&view=diff
==============================================================================
--- 
ctakes/trunk/ctakes-clinical-pipeline-res/src/main/resources/org/apache/ctakes/clinical/pipeline/DefaultFastPipeline.piper
 (original)
+++ 
ctakes/trunk/ctakes-clinical-pipeline-res/src/main/resources/org/apache/ctakes/clinical/pipeline/DefaultFastPipeline.piper
 Wed Oct 26 16:21:54 2022
@@ -1,5 +1,8 @@
 // Commands and parameters to create a default plaintext document processing 
pipeline with UMLS lookup
 
+// Write nice big banners when ctakes starts and finishes.
+set WriteBanner=yes
+
 // Load a simple token processing pipeline from another pipeline file
 load DefaultTokenizerPipeline
 

Modified: 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/BannerWriter.java
URL: 
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/BannerWriter.java?rev=1904854&r1=1904853&r2=1904854&view=diff
==============================================================================
--- 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/BannerWriter.java
 (original)
+++ 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/BannerWriter.java
 Wed Oct 26 16:21:54 2022
@@ -1,5 +1,6 @@
 package org.apache.ctakes.core.util;
 
+import org.apache.ctakes.core.util.log.FinishedLogger;
 import org.apache.log4j.Logger;
 
 /**
@@ -32,6 +33,7 @@ final public class BannerWriter {
       EOL_LOGGER.info( "           _/            _/      _/    _/  _/  _/    
_/              _/" );
       EOL_LOGGER.info( "            _/_/_/      _/      _/    _/  _/    _/  
_/_/_/_/  _/_/_/" );
       EOL_LOGGER.info( "\n" );
+      EOL_LOGGER.info( FinishedLogger.getBuildInfo() );
    }
 
    static public void writeInitialize() {

Modified: 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/log/FinishedLogger.java
URL: 
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/log/FinishedLogger.java?rev=1904854&r1=1904853&r2=1904854&view=diff
==============================================================================
--- 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/log/FinishedLogger.java
 (original)
+++ 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/log/FinishedLogger.java
 Wed Oct 26 16:21:54 2022
@@ -2,6 +2,7 @@ package org.apache.ctakes.core.util.log;
 
 import org.apache.ctakes.core.pipeline.PipeBitInfo;
 import org.apache.ctakes.core.pipeline.ProgressManager;
+import org.apache.ctakes.core.resource.FileLocator;
 import org.apache.log4j.Logger;
 import org.apache.uima.UimaContext;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
@@ -9,8 +10,13 @@ import org.apache.uima.fit.component.JCa
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.resource.ResourceInitializationException;
 
+import java.io.File;
+import java.io.IOException;
 import java.lang.management.ManagementFactory;
 import java.util.Date;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
 
 /**
  * @author SPF , chip-nlp
@@ -81,14 +87,57 @@ static private final Logger LOGGER = Log
          sb.append( days ).append( " days, " );
       }
       if ( days > 0 || hours > 0 ) {
-         sb.append( hours ).append( " hours, " );
+         sb.append( hours )
+           .append( " hours, " );
       }
       if ( days > 0 || hours > 0 || minutes > 0 ) {
-         sb.append( minutes ).append( " minutes, " );
+         sb.append( minutes )
+           .append( " minutes, " );
       }
-      sb.append( seconds ).append( " seconds" );
+      sb.append( seconds )
+        .append( " seconds" );
       return sb.toString();
    }
 
 
+   /**
+    * Example:
+    * Build Version: 4.0.1-SNAPSHOT
+    * Build Date: 2022-10-26 15:59
+    *
+    * @return build information or an empty if none is found.
+    */
+   static public String getBuildInfo() {
+      final File libDir = FileLocator.getFileQuiet( "lib" );
+      if ( libDir == null || !libDir.isDirectory() ) {
+         return "";
+      }
+      final File[] files = libDir.listFiles();
+      if ( files == null ) {
+         return "";
+      }
+      for ( File jar : files ) {
+         final String name = jar.getName();
+         if ( name.contains( "ctakes-core" )
+              && !name.contains( "coreference" )
+              && !name.contains( "ctakes-core-res" ) ) {
+            try ( JarFile jf = new JarFile( jar ) ) {
+               final Manifest manifest = jf.getManifest();
+               final Attributes attributes = manifest.getMainAttributes();
+               return getAttribute( attributes, "Build Version", 
"Implementation-Version" )
+                      + getAttribute( attributes, "Build Date", 
"Implementation-Build-Date" );
+            } catch ( IOException ioE ) {
+               return "";
+            }
+         }
+      }
+      return "";
+   }
+
+   static private String getAttribute( final Attributes attributes, final 
String name, final String attributeName ) {
+      final String value = attributes.getValue( attributeName );
+      return value == null ? "" : name + ": " + value + "\n";
+   }
+
+
 }


Reply via email to