MCMcdReader.st
author Claus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:04:52 +0100
changeset 30 a67718d60614
child 256 e1164304aa4e
permissions -rw-r--r--
initial checkin

"{ Package: 'stx:goodies/monticello' }"

MCMczReader subclass:#MCMcdReader
	instanceVariableNames:'baseInfo patch'
	classVariableNames:''
	poolDictionaries:''
	category:'Monticello-Storing'
!


!MCMcdReader class methodsFor:'as yet unclassified'!

extension
	^ 'mcd'
! !

!MCMcdReader methodsFor:'as yet unclassified'!

baseInfo
	^ baseInfo ifNil: [self loadBaseInfo]
!

basicVersion
	^ MCDiffyVersion
		package: self package
		info: self info
		dependencies: self dependencies
		baseInfo: self baseInfo
		patch: self patch
!

buildPatchFrom: oldDefinitions to: newDefinitions
	^ MCPatch
		fromBase: (MCSnapshot fromDefinitions: oldDefinitions)
		target: (MCSnapshot fromDefinitions: newDefinitions)
!

loadBaseInfo
	^ baseInfo _ self extractInfoFrom: (self parseMember: 'base')
!

loadPatch
	| old new |
	(self zip memberNamed: 'patch.bin') ifNotNilDo:
		[:m | [^ patch _ (DataStream on: m contentStream) next ]
			on: Error do: [:fallThrough ]].
	definitions _ OrderedCollection new.
	(self zip membersMatching: 'old/*')
		do: [:m | self extractDefinitionsFrom: m].
	old _ definitions asArray.
	definitions _ OrderedCollection new.
	(self zip membersMatching: 'new/*')
		do: [:m | self extractDefinitionsFrom: m].
	new _ definitions asArray.
	^ patch _ self buildPatchFrom: old to: new.
	
!

patch
	^ patch ifNil: [self loadPatch]
! !

!MCMcdReader class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCMcdReader.st,v 1.1 2006-11-22 13:04:52 cg Exp $'
! !