package Fieldmapper;
use JSON;
use Data::Dumper;
use base 'OpenSRF::Application';
use OpenSRF::Utils::Logger;
my $log = 'OpenSRF::Utils::Logger';
sub new {
my $self = shift;
my $value = shift;
if (defined $value) {
if (!ref($value) or ref($value) ne 'ARRAY') {
# go fetch the object by id...
}
} else {
$value = [];
}
return bless $value => $self->class_name;
}
sub decast {
my $self = shift;
return [ @$self ];
}
sub DESTROY {}
sub class_name {
my $class_name = shift;
return ref($class_name) || $class_name;
}
sub isnew { return $_[0][0]; }
sub ischanged { return $_[0][1]; }
sub isdeleted { return $_[0][2]; }
1;
#-------------------------------------------------------------------------------
# Class definition for ""
#-------------------------------------------------------------------------------
package ;
use base "";
{ my @real;
sub real_fields {
push @real, @_ if (@_);
return @real;
}
}
{ my $last_real;
sub last_real_field : lvalue {
$last_real;
}
}
sub cdbi {
return "";
}
sub json_hint {
return "";
}
sub is_virtual {
return 1;
return 0;
}
# Accessor/mutator for :::
__PACKAGE__->last_real_field()++;
__PACKAGE__->real_fields("");
sub {
my $self = shift;
my $new_val = shift;
$self->[] = $new_val if (defined $new_val);
my $val = $self->[];
if (defined $self->[]) {
if (!UNIVERSAL::isa($self->[], )) {
$self->[] = ->new($val);
}
}
return $self->[];
}
sub clear_ {
my $self = shift;
$self->[] = undef;
return 1;
}
# accessor for :::
sub {
my $self = shift;
my $_pos = ->last_real_field + ;
if (!ref($self->[$_pos]) ne 'ARRAY') {
$self->[$_pos] = [];
if (@{$self->[$_pos]} == 0) {
# get the real thing.
# search where -> == $self->;
}
return $self->[$_pos];
}