packages/StxPackageFileHandler.st
changeset 1231 2f3a15bfac92
child 1445 b8cc2792ab97
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/StxPackageFileHandler.st	Wed Apr 09 13:38:42 2003 +0200
@@ -0,0 +1,180 @@
+"{ Package: 'stx:libbasic3' }"
+
+"{ NameSpace: Packages }"
+
+PackageHandler subclass:#StxPackageFileHandler
+	instanceVariableNames:'package filename'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Package-Handlers'
+!
+
+
+!StxPackageFileHandler class methodsFor:'instance creation'!
+
+forFilename:aFilename
+
+    (self isFileBase:aFilename) ifTrue:[
+        ^ StxBasePackageHandler forFilename:aFilename
+    ].
+    (self isFileVersion1:aFilename) ifTrue:[
+        ^ Version1 forFilename:aFilename
+    ].
+
+    self error:'File type unknown'
+!
+
+forPackage:aPackage 
+    ^ self basicNew package:aPackage
+!
+
+openStxPackageFormat:aFormat
+    ^ ((StxPackageFileReader) version:aFormat) new
+!
+
+version:aVersionNumber
+    aVersionNumber == 0 ifTrue:[
+        ^ StxBasePackageHandler.
+    ].
+
+    aVersionNumber == 1 ifTrue:[
+        ^ Version1.
+    ].
+    self error:'Version unknown'
+! !
+
+!StxPackageFileHandler class methodsFor:'accessing-globals'!
+
+packageManager
+    ^ PackageManager smalltalkPackageManager
+! !
+
+!StxPackageFileHandler class methodsFor:'queries'!
+
+isFileBase:aFilename
+    ^ false
+!
+
+isFileVersion1:aFilename
+    ^ true
+! !
+
+!StxPackageFileHandler methodsFor:'accessing'!
+
+filename
+    "return the value of the instance variable 'filename' (automatically generated)"
+
+    ^ filename
+!
+
+filename:something
+    "set the value of the instance variable 'filename' (automatically generated)"
+
+    filename := something.
+!
+
+package
+    "return the value of the instance variable 'package' (automatically generated)"
+
+    ^ package
+!
+
+package:something
+    "set the value of the instance variable 'package' (automatically generated)"
+
+    package := something.
+!
+
+version
+    ^ 1
+! !
+
+!StxPackageFileHandler methodsFor:'api'!
+
+fileInFrom:arg1 notifying:arg2 passChunk:arg3 single:arg4 silent:arg5 
+!
+
+installPackageIn:aPackageManager 
+    ^ (self newPackageReader) installPackageIn:aPackageManager 
+!
+
+loadPackageIn:arg 
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self subclassResponsibility
+!
+
+savePackageAs:arg 
+
+    ^ (self newPackageWriter) savePackageAs:arg 
+
+!
+
+savePackageOn:arg 
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self subclassResponsibility
+!
+
+uninstallPackageFrom:arg 
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self subclassResponsibility
+!
+
+unloadPackageIn:arg 
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self subclassResponsibility
+! !
+
+!StxPackageFileHandler methodsFor:'checks'!
+
+canReadFilename:arg 
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self subclassResponsibility
+!
+
+checkOkToInstall:arg 
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self subclassResponsibility
+!
+
+checkOkToUninstall:arg 
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self subclassResponsibility
+! !
+
+!StxPackageFileHandler methodsFor:'factory'!
+
+newPackageReader
+    ^ (self packageReaderClass version:self version) new 
+            filename:filename;
+            package:package.
+!
+
+newPackageWriter
+    ^ (self packageWriterClass version:self version) new 
+            package:package.
+
+
+
+
+!
+
+packageReaderClass
+    ^ StxPackageFileReader
+!
+
+packageWriterClass
+    ^ StxPackageFileWriter
+! !
+
+!StxPackageFileHandler class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libbasic3/packages/StxPackageFileHandler.st,v 1.1 2003-04-09 11:35:13 james Exp $'
+! !