initial checkin
authorClaus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:15:57 +0100
changeset 79 5f6ee04f4dc9
parent 78 41ddb69f54b2
child 80 349349d9b55a
initial checkin
MCRepositoryGroup.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCRepositoryGroup.st	Wed Nov 22 14:15:57 2006 +0100
@@ -0,0 +1,79 @@
+"{ Package: 'stx:goodies/monticello' }"
+
+Object subclass:#MCRepositoryGroup
+	instanceVariableNames:'repositories'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Monticello-Versioning'
+!
+
+MCRepositoryGroup class instanceVariableNames:'default'
+
+"
+ No other class instance variables are inherited by this class.
+"
+!
+
+MCRepositoryGroup comment:'A singleton class, holds the list of repositories. Can look for a requested VersionInfo among its repositories.'
+!
+
+
+!MCRepositoryGroup class methodsFor:'as yet unclassified'!
+
+default
+	^ default ifNil: [default _ self new]
+!
+
+new
+	^ self basicNew initialize
+! !
+
+!MCRepositoryGroup methodsFor:'as yet unclassified'!
+
+addRepository: aRepository
+	((repositories includes: aRepository) or: [aRepository == MCCacheRepository default])
+		ifFalse: [repositories add: aRepository.
+				self class default addRepository: aRepository].
+	self changed: #repositories
+!
+
+includes: aRepository
+	^ self repositories includes: aRepository
+!
+
+includesVersionNamed: aString
+	self repositoriesDo: [:ea | (ea includesVersionNamed: aString) ifTrue: [^ true]].
+	^ false	
+!
+
+initialize
+	repositories _ OrderedCollection new
+!
+
+removeRepository: aRepository
+	repositories remove: aRepository ifAbsent: [].
+	self changed: #repositories
+!
+
+repositories
+	^ ((Array with: MCCacheRepository default), repositories) select: [ :ea | ea isValid ]
+!
+
+repositoriesDo: aBlock
+	self repositories do: [:ea | [aBlock value: ea] on: Error do: []]
+!
+
+versionWithInfo: aVersionInfo
+	^self versionWithInfo: aVersionInfo ifNone: [ self error: 'Could not find version ', aVersionInfo name printString,'. Maybe you need to add a repository?' ]
+!
+
+versionWithInfo: aVersionInfo ifNone: aBlock
+	self repositoriesDo: [:ea | (ea versionWithInfo: aVersionInfo) ifNotNilDo: [:v | ^ v]].
+	^aBlock value
+! !
+
+!MCRepositoryGroup class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCRepositoryGroup.st,v 1.1 2006-11-22 13:15:57 cg Exp $'
+! !