package Opals::XML::SAX::LicenseListHandler;

# Version number
$VERSION   = 0.01;

use warnings;
use strict;
use XML::SAX;
use base qw( XML::SAX::Base );
#################################################################
sub new {
    my ($class) = @_;
    my $type = shift;
    my $self={parsingSection=>'',parsingSubSection=>''};
    $self->{text}="";
    bless $self, $class;
    return $self;
}

#################################################################
sub start_element {
    my ($self, $element) = @_;
    my $name = $element->{'Name'};
    if($name eq 'licenseList'){
        $self->{'parsingSection'}='licenseList';
        $self->{'licenseList'}=[];
        $self->{'licenseListIndex'}=-1;
    }
    elsif($name eq 'licenseInfo'){
        $self->{'parsingSubSection'}='licenseInfo';
        $self->{'licenseListIndex'}++;
        my $i=$self->{'licenseListIndex'};
        @{$self->{'licenseList'}}[$i]={};
    }
    $self->{text}="";
} 
#################################################################
sub end_element {
    my ($self, $element) = @_;
    my $name = $element->{'Name'};
    if($name eq 'licenseInfo'){
        $self->{'parsingSubSection'}='';
    }
    elsif($name eq 'licenseList'){
        $self->{'parsingSection'}='';
    }
    else{    
        if($self->{'parsingSection'} eq 'licenseList' &&
            $self->{'parsingSubSection'} eq 'licenseInfo'){
            my $i=$self->{'licenseListIndex'};
            @{$self->{'licenseList'}}[$i]->{$name}=$self->{text};
            
        }
        else{
            $self->{$name}=$self->{text};
        }
    }

    $self->{text}="";
  
}
#################################################################
sub characters {
    my $self = shift;
    my $text = shift;
    $self->{text} .= $text->{Data};
}

1;
