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

use strict;
use warnings;
use lib '/app/tools/common/lib';
use Common::Assert;

use lib '/app/tools/rps/lib';
use RPS::Master::Master;
use RPS::Track::Track;
use RPS::Catalog::ArtistList;

use Common::FormObject;
use base 'Common::FormObject';

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

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

	if ($args{masterID})
	{
		$self->{Master} = RPS::Master::Master->new(masterID => $args{masterID});

		# find associated tracks
		#
		my $tracks;
		$tracks = RPS::DB::Item::Track->GetTracksByMasterID($args{masterID});

		if(defined $tracks && $tracks->size > 0)
		{
			while ($tracks->hasNext())
			{
				my $trackObj = $tracks->next();

				push @{$self->{TrackList}{Track}}, RPS::Track::Track->new(_dbItem => $trackObj, loadSubs => 0);
			}
		}
	}
	else
	{
		$self->{Master} = RPS::Master::Master->new();
	}

	$self->{ArtistList} = RPS::Catalog::ArtistList->new();

	return $self;
}

sub _propertyIsEditable
{
	my ($self, $propertyName) = @_;

	# The Product (and contained objects) can be edited.
	#
	if ($propertyName eq 'Master')
	{
		return 1;
	}
	return 0;
}

sub validate
{
	my ($self) = @_;

	# JPK - This is one of those situations where I _don't_ want to
	# validate everything this object contains.  It's a waste of time
	# to validate the <Master>, for example, since we don't support making
	# changes to it.
	#
	my $valid = $self->{Master}->validate();

	return $valid;
}


sub save
{
	my ($self) = @_;

	# my $userID = Common::RSApp::GetActiveUserID();

	$self->{Master}->save();
}


sub masterID
{
	my ($self) = @_;
	return $self->{Master}->MasterID();
}


###
1;#
###
