[isidorus-cvs] r220 - branches/new-datamodel/src/model

Lukas Giessmann lgiessmann at common-lisp.net
Tue Mar 9 17:24:53 UTC 2010


Author: lgiessmann
Date: Tue Mar  9 12:24:52 2010
New Revision: 220

Log:
new-datamodel: finalized "delete-construct"

Modified:
   branches/new-datamodel/src/model/datamodel.lisp

Modified: branches/new-datamodel/src/model/datamodel.lisp
==============================================================================
--- branches/new-datamodel/src/model/datamodel.lisp	(original)
+++ branches/new-datamodel/src/model/datamodel.lisp	Tue Mar  9 12:24:52 2010
@@ -853,6 +853,18 @@
   (delete-1-n-association construct 'parent-construct))
 
 
+;;; RoleAssociationC
+(defmethod delete-construct :before ((construct RoleAssociationC))
+  (delete-1-n-association construct 'role)
+  (delete-1-n-association construct 'parent-construct))
+
+
+;;; PlayerAssociationC
+(defmethod delete-construct :before ((construct PlayerAssociationC))
+  (delete-1-n-association construct 'player-topic)
+  (delete-1-n-association construct 'parent-construct))
+
+
 ;;; TopicC
 (defmethod delete-construct :before ((construct TopicC))
   (let ((psis-to-delete
@@ -862,7 +874,8 @@
 	(names-to-delete
 	 (map 'list #'characteristic (slot-p construct 'names)))
 	(occurrences-to-delete (slot-p construct 'occurrences))
-	;TODO: roles -> associations?
+	(roles-to-delete
+	 (map 'list #'parent-construct (slot-p construct 'player-in-roles)))
 	(typables-to-delete
 	 (map 'list #'typable-construct (slot-p construct 'used-as-type)))
 	(reifier-assocs-to-delete (slot-p construct 'reified-construct)))
@@ -870,6 +883,7 @@
 					 sls-to-delete
 					 names-to-delete
 					 occurrences-to-delete
+					 roles-to-delete
 					 typables-to-delete
 					 reifier-assocs-to-delete))
       (delete-construct construct-to-delete)))
@@ -1417,6 +1431,14 @@
 
 
 ;;; AssociationC
+(defmethod delete-construct :before ((construct AssociationC))
+  (dolist (role-to-delete
+	    (map 'list #'role (slot-p construct 'roles)))
+    (delete-construct role-to-delete))
+  (dolist (tm (slot-p construct 'in-topicmaps))
+    (remove-association construct 'in-topicmaps tm)))
+
+
 (defmethod owned-p ((construct AssociationC))
   (when (slot-p construct 'in-topicmaps)
     t))
@@ -1470,6 +1492,13 @@
 
 
 ;;; RoleC
+(defmethod delete-construct :before ((construct RoleC))
+  (dolist (role-assoc-to-delete (slot-p construct 'parent))
+    (delete-construct role-assoc-to-delete))
+  (dolist (player-assoc-to-delete (slot-p construct 'player))
+    (delete-construct player-assoc-to-delete)))
+
+
 (defmethod owned-p ((construct RoleC))
   (when (slot-p construct 'parent)
     t))




More information about the Isidorus-cvs mailing list