MCRepositoryGroup.st
author Claus Gittinger <cg@exept.de>
Sun, 04 Dec 2011 15:44:55 +0100
changeset 541 eab702a68fb0
parent 525 c5dbd9067acb
child 552 c0ecaa34cc64
permissions -rw-r--r--
x
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#MCRepositoryGroup
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'repositories'
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Versioning'
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
MCRepositoryGroup class instanceVariableNames:'default'
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
 No other class instance variables are inherited by this class.
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
MCRepositoryGroup comment:'A singleton class, holds the list of repositories. Can look for a requested VersionInfo among its repositories.'
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!MCRepositoryGroup class methodsFor:'as yet unclassified'!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
default
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	^ default ifNil: [default _ self new]
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
new
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	^ self basicNew initialize
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
! !
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!MCRepositoryGroup methodsFor:'as yet unclassified'!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
addRepository: aRepository
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    34
    ((repositories includes: aRepository) or: [aRepository == MCCacheRepository default])
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    35
        ifFalse: [
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    36
            repositories add: aRepository.
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    37
            self class default addRepository: aRepository.
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    38
            self changed: #repositories
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    39
    ].
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    40
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    41
    "Modified: / 04-12-2011 / 09:04:24 / cg"
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    42
!
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    43
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    44
flushRepositories
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    45
    "/ cg: mhmh - what should we do here ?
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    46
    "/ called by UserPreferences >> mvRepositories:
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    47
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    48
    self initializeRepositoriesFromUserSettings
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    49
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    50
    "Created: / 01-12-2011 / 20:35:13 / cg"
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
525
c5dbd9067acb added: #flushRepositories
Claus Gittinger <cg@exept.de>
parents: 79
diff changeset
    53
flushRepositories
c5dbd9067acb added: #flushRepositories
Claus Gittinger <cg@exept.de>
parents: 79
diff changeset
    54
    "/ cg: mhmh - what should we do here ?
c5dbd9067acb added: #flushRepositories
Claus Gittinger <cg@exept.de>
parents: 79
diff changeset
    55
    "/ called by UserPreferences >> mvRepositories:
c5dbd9067acb added: #flushRepositories
Claus Gittinger <cg@exept.de>
parents: 79
diff changeset
    56
c5dbd9067acb added: #flushRepositories
Claus Gittinger <cg@exept.de>
parents: 79
diff changeset
    57
    "Created: / 01-12-2011 / 20:35:13 / cg"
c5dbd9067acb added: #flushRepositories
Claus Gittinger <cg@exept.de>
parents: 79
diff changeset
    58
!
c5dbd9067acb added: #flushRepositories
Claus Gittinger <cg@exept.de>
parents: 79
diff changeset
    59
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
includes: aRepository
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	^ self repositories includes: aRepository
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
includesVersionNamed: aString
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	self repositoriesDo: [:ea | (ea includesVersionNamed: aString) ifTrue: [^ true]].
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	^ false	
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
initialize
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    70
    "/ repositories _ OrderedCollection new
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    71
    self initializeRepositoriesFromUserSettings
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    72
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    73
    "Modified: / 04-12-2011 / 09:07:23 / cg"
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    74
!
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    75
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    76
initializeRepositoriesFromUserSettings
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    77
    |litArray reps|
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    78
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    79
    litArray := UserPreferences current at: #mcRepositories ifAbsent:#().
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    80
    reps := litArray decodeAsLiteralArray.
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    81
    repositories := OrderedCollection withAll:reps.
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    82
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    83
    "Created: / 04-12-2011 / 09:06:53 / cg"
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
removeRepository: aRepository
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
	repositories remove: aRepository ifAbsent: [].
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
	self changed: #repositories
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
repositories
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    92
    ^ ((OrderedCollection withAll:repositories)
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    93
            addFirst:(MCCacheRepository default);
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    94
            yourself)
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    95
        select: [ :ea | ea isValid ]
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    96
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    97
    "Modified: / 04-12-2011 / 09:04:42 / cg"
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
repositoriesDo: aBlock
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
	self repositories do: [:ea | [aBlock value: ea] on: Error do: []]
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   102
! !
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   103
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   104
!MCRepositoryGroup methodsFor:'searching'!
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
versionWithInfo: aVersionInfo
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
	^self versionWithInfo: aVersionInfo ifNone: [ self error: 'Could not find version ', aVersionInfo name printString,'. Maybe you need to add a repository?' ]
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
versionWithInfo: aVersionInfo ifNone: aBlock
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
	self repositoriesDo: [:ea | (ea versionWithInfo: aVersionInfo) ifNotNilDo: [:v | ^ v]].
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
	^aBlock value
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
! !
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
!MCRepositoryGroup class methodsFor:'documentation'!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
version
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   118
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCRepositoryGroup.st,v 1.3 2011-12-04 14:44:55 cg Exp $'
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
! !