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 2017/10/24 19:40:37 UTC

svn commit: r1813226 - /ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/FileTreeReader.java

Author: seanfinan
Date: Tue Oct 24 19:40:37 2017
New Revision: 1813226

URL: http://svn.apache.org/viewvc?rev=1813226&view=rev
Log:
Set document count in patient note store

Modified:
    ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/FileTreeReader.java

Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/FileTreeReader.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/FileTreeReader.java?rev=1813226&r1=1813225&r2=1813226&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/FileTreeReader.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/cr/FileTreeReader.java Tue Oct 24 19:40:37 2017
@@ -1,6 +1,7 @@
 package org.apache.ctakes.core.cr;
 
 import org.apache.ctakes.core.config.ConfigParameterConstants;
+import org.apache.ctakes.core.patient.PatientNoteStore;
 import org.apache.ctakes.core.pipeline.PipeBitInfo;
 import org.apache.ctakes.core.resource.FileLocator;
 import org.apache.ctakes.typesystem.type.structured.DocumentID;
@@ -21,10 +22,7 @@ import org.apache.uima.util.ProgressImpl
 import java.io.*;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -84,10 +82,25 @@ final public class FileTreeReader extend
    )
    private String[] _explicitExtensions;
 
+   /**
+    * Name of optional configuration parameter that specifies the extensions
+    * of the files that the collection reader will read.  Values for this
+    * parameter should not begin with a dot <code>'.'</code>.
+    */
+   public static final String PATIENT_LEVEL = "PatientLevel";
+   @ConfigurationParameter(
+         name = PATIENT_LEVEL,
+         description = "The level in the directory hierarchy at which patient identifiers exist."
+               + "Default value is 1; directly under root input directory.",
+         mandatory = false
+   )
+   private int _patientLevel = 1;
+
    private File _rootDir;
    private Collection<String> _validExtensions;
    private List<File> _files;
    private int _currentIndex;
+   private Map<String, Integer> _patientDocCounts = new HashMap<>();
 
    /**
     * {@inheritDoc}
@@ -102,7 +115,8 @@ final public class FileTreeReader extend
       }
       _validExtensions = createValidExtensions( _explicitExtensions );
       _currentIndex = 0;
-      _files = getDescendentFiles( _rootDir, _validExtensions );
+      _files = getDescendentFiles( _rootDir, _validExtensions, 0 );
+      _patientDocCounts.forEach( ( k, v ) -> PatientNoteStore.getInstance().setDocCount( k, v ) );
    }
 
    /**
@@ -131,9 +145,10 @@ final public class FileTreeReader extend
    /**
     * @param parentDir       -
     * @param validExtensions collection of valid extensions or empty collection if all extensions are valid
+    * @param level directory level beneath the root directory
     * @return List of files descending from the parent directory
     */
-   static private List<File> getDescendentFiles( final File parentDir, final Collection<String> validExtensions ) {
+   private List<File> getDescendentFiles( final File parentDir, final Collection<String> validExtensions, final int level ) {
       final File[] children = parentDir.listFiles();
       if ( children == null || children.length == 0 ) {
          return Collections.emptyList();
@@ -150,7 +165,12 @@ final public class FileTreeReader extend
          }
       }
       for ( File childDir : childDirs ) {
-         descendentFiles.addAll( getDescendentFiles( childDir, validExtensions ) );
+         descendentFiles.addAll( getDescendentFiles( childDir, validExtensions, level + 1 ) );
+      }
+      if ( level == _patientLevel ) {
+         final String patientId = parentDir.getName();
+         final int count = _patientDocCounts.getOrDefault( patientId, 0 );
+         _patientDocCounts.put( patientId, count + descendentFiles.size() );
       }
       return descendentFiles;
    }