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.