Last change
on this file since 407 was 407, checked in by KOBAYASHI, Shinji, 14 years ago |
serializer implementation
Sample ADL was generated by LiU Archetype Editor.
There are some differences in XML forms amongs LiU, Ocean, CKM.
|
File size:
1.9 KB
|
Line | |
---|
1 | require 'rexml/document'
|
---|
2 | require 'builder'
|
---|
3 |
|
---|
4 | module OpenEHR
|
---|
5 | module Serializer
|
---|
6 | NL = "\r\n"
|
---|
7 | INDENT = ' '
|
---|
8 |
|
---|
9 | class BaseSerializer
|
---|
10 | def initialize(archetype)
|
---|
11 | @archetype = archetype
|
---|
12 | end
|
---|
13 |
|
---|
14 | def serialize
|
---|
15 | return self.merge
|
---|
16 | end
|
---|
17 | end
|
---|
18 |
|
---|
19 | class ADLSerializer < BaseSerializer
|
---|
20 | def header
|
---|
21 | hd = 'archetype'
|
---|
22 | unless @archetype.adl_version.nil?
|
---|
23 | hd << " (adl_version = #{@archetype.adl_version})"
|
---|
24 | end
|
---|
25 | hd << NL+INDENT + "#{@archetype.archetype_id.value}"+NL+NL
|
---|
26 | hd << 'concept'+NL+ INDENT+"[#{@archetype.concept}]"+NL
|
---|
27 | hd << NL+'language'+NL+INDENT+'original_language = <['+
|
---|
28 | @archetype.original_language.terminology_id.value+'::'+
|
---|
29 | @archetype.original_language.code_string+']>'+NL
|
---|
30 | return hd
|
---|
31 | end
|
---|
32 |
|
---|
33 | def description
|
---|
34 |
|
---|
35 | end
|
---|
36 |
|
---|
37 | def definition
|
---|
38 | end
|
---|
39 |
|
---|
40 | def ontology
|
---|
41 | end
|
---|
42 |
|
---|
43 | def envelope
|
---|
44 | end
|
---|
45 |
|
---|
46 | def merge
|
---|
47 | return header + description + definition + ontology
|
---|
48 | end
|
---|
49 | end
|
---|
50 |
|
---|
51 | class XMLSerializer < BaseSerializer
|
---|
52 |
|
---|
53 | def header
|
---|
54 | header = ''
|
---|
55 | xml = Builder::XmlMarkup.new(:indent => 2, :target => header)
|
---|
56 | xml.archetype_id do
|
---|
57 | xml.value @archetype.archetype_id.value
|
---|
58 | end
|
---|
59 | xml.concept @archetype.concept
|
---|
60 | xml.original_language do
|
---|
61 | xml.code_string @archetype.original_language.code_string
|
---|
62 | xml.terminology_id do
|
---|
63 | xml.value @archetype.original_language.terminology_id.value
|
---|
64 | end
|
---|
65 | end
|
---|
66 | return header
|
---|
67 | end
|
---|
68 |
|
---|
69 | def description
|
---|
70 |
|
---|
71 | end
|
---|
72 |
|
---|
73 | def merge
|
---|
74 |
|
---|
75 | end
|
---|
76 | end
|
---|
77 | end
|
---|
78 | end
|
---|
79 |
|
---|
80 | class Publisher
|
---|
81 | def initialize(serializer)
|
---|
82 | @serializer = serializer
|
---|
83 | end
|
---|
84 |
|
---|
85 | def publish(writer)
|
---|
86 | writer.out(@serializer.serialize)
|
---|
87 | end
|
---|
88 | end
|
---|
89 |
|
---|
90 | class Writer
|
---|
91 | def initialize(target)
|
---|
92 | @target = target
|
---|
93 | end
|
---|
94 | def out
|
---|
95 | end
|
---|
96 | end
|
---|
Note:
See
TracBrowser
for help on using the repository browser.