MCPackage.st
author Claus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:19:56 +0100
changeset 103 016996199a05
child 144 b7077cd6a0c3
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
103
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#MCPackage
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'name'
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Base'
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCPackage class methodsFor:'as yet unclassified'!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
named: aString
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self new name: aString
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCPackage methodsFor:'as yet unclassified'!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
= other
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ other species = self species and: [other name sameAs: name]
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
hasWorkingCopy
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	^ MCWorkingCopy registry includesKey: self
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
hash
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	^ name asLowercase hash
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
name
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	^ name
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
name: aString
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	name _ aString
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
packageInfo
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	^ PackageInfo named: name
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
printOn: aStream
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	super printOn: aStream.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	aStream
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
		nextPut: $(;
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
		nextPutAll: name;
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
		nextPut: $)
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
snapshot
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	| packageInfo definitions categories |
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	packageInfo := self packageInfo.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	definitions := OrderedCollection new.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	categories := packageInfo systemCategories.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	categories isEmpty ifFalse: [ definitions add: (MCOrganizationDefinition categories: categories) ].
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
	packageInfo methods do: [:ea | definitions add: ea asMethodDefinition] displayingProgress: 'Snapshotting methods...'.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	(packageInfo respondsTo: #overriddenMethods) ifTrue:
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
		[packageInfo overriddenMethods
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
			do: [:ea | definitions add:
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
					(packageInfo changeRecordForOverriddenMethod: ea) asMethodDefinition]
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
			displayingProgress: 'Searching for overrides...'].
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	packageInfo classes do: [:ea | definitions addAll: ea classDefinitions] displayingProgress: 'Snapshotting classes...'.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	(packageInfo respondsTo: #hasPreamble) ifTrue: [
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
		packageInfo hasPreamble ifTrue: [definitions add: (MCPreambleDefinition from: packageInfo)].
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
		packageInfo hasPostscript ifTrue: [definitions add: (MCPostscriptDefinition from: packageInfo)].
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
		packageInfo hasPreambleOfRemoval ifTrue: [definitions add: (MCRemovalPreambleDefinition from: packageInfo)].
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
		packageInfo hasPostscriptOfRemoval ifTrue: [definitions add: (MCRemovalPostscriptDefinition from: packageInfo)]]. 
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	^ MCSnapshot fromDefinitions: definitions
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
storeOn: aStream
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
	aStream
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
		nextPutAll: 'MCPackage';
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
		space; nextPutAll: 'named: '; store: name.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
unload
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	^ self workingCopy unload
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
workingCopy
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	^ MCWorkingCopy forPackage: self.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
! !
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
!MCPackage class methodsFor:'documentation'!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
version
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCPackage.st,v 1.1 2006-11-22 13:19:56 cg Exp $'
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
! !