4 use lib '../perlmods/';
6 { package OpenILS::Application::Storage; sub register_method {}; }
10 use lib '../perlmods/';
11 use lib '../../../OpenSRF/src/perlmods/';
12 use OpenILS::Utils::Fieldmapper;
13 use OpenILS::Application::Storage::Driver::Pg::dbi;
15 $map = $Fieldmapper::fieldmap unless ($@);
20 warn "Generating fieldmapper IDL xml...\n";
23 <IDL xmlns="http://opensrf.org/spec/IDL/base/v1" xmlns:oils_persist="http://open-ils.org/spec/opensrf/IDL/persistence/v1" xmlns:oils_obj="http://open-ils.org/spec/opensrf/IDL/objects/v1">
27 for my $object (keys %$map) {
28 next unless ($map->{$object}->{cdbi});
30 my $fm = $$map{$object}{cdbi};
31 my $short_name= $map->{$object}->{hint};
32 my ($primary) = $map->{$object}->{cdbi}->columns('Primary');
33 my ($seq) = $map->{$object}->{cdbi}->sequence;
34 my $table = $map->{$object}->{cdbi}->table;
37 <class id="$short_name" oils_obj:fieldmapper="$fm" oils_persist:tablename="$table">
38 <fields oils_persist:primary="$primary" oils_persist:sequence="$seq">
41 for my $field (sort { $$map{$object}{fields}{$a}{position} <=> $$map{$object}{fields}{$b}{position}} keys %{$map->{$object}->{fields}}) {
42 my $position = $map->{$object}->{fields}->{$field}->{position};
43 my $virtual = $map->{$object}->{fields}->{$field}->{virtual} ? 'true' : 'false';
45 <field name="$field" oils_obj:array_position="$position" oils_persist:virtual="$virtual" />
54 my $meta = $$map{$object}{cdbi}->meta_info();
57 for my $reltype ( keys %$meta ) {
58 for my $colname ( keys %{ $$meta{$reltype} } ) {
59 my $col = $$meta{$reltype}{$colname};
61 my $f_class = $col->foreign_class;
62 my $fm_link = "Fieldmapper::$f_class";
63 next unless $$map{$fm_link}{cdbi};
65 my $f_key = $col->args->{foreign_key} || ($f_class->columns('Primary'))[0];
66 my $f_hint = $$map{$fm_link}{hint};
67 my $map = join ' ', @{ $col->args->{mapping} } if ( $col->args->{mapping} );
70 <link field="$colname" reltype="$reltype" key="$f_key" map="$map" class="$f_hint"/>