Author: lgiessmann Date: Tue Sep 13 02:28:13 2011 New Revision: 883
Log: jtm-importer + gdl-interface: added a boolean variable to the jtm-importer, so a fragment of each topic that is contained in the received jtm-fragment can be created automiticaly
Modified: branches/gdl-frontend/src/json/JTM/jtm_importer.lisp branches/gdl-frontend/src/model/changes.lisp branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp
Modified: branches/gdl-frontend/src/json/JTM/jtm_importer.lisp ============================================================================== --- branches/gdl-frontend/src/json/JTM/jtm_importer.lisp Tue Sep 13 02:07:39 2011 (r882) +++ branches/gdl-frontend/src/json/JTM/jtm_importer.lisp Tue Sep 13 02:28:13 2011 (r883) @@ -29,7 +29,8 @@
(defun import-construct-from-jtm-string (jtm-string &key (revision *TM-REVISION*) - (jtm-format :1.1) tm-id) + (jtm-format :1.1) tm-id + (create-fragments nil)) "Imports the passed jtm-string. Note tm-id needs not to be declared, but if the imported construct is a topicmap and it has no item-identifiers defined, a JTM-error @@ -37,15 +38,18 @@ (declare (String jtm-string) (type (or Null String) tm-id) (Integer revision) - (Keyword jtm-format)) + (Keyword jtm-format) + (Boolean create-fragments)) (let* ((jtm-list (json:decode-json-from-string jtm-string))) (import-construct-from-jtm-decoded-list - jtm-list :revision revision :jtm-format jtm-format :tm-id tm-id))) + jtm-list :revision revision :jtm-format jtm-format + :tm-id tm-id :create-fragments create-fragments)))
(defun import-construct-from-jtm-decoded-list (jtm-list &key - (revision *TM-REVISION*) - (jtm-format :1.1) tm-id) + (revision *TM-REVISION*) + (jtm-format :1.1) tm-id + (create-fragments nil)) "Imports the passed jtm-decoded-list. Note tm-id needs not to be declared, but if the imported construct is a topicmap and it has no item-identifiers defined, a JTM-error @@ -53,7 +57,8 @@ (declare (List jtm-list) (Integer revision) (Keyword jtm-format) - (type (or Null String) tm-id)) + (type (or Null String) tm-id) + (Boolean create-fragments)) (let* ((version (get-item :VERSION jtm-list)) (item_type (get-item :ITEM--TYPE jtm-list)) (prefixes (make-prefix-list-from-jtm-list (get-item :PREFIXES jtm-list))) @@ -72,12 +77,13 @@ (string= item_type item_type-topicmap)) (import-topic-map-from-jtm-list jtm-list tm-id :revision revision :prefixes prefixes - :instance-of-p format-1.1-p)) + :instance-of-p format-1.1-p :create-fragments create-fragments)) ((string= item_type item_type-topic) (import-topic-stub-from-jtm-list jtm-list nil :revision revision :prefixes prefixes) (merge-topic-from-jtm-list jtm-list :instance-of-p format-1.1-p - :revision revision :prefixes prefixes)) + :revision revision :prefixes prefixes + :create-fragment create-fragments)) ((string= item_type item_type-name) (import-name-from-jtm-list jtm-list nil :revision revision :prefixes prefixes)) @@ -111,13 +117,14 @@
(defun import-topic-map-from-jtm-list (jtm-list tm-id &key (revision *TM-REVISION*) - prefixes (instance-of-p t)) + prefixes (instance-of-p t) + (create-fragments nil)) "Creates and returns a topic map corresponding to the tm-id or a given item-identifier in the jtm-list and returns the tm construct after all topics and associations contained in the jtm-list has been created." (declare (List jtm-list prefixes) (Integer revision) - (Boolean instance-of-p)) + (Boolean instance-of-p create-fragments)) (let* ((iis (let ((value (append (import-identifiers-from-jtm-strings (get-item :ITEM--IDENTIFIERS jtm-list) :prefixes prefixes) @@ -134,8 +141,9 @@ :item-identifiers iis))) (import-topic-stubs-from-jtm-lists j-tops (list tm) :revision revision :prefixes prefixes) - (merge-topics-from-jtm-lists j-tops (list tm) :instance-of-p instance-of-p - :revision revision :prefixes prefixes) + (merge-topics-from-jtm-lists j-tops :instance-of-p instance-of-p + :revision revision :prefixes prefixes + :create-fragments create-fragments) (import-associations-from-jtm-lists j-assocs (list tm) :revision revision :prefixes prefixes) tm)) @@ -339,21 +347,24 @@ assoc)))
-(defun merge-topics-from-jtm-lists (jtm-lists parents &key (instance-of-p t) - (revision *TM-REVISION*) prefixes) +(defun merge-topics-from-jtm-lists (jtm-lists &key (instance-of-p t) + (revision *TM-REVISION*) prefixes + (create-fragments nil)) "Creates and returns a list of topics." - (declare (List jtm-lists parents prefixes) - (Boolean instance-of-p) + (declare (List jtm-lists prefixes) + (Boolean instance-of-p create-fragments) (Integer revision)) (map 'list #'(lambda(jtm-list) (merge-topic-from-jtm-list jtm-list :revision revision :prefixes prefixes - :instance-of-p instance-of-p)) + :instance-of-p instance-of-p + :create-fragment create-fragments)) jtm-lists))
(defun merge-topic-from-jtm-list(jtm-list &key (instance-of-p t) - (revision *TM-REVISION*) prefixes) + (revision *TM-REVISION*) prefixes + (create-fragment nil)) "Creates and returns a topic object from the passed jtm list generated by json:decode-json-from-string. Note that the merged topics are not added explicitly to the parent @@ -362,7 +373,8 @@ to their topic map elements." (declare (List jtm-list prefixes) (Boolean instance-of-p) - (Integer revision)) + (Integer revision) + (Boolean create-fragment)) (let* ((ids (append (get-item :ITEM--IDENTIFIERS jtm-list) (get-item :SUBJECT--IDENTIFIERS jtm-list) (get-item :SUBJECT--LOCATORS jtm-list))) @@ -396,6 +408,8 @@ (dolist (occ top-occs) (add-occurrence top occ :revision revision)) (format t "t") + (when create-fragment + (create-latest-fragment-of-topic top)) top))
Modified: branches/gdl-frontend/src/model/changes.lisp ============================================================================== --- branches/gdl-frontend/src/model/changes.lisp Tue Sep 13 02:07:39 2011 (r882) +++ branches/gdl-frontend/src/model/changes.lisp Tue Sep 13 02:28:13 2011 (r883) @@ -412,10 +412,12 @@ (find-associations top :revision revision)))
-(defun create-latest-fragment-of-topic (topic-psi) +(defun create-latest-fragment-of-topic (topic-or-psi) "Returns the latest fragment of the passed topic-psi" - (declare (string topic-psi)) - (let ((topic (get-latest-topic-by-psi topic-psi))) + (declare (type (or String TopicC) topic-or-psi)) + (let ((topic (if (stringp topic-or-psi) + (get-latest-topic-by-psi topic-or-psi) + topic-or-psi))) (when topic (let ((start-revision (start-revision
Modified: branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp ============================================================================== --- branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp Tue Sep 13 02:07:39 2011 (r882) +++ branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp Tue Sep 13 02:28:13 2011 (r883) @@ -143,7 +143,8 @@ :force-text t))) (with-writer-lock (jtm-importer:import-construct-from-jtm-string - json-data :revision (get-revision) :tm-id *gdl-tm-id*)))) + json-data :revision (get-revision) :tm-id *gdl-tm-id* + :create-fragments t)))) (setf (hunchentoot:return-code*) hunchentoot:+http-bad-request+))))