/[A3C]/lib/A3C/Record.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /lib/A3C/Record.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 240 - (hide annotations)
Wed Oct 1 19:58:37 2008 UTC (15 years, 6 months ago) by dpavlin
File size: 1411 byte(s)
return id correctly

1 dpavlin 54 package A3C::Record;
2    
3     use strict;
4     use warnings;
5    
6     use base 'Jifty::Record';
7    
8 dpavlin 208 use Data::Dump qw/dump/;
9    
10 dpavlin 54 =head1 NAME
11    
12     Custom Record class for A3C
13    
14     =head1 METHODS
15    
16     =head2 load_or_create
17    
18 dpavlin 74 Perform canonicalization on C<load_or_create> and loads subset of columns
19     (which hopfully are indexes in model for performance reasons).
20 dpavlin 54
21     =cut
22    
23     sub load_or_create {
24     my $class = shift;
25     my $self;
26     if ( ref($class) ) {
27     ( $self, $class ) = ( $class, undef );
28     } else {
29     $self = $class->new();
30 dpavlin 76 }
31 dpavlin 54
32     my %args = (@_);
33    
34     foreach my $key ( keys %args ) {
35     $args{$key} = $self->run_canonicalization_for_column(
36     column => $key,
37     value => $args{$key}
38     );
39     }
40    
41 dpavlin 74 my %load_cols;
42    
43 dpavlin 75 if ( ref($self) eq Jifty->app_class('Model','Person') ) {
44 dpavlin 74
45     $load_cols{$_} = $args{$_} foreach ( qw/
46     uid
47     hrEduPersonUniqueID
48     mail
49     / );
50    
51     } else {
52     %load_cols = %args;
53     }
54    
55     my ( $id, $msg ) = $self->load_by_cols(%load_cols);
56 dpavlin 54 unless ( $self->id ) {
57     return $self->create(%args);
58     }
59    
60 dpavlin 240 return ( $self->id, $msg );
61 dpavlin 54 }
62    
63 dpavlin 208 =head2 create
64    
65     Serialize ARRAY values into single scalar separated by magic C<< <*> >> marker
66    
67     =cut
68    
69     sub create {
70     #warn "# create",dump(@_);
71     my $self = shift;
72     my %data = @_ or die "no data?";
73     foreach my $col ( keys %data ) {
74     #warn "## ref($col)=",ref($col);
75     $data{$col} = join(' <*> ', @{$data{$col}}) if ref( $data{$col} ) eq 'ARRAY';
76     }
77     #warn "## data = ",dump( %data );
78     $self->SUPER::create( %data );
79     }
80    
81    
82 dpavlin 54 1;

  ViewVC Help
Powered by ViewVC 1.1.26