view implementations/midi-db/methods.lisp @ 314:937334f2bcd2

Add generic ID constructor to midi-db. Ignore-this: 91554466a43d64ee99fbf840985d7c6b darcs-hash:20100414185257-16a00-dcfa03eaa450cfdce842c64c3f49214c5c938181.gz
author j.forth <j.forth@gold.ac.uk>
date Wed, 14 Apr 2010 19:52:57 +0100
parents f99fd6a7bbfc
children 2138ea478adb
line wrap: on
line source
(cl:in-package #:amuse-midi-db)

;;;=====================================================================
;;; Specialized constructors
;;;=====================================================================

(defmethod make-composition-identifier ((package (eql *package*))
				       composition-id)
  (make-midi-db-composition-identifier composition-id))



;;;=====================================================================
;;; Specialized database-admin methods
;;;=====================================================================

(defmethod list-collections ((package (eql *package*)) &key
			     compositions (stream *standard-output*))
  "FIXME: better formatting."
  (let ((collection-rows (%get-all-collection-headers)))
    (flet ((print-separator (&optional (columns 77))
	     (format stream "~% ~A"
		     (make-sequence 'string columns :initial-element #\-))))
      (loop for collection-row in collection-rows
	 do (destructuring-bind (collection-id collection-name description)
		collection-row
	      (format stream "~%Collection-id: ~A~% Name: ~A~% Description: ~A~%"
		      collection-id collection-name description)
	      (when compositions
		(list-compositions package
				   :collection-identifier
				   (make-midi-db-collection-identifier
				    collection-id))))
	 do (print-separator)))))

(defmethod list-compositions ((package (eql *package*)) &key
			      collection-identifier
			      (stream *standard-output*))
  (let ((composition-headers
	 (if collection-identifier
	     (%get-all-collection-composition-headers
	      collection-identifier)
	     (%get-all-composition-headers))))
    (loop for composition-header in composition-headers
       do (destructuring-bind (collection-id filename timebase start
					      duration owner version
					      creation-timestamp
					      deletion-timestamp)
	      composition-header
	    (format stream "~%Collection-id: ~A filename: ~A timebase: ~A start: ~A duration: ~A owner: ~A version: ~A created: ~A deleted: ~A~%"
		    collection-id filename timebase start duration owner
		    version creation-timestamp deletion-timestamp)))))