Mercurial > hg > amuse
diff implementations/mtp/methods.lisp @ 53:ce4a90427366
implementations/mtp/: add interface to datasets
darcs-hash:20070621120721-c0ce4-54d29dd03ab4d7d61c70ed808d0fd3277687929e.gz
author | Marcus Pearce <m.pearce@gold.ac.uk> |
---|---|
date | Thu, 21 Jun 2007 13:07:21 +0100 |
parents | 894fb5156603 |
children | 8b31d54c95be |
line wrap: on
line diff
--- a/implementations/mtp/methods.lisp Wed Jun 20 17:05:15 2007 +0100 +++ b/implementations/mtp/methods.lisp Thu Jun 21 13:07:21 2007 +0100 @@ -4,6 +4,30 @@ #.(clsql:locally-enable-sql-reader-syntax) +(defgeneric get-dataset (identifer)) + +(defmethod get-dataset ((identifier mtp-dataset-identifier)) + (let* ((dataset-id (dataset-id identifier)) + (where-clause [= [dataset-id] dataset-id]) + (data (clsql:select [*] :from [mtp-dataset] :where where-clause)) + (dataset (make-mtp-dataset :dataset-id (first data) + :description (second data) + :timebase (third data) + :midc (fourth data))) + (compositions nil) + (composition-count + (1+ + (car + (clsql:select [max [composition-id]] :from [mtp-composition] + :where where-clause :flatp t :field-names nil))))) + (dotimes (composition-id composition-count) + (push (get-composition + (make-mtp-composition-identifier dataset-id composition-id)) + compositions)) + (sequence:adjust-sequence dataset (length compositions) + :initial-contents (nreverse compositions)) + dataset)) + (defmethod get-composition ((identifier mtp-composition-identifier)) (let* ((dataset-id (dataset-id identifier)) (composition-id (composition-id identifier))