--- a/ProjectDefinition.st Tue Sep 11 13:19:28 2007 +0200
+++ b/ProjectDefinition.st Tue Sep 11 13:55:59 2007 +0200
@@ -93,6 +93,55 @@
!ProjectDefinition class methodsFor:'accessing'!
+allPreRequisites
+ |setOfAllPreRequisites setOfExcludedPreRequisites setOfExcludedSubProjects allPreRequisites toAdd|
+
+ setOfExcludedPreRequisites := self excludedFromPreRequisites asSet.
+ setOfExcludedSubProjects := self excludedFromSubProjects asSet.
+
+ setOfAllPreRequisites := Set new.
+ allPreRequisites := OrderedCollection new.
+ toAdd := OrderedCollection new.
+ toAdd addAll:(self preRequisites).
+ toAdd addAll:(self subProjects ).
+
+ [toAdd notEmpty] whileTrue:[
+ |aPreRequisiteProjectID def|
+
+ aPreRequisiteProjectID := toAdd removeFirst.
+ (setOfAllPreRequisites includes:aPreRequisiteProjectID) ifFalse:[
+ (setOfExcludedPreRequisites includes:aPreRequisiteProjectID) ifFalse:[
+ (setOfExcludedSubProjects includes:aPreRequisiteProjectID) ifFalse:[
+ allPreRequisites add:aPreRequisiteProjectID.
+ setOfAllPreRequisites add:aPreRequisiteProjectID.
+
+ def := ProjectDefinition definitionClassForPackage:aPreRequisiteProjectID.
+ def isNil ifTrue:[
+ Transcript showCR:'ProjectDefinition ',aPreRequisiteProjectID,' is missing - cannot find its preRequisites.'.
+ ] ifFalse:[
+ def preRequisites
+ select:[:eachSubPreRequisite | (setOfAllPreRequisites includes:eachSubPreRequisite) not]
+ thenDo:[:eachSubPreRequisite |
+ Transcript showCR:(aPreRequisiteProjectID,' requires ',eachSubPreRequisite).
+ toAdd add:eachSubPreRequisite ].
+ def subProjects
+ select:[:eachSubSubRequisite | (setOfAllPreRequisites includes:eachSubSubRequisite) not]
+ thenDo:[:eachSubSubRequisite |
+ Transcript showCR:(aPreRequisiteProjectID,' hasSub ',eachSubSubRequisite).
+ toAdd add:eachSubSubRequisite ].
+ ].
+ ]
+ ]
+ ]
+ ].
+ ^ allPreRequisites.
+
+ "
+ exept_expeccoNET_application allPreRequisites
+ alspa_batch_application allPreRequisites
+ "
+!
+
initialClassNameForDefinitionOf:aPackageId
|s|
@@ -3810,7 +3859,7 @@
!ProjectDefinition class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.163 2007-09-11 10:00:09 fm Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.164 2007-09-11 11:55:59 fm Exp $'
! !
ProjectDefinition initialize!