Changeset 160 for ruby/trunk/lib
- Timestamp:
- Jul 7, 2009, 9:45:38 PM (15 years ago)
- Location:
- ruby/trunk/lib/models
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/models/rm/common/change_control.rb
r159 r160 41 41 @audit = audit 42 42 end 43 end44 45 class Versioned_Object46 43 end 47 44 … … 73 70 end 74 71 72 # remove hard coding of lifecycle 75 73 def lifcycle_state=(lifecycle_state) 76 74 if lifecycle_state.nil? || … … 156 154 end 157 155 end 156 157 class Versioned_Object 158 attr_reader :uid, :owner_id, :time_created, :all_versions 159 160 def initialize(args = { }) 161 self.uid = args[:uid] 162 self.owner_id = args[:owner_id] 163 self.time_created = args[:time_created] 164 self.all_versions = args[:all_versions] 165 end 166 167 def uid=(uid) 168 raise ArgumentError, 'uid is mandatory' if uid.nil? 169 @uid = uid 170 end 171 172 def owner_id=(owner_id) 173 raise ArgumentError, 'owner_id is mandatory' if owner_id.nil? 174 @owner_id = owner_id 175 end 176 177 def time_created=(time_created) 178 if time_created.nil? 179 raise ArgumentError, 'time_created is mandatory' 180 end 181 @time_created = time_created 182 end 183 184 def all_versions=(all_versions) 185 if all_versions.nil? || all_versions.size < 0 186 raise ArgumentError, 'version count invalid' 187 end 188 @all_versions = all_versions 189 end 190 191 def all_version_ids 192 ids = [] 193 @all_versions.each{|id| ids << id.uid} 194 return ids 195 end 196 197 def version_count 198 return all_versions.size 199 end 200 201 def has_version_id?(a_ver_id) 202 raise ArgumentError, 'argument is mandatory' if a_ver_id.nil? 203 return self.all_version_ids.include?(a_ver_id) 204 end 205 206 def is_original_version?(a_ver_id) 207 if a_ver_id.nil? || !self.has_version_id?(a_ver_id) 208 raise ArgumentError, 'invalid a_ver_id' 209 end 210 return @all_versions[self.all_version_ids.index(a_ver_id)].instance_of? Original_Version 211 end 212 213 def has_version_at_time?(a_time) 214 raise ArgumentError, 'argument mandatory' if a_time.nil? 215 @all_versions.each do |ver| 216 if ver.commit_audit.time_committed == a_time 217 return true 218 end 219 end 220 return false 221 end 222 223 def version_with_id(a_ver_id) 224 if a_ver_id.nil? || !self.has_version_id?(a_ver_id) 225 raise ArgumentError, 'argument invalid' 226 end 227 return @all_versions[self.all_version_ids.index(a_ver_id)] 228 end 229 230 def version_at_time(a_time) 231 if a_time.nil? || !self.has_version_at_time?(a_time) 232 raise ArgumentError, 'argument invalid' 233 end 234 @all_versions.each do |ver| 235 if ver.commit_audit.time_committed == a_time 236 return ver 237 end 238 end 239 end 240 241 def latest_version 242 time_sorted_version = @all_versions.sort do |a,b| 243 a.commit_audit.time_committed <=> b.commit_audit.time_committed 244 end 245 return time_sorted_version.last 246 end 247 248 def latest_trunk_version 249 trunk_versions = [ ] 250 @all_versions.each do |ver| 251 if ver.uid.version_tree_id.trunk_version == '1' 252 trunk_versions << ver 253 end 254 end 255 sorted_trunk_version = trunk_versions.sort do |a,b| 256 a.commit_audit.time_committed <=> b.commit_audit.time_committed 257 end 258 return sorted_trunk_version.last 259 end 260 261 def trunk_lifecycle_state 262 return self.latest_trunk_version.lifecycle_state 263 end 264 265 def revision_history 266 revision_history_items = [ ] 267 @all_versions.each do |ver| 268 audits = [ ] 269 if ver.instance_of? Original_Version 270 audits << ver.attestations 271 end 272 audits << ver.commit_audit 273 revision_history_items << Revision_History_Item.new( 274 :audits => audits, 275 :version_id => ver.uid) 276 end 277 return Revision_History.new(revision_history_items) 278 end 279 280 def commit_original_version(args={ }) 281 @all_versions << Original_Version.new(:uid => args[:uid], 282 :preceding_version_uid => args[:preceding_version_uid], 283 :contribution => args[:contribution], 284 :commit_audit => args[:commit_audit], 285 :lifecycle_state => args[:lifecycle_state], 286 :data => args[:data], 287 :attestations => args[:attestations], 288 :signature => args[:signature]) 289 end 290 end 158 291 end # of Change_Control 159 292 end # of Common -
ruby/trunk/lib/models/tests/rm/test_common.rb
r159 r160 342 342 :change_type => dv_coded_text, 343 343 :reason => DV_Text.new('signed')) 344 dv_date_time = DV_Date_Time.new('2009-07-07T21:10:12') 345 audit_details = Audit_Details.new(:system_id => 'MAGI', 346 :committer => party_proxy, 347 :time_committed => dv_date_time, 348 :change_type => dv_coded_text) 344 349 assert_nothing_raised(Exception){ 345 350 @original_version = Original_Version.new(:uid => object_version_id3, … … 351 356 :data => 'data', 352 357 :lifecycle_state => dv_coded_text)} 358 dv_date_time = DV_Date_Time.new('2009-07-08T21:10:12') 353 359 audit_details = Audit_Details.new(:system_id => 'CASPER', 354 360 :committer => party_proxy, … … 366 372 :versions => Set[object_ref], 367 373 :audit => audit_details)} 374 dv_date_time = DV_Date_Time.new('2009-07-08T18:10:12') 375 audit_details = Audit_Details.new(:system_id => 'MAGI', 376 :committer => party_proxy, 377 :time_committed => dv_date_time, 378 :change_type => dv_coded_text) 379 @trunk_version = Version.new(:uid => object_version_id4, 380 :lifecycle_state => dv_coded_text, 381 :commit_audit => audit_details, 382 :contribution => object_ref, 383 :change_type => dv_coded_text) 384 assert_nothing_raised(Exception){ 385 @versioned_object = Versioned_Object.new(:uid => hier_object_id, 386 :owner_id => object_ref, 387 :time_created => dv_date_time, 388 :all_versions => [@version,@original_version,@imported_version,@trunk_version])} 368 389 end 369 390 … … 373 394 assert_instance_of Imported_Version, @imported_version 374 395 assert_instance_of OpenEHR::RM::Common::Change_Control::Contribution, @contribution 396 assert_instance_of Versioned_Object, @versioned_object 375 397 end 376 398 … … 400 422 assert_equal 'STU::VWX::1.2.3', @imported_version.preceding_version_uid.value 401 423 assert_equal '532', @imported_version.lifecycle_state.defining_code.code_string 402 403 424 end 404 425 … … 408 429 assert_equal 'for contribution', @contribution.audit.description 409 430 end 431 432 def test_versioned_object 433 assert_equal 'ABC', @versioned_object.uid.value 434 assert_equal 'unknown', @versioned_object.owner_id.namespace 435 assert_equal 18, @versioned_object.time_created.hour 436 assert_equal [@version, @original_version, @imported_version, @trunk_version], 437 @versioned_object.all_versions 438 assert_equal 4, @versioned_object.version_count 439 assert_equal [@version.uid, @original_version.uid, @imported_version.uid, @trunk_version.uid], 440 @versioned_object.all_version_ids 441 assert @versioned_object.has_version_id?(@version.uid) 442 assert !@versioned_object.is_original_version?(@version.uid) 443 assert @versioned_object.is_original_version?(@original_version.uid) 444 assert @versioned_object.has_version_at_time?(DV_Date_Time.new('2009-07-06T21:10:12')) 445 assert_equal @version, @versioned_object.version_with_id(@version.uid) 446 assert_equal @version, @versioned_object.version_at_time(@version.commit_audit.time_committed) 447 assert_equal @imported_version, @versioned_object.latest_version 448 assert_equal @trunk_version, @versioned_object.latest_trunk_version 449 assert_equal 'complete', @versioned_object.trunk_lifecycle_state.value 450 assert_equal '2009-07-08T18:10:12', @versioned_object.revision_history.most_recent_version_time_committed 451 assert_nothing_raised(Exception){ 452 @versioned_object.commit_original_version(:contribution => @original_version.contribution, 453 :uid => @original_version.uid, 454 :preceding_version_uid => @original_version.preceding_version_uid, 455 :commit_audit => @original_version.commit_audit, 456 :attestations => @original_version.attestations, 457 :lifecycle_state => @original_version.lifecycle_state, 458 :data => 'commit original', 459 :signature => 'testtett')} 460 assert_equal 5, @versioned_object.version_count 461 end 410 462 end
Note:
See TracChangeset
for help on using the changeset viewer.