MCCacheRepository.st
author Claus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:22:08 +0100
changeset 107 1d69365eba70
child 576 eb260bad5999
permissions -rw-r--r--
initial checkin

"{ Package: 'stx:goodies/monticello' }"

MCDirectoryRepository subclass:#MCCacheRepository
	instanceVariableNames:'packageCaches seenFiles'
	classVariableNames:''
	poolDictionaries:''
	category:'Monticello-Repositories'
!

MCCacheRepository class instanceVariableNames:'default'

"
 No other class instance variables are inherited by this class.
"
!


!MCCacheRepository class methodsFor:'as yet unclassified'!

cacheDirectory
	^ (FileDirectory default directoryNamed: 'package-cache')
		assureExistence;
		yourself
!

checkCacheDirectory
	default notNil and: [default directory exists ifFalse: [default _ nil]]
!

default
	self checkCacheDirectory.
	^ default ifNil: [default _ self new directory: self cacheDirectory]
!

description
	^ nil
!

initialize
	self checkCacheDirectory
! !

!MCCacheRepository methodsFor:'as yet unclassified'!

basicStoreVersion: aVersion
	(aVersion isCacheable and: [self allFileNames includes: aVersion fileName])
		ifFalse: [super basicStoreVersion: aVersion]
!

cacheForPackage: aPackage
	packageCaches ifNil: [packageCaches _ Dictionary new].
	^ packageCaches at: aPackage ifAbsentPut: [MCPackageCache new]
!

newFileNames 
	^ self allFileNames difference: self seenFileNames
!

packageForFileNamed: aString
	^ self packageCache at: aString ifAbsentPut: [self versionReaderForFileNamed: aString do: [:r | r package]]
!

rescan
	self newFileNames do:
		[:ea |
		self versionReaderForFileNamed: ea do:
			[:reader |
			(self cacheForPackage: reader package)
				recordVersionInfo: reader info
				forFileNamed: ea.
			self seenFileNames add: ea]]
		displayingProgress: 'Scanning cache...'
!

seenFileNames
	^ seenFiles ifNil: [seenFiles _ OrderedCollection new]
!

versionInfoForFileNamed: aString
	^ self infoCache at: aString ifAbsentPut: [self versionReaderForFileNamed: aString do: [:r | r info]]
! !

!MCCacheRepository class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCCacheRepository.st,v 1.1 2006-11-22 13:22:08 cg Exp $'
! !

MCCacheRepository initialize!