#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::Genre::GenreWithClientMap;

use strict;
use warnings;

use lib '/app/tools/rps/lib';
use Common::FormObject;
use base 'RPS::Genre';

use RPS::DB::Item::Genre;


sub _init
{
	my ($self, %args) = @_;

	$self->SUPER::_init(%args);

	my %properties;
	if ($args{_dbItem})
	{
		$self->_propertiesFromDBItem(\%properties, $args{_dbItem});
	}
	elsif ( $args{genreName} && $args{serviceID} )
	{
		$self->_propertiesFromDB(\%properties, $args{genreName}, $args{serviceID});
	}
	else
	{
		assert( 0, "genreName and serviceID required" );
	}

    my $rval = $self->_initProperties(\%properties);

    return $rval;
}

sub _propertiesFromDB
{
	my ($self, $hrProperties, $genreName, $serviceID) = @_;

	my $dbItem = RPS::DB::Item::Genre->LookupWithMap(genre_name => $genreName, service_id => $serviceID);
	$self->_propertiesFromDBItem($hrProperties, $dbItem);
}

sub _propertiesFromDBItem
{
    my ($self, $hrProperties, $dbItem) = @_;

	$hrProperties->{genre_id}      = $dbItem->genre_id;
	$hrProperties->{genre_name}    = $dbItem->genre_name;
	$hrProperties->{map_name}      = $dbItem->{map_name};
	$hrProperties->{service_id}    = $dbItem->{service_id};

	$hrProperties->{date_created}  = $dbItem->date_created;
	$hrProperties->{date_modified} = $dbItem->date_modified;
}

sub _propertiesFromDefaults
{
    my ($self, $hrProperties) = @_;

}


sub _initProperties
{
	my ($self, $props) = @_;

	$self->SUPER::_initProperties($props);

    $self->{MapName}      = Common::FormObject::Scalar->new(value => $props->{map_name}, readOnly => 1);
	$self->{ServiceID}    = Common::FormObject::Scalar->new(value => $props->{service_id}, readOnly => 1);

	return $self;
}



1;
