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

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

refs #71

File size: 2.2 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 end # of Primitive
75 end # of CostraintModel
76 end # of Archetype
77 end # of AM
78end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.