MCOrganizationDefinition.st
author Claus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:09:41 +0100
changeset 53 57ddaf43984e
child 196 462614958ae1
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCDefinition subclass:#MCOrganizationDefinition
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'categories'
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Modeling'
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCOrganizationDefinition class methodsFor:'as yet unclassified'!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
categories: anArray
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self instanceLike: (self new categories: anArray)
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCOrganizationDefinition methodsFor:'as yet unclassified'!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
= aDefinition
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ (super = aDefinition)
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
		and: [categories = aDefinition categories]
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
accept: aVisitor
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
	^ aVisitor visitOrganizationDefinition: self
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
categories
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	^ categories
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
categories: anArray
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	categories _ anArray
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
commonPrefix
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	| stream |
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	categories isEmpty ifTrue: [^ ''].
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	stream _ String new writeStream.
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	categories first withIndexDo:
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
		[:c :i|
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
		categories do:
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
			[:ea |
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
			(ea at: i ifAbsent: []) = c ifFalse: [^ stream contents]].
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
		stream nextPut: c].
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	^ stream contents
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
description
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	^ Array with: #organization with: self commonPrefix
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
isOrganizationDefinition
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	^ true
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
postloadOver: oldDefinition
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	SystemOrganization categories:
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
		(self
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
			reorderCategories: SystemOrganization categories
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
			original: (oldDefinition ifNil: [#()] ifNotNil: [oldDefinition categories]))
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
reorderCategories: allCategories original: oldCategories
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	| first |
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	first _ allCategories detect: [:ea | categories includes: ea] ifNone: [^ allCategories].
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
	^ 	((allCategories copyUpTo: first) copyWithoutAll: oldCategories, categories),
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
		categories,
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
		((allCategories copyAfter: first) copyWithoutAll: oldCategories, categories)
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
sortKey
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
	^ '<organization>'
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
source
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
	^ String streamContents:
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
		[:s |
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
		categories do: [:ea | s nextPutAll: ea] separatedBy: [s cr]]
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
summary
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	^ categories asArray printString
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
! !
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!MCOrganizationDefinition class methodsFor:'documentation'!
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
version
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCOrganizationDefinition.st,v 1.1 2006-11-22 13:09:41 cg Exp $'
57ddaf43984e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
! !