source: ruby/trunk/lib/models/rm/data_types/encapsulated.rb@ 134

Last change on this file since 134 was 134, checked in by KOBAYASHI, Shinji, 15 years ago

fixed #51
DV_Multimedia class is too complecated, but it will be used
far future.
So, I fixed temporally.

File size: 3.5 KB
Line 
1# OpenEHR::RM::Data_Types::Encapsulated
2# http://www.openehr.org/svn/specification/TAGS/Release-1.0.2/publishing/architecture/computable/UML/uml_start_view.html
3# refs #51
4require 'rubygems'
5require 'locale/info'
6
7module OpenEHR
8 module RM
9 module Data_Types
10 module Encapsulated
11 class DV_Encapsulated < OpenEHR::RM::Data_Types::Basic::Data_Value
12 attr_reader :language, :charset, :size
13 def initialize(charset, language, size)
14 self.charset = charset
15 self.language = language
16 self.size = size
17 end
18
19 def size=(size)
20 if size < 0
21 raise ArgumentError, "negative size"
22 end
23 @size = size
24 end
25
26 def language=(language)
27 if language.nil? ||
28 !Locale::Info.language_code?(language.code_string)
29 raise ArgumentError, 'invalid language code'
30 end
31 @language = language
32 end
33
34 def charset=(charset)
35 if charset.nil? || !charset_valid?(charset.code_string)
36 raise ArgumentError, 'invalid charset'
37 end
38 @charset = charset
39 end
40
41 private
42 def size_positive
43 raise ArgumentError, "size must be positive" if size < 0
44 end
45
46 def charset_valid?(charset)
47 result = false
48 open('rm/data_types/charset.lst') do |file|
49 while line = file.gets
50 if charset == line.chomp
51 result = true
52 break
53 end
54 end
55 end
56 return result
57 end
58 end
59
60# media type http://www.iana.org/assignments/media-types/text/
61 class DV_Multimedia < DV_Encapsulated
62 attr_reader :media_type
63 attr_accessor :uri, :data, :compression_algorithm,
64 :integrity_check, :integrity_check_algorithm, :alternate_text
65 def initialize(charset, language, size, media_type, uri=nil,
66 data=nil, compression_algorithm=nil,
67 integrity_check=nil, integrity_check_algorithm=nil,
68 alternate_text=nil)
69 super(charset, language, size)
70 self.media_type = media_type
71 @uri = uri
72 @data = data
73 @compression_algorithm = compression_algorithm
74 @integrity_check = integrity_check
75 @integrity_check_algorithm = integrity_check_algorithm
76 @alternate_text = alternate_text
77 end
78 def media_type=(media_type)
79 if media_type.code_string.nil?
80 raise ArgumentError, 'media_type should not be nil'
81 end
82 @media_type = media_type
83 end
84 end
85
86 class DV_Parsable < DV_Encapsulated
87 attr_reader :value, :formalism
88 def initialize(charset, language, size, formalism, value)
89 super(charset, language, size)
90 self.formalism = formalism
91 self.value = value
92 end
93
94 def value=(value)
95 raise ArgumentError, 'value must not be nil' if value.nil?
96 @value = value
97 end
98
99 def formalism=(formalism)
100 if formalism.nil?
101 raise ArgumentError, "formalism must not be nil"
102 elsif formalism.empty?
103 raise ArgumentError, "formalism must nto be empty"
104 end
105 @formalism = formalism
106 end
107 end
108 end # of Encapsulated
109 end # of Data_Types
110 end # of RM
111end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.