MCMcdReader.st
author Claus Gittinger <cg@exept.de>
Sat, 20 Aug 2011 14:31:48 +0200
changeset 378 de4701fdb346
parent 256 e1164304aa4e
child 636 d25edd65c88c
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 m |
	(m := self zip memberNamed: 'patch.bin') ifNotNil:
		[[^ 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.3 2011-08-20 12:31:48 cg Exp $'
!

version_CVS
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCMcdReader.st,v 1.3 2011-08-20 12:31:48 cg Exp $'
!

version_SVN
    ^ '§Id: MCMcdReader.st 17 2010-10-13 12:07:52Z vranyj1 §'
! !