Changeset 3675

Show
Ignore:
Timestamp:
07/29/08 12:06:05 (4 months ago)
Author:
ksprotte
Message:

factored slot-strings into a seperate file

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/projects/bos/m2/bos.m2.asd

    r3668 r3675  
    1212               (:file "config" :depends-on ("packages")) 
    1313               (:file "utils" :depends-on ("packages")) 
    14                (:file "news" :depends-on ("packages" "poi")) 
     14               (:file "news" :depends-on ("packages" "slot-strings")) 
    1515               (:file "tiled-index" :depends-on ("packages")) 
    1616               (:file "mail-generator" :depends-on ("packages")) 
     
    2525               (:file "allocation-cache" :depends-on ("allocation" "initialization-subsystem" 
    2626                                                                   "packages" "utils")) 
    27                (:file "poi" :depends-on ("packages")) 
     27               (:file "slot-strings" :depends-on ("packages")) 
     28               (:file "poi" :depends-on ("packages" "slot-strings")) 
    2829               (:file "import" :depends-on ("packages")) 
    2930               (:file "map" :depends-on ("config" "packages" "tiled-index")) 
  • trunk/projects/bos/m2/poi.lisp

    r3671 r3675  
    44;; Quadratmeter-Datenbank gespeichert werden. 
    55 
    6 ;; Die Implementation kurvt ein bisschen um den aktuellen Datastore 
    7 ;; herum, da eine Àsthetische Implementation der mehrsprachigen 
    8 ;; Strings MOP erforderlich machen wÃŒrde, die Umstellung des Datastore 
    9 ;; auf MOP jedoch noch nicht fertig ist. 
    10  
    116(in-package :bos.m2) 
    12  
    13 ;; Multilinguale Strings als Slots, werden als Hashes im Objekt 
    14 ;; gespeichert und ÃŒber slot-string bzw. (setf slot-string) 
    15 ;; angesprochen. 
    16  
    17 (defun make-string-hash-table () 
    18   (make-hash-table :test #'equal)) 
    19  
    20 (defun slot-string (object slot-name language &optional (not-found-value "")) 
    21   (or (gethash language (slot-value object slot-name)) not-found-value)) 
    22  
    23 (defun set-slot-string (object slot-name language new-value) 
    24   (unless (in-transaction-p) 
    25     (error "attempt to set string in multi-language string slot ~a of object ~a outside of transaction" slot-name object)) 
    26   (setf (gethash language (slot-value object slot-name)) new-value)) 
    27  
    28 (defsetf slot-string set-slot-string) 
    29  
    30 (deftransaction set-slot-string-values (object language &rest args) 
    31   (loop for (slot-name value) on args by #'cddr 
    32      do (setf (slot-string object slot-name language) value))) 
    337 
    348;;; POI-Anwendungsklassen und Konstruktoren 
     
    7650;;; poi 
    7751(define-persistent-class poi () 
    78   ((name :read :index-type string-unique-index 
     52  ((published :update :initform nil) 
     53   (name :read :index-type string-unique-index 
    7954               :index-reader find-poi :index-values all-pois 
    8055               :documentation "Symbolischer Name") 
     
    8358   (description :update :initform (make-string-hash-table) :documentation "Beschreibungstext") 
    8459   (area :update :initform nil :documentation "Polygon mit den POI-Koordinaten") 
    85    (icon :update :initform "palme" :documentation "Name des Icons") 
    86    (images :update :initform nil) 
    87    (airals :update :initform nil) 
    88    (panoramas :update :initform nil) 
    89    (movies :update :initform nil) 
    90    (published :update :initform nil))) 
     60   (icon :update :initform "palme" :documentation "Name des Icons")    
     61   (medias :update :initform nil))) 
    9162 
    9263(defmethod poi-movies :before ((poi poi))