MCDirectoryRepository.st
author Claus Gittinger <cg@exept.de>
Sat, 20 Aug 2011 14:28:13 +0200
changeset 343 66796446b566
parent 228 96243bb824dc
child 526 4a1d6bba1036
permissions -rw-r--r--
initial checkin
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
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    43
    ^'MCDirectoryRepository directory: ''%1'''
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    44
        bindWith: (Filename currentDirectory asAbsoluteFilename / 'package-cache') asString
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    45
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    46
    "Modified: / 16-09-2010 / 14:53:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    49
fillInTheBlankRequest
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    50
    "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
    51
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    52
    ^ self shouldImplement
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    53
! !
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    54
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
!MCDirectoryRepository methodsFor:'as yet unclassified'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
allFileNames
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	^ (directory entries sortBy: [:a :b | a modificationTime >= b modificationTime]) collect: [:ea | ea name]
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
description
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	^ directory pathName
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
directory
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	^ directory
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    69
directory: aStringOrDirectory
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    70
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    71
    directory := aStringOrDirectory isString 
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    72
        ifTrue:[FileDirectory directoryNamed: aStringOrDirectory]
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    73
        ifFalse:[aStringOrDirectory].
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    74
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    75
    "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
    76
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
initialize
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    79
	super initialize.
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    80
	directory := FileDirectory default
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
isValid
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	^directory exists
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    87
literalArrayEncoding
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    88
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    89
    ^Array 
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    90
        with: self class name asSymbol
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    91
        with: #directory:
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    92
        with: directory directoryName
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
    "
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    95
        (MCDirectoryRepository directory: '/tmp')
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    96
            literalArrayEncoding decodeAsLiteralArray
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
    97
    "
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
    "Created: / 16-09-2010 / 16:01:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
readStreamForFileNamed: aString do: aBlock
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
	| file val |
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   104
	file := FileStream readOnlyFileNamed: (directory fullNameFor: aString).
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   105
	val := aBlock value: file.
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
	file close.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
	^ val
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
writeStreamForFileNamed: aString replace: aBoolean do: aBlock
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
	| file sel |
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   112
	sel := aBoolean ifTrue: [#forceNewFileNamed:] ifFalse: [#newFileNamed:].
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   113
	file := FileStream perform: sel with: (directory fullNameFor: aString).
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
	aBlock value: file.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
	file close.
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
! !
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
!MCDirectoryRepository methodsFor:'comparing'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
hash
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
	^ directory pathName hash
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
! !
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   124
!MCDirectoryRepository methodsFor:'displaying'!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   125
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   126
displayString
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   127
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   128
    ^directory directoryName
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   129
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   130
    "Created: / 14-09-2010 / 23:18:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
!MCDirectoryRepository class methodsFor:'documentation'!
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
version
343
66796446b566 initial checkin
Claus Gittinger <cg@exept.de>
parents: 228
diff changeset
   136
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCDirectoryRepository.st,v 1.3 2011-08-20 12:28:13 cg Exp $'
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   137
!
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
version_CVS
343
66796446b566 initial checkin
Claus Gittinger <cg@exept.de>
parents: 228
diff changeset
   140
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCDirectoryRepository.st,v 1.3 2011-08-20 12:28:13 cg Exp $'
228
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   141
!
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   142
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   143
version_SVN
96243bb824dc added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 109
diff changeset
   144
    ^ '§Id: MCDirectoryRepository.st 17 2010-10-13 12:07:52Z vranyj1 §'
109
102a441aafcd initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
! !