source: ruby/branches/0.5.0/lib/open_ehr/am/archetype/constraint_model/primitive.rb@ 167

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

adjust for rails

File size: 5.6 KB
RevLine 
[167]1module OpenEhr
[4]2 module AM
3 module Archetype
4 module Constraint_Model
[21]5
[4]6 module Primitive
[21]7
[23]8 class C_PRIMITIVE
[32]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
[4]24 def assumed_value
25 raise NotImplementedError, "assumed_value should be implemented"
26 end
[32]27
[4]28 def default_value
29 raise NotImplementedError, "assumed_value should be implemented"
30 end
[32]31
[4]32 def has_assumed_value?
33 assumed_value != nil
34 end
[32]35
[4]36 def valid_value?
37 raise NotImplementedError, "valid_value? should be implemented"
38 end
39 end
[21]40
[23]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)
[4]49 end
[23]50
51 def true_valid=(true_valid)
[4]52 binary_consistency(true_valid, @false_valid)
53 @true_valid = true_valid
54 end
[23]55
56 def false_valid=(false_valid)
[4]57 binary_consistency(@true_valid,false_valid)
58 @false_valid = false_valid
59 end
[23]60
[4]61 def valid_value?
62
63 end
[23]64
65 def default_value(a_value = nil)
[4]66 if a_value == nil
67 @true_valid
68 else
69 (a_value && @true_valid) || (!a_value && @false_valid)
[32]70 end
[4]71 end
[21]72
[4]73 private
[21]74
[4]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"
[32]78 end
[4]79 end
80 end # of C_Boolean
[21]81
[23]82 class C_STRING < C_PRIMITIVE
[32]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
[4]88 end
[23]89
90 class C_INTEGER < C_PRIMITIVE
[32]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
[23]105 end
106
107 class C_REAL < C_PRIMITIVE
[32]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
[23]113 end
114
115 class C_TIME < C_PRIMITIVE
[32]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
[23]120 end
121
122 class C_DATE < C_PRIMITIVE
[32]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
[23]127 end
128
129 class C_DATE_TIME < C_PRIMITIVE
[32]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
[23]134 end
135
136 class C_DURATION < C_PRIMITIVE
[26]137 attr_accessor :years_allowed, :months_allowed, :weeks_allowed, :days_allowed, :hours_allowed, :minutes_allowed, :seconds_allowed, :fractional_seconds_allowed, :range, :assumed_value
[32]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
[23]142 end
143
144
145
[4]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.