Alvis-Convert

 view release on metacpan or  search on metacpan

lib/Alvis/Document.pm  view on Meta::CPAN

	    {
		$self->{'errstr'}.=" " . $errmsg;
	    }
	}
    }
    else
    {
	confess("Internal error: set_err_state() called with an " .
		"unrecognized argument ($errcode).")
    }
}

sub errmsg
{
    my $self=shift;
    
    return $self->{errstr};
}

############################################################################
#
#          Public methods
#
############################################################################

sub assemble
{
    my $self=shift;
    my $ingredients=shift;

    if (!defined($ingredients->{canDoc}))
    {
	$self->_set_err_state($ERR_CAN_DOC);
	return undef;
    }
    if (!defined($ingredients->{meta}))
    {
	$self->_set_err_state($ERR_META);
	return undef;
    }
    if (!defined($ingredients->{meta}->get('date')))
    {
	$self->_set_err_state($ERR_DATE);
	return undef;
    }
    if (!defined($ingredients->{meta}->get('url')))
    {
	$self->_set_err_state($ERR_URL);
	return undef;
    }

    my $XML;

    my $md5;
    if (defined($ingredients->{origText}) && $self->{includeOriginalDocument})
    {
	$md5=uc(Digest::MD5->new->add($ingredients->{origText})->hexdigest());
    }
    else
    {
	$md5=uc(Digest::MD5->new->add(encode_utf8($ingredients->{canDoc}))->hexdigest());
    }

    $XML.="  <documentRecord id=\"$md5\" xmlns=\"http://alvis.info/enriched/\">\n";
    $XML.="    <acquisition>\n";

    my $last_modified;
    if (defined($ingredients->{meta}->get('date')))
    {
	$last_modified=$ingredients->{meta}->get('date');
    }
    else
    {
	$last_modified=$ingredients->{meta}->get('dc:date');
    }
    $last_modified=$self->_txt2XMLsafe($last_modified);
    my $http_server;
    if (defined($ingredients->{meta}->get('server')))
    {
	$http_server=$self->_txt2XMLsafe($ingredients->{meta}->get('server'));
    }
    $XML.=$self->_acquisition_data($last_modified,
				   $http_server,
				   $self->_txt2XMLsafe(
					$ingredients->{meta}->get('url')));
    if (defined($ingredients->{origText}) && $self->{includeOriginalDocument})
    {
	$XML.="      " . 
	    $self->_original_document($ingredients->{origText}) . "\n";
    }
    $XML.=$self->_canonical_document($ingredients->{canDoc});
    $XML.=$self->_meta_data($ingredients->{meta});
    if (defined($ingredients->{links}))
    {
	my $links_txt=$self->_links($ingredients->{links});
	if (!defined($links_txt))
	{
	    $self->_set_err_state($ERR_LINKS_TXT);
	    return undef;
	}
	$XML.=$links_txt;
    }
    $XML.="    </acquisition>\n";
    $XML.="  </documentRecord>\n";

    return $XML;
}

sub set
{
    my $self=shift;
    my $option=shift;
    my $value=shift;

    $self->{$option}=$value;
}

############################################################################
#
#          Private methods
#



( run in 0.493 second using v1.01-cache-2.11-cpan-140bd7fdf52 )