8 Usage: $0 <db-name> <lib-map-output> < <lib-file>
17 my ($policy, $lib, $sys) = split "\t";
18 my ($sys_pol) = split '-', $policy;
20 $libs{$sys_pol}{libs} ||= [];
21 $libs{$sys_pol}{name} = $sys;
22 $libs{$sys_pol}{type} = 2;
23 push @{ $libs{$sys_pol}{libs} }, {name => $lib, shortname => $policy, type => 3 };
26 my $dbh = DBI->connect("dbi:Pg:host=10.1.0.13;port=5432;dbname=$ARGV[0]",'postgres');
30 my $find_lib_ou = 'select id from actor.org_unit where shortname = ?';
31 for my $sname (keys %libs) {
32 ($libs{$sname}{id}) = $dbh->selectrow_array($find_lib_ou,{},$sname);
33 $lib_map->{$sname} = $libs{$sname}{id};
34 for my $lib (@{ $libs{$sname}{libs} }) {
35 ($$lib{id}) = $dbh->selectrow_array($find_lib_ou,{},$$lib{shortname});
36 $lib_map->{$$lib{shortname}} = $$lib{id};
40 my $find_parent_ou = 'select parent_ou from actor.org_unit where shortname = ?';
41 my $create_lib_ou = 'insert into actor.org_unit (name,shortname,parent_ou,ou_type) VALUES (?,?,?,?)';
42 for my $sname (keys %libs) {
43 unless ($libs{$sname}{id}) {
44 $dbh->do($create_lib_ou,{},$libs{$sname}{name},$sname, 1,$libs{$sname}{type});
45 ($libs{$sname}{id}) = $dbh->selectrow_array($find_lib_ou,{},$sname);
46 $lib_map->{$sname} = $libs{$sname}{id};
48 ($libs{$sname}{parent_ou}) = $dbh->selectrow_array($find_parent_ou,{},$libs{$sname}{shortname});
49 my $pid = $libs{$sname}{id};
50 for my $lib (@{ $libs{$sname}{libs} }) {
52 $dbh->do($create_lib_ou,{},$$lib{name},$$lib{shortname}, $pid,$$lib{type});
53 ($$lib{id}) = $dbh->selectrow_array($find_lib_ou,{},$$lib{shortname});
54 $lib_map->{$$lib{shortname}} = $$lib{id};
56 ($$lib{parent_ou}) = $dbh->selectrow_array($find_parent_ou,{},$$lib{shortname});
60 open FH, ">$ARGV[1]" or die "Can't open $ARGV[1] to write the map file! $!";
61 print FH Data::Dumper->Dump([$lib_map],['lib_map']);
63 warn Dumper( $dbh->selectall_hashref("SELECT * FROM actor.org_unit;" => 'id') );