Changeset 243 for branches/new-datamodel


Ignore:
Timestamp:
03/22/10 11:54:27 (15 years ago)
Author:
lgiessmann
Message:

new-datamodel: added "make-construct" for VersionedAssocitionC and unknown classes via "(apply make-instance class-symbol args)" replaced all "make-instance" and "add-to-version-history" calls by "make-construct" in all add-<whatever> generics

Location:
branches/new-datamodel/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified branches/new-datamodel/src/model/datamodel.lisp

    r241 r243  
    147147           :check-for-duplicate-identifiers
    148148           :find-item-by-content
     149           :rec-remf
    149150
    150151           ;;globals
     
    162163;;      (--> duplicate-identifier-error)
    163164;;TODO: finalize add-reifier
    164 ;;TODO: replace add-to-version-history in VersionedAssociationC with a pseudo
    165 ;;      initarg in make-construct
    166165;;TODO: implement a macro "with-merge-construct" that merges constructs
    167166;;      after some data-operations are completed (should be passed as body)
     
    624623
    625624;;; some helpers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     625(defun rec-remf (plist keyword)
     626  "Calls remf for the past plist with the given keyword until
     627    all key-value-pairs corresponding to the passed keyword were removed."
     628  (declare (list plist) (keyword keyword))
     629  (loop while (getf plist keyword)
     630     do (remf plist keyword))
     631  plist)
     632
     633
    626634(defun get-item-by-content (content &key (revision *TM-REVISION*))
    627635  "Finds characteristics by their (atomic) content."
     
    12211229                 (add-to-version-history ti-assoc :start-revision revision)))
    12221230              (t
    1223                (let ((assoc (make-instance 'TopicIdAssociationC
    1224                                            :parent-construct construct
    1225                                            :identifier topic-identifier)))
    1226                  (add-to-version-history assoc :start-revision revision))))
     1231               (make-construct 'TopicIdAssociationC
     1232                               :parent-construct construct
     1233                               :identifier topic-identifier
     1234                               :start-revision revision)))
    12271235        (add-to-version-history merged-construct :start-revision revision)
    12281236        merged-construct))))
     
    12761284                 (add-to-version-history psi-assoc :start-revision revision)))
    12771285              (t
    1278                (let ((assoc (make-instance 'PersistentIdAssociationC
    1279                                            :parent-construct construct
    1280                                            :identifier psi)))
    1281                  (add-to-version-history assoc :start-revision revision))))
     1286               (make-construct 'PersistentIdAssociationC
     1287                               :parent-construct construct
     1288                               :identifier psi
     1289                               :start-revision revision)))
    12821290        (add-to-version-history merged-construct :start-revision revision)
    12831291        merged-construct))))
     
    13321340                 (add-to-version-history loc-assoc :start-revision revision)))
    13331341              (t
    1334                (let ((assoc
    1335                       (make-instance 'SubjectLocatorAssociationC
    1336                                      :parent-construct construct
    1337                                      :identifier locator)))
    1338                  (add-to-version-history assoc :start-revision revision))))
     1342               (make-construct 'SubjectLocatorAssociationC
     1343                               :parent-construct construct
     1344                               :identifier locator
     1345                               :start-revision revision)))
    13391346        (add-to-version-history merged-construct :start-revision revision)
    13401347        merged-construct))))
     
    13911398                               return name-assoc)))
    13921399            (add-to-version-history name-assoc :start-revision revision))
    1393           (let ((assoc
    1394                  (make-instance 'NameAssociationC
    1395                                 :parent-construct construct
    1396                                 :characteristic name)))
    1397             (add-to-version-history assoc :start-revision revision))))
     1400          (make-construct 'NameAssociationC
     1401                          :parent-construct construct
     1402                          :characteristic name
     1403                          :start-revision revision)))
    13981404    (add-to-version-history construct :start-revision revision)
    13991405    construct))
     
    14411447                              return occ-assoc)))
    14421448            (add-to-version-history occ-assoc :start-revision revision))
    1443           (let ((assoc
    1444                  (make-instance 'OccurrenceAssociationC
    1445                                 :parent-construct construct
    1446                                 :characteristic occurrence)))
    1447             (add-to-version-history assoc :start-revision revision))))
     1449          (make-construct 'OccurrenceAssociationC
     1450                          :parent-construct construct
     1451                          :characteristic occurrence
     1452                          :start-revision revision)))
    14481453    (add-to-version-history construct :start-revision revision)
    14491454    construct))
     
    17331738                                           (t
    17341739                                            'VariantAssociationC))))
    1735                (let ((assoc (make-instance association-type
    1736                                            :characteristic construct
    1737                                            :parent-construct parent-construct)))
    1738                  (add-to-version-history assoc :start-revision revision))))))
     1740               (make-construct association-type
     1741                               :characteristic construct
     1742                               :parent-construct parent-construct
     1743                               :start-revision revision)))))
    17391744    construct))
    17401745
     
    18651870                    return variant-assoc)))
    18661871            (add-to-version-history variant-assoc :start-revision revision))
    1867           (let ((assoc
    1868                  (make-instance 'VariantAssociationC
    1869                                 :characteristic variant
    1870                                 :parent-construct construct)))
    1871             (add-to-version-history assoc :start-revision revision))))
     1872          (make-construct 'VariantAssociationC
     1873                          :characteristic variant
     1874                          :parent-construct construct
     1875                          :start-revision revision)))
    18721876    construct))
    18731877
     
    19501954                    return role-assoc)))
    19511955            (add-to-version-history role-assoc  :start-revision revision))
    1952           (let ((assoc
    1953                  (make-instance 'RoleAssociationC
    1954                                 :role role
    1955                                 :parent-construct construct)))
    1956             (add-to-version-history assoc :start-revision revision))))
     1956          (make-construct 'RoleAssociationC
     1957                          :role role
     1958                          :parent-construct construct
     1959                          :start-revision revision)))
    19571960    (add-to-version-history construct :start-revision revision)
    19581961    construct))
     
    20442047           (add-to-version-history same-parent-assoc :start-revision revision))
    20452048          (t
    2046            (let ((assoc (make-instance 'RoleAssociationC
    2047                                        :role construct
    2048                                        :parent-construct parent-construct)))
    2049              (add-to-version-history assoc :start-revision revision)))))
     2049           (make-construct 'RoleAssociationC
     2050                           :role construct
     2051                           :parent-construct parent-construct
     2052                           :start-revision revision))))
    20502053  (add-to-version-history parent-construct :start-revision revision)
    20512054  construct)
     
    20962099             (add-to-version-history same-player-assoc :start-revision revision))
    20972100            (t
    2098              (let ((assoc (make-instance 'PlayerAssociationC
    2099                                         :parent-construct construct
    2100                                          :player-topic player-topic)))
    2101                (add-to-version-history assoc :start-revision revision)))))
     2101             (make-construct 'PlayerAssociationC
     2102                            :parent-construct construct
     2103                             :player-topic player-topic
     2104                             :start-revision revision))))
    21022105    construct))
    21032106
     
    22382241                 (add-to-version-history ii-assoc :start-revision revision)))
    22392242              (t
    2240                (let ((assoc (make-instance 'ItemIdAssociationC
    2241                                            :parent-construct construct
    2242                                            :identifier item-identifier)))
    2243                  (add-to-version-history assoc :start-revision revision))))
     2243               (make-construct 'ItemIdAssociationC
     2244                               :parent-construct construct
     2245                               :identifier item-identifier
     2246                               :start-revision revision)))
    22442247        (when (or (typep merged-construct 'TopicC)
    22452248                  (typep merged-construct 'AssociationC)
     
    22922295                 (merge-constructs (first all-constructs) construct))
    22932296                (t
    2294                  (let ((assoc (make-instance 'ReifierAssociationC
    2295                                             :reifiable-construct construct
    2296                                              :reifier-topic merged-reifier-topic)))
    2297                    (add-to-version-history assoc :start-revision revision))))
     2297                 (make-construct 'ReifierAssociationC
     2298                                :reifiable-construct construct
     2299                                 :reifier-topic merged-reifier-topic
     2300                                 :start-revision revision)))
    22982301          (when (or (typep merged-construct 'TopicC)
    22992302                    (typep merged-construct 'AssociationC)
     
    24102413                    return theme-assoc)))
    24112414            (add-to-version-history theme-assoc  :start-revision revision))
    2412           (let ((assoc
    2413                  (make-instance 'ScopeAssociationC
    2414                                 :theme-topic theme-topic
    2415                                 :scopable-construct construct)))
    2416             (add-to-version-history assoc :start-revision revision))))
     2415          (make-construct 'ScopeAssociationC
     2416                          :theme-topic theme-topic
     2417                          :scopable-construct construct
     2418                          :start-revision revision)))
    24172419    (when (typep construct 'AssociationC)
    24182420      (add-to-version-history construct :start-revision revision))
     
    24822484             (add-to-version-history same-type-assoc :start-revision revision))
    24832485            (t
    2484              (let ((assoc
    2485                     (make-instance 'TypeAssociationC
    2486                                    :type-topic type-topic
    2487                                    :typable-construct construct)))
    2488                (add-to-version-history assoc :start-revision revision)))))
     2486             (make-construct 'TypeAssociationC
     2487                             :type-topic type-topic
     2488                             :typable-construct construct
     2489                             :start-revision revision))))
    24892490    (when (typep construct 'AssociationC)
    24902491      (add-to-version-history construct :start-revision revision))
     
    25832584           ((AssociationC-p class-symbol)
    25842585            (apply #'make-association args))
     2586           ((VersionedConstructC-p class-symbol)
     2587            (apply #'make-instance (rec-remf args :start-revision)))
    25852588           (t
    25862589            (apply #'make-instance class-symbol args))))
  • TabularUnified branches/new-datamodel/src/unit_tests/datamodel_test.lisp

    r235 r243  
    909909      (is (= (length (union (list tm-1)
    910910                            (in-topicmaps top-1))) 1))
    911       (is-false (topics tm-1 :revision revision-0-5))
    912911      (is-false (in-topicmaps top-1 :revision revision-0-5))
    913912      (d::add-to-version-history assoc-1 :start-revision revision-1)
     
    917916      (is (= (length (union (list tm-1)
    918917                            (in-topicmaps assoc-1))) 1))
    919       (is-false (associations tm-1 :revision revision-0-5))
    920918      (is-false (in-topicmaps assoc-1 :revision revision-0-5))
    921919      (add-to-tm tm-2 top-1)
     
    924922      (is (= (length (union (list tm-2 tm-1)
    925923                            (in-topicmaps top-1))) 2))
    926       (is-false (topics tm-2 :revision revision-0-5))
    927924      (is-false (in-topicmaps top-1 :revision revision-0-5))
    928925      (d::add-to-version-history assoc-1 :start-revision revision-1)
     
    932929      (is (= (length (union (list tm-2 tm-1)
    933930                            (in-topicmaps assoc-1))) 2))
    934       (is-false (associations tm-2 :revision revision-0-5))
    935931      (is-false (in-topicmaps assoc-1 :revision revision-0-5)))))
    936932
Note: See TracChangeset for help on using the changeset viewer.