source: ruby/trunk/lib/models/rm/common/change_control.rb@ 159

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

refs #64

File size: 5.0 KB
Line 
1# This module is based on the UML,
2# http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109326589721_134411_997Report.html
3# Ticket refs #64
4
5module OpenEHR
6 module RM
7 module Common
8 module Change_Control
9 class Contribution
10 attr_reader :uid, :versions, :audit
11
12 def initialize(args = { })
13 self.uid = args[:uid]
14 self.versions = args[:versions]
15 self.audit = args[:audit]
16 end
17
18 def uid=(uid)
19 if uid.nil?
20 raise ArgumentError, "uid should not be nil."
21 end
22 @uid = uid
23 end
24
25 def versions=(versions)
26 unless versions.nil?
27 if versions.empty?
28 raise ArgumentError, 'versions shoud not be nil or empty.'
29 end
30 end
31 @versions = versions
32 end
33
34 def audit=(audit)
35 if audit.nil?
36 raise ArgumentError, 'audit should not be nil.'
37 end
38 if audit.description.nil?
39 raise ArgumentError, 'audit.description should not be nil.'
40 end
41 @audit = audit
42 end
43 end
44
45 class Versioned_Object
46 end
47
48 class Version
49 attr_reader :uid, :preceding_version_uid, :lifecycle_state,
50 :commit_audit, :contribution
51 attr_accessor :data, :signature
52
53 def initialize(args = { })
54 self.uid = args[:uid]
55 self.preceding_version_uid = args[:preceding_version_uid]
56 self.data = args[:data]
57 self.lifcycle_state = args[:lifecycle_state]
58 self.commit_audit = args[:commit_audit]
59 self.contribution = args[:contribution]
60 self.signature = args[:signature]
61 end
62
63 def uid=(uid)
64 raise ArgumentError, "uid should not be nil" if uid.nil?
65 @uid = uid
66 end
67
68 def preceding_version_uid=(preceding_version_uid)
69 if (!preceding_version_uid.nil?) == @uid.version_tree_id.is_first?
70 raise ArgumentError, 'preceding version is invalid'
71 end
72 @preceding_version_uid = preceding_version_uid
73 end
74
75 def lifcycle_state=(lifecycle_state)
76 if lifecycle_state.nil? ||
77 !%w[532 553 523].include?(
78 lifecycle_state.defining_code.code_string)
79 raise ArgumentError, 'invalid lifecycle_state'
80 end
81 @lifecycle_state = lifecycle_state
82 end
83
84 def commit_audit=(commit_audit)
85 if commit_audit.nil?
86 raise ArgumentError,'commit_audit is mandatory'
87 end
88 @commit_audit = commit_audit
89 end
90
91 def contribution=(contribution)
92 raise ArgumentError, "contribution should not be nil" if contribution.nil? or contribution.type.empty?
93 @contribution = contribution
94 end
95
96 def owner_id
97 return Hier_Object_ID.new(@uid.object_id.value)
98 end
99
100 def is_branch?
101 return @uid.is_branch?
102 end
103
104 def canonical_form
105 raise NotImplementedError, 'canonical form not implemented'
106 end
107 end
108
109 class Imported_Version < Version
110 attr_reader :item
111
112 def initialize(args = { })
113 self.item = args[:item]
114 super(:uid => @item.uid,
115 :preceding_version_uid => @item.preceding_version_uid,
116 :data => @item.data, :commit_audit=> args[:commit_audit],
117 :commit_audit => args[:commit_audit],
118 :contribution => args[:contribution],
119 :lifecycle_state => @item.lifecycle_state,
120 :signature => args[:signature])
121
122 end
123
124 def item=(item)
125 raise ArgumentError, 'item is mandatory' if item.nil?
126 @item = item
127 end
128 end
129
130 class Original_Version < Version
131 attr_reader :attestations
132
133 def initialize(args = { })
134 super(args)
135 self.attestations = args[:attestations]
136 self.other_input_version_uids = args[:other_input_version_uids]
137 end
138
139 def attestations=(attestations)
140 if attestations.nil? || attestations.empty?
141 raise ArgumentError, 'attestations is mandatory'
142 end
143 @attestations = attestations
144 end
145
146 def other_input_version_uids=(other_input_version_uids)
147 if !other_input_version_uids.nil? && other_input_version_uids.empty?
148 raise ArgumentError, 'invaild other_input_version_uids'
149 end
150 @other_input_version_uids = other_input_version_uids
151 end
152
153 def is_merged?
154# Java implementation has is_merged attribute, Eiffel implementation does
155# nothing
156 end
157 end
158 end # of Change_Control
159 end # of Common
160 end # of RM
161end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.