source: ruby/trunk/models/am/archetype/constraint_model/primitive.rb@ 32

Last change on this file since 32 was 32, checked in by Tatsukawa, Akimichi, 16 years ago

fixed Archetype::Constraint_Model and Primitive classes

File size: 5.6 KB
Line 
1module OpenEHR
2 module AM
3 module Archetype
4 module Constraint_Model
5
6 module Primitive
7
8 class C_PRIMITIVE
9
10 def initialize
11 raise "abstract class"
12 end
13
14 def self.create(args = {})
15 instance = new(args)
16
17 if block_given?
18 yield instance
19 end
20 return instance
21 end
22
23
24 def assumed_value
25 raise NotImplementedError, "assumed_value should be implemented"
26 end
27
28 def default_value
29 raise NotImplementedError, "assumed_value should be implemented"
30 end
31
32 def has_assumed_value?
33 assumed_value != nil
34 end
35
36 def valid_value?
37 raise NotImplementedError, "valid_value? should be implemented"
38 end
39 end
40
41 class C_BOOLEAN < C_PRIMITIVE
42 attr_reader :true_valid, :false_valid, :assumed_value
43
44 def initialize(args = { })
45 @true_valid = args[:true_valid] ? args[:true_valid] : false
46 @false_valid = args[:false_valid] ? args[:false_valid] : false
47 @assumed_value = args[:assumed_value] ? args[:assumed_value] : false
48 binary_consistency(@true_valid, @false_valid)
49 end
50
51 def true_valid=(true_valid)
52 binary_consistency(true_valid, @false_valid)
53 @true_valid = true_valid
54 end
55
56 def false_valid=(false_valid)
57 binary_consistency(@true_valid,false_valid)
58 @false_valid = false_valid
59 end
60
61 def valid_value?
62
63 end
64
65 def default_value(a_value = nil)
66 if a_value == nil
67 @true_valid
68 else
69 (a_value && @true_valid) || (!a_value && @false_valid)
70 end
71 end
72
73 private
74
75 def binary_consistency(true_valid, false_valid)
76 if !true_valid && !false_valid
77 raise ArgumentError, "Either true_valid or false_valid must be true"
78 end
79 end
80 end # of C_Boolean
81
82 class C_STRING < C_PRIMITIVE
83 attr_accessor :list, :assumed_value, :list_open, :pattern
84
85 def initialize(args = { })
86 @list, @assumed_value, @list_open, @pattern = args[:list], args[:assumed_value], args[:list_open], args[:pattern]
87 end
88 end
89
90 class C_INTEGER < C_PRIMITIVE
91 attr_accessor :list, :range, :assumed_value
92
93 def initialize(args = { })
94 @list, @range, @assumed_value = args[:list], args[:range], args[:assumed_value]
95 end
96
97 def self.create(args = {})
98 c_primitive = new(args)
99
100 if block_given?
101 yield c_primitive
102 end
103 return c_primitive
104 end
105 end
106
107 class C_REAL < C_PRIMITIVE
108 attr_accessor :list, :range, :assumed_value
109
110 def initialize(args = { })
111 @list, @range, @assumed_value = args[:list], args[:range], args[:assumed_value]
112 end
113 end
114
115 class C_TIME < C_PRIMITIVE
116 attr_accessor :assumed_value, :milli_second_validity, :minute_validity, :range, :second_validity, :timezone_validity
117 def initialize(args = { })
118 @assumed_value, @milli_second_validity, @minute_validity, @month_validity, @range, @second_validity, @timezone_validity = args[:assumed_value], args[:milli_second_validity], args[:minute_validity], args[:range], args[:second_validity], args[:timezone_validity]
119 end
120 end
121
122 class C_DATE < C_PRIMITIVE
123 attr_accessor :assumed_value, :day_validity, :hour_validity, :month_validity, :range, :timezone_validity
124 def initialize(args = { })
125 @assumed_value, @day_validity, @hour_validity, @month_validity, @range, @timezone_validity = args[:assumed_value], args[:day_validity], args[:hour_validity], args[:month_validity], args[:range], args[:timezone_validity]
126 end
127 end
128
129 class C_DATE_TIME < C_PRIMITIVE
130 attr_accessor :assumed_value, :day_validity, :hour_validity, :milli_second_validity, :minute_validity, :month_validity, :range, :second_validity, :timezone_validity
131 def initialize(args = { })
132 @assumed_value, @day_validity, @hour_validity, @milli_second_validity, @minute_validity, @month_validity, @range, @second_validity, @timezone_validity = args[:assumed_value], args[:day_validity], args[:hour_validity], args[:milli_second_validity], args[:minute_validity], args[:month_validity], args[:range], args[:second_validity], args[:timezone_validity]
133 end
134 end
135
136 class C_DURATION < C_PRIMITIVE
137 attr_accessor :years_allowed, :months_allowed, :weeks_allowed, :days_allowed, :hours_allowed, :minutes_allowed, :seconds_allowed, :fractional_seconds_allowed, :range, :assumed_value
138
139 def initialize(args = { })
140 @years_allowed, @months_allowed, @weeks_allowed, @days_allowed, @hours_allowed, @minutes_allowed, @seconds_allowed, @fractional_seconds_allowed, @range, @assumed_value = args[:years_allowed], args[:months_allowed], args[:weeks_allowed], args[:days_allowed], args[:hours_allowed], args[:minutes_allowed], args[:seconds_allowed], args[:fractional_seconds_allowed], args[:range], args[:assumed_value]
141 end
142 end
143
144
145
146 end # of Primitive
147 end # of Constraint_Model
148 end # of Archetype
149 end # of AM
150end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.