Dieses Beispiel veranschaulicht, wie eine Liste der im Arbeitsbereich vorhandenen fernen Projekte abgerufen wird. Außerdem veranschaulicht es, wie die untergeordneten Elemente durchlaufen werden, die den fernen Projekten hinzugefügt wurden.
Wenn Sie Informationen zu z/OS-Projekten abrufen möchten, wählen Sie die Aktion API-Beispiele > Projektinformationen aus.
Für jedes definierte Projekt werden einige Basisinformationen über Projekte sowie eine hierarchische Liste der Dateien und Member angezeigt, die hinzugefügt wurden. Für jedes untergeordnete Element des Projekts werden die festgelegten gültigen COBOL-Compileroptionen angezeigt. Die Ausgabe wird an die der Workbench zugeordnete Standardausgabe gesendet. Diese können Sie in dem DOS-Fenster, von dem aus die Workbench gestartet wurde, oder bei Verwendung der Laufzeitworkbench in der Ansicht 'Konsole' der Host-Workbench sehen.

Der Prozess zum Abrufen der Projektliste ähnelt dem Abrufen der Systemliste.
Im folgenden Codefragment werden die Listen der Projekte und Unterprojekte durchlaufen, die im aktuellen Arbeitsbereich definiert sind.
Object [] projectReferences =
LogicalProjectRegistryFactory.getSingleton().getProjects();
for (int i = 0; i < projectReferences.length; i++) {
ILogicalProject project =
(ILogicalProject) projectReferences[i];
System.out.println("----- Project[" + i + "]: " +
project.getName());
List subProjects = project.getChildren();
for (int j = 0; j < subProjects.size(); j++) {
ILogicalSubProject subProject =
(ILogicalSubProject)subProjects.get(j);
System.out.println(INITIAL_INDENT + "Subproject[" + j +
"]: " + subProject.getName());
printSubproject(subProject, INITIAL_INDENT +
INDENT_PREFIX);
}
}
Zu Beginn des Codes wird die mit der Methode getSingleton der Klasse LogicalProjectRegistryFactory abgerufene Klasse LogicalProjectRegistry verwendet, um die Liste aller in der Workbench definierten Instanzen von ILogicalProject abzurufen. Anschließend wird die Liste der bekannten Projekte durchlaufen und die untergeordneten Elemente jedes Projekts werden mithilfe der Methode getChildren abgerufen. Ein ILogicalProject-Objekt kann nur ILogicalSubProject-Objekte als untergeordnete Elemente enthalten. Die ILogicalSubProject-Objekte werden der Reihe nach durchlaufen und verarbeitet.
Mit der Methode getName der Objekte können Sie den Namen des Projekts bzw. des Unterprojekts abrufen.
Es kann leicht ermittelt werden, ob das einem MVS-Unterprojekt zugeordnete System verbunden ist. Sobald Sie über einen Verweis auf ein ILogicalSubProject-Objekt verfügen, können Sie mithilfe der Methode getSystems das Objekt IOSImage abrufen, das das zugehörige System darstellt. Jedes MVS-Unterprojekt entspricht genau einem MVS-Dateisystem. Sobald Sie über das IOSImage-Objekt verfügen, können Sie durch den Aufruf der Methode (isConnected) ermitteln, ob das System verbunden ist. Das folgende Codefragment stammt aus der Beispielmethode printSubproject.
if (subProject.getSystems()[0].isConnected()) {
printMembers(subProject, indent);
} else {
......
}
Der Mechanismus zum Abrufen und Festlegen von Projekten wird zukünftig möglicherweise nicht weiter unterstützt und geändert.
Die Methode getPersistentProperty kann verwendet werden, um Projekteigenschaften abzurufen. In dem folgenden Codefragment aus der Beispielmethode printSubproject werden die COBOL-Compileroptionen für ein angegebenes Unterprojekt abgerufen.
String compileOptions = subProject.getPersistentProperty( IPhysicalResourceCoreConstants.COBOL_COMPILE_OPTIONS);
Die Beispielmethode printMember verwendet sie auf ähnliche Weise, um die der angegebenen Ressource zugeordneten COPYLIB-Informationen abzurufen.
String copyLibraries = resource.getPersistentProperty(IPhysicalResourceCoreConstants.COBOL_COMPILE_COPYLIBRARIES);
Wenn Sie die einem angegebenen Unterprojekt oder beliebigen ILogicalContainer-Objekten hinzugefügten Artefakte abrufen möchten, können Sie die Methode members verwenden. Das folgende Codefragment stammt aus der Methode printMembers. Eine ILogicalSubProject-Klasse erbt von der Klasse ILogicalContainer.
IAdaptable [] members = container.members();
for (int j = 0; j < members.length; j++) {
printMember((ILogicalResource) members[j], indent + INDENT_PREFIX);
}
Die Methode printMember druckt dann die entsprechenden Informationen zu der aktuellen Ressource aus. Wenn es sich bei der aktuellen Ressource um einen ILogicalContainer handelt, ruft sie zusätzlich die Methode printMembers rekursiv auf, um die untergeordnete Baumstruktur zu durchlaufen.
if (resource instanceof ILogicalContainer) {
ILogicalContainer memberContainer = (ILogicalContainer) resource;
......
printMembers(memberContainer, indent);
} else {
System.out.println(indent + "member[" + index + "] " + resource.getName()
+ " having COBOL copy libraries: " + copyLibraries);
}