MCOrganizationDefinition.st
changeset 53 57ddaf43984e
child 196 462614958ae1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCOrganizationDefinition.st	Wed Nov 22 14:09:41 2006 +0100
@@ -0,0 +1,91 @@
+"{ Package: 'stx:goodies/monticello' }"
+
+MCDefinition subclass:#MCOrganizationDefinition
+	instanceVariableNames:'categories'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Monticello-Modeling'
+!
+
+
+!MCOrganizationDefinition class methodsFor:'as yet unclassified'!
+
+categories: anArray
+	^ self instanceLike: (self new categories: anArray)
+! !
+
+!MCOrganizationDefinition methodsFor:'as yet unclassified'!
+
+= aDefinition
+	^ (super = aDefinition)
+		and: [categories = aDefinition categories]
+!
+
+accept: aVisitor
+	^ aVisitor visitOrganizationDefinition: self
+!
+
+categories
+	^ categories
+!
+
+categories: anArray
+	categories _ anArray
+!
+
+commonPrefix
+	| stream |
+	categories isEmpty ifTrue: [^ ''].
+	
+	stream _ String new writeStream.
+	categories first withIndexDo:
+		[:c :i|
+		categories do:
+			[:ea |
+			(ea at: i ifAbsent: []) = c ifFalse: [^ stream contents]].
+		stream nextPut: c].
+	^ stream contents
+!
+
+description
+	^ Array with: #organization with: self commonPrefix
+!
+
+isOrganizationDefinition
+	^ true
+!
+
+postloadOver: oldDefinition
+	SystemOrganization categories:
+		(self
+			reorderCategories: SystemOrganization categories
+			original: (oldDefinition ifNil: [#()] ifNotNil: [oldDefinition categories]))
+!
+
+reorderCategories: allCategories original: oldCategories
+	| first |
+	first _ allCategories detect: [:ea | categories includes: ea] ifNone: [^ allCategories].
+	^ 	((allCategories copyUpTo: first) copyWithoutAll: oldCategories, categories),
+		categories,
+		((allCategories copyAfter: first) copyWithoutAll: oldCategories, categories)
+!
+
+sortKey
+	^ '<organization>'
+!
+
+source
+	^ String streamContents:
+		[:s |
+		categories do: [:ea | s nextPutAll: ea] separatedBy: [s cr]]
+!
+
+summary
+	^ categories asArray printString
+! !
+
+!MCOrganizationDefinition class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCOrganizationDefinition.st,v 1.1 2006-11-22 13:09:41 cg Exp $'
+! !