changeset 149:a45da9b93b37

implementations/mtp/methods.lisp: fix some bugs in dataset retrieval. darcs-hash:20071025122256-c0ce4-dc50f52a16aaa6d3d78d961e6a934a5af77b7542.gz
author Marcus Pearce <m.pearce@gold.ac.uk>
date Thu, 25 Oct 2007 13:22:56 +0100
parents c8db9d1bd191
children b8c73a9b9c10
files implementations/mtp/methods.lisp
diffstat 1 files changed, 15 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/implementations/mtp/methods.lisp	Thu Oct 25 12:51:14 2007 +0100
+++ b/implementations/mtp/methods.lisp	Thu Oct 25 13:22:56 2007 +0100
@@ -14,7 +14,7 @@
 (defmethod get-dataset ((identifier mtp-dataset-identifier))
   (let* ((dataset-id (dataset-id identifier))
          (where-clause [= [dataset-id] dataset-id])
-         (db-dataset (clsql:select [*] :from [mtp-dataset] :where where-clause))
+         (db-dataset (car (clsql:select [*] :from [mtp-dataset] :where where-clause)))
          (db-compositions (clsql:select [composition-id][description] 
                                         :from [mtp-composition] 
                                         :order-by '(([composition-id] :asc))
@@ -33,8 +33,8 @@
          (events nil))
     ;; for each db-composition 
     (dolist (dbc db-compositions)
-      (let ((composition-id (first dbc))
-            (description (second dbc)))
+      (let ((composition-id (car dbc))
+            (description (car dbc)))
         ;; for each db-event 
         (do* ((dbes db-events (cdr dbes))
               (dbe (car dbes) (car dbes))
@@ -43,17 +43,18 @@
               (setf db-events dbes))
           (when dbe
             (push (db-event->mtp-event dbe) events)))
-        (let* ((interval (+ (timepoint (car events)) (duration (car events))))
-               (composition 
-                (make-mtp-composition :dataset-id dataset-id 
-                                      :composition-id composition-id
-                                      :description description
-                                      :time 0
-                                      :interval interval)))
-          (sequence:adjust-sequence composition (length events)
-                                    :initial-contents (nreverse events))
-          (setf events nil)
-          (push composition compositions))))
+        (when events
+          (let* ((interval (+ (timepoint (car events)) (duration (car events))))
+                 (composition 
+                  (make-mtp-composition :dataset-id dataset-id 
+                                        :composition-id composition-id
+                                        :description description
+                                        :time 0
+                                        :interval interval)))
+            (sequence:adjust-sequence composition (length events)
+                                      :initial-contents (nreverse events))
+            (setf events nil)
+            (push composition compositions)))))
     (sequence:adjust-sequence dataset (length compositions)
                               :initial-contents (nreverse compositions))
     dataset))