reformat attributes with date in name and format yyyymmdd into iso yyyy-mm-dd format
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 1 Mar 2010 18:57:30 +0000 (18:57 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 1 Mar 2010 18:57:30 +0000 (18:57 +0000)
for easier import into databases

bin/ldap-rewrite.pl

index 5994286..48a706a 100755 (executable)
@@ -136,15 +136,19 @@ sub log_response {
 
                my @attrs;
 
-               map {
-                       if ( $_->{type} eq 'hrEduPersonUniqueNumber' ) {
-                               foreach my $val ( @{ $_->{vals} } ) {
+               foreach my $attr ( @{ $response->{protocolOp}->{searchResEntry}->{attributes} } ) {
+                       if ( $attr->{type} =~ m/date/i ) {
+                               foreach my $i ( 0 .. $#{ $attr->{vals} } ) {
+                                       $attr->{vals}->[$i] = "$1-$2-$3" if $attr->{vals}->[$i] =~ m/^([12]\d\d\d)([01]\d+)([123]\d+)$/;
+                               }
+                       } elsif ( $attr->{type} eq 'hrEduPersonUniqueNumber' ) {
+                               foreach my $val ( @{ $attr->{vals} } ) {
                                        next if $val !~ m{.+:.+};
                                        my ( $n, $v ) = split(/\s*:\s*/, $val );
                                        push @attrs, { type => $_->{type} . '_' . $n, vals => [ $v ] };
                                }
                        }
-               } @{ $response->{protocolOp}->{searchResEntry}->{attributes} };
+               }
 
                warn "# ++ attrs ",dump( @attrs );