package HTTP::OAI::Metadata::OAI_Eprints;

use strict;
use warnings;

use Carp;
use XML::LibXML;
use HTTP::OAI::Metadata;

use vars qw( @ISA );
@ISA = qw( HTTP::OAI::Metadata );

sub new {
	my $self = shift->SUPER::new(@_);
	my %args = @_;
	my $dom = XML::LibXML->createDocument();
	$dom->setDocumentElement(my $root = $dom->createElementNS('http://www.openarchives.org/OAI/1.1/eprints','eprints'));
#	$root->setAttribute('xmlns','http://www.openarchives.org/OAI/2.0/oai-identifier');
	$root->setAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
	$root->setAttribute('xsi:schemaLocation','http://www.openarchives.org/OAI/1.1/eprints http://www.openarchives.org/OAI/1.1/eprints.xsd');
	for(qw( content metadataPolicy dataPolicy submissionPolicy )) {
		Carp::croak "Required argument $_ undefined" if !defined($args{$_}) && $_ =~ /metadataPolicy|dataPolicy/;
		next unless defined($args{$_});
		my $node = $root->appendChild($dom->createElement($_));
		$args{$_}->{'URL'} ||= [];
		$args{$_}->{'text'} ||= [];
		foreach my $value (@{$args{$_}->{'URL'}}) {
			$node->appendChild($dom->createElement('URL'))->appendChild($dom->createTextNode($value));
		}
		foreach my $value (@{$args{$_}->{'text'}}) {
			$node->appendChild($dom->createElement('text'))->appendChild($dom->createTextNode($value));
		}
	}
	$args{'comment'} ||= [];
	for(@{$args{'comment'}}) {
		$root->appendChild($dom->createElement('comment'))->appendChild($dom->createTextNode($_));
	}
	$self->dom($dom);
	$self;
}

1;
