initial checkin
authorClaus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:04:52 +0100
changeset 30 a67718d60614
parent 29 b38afa133bfa
child 31 698b2f37ef60
initial checkin
MCMcdReader.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCMcdReader.st	Wed Nov 22 14:04:52 2006 +0100
@@ -0,0 +1,67 @@
+"{ 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 $'
+! !