From 26c877202b0bdc969a8fcdd1c77515a6ef797ad6 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Fri, 13 Dec 2002 22:15:30 +0000 Subject: [PATCH] r3624: *** empty log message *** --- examples/person.lisp | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/examples/person.lisp b/examples/person.lisp index f479250..63a174b 100644 --- a/examples/person.lisp +++ b/examples/person.lisp @@ -9,7 +9,7 @@ ;;;; ;;;; A simple example file for hyperobjects ;;;; -;;;; $Id: person.lisp,v 1.2 2002/12/13 05:44:19 kevin Exp $ +;;;; $Id: person.lisp,v 1.3 2002/12/13 22:15:30 kevin Exp $ ;;;; ;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg ;;;; @@ -17,19 +17,26 @@ (in-package :hyperobject-user) - (defclass person (hyperobject) - ((first-name :type string :initarg :first-name :reader first-name) - (last-name :type string :initarg :last-name :reader last-name - :hyperlink find-person-by-last-name) - (dob :type integer :initarg :dob :reader dob :print-formatter format-date) - (resume :type cdata :initarg :resume :reader resume) - (addresses :initarg :addresses :reader addresses :subobject t)) + ((first-name :value-type (varchar 20) :initarg :first-name :reader first-name + :value-constraint stringp :null-allowed nil) + (last-name :value-type (varchar 30) :initarg :last-name :reader last-name + :value-constraint stringp + :hyperlink find-person-by-last-name :null-allowed nil) + (full-name :value-type string :stored nil) + (dob :value-type integer :initarg :dob :reader dob :print-formatter format-date + :value-constraint integerp :input-filter convert-to-date) + (resume :value-type string :initarg :resume :reader resume + :value-constraint stringp) + (addresses :value-type (list-of subobject) :initarg :addresses :reader addresses)) (:metaclass hyperobject-class) - (:default-initargs :first-name nil :last-name nil :dob 0 :resume nil) + (:default-initargs :first-name "" :last-name "" :dob 0 :resume nil) (:default-print-slots first-name last-name dob resume) (:user-name "Person") - (:description "A Person")) + (:description "A Person") + (:direct-rules + ((:rule-1 (:depends-on '(last-name first-name)) + (setf full-name (concatentate 'string first-name " " last-name)))))) (defun format-date (ut) (when (typep ut 'integer) @@ -44,9 +51,11 @@ hr min sec)))) (defclass address (hyperobject) - ((title :type string :initarg :title :reader title) - (street :type string :initarg :street :reader street) - (phones :initarg :phones :reader phones :subobject t)) + ((title :value-type (varchar 20) :initarg :title :reader title + :value-constraint stringp) + (street :value-type (varchar 30) :initarg :street :reader street + :value-constraint stringp) + (phones :value-type (list-oj subobject) :initarg :phones :reader phones) (:metaclass hyperobject-class) (:default-initargs :title nil :street nil) (:user-name "Address") @@ -54,8 +63,10 @@ (:description "An address")) (defclass phone (hyperobject) - ((title :type string :initarg :title :reader title) - (phone-number :type string :initarg :phone-number :reader phone-number)) + ((title :value-type (varchar 20) :initarg :title :reader title + :value-constraint stringp) + (phone-number :value-type (varchar 16) :initarg :phone-number :reader phone-number + :value-constraint stringp)) (:metaclass hyperobject-class) (:user-name "Phone Number") (:default-initargs :title nil :phone-number nil) -- 2.34.1