packages/Packages__StxPackageFileHandler.st
branchjv
changeset 3011 1997ff6e7e55
child 4384 e28fcaaf93c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/Packages__StxPackageFileHandler.st	Sun Jan 29 12:51:41 2012 +0000
@@ -0,0 +1,207 @@
+"
+ COPYRIGHT (c) 2003 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+
+"{ Package: 'stx:libbasic3' }"
+
+"{ NameSpace: Packages }"
+
+PackageHandler subclass:#StxPackageFileHandler
+	instanceVariableNames:'package filename'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Package-Handlers'
+!
+
+!StxPackageFileHandler class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2003 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+! !
+
+!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.2 2006/01/10 09:32:05 cg Exp $'
+! !
\ No newline at end of file