;;;; Author: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: class-support.lisp,v 1.4 2003/05/07 21:57:06 kevin Exp $
+;;;; $Id: class-support.lisp,v 1.5 2003/05/07 22:53:36 kevin Exp $
;;;;
;;;; This file, part of UMLisp, is
;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
"Returns T if UCON has a semantic type of TUI."
(some #'(lambda (usty) (= tui (tui usty))) (s#sty ucon)))
+(defgeneric suistr (lo))
+(defmethod suistr ((lo ulo))
+ "Return the string for a ulo object"
+ (find-string-sui (sui lo)))
+
#+(or scl cmu)
(dolist (c '(urank udef usat uso ucxt ustr ulo uterm usty urel ucoc uatx ucon uxw uxnw uxns lexterm labr lagr lcmp lmod lnom lprn lprp lspl ltrm ltyp lwd sdef sstr sstre1 sstre2 usrl))
#+cmu
;;;; Author: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: create-sql.lisp,v 1.1 2003/05/07 21:57:06 kevin Exp $
+;;;; $Id: create-sql.lisp,v 1.2 2003/05/07 22:53:36 kevin Exp $
;;;;
;;;; This file, part of UMLisp, is
;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
"Return sql insert command for a row of values"
(let ((insert-func
(lambda (col value)
- (let ((q (quotechar col)))
- (concatenate 'string q (insert-col-value col value) q)))))
+ (concatenate 'string (quote-str col)
+ (insert-col-value col value)
+ (quote-str col)))))
(format
nil "INSERT INTO ~a (~{~a~^,~}) VALUES (~A)"
(table file)
(let ((custom-value (funcall (custom-value-fun col) values)))
(if custom-value
(if doquote
- (let ((q (quotechar col)))
- (concatenate 'string q (escape-backslashes custom-value) q))
+ (concatenate 'string (quote-str col)
+ (escape-backslashes custom-value)
+ (quote-str col))
(escape-backslashes custom-value))
"")))
;;;; Author: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: parse-common.lisp,v 1.9 2003/05/07 21:57:06 kevin Exp $
+;;;; $Id: parse-common.lisp,v 1.10 2003/05/07 22:53:36 kevin Exp $
;;;;
;;;; This file, part of UMLisp, is
;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
:datatype (datatype ucol) :custom-value-fun (custom-value-fun ucol))
(make-empty-ucol colname filename)))
+(defun ensure-compiled-fun (fun)
+ "Ensure that a function is compiled"
+ (etypecase fun
+ (function
+ (if (compiled-function-p fun)
+ fun
+ (compile nil fun)))
+ (list
+ (compile nil fun))))
+
(defun make-ucol (col des ref min av max fil dty
&key (sqltype "VARCHAR") (parse-fun #'add-sql-quotes)
(quote-str "'") (custom-value-fun))
(let ((ucol (make-instance
'ucol
:col col :des des :ref ref :min min :av av :max max :fil fil
- :dty dty :sqltype sqltype :parse-fun parse-fun
- :quote-str quote-str :custom-value-fun custom-value-fun)))
+ :dty dty :sqltype sqltype :quote-str quote-str
+ :parse-fun (ensure-compiled-fun parse-fun)
+ :custom-value-fun (ensure-compiled-fun custom-value-fun))))
(ensure-ucol-datatype ucol (datatype-for-colname col))
ucol))
(defun make-empty-ucol (colname filename)
+ (warn "call in make-empty-ucol")
(make-ucol (copy-seq colname) "Unknown" "" nil nil nil filename nil))
(defun find-ucol (colname filename)
(multiple-value-bind (value found) (gethash col col-counts)
(cond
(found
- (incf (gethash col col-counts))
+ (incf (gethash colname col-counts))
(concatenate 'string colname (write-to-string (1+ value))))
(t
- (setf (gethash col col-counts) 1)
+ (setf (gethash colname col-counts) 1)
colname))))))
(defun make-ufile (fil des table cls rws bts fields)
- (let ((ufile
- (make-instance
- 'ufile :fil fil :des des :table table :cls cls :rws rws :bts bts
- :fields fields)))
+ (let ((ufile (make-instance 'ufile :fil fil :des des :table table :cls cls
+ :rws rws :bts bts :fields fields)))
(setf (ucols ufile) (find-ucols-for-filename fil))
ufile))
;;;; Author: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: sql-classes.lisp,v 1.74 2003/05/06 21:52:34 kevin Exp $
+;;;; $Id: sql-classes.lisp,v 1.75 2003/05/07 22:53:36 kevin Exp $
;;;;
;;;; This file, part of UMLisp, is
;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
:mg mg :pfstr2 kpfstr2)))
(defun find-ucon-rel-cui2 (cui2 &key (srl *current-srl*))
- (mapcar
- #'(lambda (cui) (find-ucon-cui cui :srl srl))
- (remove-duplicates (mapcar #'cui1 (find-urel-cui2 cui2 :srl srl)))))
+ (loop for cui in (remove-duplicates
+ (mapcar #'cui1 (find-urel-cui2 cui2 :srl srl)))
+ collect (find-ucon-cui cui :srl srl)))
(defun find-ucoc-cui (cui &key (srl *current-srl*))
"Return a list of ucoc for cui"
(make-instance 'ulo :isn isn :fr (ensure-integer fr) :un un
:sui (ensure-integer sui) :sna sna :soui soui)))
-(defgeneric suistr (lo))
-(defmethod suistr ((lo ulo))
- "Return the string for a ulo object"
- (find-string-sui (sui lo)))
-
(defun find-uatx-cui (cui &key (srl *current-srl*))
"Return a list of uatx for cui"
(with-umlisp-query (mratx (sab rel atx) srl cui (parse-cui cui) :lrl ksrl)
;;;; Author: Kevin M. Rosenberg
;;;; Date Started: May 2003
;;;;
-;;;; $Id: tests.lisp,v 1.6 2003/05/06 02:36:58 kevin Exp $
+;;;; $Id: tests.lisp,v 1.7 2003/05/07 22:53:36 kevin Exp $
;;;;
;;;; This file, part of UMLisp, is
;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
;;;; *************************************************************************
(defpackage #:umlisp-tests
- (:use #:umlisp #:cl #:rtest))
+ (:use #:umlisp #:cl #:rtest #:kmrcl))
(in-package #:umlisp-tests)
(setf rtest::*catch-errors* nil)
(make-instance 'ucon :cui (ensure-integer cui)
:pfstr pfstr
:lrl (ensure-integer cuilrl)))
- (query-string 'mrcon '(cui kpfstr kcuilrl) srl nil nil)
+ (umlisp::query-string 'mrcon '(cui kpfstr kcuilrl) srl nil nil)
:database db)))
;;;; Author: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: umlisp.asd,v 1.17 2003/05/07 21:57:06 kevin Exp $
+;;;; $Id: umlisp.asd,v 1.18 2003/05/07 22:53:36 kevin Exp $
;;;;
;;;; This file, part of UMLisp, is
;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
:components
((:file "package")
(:file "data-structures" :depends-on ("package"))
- (:file "sql" :depends-on ("data-structures"))
(:file "utils" :depends-on ("data-structures"))
+ (:file "sql" :depends-on ("utils"))
(:file "parse-macros" :depends-on ("sql"))
(:file "parse-2002" :depends-on ("parse-macros"))
(:file "parse-common" :depends-on ("parse-2002"))
(:file "create-sql" :depends-on ("parse-common"))
- (:file "classes" :depends-on ("utils"))
+ (:file "sql-classes" :depends-on ("sql"))
+ (:file "classes" :depends-on ("sql-classes"))
(:file "class-support" :depends-on ("classes"))
- (:file "sql-classes" :depends-on ("class-support" "sql"))
(:file "composite" :depends-on ("sql-classes")))
:depends-on (:clsql :clsql-mysql :kmrcl :hyperobject))