[Bio] / Sprout / ERDBLoad.pm Repository:
ViewVC logotype

Diff of /Sprout/ERDBLoad.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7, Thu Oct 13 14:53:03 2005 UTC revision 1.9, Thu Jan 19 09:28:33 2006 UTC
# Line 46  Line 46 
46    
47  Name of the directory to use for the load files, WITHOUT a trailing slash.  Name of the directory to use for the load files, WITHOUT a trailing slash.
48    
49  =item estimatedRows (optional)  =item loadOnly
50    
51  Estimated maximum number of table rows. If omitted, the table will be created in  TRUE if the data is to be loaded from an existing file, FALSE if a file is
52  a format that permits an essentially unlimited number of rows.  to be created.
53    
54  =back  =back
55    
# Line 57  Line 57 
57    
58  sub new {  sub new {
59      # Get the parameters.      # Get the parameters.
60      my ($class, $erdb, $relationName, $directory, $estimatedRows) = @_;      my ($class, $erdb, $relationName, $directory, $loadOnly) = @_;
61      # Validate the directory name.      # Validate the directory name.
62      if (! -d $directory) {      if (! -d $directory) {
63          Confess("Load directory \"$directory\" not found.");          Confess("Load directory \"$directory\" not found.");
64      }      }
65      # Determine the name for this relation's load file.      # Determine the name for this relation's load file.
66      my $fileName = "$directory/$relationName.dtx";      my $fileName = "$directory/$relationName.dtx";
67        # Declare the file handle variable.
68        my $fileHandle;
69        # Determine whether or not this is a primary relation.
70        my $primary = ($erdb->_IsPrimary($relationName) ? 1 : 0);
71        # Check to see if this is a load-only or a generate-and-load.
72        if ($loadOnly) {
73            Trace("Relation $relationName will be loaded from $fileName.") if T(2);
74            $fileHandle = "";
75        } else {
76      # If this is a primary entity relation, sort the output to remove      # If this is a primary entity relation, sort the output to remove
77      # duplicate keys.      # duplicate keys.
78      my $fileString = ($erdb->IsEntity($relationName) ?      my $fileString = ($erdb->IsEntity($relationName) ?
79                          "| sort +0 -1 -u -t \"\t\" >$fileName" :                          "| sort +0 -1 -u -t \"\t\" >$fileName" :
80                          ">$fileName");                          ">$fileName");
81      # Open the output file and remember its handle.      # Open the output file and remember its handle.
82      my $fileHandle = Open(undef, $fileString);          $fileHandle = Open(undef, $fileString);
83            Trace("Relation $relationName load file created with primary flag $primary.") if T(2);
84        }
85      # Create the $erload object.      # Create the $erload object.
86      my $retVal = {      my $retVal = {
87                    dbh => $erdb,                    dbh => $erdb,
# Line 80  Line 91 
91                    fileSize => 0,                    fileSize => 0,
92                    lineCount => 0,                    lineCount => 0,
93                    stats => Stats->new(),                    stats => Stats->new(),
94                    primary => ($erdb->_IsPrimary($relationName) ? 1 : 0),                    primary => $primary
95                   };                   };
     Trace("Relation $relationName load file created with primary flag " . $retVal->{primary} . ".")  
         if T(2);  
96      # Bless and return it.      # Bless and return it.
97      bless $retVal, $class;      bless $retVal, $class;
98      return $retVal;      return $retVal;
# Line 109  Line 118 
118  =cut  =cut
119  #: Return Type ;  #: Return Type ;
120  sub Put {  sub Put {
121      # Get the ERDBLoad instance.      # Get the ERDBLoad instance and the field list.
122      my $self = shift @_;      my ($self, @rawFields) = @_;
123        # Insure the field values are okay.
124        my $truncates = $self->{dbh}->VerifyFields($self->{relName}, \@rawFields);
125      # Run through the list of field values, escaping them.      # Run through the list of field values, escaping them.
126      my @fields = map { Tracer::Escape($_) } @_;      my @fields = map { Tracer::Escape($_) } @rawFields;
127      # If this is a primary relation, append the new-record field.      # If this is a primary relation, append the new-record field.
128      if ($self->{primary}) {      if ($self->{primary}) {
129          push @fields, '0';          push @fields, '0';
# Line 128  Line 139 
139      $self->{fileSize} += $lineLength;      $self->{fileSize} += $lineLength;
140      $self->{lineCount} ++;      $self->{lineCount} ++;
141      $self->Add("lineOut");      $self->Add("lineOut");
142        if ($truncates > 0) {
143            $self->Add("truncated", $truncates);
144        }
145  }  }
146    
147  =head3 Add  =head3 Add
148    
149  C<< my  = $stats->Add($statName); >>  C<< my  = $stats->Add($statName, $value); >>
150    
151  Increment the specified statistic.  Increment the specified statistic.
152    
# Line 142  Line 156 
156    
157  Name of the statistic to increment.  Name of the statistic to increment.
158    
159    =item value (optional)
160    
161    Value by which to increment it. If omitted, C<1> is assumed.
162    
163  =back  =back
164    
165  =cut  =cut
166  #: Return Type ;  #: Return Type ;
167  sub Add {  sub Add {
168      # Get the parameters.      # Get the parameters.
169      my ($self, $statName) = @_;      my ($self, $statName, $value) = @_;
170        # Fix the value.
171        if (! defined $value) {
172            $value = 1;
173        }
174      # Increment the statistic.      # Increment the statistic.
175      $self->{stats}->Add($statName);      $self->{stats}->Add($statName, $value);
176  }  }
177    
178  =head3 Finish  =head3 Finish

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.9

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3