'*************************************************************************** ' Function: Get Package Dependencies for Package-[non]Package ' Author: Shaquille Asghari, Rational Technical Support ' Date: June 20, 2002 ' ' PLEASE READ THE DISCLAIMER AT THE END OF THIS SCRIPT FILE ' PRIOR TO RUNNING THIS SCRIPT ON YOUR MACHINE ' ' Purpose: The REI fails to return successfully dependency information ' where a Package and a non-package Rose item has a dependency relation. ' Warning: The algorithm used finds the dependencies by finding ' their appearances on diagrams. Hence, it will not find ' a dependency that exists in the model but does not appear ' in any diagram. ' NOTE: UseCase diagrams are of type Class Diagrams ' ' Inputs: ' pkg: Package (Category) ' Output: Collection of Rose Items where pkg has dependency relations. '***************************************************************************** Function GetAllClassDiagrams As ClassDiagramCollection Dim x As New ClassDiagramCollection Dim cats As categoryCollection 'From categories Set cats = roseapp.currentmodel.getallcategories For i = 1 To cats.count x.addCollection cats.getat(i).classDiagrams Next i 'From Use Cases Dim uc As UseCaseCollection Set uc = Roseapp.currentmodel.getallusecases For i = 1 To uc.count x.addCollection uc.getat(i).classDiagrams Next i Set GetAllClassDiagrams = x End Function Sub AddPkgDiagramDependencies(retItems As ItemCollection, pkg As Category, cd As ClassDiagram) Dim dep As CategoryDependency Dim dep2 As DependencyRelation Dim itemnos As ItemCollection Dim itemno As Roseitem Dim i As Integer Set itemnos = cd.items For i = 1 To itemnos.count Set itemno = itemnos.getat(i) If itemno.canTypecast(dep) Then Set dep = itemno.Typecast(dep) If dep.GetClient().name=pkg.Name Then If Not retItems.exists(dep.GetSupplier()) Then retItems.add dep.GetSupplier() End If Else If dep.GetSupplier().name=pkg.Name Then If Not retItems.exists(dep.GetClient()) Then retItems.add dep.GetClient() End If End If End If Else If itemno.canTypecast(dep2) Then Set dep2 = itemno.Typecast(dep2) If dep2.GetClient().name=pkg.Name Then If Not retItems.exists(dep2.GetSupplier()) Then retItems.add dep2.GetSupplier() End If Else If dep2.GetSupplier().name=pkg.Name Then If Not retItems.exists(dep2.GetClient()) Then retItems.add dep2.GetClient() End If End If End If End If End If Next i End Sub Sub Main Dim pkg As Category Dim cdItems As ItemCollection Dim allClassDiags As ClassDiagramCollection Dim retItems As New ItemCollection Dim i As Integer Set pkg = Roseapp.currentmodel.GetSelectedCategories.GetAt(1) If pkg Is Nothing Then MsgBox "Please Select a Package in a Class/UseCase Diagram first." End End If viewport.open : viewport.clear Set allClassDiags = GetAllClassDiagrams For i = 1 To allClassDiags.count Set cdItems = allClassDiags.getat(i).Items If cdItems.Exists(pkg) Then AddPkgDiagramDependencies retItems, pkg, allClassDiags.getat(i) Next i Print ebCrLF + "Returned Collection's Content of ALL Rose Items '" +pkg.Name+ "' has Dependencies with:" For i = 1 To retItems.count Print Chr(9); "> " + retItems.GetAt(i).Name Next i End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''DISCLAIMER ''---------- ''THE MATERIAL AND/OR SOFTWARE IS PROVIDED ‘AS IS’. RATIONAL AND ITS THIRD PARTY LICENSORS DISCLAIM ''ALL WARRANTIES EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, THE WARRANTY OF MERCHANTABILITY, ''NON-INFRINGEMENT, TITLE OR FITNESS FOR A PARTICULAR PURPOSE OR ARISING OUT OF THE COURSE OF DEALING, ''USAGE OR TRADE PRACTICE, CONTENT OF THE MATERIAL OR SOFTWARE. RATIONAL MAKES NO WARRANTIES OR ''REPRESENTATIONS REGARDING THE ACCURACY OR COMPLETENESS OF THE MATERIAL AND/OR SOFTWARE PROVIDED ''OR THAT IT WILL MEET LICENSEE’S REQUIREMENTS OR THAT THE MATERIAL AND/OR SOFTWARE WILL BE ERROR ''FREE. IN NO EVENT SHALL RATIONAL OR ITS LICENSORS BE LIABLE TO LICENSEE OR A THIRD PARTY FOR ANY ''INDIRECT, DIRECT, NEGLIGENCE, SPECIAL, OR CONSEQUENTIAL DAMAGES INCLUDING LOST PROFITS, LOST DATA ''AND THE LIKE ARISING OUT OF OR IN CONNECTION WITH THIS RECEIPT OF MATERIAL AND/OR SOFTWARE EVEN IF ''RATIONAL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''