MCPatch.st
author Claus Gittinger <cg@exept.de>
Mon, 26 Oct 2009 18:54:19 +0100
changeset 155 c7a154a5ff3e
parent 65 99f7b2e2fe1f
child 193 910cb9414852
permissions -rw-r--r--
changed: #initializeWithBase:target:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
65
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#MCPatch
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'operations'
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Patching'
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCPatch class methodsFor:'as yet unclassified'!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
fromBase: baseSnapshot target: targetSnapshot
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self new initializeWithBase: baseSnapshot target: targetSnapshot
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
operations: aCollection
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	^ self basicNew initializeWithOperations: aCollection
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
! !
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!MCPatch methodsFor:'accessing'!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
operations
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	^ operations
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
! !
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
!MCPatch methodsFor:'applying'!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
applyTo: anObject
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	operations do: [:ea | ea applyTo: anObject].
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
! !
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!MCPatch methodsFor:'intializing'!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
initializeWithBase: baseSnapshot target: targetSnapshot
155
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    36
        | base target |         
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    37
        operations _ OrderedCollection new.
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    38
        base _ MCDefinitionIndex definitions: baseSnapshot definitions.
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    39
        target _ MCDefinitionIndex definitions: targetSnapshot definitions.
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    40
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    41
        Smalltalk isSmalltalkX ifTrue:[
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    42
            target definitions do:
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    43
                [:t |
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    44
                base
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    45
                        definitionLike: t
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    46
                        ifPresent: [:b | (b isSameRevisionAs: t) ifFalse: [operations add: (MCModification of: b to: t)]]
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    47
                        ifAbsent: [operations add: (MCAddition of: t)]].
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    48
        ] ifFalse:[
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    49
            target definitions do:
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    50
                [:t |
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    51
                base
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    52
                        definitionLike: t
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    53
                        ifPresent: [:b | (b isSameRevisionAs: t) ifFalse: [operations add: (MCModification of: b to: t)]]
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    54
                        ifAbsent: [operations add: (MCAddition of: t)]]
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    55
                displayingProgress: 'Diffing...'.
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    56
        ].                
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    57
        base definitions do:
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    58
                [:b |
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    59
                target
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    60
                        definitionLike: b
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    61
                        ifPresent: [:t]
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    62
                        ifAbsent: [operations add: (MCRemoval of: b)]]          
65
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
initializeWithOperations: aCollection
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	operations _ aCollection
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
! !
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
!MCPatch methodsFor:'querying'!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
isEmpty
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
	^ operations isEmpty
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
! !
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
!MCPatch methodsFor:'ui'!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
browse
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
	^ (MCPatchBrowser forPatch: self) show
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
! !
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
!MCPatch class methodsFor:'documentation'!
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
version
155
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    84
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCPatch.st,v 1.2 2009-10-26 17:54:19 cg Exp $'
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    85
!
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    86
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    87
version_CVS
c7a154a5ff3e changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents: 65
diff changeset
    88
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCPatch.st,v 1.2 2009-10-26 17:54:19 cg Exp $'
65
99f7b2e2fe1f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
! !