MCRepositoryGroup.st
author Claus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:15:57 +0100
changeset 79 5f6ee04f4dc9
child 525 c5dbd9067acb
permissions -rw-r--r--
initial checkin

"{ 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 $'
! !