package SRU::Request::SearchRetrieve;
use strict;
use warnings;
use base qw( Class::Accessor SRU::Request );
use SRU::Utils qw( error );
use CQL::Parser;
=head1 NAME
SRU::Request::SearchRetrieve - A class for representing SRU searchRetrieve requests
=head1 SYNOPSIS
## creating a new request
my $request = SRU::Request::SearchRetrieve->new(
version => '1.1',
query => 'kirk and spock' );
=head1 DESCRIPTION
=head1 METHODS
=head2 new()
The constructor which you can pass the following parameters:
version, query, startRecord, maximumRecords, recordPacking, recordSchema,
recordXPath, resultSetTTL, sortKeys, stylesheet, extraRequestData.
The version and query parameters are mandatory.
=cut
sub new {
my ($class,%args) = @_;
return SRU::Request::SearchRetrieve->SUPER::new( \%args );
}
=head2 version()
=head2 query()
=head2 startRecord()
=head2 maximumRecords()
=head2 recordPacking()
=head2 recordSchema()
=head2 recordXPath()
=head2 resultSetTTL()
=head2 sortKeys()
=head2 stylesheet()
=head2 extraRequestData()
=cut
my @validParams = qw(
version
query
startRecord
maximumRecords
recordPacking
recordSchema
recordXPath
resultSetTTL
sortKeys
stylesheet
extraRequestData
);
sub validParams { return @validParams };
SRU::Request::SearchRetrieve->mk_accessors( @validParams );
=head2 cql()
Fetch the root node of the CQL parse tree for the query.
=cut
sub cql {
my $self = shift;
my $query = $self->query();
return '' unless $query;
my $node;
my $parser = CQL::Parser->new();
eval { $node = $parser->parse( $query ) };
return $node;
}
1;