MCDirectoryRepository.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 1023 83036b1d627f
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
1023
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
     3
"{ NameSpace: Smalltalk }"
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
     4
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
MCFileBasedRepository subclass:#MCDirectoryRepository
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:'directory'
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
623
4bbca2eb4aee category change
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
     9
	category:'SCM-Monticello-Repositories'
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    13
!MCDirectoryRepository class methodsFor:'initialization'!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    14
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    15
new
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    16
    ^self basicNew initialize
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    17
! !
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    18
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!MCDirectoryRepository class methodsFor:'instance creation'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    21
directory: aStringOrFileDirectory
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    22
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    23
    ^self new directory: aStringOrFileDirectory
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    24
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    25
    "Created: / 16-09-2010 / 14:51:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    26
    "Modified: / 16-09-2010 / 15:59:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    27
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    28
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
morphicConfigure
1023
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
    30
        | directory dialog |
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
    31
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
    32
        dialog := UIManager isNil ifTrue:[Dialog] ifFalse:[ UIManager default ].
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
    33
        ^ (directory := dialog chooseDirectory) ifNotNil:
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
    34
                [
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
    35
                self new directory: directory]
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
! !
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    38
!MCDirectoryRepository class methodsFor:'as yet unclassified'!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    39
907
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    40
fillInTheBlankRequest
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    41
    "superclass MCRepository class says that I am responsible to implement this method"
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    42
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    43
    ^ self shouldImplement
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    44
! !
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    45
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    46
!MCDirectoryRepository class methodsFor:'queries'!
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    47
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    48
creationTemplate
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    49
    "superclass MCRepository class says that I am responsible to implement this method"
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    50
526
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    51
    ^
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    52
'MCDirectoryRepository 
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    53
    directory: ''%1'''
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    54
        bindWith: (Filename currentDirectory asAbsoluteFilename / 'package-cache') asString
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    55
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    56
    "Modified: / 16-09-2010 / 14:53:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
526
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    57
    "Modified: / 01-12-2011 / 20:31:31 / cg"
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    58
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    59
907
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    60
description
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    61
	^ 'directory'
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    62
! !
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    63
907
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    64
!MCDirectoryRepository methodsFor:'accessing'!
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
description
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	^ directory pathName
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
directory
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	^ directory
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    74
directory: aStringOrDirectory
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    75
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    76
    directory := aStringOrDirectory isString 
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    77
        ifTrue:[FileDirectory directoryNamed: aStringOrDirectory]
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    78
        ifFalse:[aStringOrDirectory].
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    79
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    80
    "Modified: / 16-09-2010 / 15:58:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
907
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    81
! !
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
907
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
    83
!MCDirectoryRepository methodsFor:'as yet unclassified'!
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
isValid
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
	^directory exists
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    89
literalArrayEncoding
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    90
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    91
    ^Array 
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    92
        with: self class name asSymbol
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    93
        with: #directory:
528
ea2c305d04fe changed:
Claus Gittinger <cg@exept.de>
parents: 526
diff changeset
    94
        with: directory pathName "directoryName"
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    95
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    96
    "
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    97
        (MCDirectoryRepository directory: '/tmp')
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    98
            literalArrayEncoding decodeAsLiteralArray
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    99
    "
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   100
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   101
    "Created: / 16-09-2010 / 16:01:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
528
ea2c305d04fe changed:
Claus Gittinger <cg@exept.de>
parents: 526
diff changeset
   102
    "Modified: / 01-12-2011 / 21:01:25 / cg"
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   103
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   104
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
readStreamForFileNamed: aString do: aBlock
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
	| file val |
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   107
	file := FileStream readOnlyFileNamed: (directory fullNameFor: aString).
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   108
	val := aBlock value: file.
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	file close.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
	^ val
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
writeStreamForFileNamed: aString replace: aBoolean do: aBlock
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
	| file sel |
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   115
	sel := aBoolean ifTrue: [#forceNewFileNamed:] ifFalse: [#newFileNamed:].
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   116
	file := FileStream perform: sel with: (directory fullNameFor: aString).
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	aBlock value: file.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
	file close.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
! !
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
!MCDirectoryRepository methodsFor:'comparing'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
hash
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
	^ directory pathName hash
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
! !
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   127
!MCDirectoryRepository methodsFor:'displaying'!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   128
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   129
displayString
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   130
528
ea2c305d04fe changed:
Claus Gittinger <cg@exept.de>
parents: 526
diff changeset
   131
    ^directory pathName "/ directoryName
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   132
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   133
    "Created: / 14-09-2010 / 23:18:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
528
ea2c305d04fe changed:
Claus Gittinger <cg@exept.de>
parents: 526
diff changeset
   134
    "Modified: / 01-12-2011 / 21:00:33 / cg"
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   135
! !
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   136
907
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   137
!MCDirectoryRepository methodsFor:'initialization'!
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   138
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   139
initialize
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   140
	super initialize.
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   141
	directory := FileDirectory default
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   142
! !
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   143
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   144
!MCDirectoryRepository methodsFor:'queries'!
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   145
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   146
allFileNames
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   147
	^ (directory entries sortBy: [:a :b | a modificationTime >= b modificationTime]) collect: [:ea | ea name]
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   148
! !
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   149
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
!MCDirectoryRepository class methodsFor:'documentation'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
version
1023
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
   153
    ^ '$Header$'
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   154
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   155
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   156
version_CVS
1023
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
   157
    ^ '$Header$'
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   158
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   159
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   160
version_SVN
1023
83036b1d627f #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 907
diff changeset
   161
    ^ '$Id$'
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
! !
907
fce2e5941124 categories
Claus Gittinger <cg@exept.de>
parents: 623
diff changeset
   163