initial checkin
authorClaus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:05:07 +0100
changeset 33 210977d2e998
parent 32 1bd0dbe2a6c7
child 34 5391d707aa3d
initial checkin
MCMczWriter.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCMczWriter.st	Wed Nov 22 14:05:07 2006 +0100
@@ -0,0 +1,136 @@
+"{ Package: 'stx:goodies/monticello' }"
+
+MCWriter subclass:#MCMczWriter
+	instanceVariableNames:'zip infoWriter'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Monticello-Storing'
+!
+
+
+!MCMczWriter class methodsFor:'as yet unclassified'!
+
+fileOut: aVersion on: aStream
+	| inst |
+	inst _ self on: aStream.
+	inst writeVersion: aVersion.
+	inst flush.
+	
+!
+
+new
+	^ self basicNew initialize
+!
+
+readerClass
+	^ MCMczReader
+! !
+
+!MCMczWriter methodsFor:'accessing'!
+
+format
+	^ '1'
+!
+
+snapshotWriterClass
+	^ MCStWriter
+!
+
+zip
+	^ zip
+! !
+
+!MCMczWriter methodsFor:'initializing'!
+
+initialize
+	zip _ ZipArchive new.
+! !
+
+!MCMczWriter methodsFor:'serializing'!
+
+serializeDefinitions: aCollection
+	| writer s |
+	s _ RWBinaryOrTextStream on: String new.
+	writer _ self snapshotWriterClass on: s.
+	writer writeDefinitions: aCollection.
+	^ s contents
+!
+
+serializeInBinary: aSnapshot
+	| writer s |
+	s _ RWBinaryOrTextStream on: String new.
+	writer _ DataStream on: s.
+	writer nextPut: aSnapshot.
+	^ s contents
+!
+
+serializePackage: aPackage
+	^ '(name ''', aPackage name, ''')'
+!
+
+serializeVersionInfo: aVersionInfo
+	infoWriter ifNil: [infoWriter _ MCVersionInfoWriter new].
+	^ String streamContents:
+		[:s |
+		infoWriter stream: s.
+		infoWriter writeVersionInfo: aVersionInfo]
+! !
+
+!MCMczWriter methodsFor:'visiting'!
+
+writeDefinitions: aVersion
+	self writeSnapshot: aVersion snapshot
+!
+
+writeFormat
+"	self addString: self format at: 'format'."
+!
+
+writePackage: aPackage
+	self addString: (self serializePackage: aPackage) at: 'package'
+!
+
+writeSnapshot: aSnapshot
+	self addString: (self serializeDefinitions: aSnapshot definitions) at: 'snapshot/source.', self snapshotWriterClass extension.
+	self addString: (self serializeInBinary: aSnapshot) at: 'snapshot.bin'
+!
+
+writeVersion: aVersion
+	self writeFormat.
+	self writePackage: aVersion package.
+	self writeVersionInfo: aVersion info.
+	self writeDefinitions: aVersion.
+	aVersion dependencies do: [:ea | self writeVersionDependency: ea]
+!
+
+writeVersionDependency: aVersionDependency
+	| string |
+	string _ (self serializeVersionInfo: aVersionDependency versionInfo).
+	self addString: string at: 'dependencies/', aVersionDependency package name
+!
+
+writeVersionInfo: aVersionInfo
+	| string |
+	string _ self serializeVersionInfo: aVersionInfo.
+	self addString: string at: 'version'.
+! !
+
+!MCMczWriter methodsFor:'writing'!
+
+addString: string at: path
+	| member |
+	member _ zip addString: string as: path.
+	member desiredCompressionMethod: ZipArchive compressionDeflated 
+	
+!
+
+flush
+	zip writeTo: stream.
+	stream close
+! !
+
+!MCMczWriter class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCMczWriter.st,v 1.1 2006-11-22 13:05:07 cg Exp $'
+! !