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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCMczReader subclass:#MCMcdReader
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'baseInfo patch'
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Storing'
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCMcdReader class methodsFor:'as yet unclassified'!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
extension
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ 'mcd'
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCMcdReader methodsFor:'as yet unclassified'!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
baseInfo
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ baseInfo ifNil: [self loadBaseInfo]
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
basicVersion
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	^ MCDiffyVersion
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
		package: self package
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
		info: self info
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
		dependencies: self dependencies
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
		baseInfo: self baseInfo
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
		patch: self patch
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
buildPatchFrom: oldDefinitions to: newDefinitions
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	^ MCPatch
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
		fromBase: (MCSnapshot fromDefinitions: oldDefinitions)
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
		target: (MCSnapshot fromDefinitions: newDefinitions)
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
loadBaseInfo
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	^ baseInfo _ self extractInfoFrom: (self parseMember: 'base')
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
loadPatch
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	| old new |
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	(self zip memberNamed: 'patch.bin') ifNotNilDo:
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
		[:m | [^ patch _ (DataStream on: m contentStream) next ]
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
			on: Error do: [:fallThrough ]].
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	definitions _ OrderedCollection new.
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	(self zip membersMatching: 'old/*')
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
		do: [:m | self extractDefinitionsFrom: m].
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
	old _ definitions asArray.
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	definitions _ OrderedCollection new.
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	(self zip membersMatching: 'new/*')
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		do: [:m | self extractDefinitionsFrom: m].
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	new _ definitions asArray.
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	^ patch _ self buildPatchFrom: old to: new.
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
patch
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	^ patch ifNil: [self loadPatch]
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
! !
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!MCMcdReader class methodsFor:'documentation'!
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
version
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCMcdReader.st,v 1.1 2006-11-22 13:04:52 cg Exp $'
a67718d60614 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
! !