Author: mcantelon
Date: Thu Feb 16 12:08:05 2012
New Revision: 10919

Log:
Added ability to check multiple CSV files (for determining while columns are 
empty, multi-value, etc).

Modified:
   trunk/lib/task/import/csvCheckImportTask.class.php

Modified: trunk/lib/task/import/csvCheckImportTask.class.php
==============================================================================
--- trunk/lib/task/import/csvCheckImportTask.class.php  Thu Feb 16 11:19:22 
2012        (r10918)
+++ trunk/lib/task/import/csvCheckImportTask.class.php  Thu Feb 16 12:08:05 
2012        (r10919)
@@ -44,104 +44,128 @@
 
     $skipRows = ($options['skip-rows']) ? $options['skip-rows'] : 0;
 
-    if (false === $fh = fopen($arguments['filename'], 'rb'))
-    {
-      throw new sfException('You must specify a valid filename');
-    }
+    $filenames = explode(',', $arguments['filename']);
 
-    // get import definition
-    $import = new QubitFlatfileImport(array(
+    $nonEmptyColumns    = array();
+    $sampleColumnValues = array();
+    $multiValueColumns  = array();
 
-      'status' => array(
-        'nonEmptyColumns' => array(),
-        'sampleColumnValues' => array(),
-        'numberOfSampleValues' => 1
-      ),
+    foreach($filenames as $filename)
+    {
 
-      'saveLogic' => function(&$self)
+      if (false === $fh = fopen($filename, 'rb'))
       {
-        foreach($self->status['row'] as $key => $value)
-        {
-          $value = $self->status['row'][$key];
-          $column = $self->columnNames[$key];
+        throw new sfException('You must specify a valid filename');
+      }
+
+      // get import definition
+      $import = new QubitFlatfileImport(array(
 
-          $self->status['sampleColumnValues'][$column]
-            = (isset($self->status['sampleColumnValues'][$column]))
-              ? $self->status['sampleColumnValues'][$column]
-              : array();
+        'status' => array(
+          'nonEmptyColumns'      => $nonEmptyColumns,
+          'sampleColumnValues'   => $sampleColumnValues,
+          'multiValueColumns'    => $multiValueColumns,
+          'numberOfSampleValues' => 1
+        ),
 
-          // check if column isn't empty
-          if (trim($value))
+        'saveLogic' => function(&$self)
+        {
+          foreach($self->status['row'] as $key => $value)
           {
-            $self->status['nonEmptyColumns'][$column] = TRUE;
+            $value = $self->status['row'][$key];
+            $column = $self->columnNames[$key];
 
-            if ($self->status['numberOfSampleValues'] > 0
-              && (
-                count($self->status['sampleColumnValues'][$column])
-                < $self->status['numberOfSampleValues']
-              )
-            )
+            $self->status['sampleColumnValues'][$column]
+              = (isset($self->status['sampleColumnValues'][$column]))
+                ? $self->status['sampleColumnValues'][$column]
+                : array();
+
+            // check if column isn't empty
+            if (trim($value))
             {
-              array_push($self->status['sampleColumnValues'][$column], 
trim($value));
+              $self->status['nonEmptyColumns'][$column] = TRUE;
+
+              if ($self->status['numberOfSampleValues'] > 0
+                && (
+                  count($self->status['sampleColumnValues'][$column])
+                  < $self->status['numberOfSampleValues']
+                )
+              )
+              {
+                array_push($self->status['sampleColumnValues'][$column], 
trim($value));
+              }
             }
-          }
 
-          // check for | character
-          if (substr_count($value, '|'))
-          {
-            $self->status['multiValueColumns'][$column] = TRUE;
+            // check for | character
+            if (substr_count($value, '|'))
+            {
+              $self->status['multiValueColumns'][$column] = TRUE;
+            }
           }
         }
-      },
+      ));
 
-      'completeLogic' => function(&$self)
-      {
-        print "\nAnalysis complete.";
+      $import->csv($fh, $skipRows);
+
+      $nonEmptyColumns    = array_merge(
+        $nonEmptyColumns,
+        $import->status['nonEmptyColumns']
+      );
+
+      $multiValueColumns  = array_merge(
+        $multiValueColumns,
+        $import->status['multiValueColumns']
+      );
+
+      $sampleColumnValues = $import->status['sampleColumnValues'];
+    }
+
+    print "\nAnalysis complete.";
+
+    if (count($import->columnNames != count($nonEmptyColumns)))
+    {
+      print "\n\nEmpty columns:\n";
+      print "--------------\n\n";
 
-        if (count($self->columnNames != 
count($self->status['nonEmptyColumns'])))
+      foreach($import->columnNames as $column)
+      {
+        if (!isset($nonEmptyColumns[$column]))
         {
-          print "\n\nEmpty columns:\n";
-          foreach($self->columnNames as $column)
-          {
-            if (!isset($self->status['nonEmptyColumns'][$column]))
-            {
-              print $column .' ';
-            }
-          }
+          print $column .' ';
         }
+      }
+    }
 
-        if (count($self->status['multiValueColumns']))
-        {
-          print "\n\nMulti-value columns (contain \"|\" character):\n";
+    if (count($multiValueColumns))
+    {
+      print "\n\nMulti-value columns (contain \"|\" character):\n";
+      print "-------------------\n\n";
 
-          foreach(array_keys($self->status['multiValueColumns']) as $column)
-          {
-            print $column .' ';
-          }
-        }
+      foreach(array_keys($multiValueColumns) as $column)
+      {
+        print $column .' ';
+      }
+    }
 
-        if ($self->status['numberOfSampleValues'] > 0)
+    if ($import->status['numberOfSampleValues'] > 0)
+    {
+      print "\n\nSample Values:\n";
+      print "--------------\n\n";
+      foreach($sampleColumnValues as $column => $values)
+      {
+        print '  '. $column .":\n";
+        if (count($values))
         {
-          print "\nSample Values:\n";
-          foreach($self->status['sampleColumnValues'] as $column => $values)
+          foreach($values as $value)
           {
-            print '  '. $column .":\n";
-            if (count($values))
-            {
-              foreach($values as $value)
-              {
-                print '    '. $value ."\n";
-              }
-            } else {
-              print "    [empty]\n";
-            }
+            print '    '. $value ."\n";
           }
+        } else {
+          print "    [empty]\n";
         }
-
-        print "\n";
       }
-    ));
+    }
 
-    $import->csv($fh, $skipRows);
+    print "\n";
   }
 }

-- 
You received this message because you are subscribed to the Google Groups 
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/qubit-commits?hl=en.

Reply via email to