MCDirectoryRepository.st
author Claus Gittinger <cg@exept.de>
Thu, 01 Dec 2011 21:02:10 +0100
changeset 528 ea2c305d04fe
parent 526 4a1d6bba1036
child 623 4bbca2eb4aee
permissions -rw-r--r--
changed: #displayString #literalArrayEncoding fixed: directoryName was wrong here
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
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCFileBasedRepository subclass:#MCDirectoryRepository
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'directory'
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Repositories'
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    11
!MCDirectoryRepository class methodsFor:'initialization'!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    12
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    13
new
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    14
    ^self basicNew initialize
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    15
! !
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    16
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCDirectoryRepository class methodsFor:'instance creation'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
description
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ 'directory'
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    23
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
    ^self new directory: aStringOrFileDirectory
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    26
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    27
    "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
    28
    "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
    29
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    30
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
morphicConfigure
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    32
	| directory |
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    33
	^ (directory := UIManager default chooseDirectory) ifNotNil:
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    34
		[
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
		self new directory: directory]
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
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    40
creationTemplate
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    41
    "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
    42
526
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    43
    ^
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    44
'MCDirectoryRepository 
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    45
    directory: ''%1'''
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    46
        bindWith: (Filename currentDirectory asAbsoluteFilename / 'package-cache') asString
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    47
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    48
    "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
    49
    "Modified: / 01-12-2011 / 20:31:31 / cg"
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    50
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    51
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    52
fillInTheBlankRequest
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    53
    "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
    54
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    55
    ^ self shouldImplement
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    56
! !
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    57
526
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    58
4a1d6bba1036 changed: #creationTemplate
Claus Gittinger <cg@exept.de>
parents: 343
diff changeset
    59
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!MCDirectoryRepository methodsFor:'as yet unclassified'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
allFileNames
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	^ (directory entries sortBy: [:a :b | a modificationTime >= b modificationTime]) collect: [:ea | ea name]
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!
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>"
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
initialize
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    84
	super initialize.
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    85
	directory := FileDirectory default
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
isValid
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
	^directory exists
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    92
literalArrayEncoding
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    93
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    94
    ^Array 
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    95
        with: self class name asSymbol
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    96
        with: #directory:
528
ea2c305d04fe changed:
Claus Gittinger <cg@exept.de>
parents: 526
diff changeset
    97
        with: directory pathName "directoryName"
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    98
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
        (MCDirectoryRepository directory: '/tmp')
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   101
            literalArrayEncoding decodeAsLiteralArray
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   102
    "
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
    "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
   105
    "Modified: / 01-12-2011 / 21:01:25 / cg"
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   106
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   107
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
readStreamForFileNamed: aString do: aBlock
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	| file val |
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   110
	file := FileStream readOnlyFileNamed: (directory fullNameFor: aString).
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   111
	val := aBlock value: file.
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
	file close.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
	^ val
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
writeStreamForFileNamed: aString replace: aBoolean do: aBlock
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	| file sel |
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   118
	sel := aBoolean ifTrue: [#forceNewFileNamed:] ifFalse: [#newFileNamed:].
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   119
	file := FileStream perform: sel with: (directory fullNameFor: aString).
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
	aBlock value: file.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
	file close.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
! !
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
!MCDirectoryRepository methodsFor:'comparing'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
hash
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
	^ directory pathName hash
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
! !
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   130
!MCDirectoryRepository methodsFor:'displaying'!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   131
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   132
displayString
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   133
528
ea2c305d04fe changed:
Claus Gittinger <cg@exept.de>
parents: 526
diff changeset
   134
    ^directory pathName "/ directoryName
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
    "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
   137
    "Modified: / 01-12-2011 / 21:00:33 / cg"
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   138
! !
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   139
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
!MCDirectoryRepository class methodsFor:'documentation'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
version
528
ea2c305d04fe changed:
Claus Gittinger <cg@exept.de>
parents: 526
diff changeset
   143
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCDirectoryRepository.st,v 1.5 2011-12-01 20:02:10 cg Exp $'
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   144
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   145
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   146
version_CVS
528
ea2c305d04fe changed:
Claus Gittinger <cg@exept.de>
parents: 526
diff changeset
   147
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCDirectoryRepository.st,v 1.5 2011-12-01 20:02:10 cg Exp $'
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   148
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   149
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   150
version_SVN
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   151
    ^ '§Id: MCDirectoryRepository.st 17 2010-10-13 12:07:52Z vranyj1 §'
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
! !