;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Jun 2001
;;;;
-;;;; $Id: pubmed.lisp,v 1.5 2002/10/31 21:07:04 kevin Exp $
+;;;; $Id: pubmed.lisp,v 1.6 2002/10/31 21:37:56 kevin Exp $
;;;;
;;;; This file, part of cl-pubmed, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
;; Conditions
#:pubmed-condition
+ #:pubmed-query-error
#:pubmed-server-error
;; Query functions
(format stream "A PubMed server error occurred.")
(awhen (pubmed-server-error-response c)
(format stream " The server response was:~&~S" it)))))
+
+(define-condition pubmed-query-error (error pubmed-condition)
+ ((response :initarg :response
+ :initform nil
+ :reader pubmed-query-error-response))
+ (:report (lambda (c stream)
+ (format stream "A PubMed server error occurred.")
+ (awhen (pubmed-server-query-response c)
+ (format stream " The server response was:~&~S" it)))))
;;; Article-Set and Article Classes
(defun extract-pmid-list (results)
"Returns list of PubMed ID's from XML result string"
- (if (or (search "<ERROR>" results)
- (search "<H1>Server Error</H1>" results))
- (error 'pubmed-server-error :response results)
+ (cond
+ ((search "<ERROR>" results)
+ (error 'pubmed-query-error :response results))
+ ((search "<H1>Server Error</H1>" results)
+ (error 'pubmed-server-error :response results))
+ (t
(awhen (xml-tag-contents "Id" results)
- (delimited-string-to-list it #\space))))
+ (delimited-string-to-list it #\space)))))