Bivio::Biz::Model::TimeZoneList
# Copyright (c) 2010 bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::Biz::Model::TimeZoneList;
use strict;
use Bivio::Base 'Biz.ListModel';
my($_C) = b_use('FacadeComponent.Constant');
my($_R) = b_use('IO.Ref');
my($_TZ) = b_use('Type.TimeZone');
sub display_name_for_enum {
my($self, $enum) = @_;
$self->load_all
unless $self->is_loaded;
return $self->find_row_by(enum => $enum) ? $self->get('display_name')
: $enum->as_display_name;
}
sub enum_for_display_name {
my($self, $display_name) = @_;
return _get_enum_from_model($self, $display_name)
|| $_TZ->from_any($display_name);
}
sub internal_initialize {
my($self) = @_;
return $self->merge_initialize_info($self->SUPER::internal_initialize, {
version => 1,
can_iterate => 0,
$self->field_decl(
primary_key => [
[qw(enum TimeZone)],
],
other => [
[qw(display_name Line)],
],
undef, 'NOT_NULL',
),
});
}
sub internal_load_rows {
my($self) = @_;
return $_R->nested_copy(
$_C->get_value('Model.TimeZoneList.rows', $self->req));
}
sub unsafe_enum_for_display_name {
my($self, $display_name) = @_;
return _get_enum_from_model($self, $display_name)
|| $_TZ->unsafe_from_any($display_name);
}
sub _get_enum_from_model {
my($self, $display_name) = @_;
$self->load_all
unless $self->is_loaded;
return $self->find_row_by(display_name => $display_name)
? $self->get('enum') : undef;
}
1;