"{ 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
].
"Modified: / 04-12-2011 / 09:04:24 / cg"
!
flushRepositories
"/ cg: mhmh - what should we do here ?
"/ called by UserPreferences >> mvRepositories:
self initializeRepositoriesFromUserSettings
"Created: / 01-12-2011 / 20:35:13 / cg"
!
includes: aRepository
^ self repositories includes: aRepository
!
includesVersionNamed: aString
self repositoriesDo: [:ea | (ea includesVersionNamed: aString) ifTrue: [^ true]].
^ false
!
initialize
"/ repositories _ OrderedCollection new
self initializeRepositoriesFromUserSettings
"Modified: / 04-12-2011 / 09:07:23 / cg"
!
initializeRepositoriesFromUserSettings
|litArray reps|
litArray := UserPreferences current at: #mcRepositories ifAbsent:#().
reps := litArray decodeAsLiteralArray.
repositories := OrderedCollection withAll:reps.
"Created: / 04-12-2011 / 09:06:53 / cg"
!
removeRepository: aRepository
repositories remove: aRepository ifAbsent: [].
self changed: #repositories
!
repositories
^ ((OrderedCollection withAll:repositories)
addFirst:(MCCacheRepository default);
yourself)
select: [ :ea | ea isValid ]
"Modified: / 04-12-2011 / 09:04:42 / cg"
!
repositoriesDo: aBlock
self repositories do: [:ea | [aBlock value: ea] on: Error do: []]
! !
!MCRepositoryGroup methodsFor:'searching'!
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.4 2011-12-04 15:12:20 cg Exp $'
! !