Changeset 306 for branches/new-datamodel/src/model
- Timestamp:
- 06/27/10 11:30:32 (15 years ago)
- Location:
- branches/new-datamodel/src/model
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified branches/new-datamodel/src/model/changes.lisp ¶
r305 r306 29 29 (tops-and-assocs (when tm (union (topics tm) (associations tm)))) 30 30 (revision-set nil)) 31 ;(format t "tops-and-assocs: ~a~&" (mapcan #'versions tops-and-assocs))32 31 (dolist (vi (mapcan #'versions tops-and-assocs)) 33 ;(format t "(start-revision vi): ~a~&" (start-revision vi))34 32 (pushnew (start-revision vi) revision-set)) 35 33 (sort revision-set #'<))) 36 34 37 35 38 (defun find-all-associations-for-topic (top &key (revision *TM-REVISION*)) 39 "Finds all associations for a topic." 40 (remove-duplicates 41 (map 'list #'(lambda(role) 42 (parent role :revision revision)) 43 (player-in-roles top :revision revision)))) 44 45 46 (defun find-associations-for-topic (top &key (revision *TM-REVISION*)) 47 "Finds all associations of this topic except type-instance-associations." 48 (let 49 ((type-instance-topic 50 (d:identified-construct 51 (elephant:get-instance-by-value 'PersistentIdC 52 'uri 53 constants:*type-instance-psi*)))) 54 (remove-if 55 #'(lambda(assoc) 56 (when (eql (instance-of assoc :revision revision) 57 type-instance-topic) 58 t)) 59 (find-all-associations-for-topic top :revision revision)))) 36 (defgeneric find-all-associations (instance &key revision) 37 (:documentation "Finds all associations for a topic.") 38 (:method ((instance TopicC) &key (revision *TM-REVISION*)) 39 (declare (type (or integer null) revision)) 40 (remove-duplicates 41 (map 'list #'(lambda(role) 42 (parent role :revision revision)) 43 (player-in-roles instance :revision revision))))) 44 45 46 (defgeneric find-associations (instance &key revision) 47 (:documentation "Finds all associations of this topic except 48 type-instance-associations.") 49 (:method ((instance TopicC) &key (revision *TM-REVISION*)) 50 (declare (type (or integer null) revision)) 51 (let ((type-instance-topic 52 (d:identified-construct 53 (elephant:get-instance-by-value 54 'PersistentIdC 'uri *type-instance-psi*)))) 55 (remove-if 56 #'(lambda(assoc) 57 (eql (instance-of assoc :revision revision) 58 type-instance-topic)) 59 (find-all-associations instance :revision revision))))) 60 60 61 61 … … 128 128 (mapcan #'(lambda(assoc) 129 129 (find-referenced-topics assoc :revision revision)) 130 (find-associations -for-topictop :revision revision))))))130 (find-associations top :revision revision)))))) 131 131 132 132 … … 155 155 (remove-if-not 156 156 (lambda (association) 157 (eq (player (first (roles association))) 157 (eq (player (first (roles association :revision revision)) 158 :revision revision) 158 159 topic)) 159 (find-associations -for-topic topic)))160 (find-associations topic :revision revision))) 160 161 (all-constructs 161 162 (union 162 (get-all-identifiers-of-construct topic )163 (get-all-identifiers-of-construct topic :revision revision) 163 164 (union 164 (names topic )165 (names topic :revision revision) 165 166 (union 166 (occurrences topic )167 (occurrences topic :revision revision) 167 168 first-player-in-associations))))) 168 169 (some … … 217 218 (remove 218 219 nil 219 (map 'list 220 (lambda (top) 221 (when (changed-p top revision) 222 (make-instance 'FragmentC 223 :revision revision 224 :associations (find-associations-for-topic top :revision revision) ;TODO: this quite probably introduces code duplication with query: Check! 225 :referenced-topics (find-referenced-topics top :revision revision) 226 :topic top))) 227 (get-all-topics revision)))))) 220 (map 221 'list 222 (lambda (top) 223 (when (changed-p top revision) 224 (make-instance 'FragmentC 225 :revision revision 226 :associations (find-associations 227 top :revision revision) 228 ;TODO: this quite probably introduces 229 ;code duplication with query: Check! 230 :referenced-topics (find-referenced-topics 231 top :revision revision) 232 :topic top))) 233 (get-all-topics revision)))))) 228 234 229 235 (defun get-fragment (unique-id) … … 257 263 ;do not need to add an extra item identifier to them. However, we 258 264 ;need to do that for all their characteristics + associations 259 (mapc (lambda (name) (add-source-locator name :revision revision :source-locator source-locator)) 265 (mapc (lambda (name) 266 (add-source-locator name :revision revision 267 :source-locator source-locator)) 260 268 (names top :revision revision)) 261 (mapc (lambda (occ) (add-source-locator occ :revision revision :source-locator source-locator)) 269 (mapc (lambda (occ) 270 (add-source-locator occ :revision revision 271 :source-locator source-locator)) 262 272 (occurrences top :revision revision)) 263 (mapc (lambda (ass) (add-source-locator ass :revision revision :source-locator source-locator)) 264 (find-associations-for-topic top :revision revision))) 273 (mapc (lambda (ass) 274 (add-source-locator ass :revision revision 275 :source-locator source-locator)) 276 (find-associations top :revision revision))) 265 277 266 278 … … 285 297 (make-instance 'FragmentC 286 298 :revision start-revision 287 :associations (find-associations-for-topic topic) 288 :referenced-topics (find-referenced-topics topic) 299 :associations (find-associations 300 topic :revision start-revision) 301 :referenced-topics (find-referenced-topics 302 topic :revision start-revision) 289 303 :topic topic))))))) 290 304 -
TabularUnified branches/new-datamodel/src/model/datamodel.lisp ¶
r305 r306 686 686 (get-most-recent-versioned-assoc 687 687 psi-inst 'identified-construct))) 688 (when latest-va688 (when (and latest-va (versions latest-va)) 689 689 (identified-construct 690 psi-inst :revision (start-revision latest-va))))))690 psi-inst :revision (start-revision (first (versions latest-va)))))))) 691 691 692 692 … … 1501 1501 (mapc (lambda (ass) (mark-as-deleted ass :revision revision 1502 1502 :source-locator source-locator)) 1503 (find-all-associations -for-topictop :revision 0))1503 (find-all-associations top :revision 0)) 1504 1504 (call-next-method))) 1505 1505
Note: See TracChangeset
for help on using the changeset viewer.