source: ruby/trunk/lib/open_ehr/am/archetype/constraint_model/primitive.rb@ 396

Last change on this file since 396 was 396, checked in by KOBAYASHI, Shinji, 14 years ago

refs #71, #71

File size: 3.7 KB
Line 
1# Ticket #71
2module OpenEHR
3 module AM
4 module Archetype
5 module ConstraintModel
6 module Primitive
7 class CPrimitive
8 attr_reader :default_value
9 attr_accessor :assumed_value
10
11 def initialize(args = { })
12 self.default_value = args[:default_value]
13 self.assumed_value = args[:assumed_value]
14 end
15
16 def default_value=(default_value)
17 if default_value.nil?
18 raise ArgumentError, 'default_value is mandatory'
19 end
20 @default_value = default_value
21 end
22
23 def has_assumed_value?
24 return !assumed_value.nil?
25 end
26 end
27
28 class CBoolean < CPrimitive
29 attr_reader :true_valid, :false_valid
30
31 def initialize(args = { })
32 binary_consistency(args[:true_valid], args[:false_valid])
33 @true_valid = args[:true_valid]
34 @false_valid = args[:false_valid]
35 super(args)
36 end
37
38 def default_value=(default_value)
39 super
40 default_value_consistency(default_value)
41 end
42
43 def true_valid=(true_valid)
44 binary_consistency(true_valid, @false_valid)
45 @true_valid = true_valid
46 end
47
48 def false_valid=(false_valid)
49 binary_consistency(@true_valid, false_valid)
50 @false_valid = false_valid
51 end
52
53 def true_valid?
54 return @true_valid
55 end
56
57 def false_valid?
58 return @false_valid
59 end
60
61 private
62 def binary_consistency(true_valid, false_valid)
63 if (true_valid == false) && (false_valid == false)
64 raise ArgumentError, 'true_valid or false_valid should be true'
65 end
66 end
67
68 def default_value_consistency(default_value)
69 if (!@true_valid && default_value) || (!@false_valid && !default_value)
70 raise ArgumentError, 'default value inconsistency'
71 end
72 end
73 end
74
75 class CString < CPrimitive
76 attr_reader :pattern, :list
77
78 def initialize(args = { })
79 super
80 consistency(args[:pattern], args[:list])
81 @pattern = args[:pattern]
82 @list = args[:list]
83 end
84
85 def pattern=(pattern)
86 consistency(pattern, @list)
87 @pattern = pattern
88 end
89
90 def list=(list)
91 consistency(@pattern, list)
92 @list = list
93 end
94
95 private
96 def consistency(pattern, list)
97 if pattern.nil? == list.nil?
98 raise ArgumentError, 'consistency invaild'
99 end
100 end
101 end
102
103 class CInteger < CPrimitive
104 attr_reader :list, :range
105
106 def initialize(args = { })
107 super
108 consistency(args[:list], args[:range])
109 @list = args[:list]
110 @range = args[:range]
111 end
112
113 def list=(list)
114 consistency(list, @range)
115 @list = list
116 end
117
118 def range=(range)
119 consistency(@list, range)
120 @range = range
121 end
122
123 private
124 def consistency(list, range)
125 if list.nil? == range.nil?
126 raise ArgumentError, 'consistency invalid'
127 end
128 end
129 end
130
131 class CReal < CInteger
132
133 end
134
135
136 end # of Primitive
137 end # of CostraintModel
138 end # of Archetype
139 end # of AM
140end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.