Cet exemple montre comment obtenir une liste de projets distants existant dans l'espace de travail. Il explique également comment faire défiler les enfants ajoutés aux projets distants.
Pour récupérer des informations sur les projets z/OS, sélectionnez l'action Exemples d'API > Informations sur le projet.

Pour chaque projet qui est défini, certaines informations de base s'affichent, ainsi que la liste hiérarchique des fichiers et membres qui ont été ajoutés. Pour chaque enfant sous le projet, les options de compilation COBOL applicables à chacun sont affichées. La sortie est envoyée dans la sortie standard associée au plan de travail. Vous pouvez la trouver dans la fenêtre DOS à partir de laquelle a été lancé le plan de travail ou dans la vue Console du plan de travail d'hébergement dans le cas du plan de travail d'exécution.

Le processus d'obtention de la liste de projets est similaire à celui de l'obtention de la liste de systèmes.
Le fragment de code suivant lance une itération dans la liste des projets et sous-projets définis dans l'espace de travail courant.
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);
}
}
Le code commence en utilisant la classe LogicalProjectRegistry, obtenue avec la méthode getSingleton de la classeLogicalProjectRegistryFactory, ce qui permet d'obtenir la liste de toutes les instances ILogicalProject définies dans le plan de travail. Il déclenche ensuite une itération dans la liste des projets connus, ce qui conduit à l'obtention des enfants de chaque projet via la méthode getChildren. Un objet ILogicalProject peut contenir uniquement les objets ILogicalSubProject comme enfants. Les objets ILogicalSubProject subissent à leur tour une itération et un traitement.
La méthode getName permet d'obtenir le nom respectivement du projet et du sous-projet.
Il est facile de déterminer si le système associé à un sous-projet MVS est connecté. Dès obtention d'une référence à un sous-projet ILogicalSubProject, récupérez l'objet IOSImage représentant le système voulu via la méthode getSystems. Chaque sous-projet MVS correspond à un et un seul système de fichiers MVS. Dès que vous connaissez l'objet IOSImage, vous pouvez déterminer si le système est connecté via la méthode (isConnected). Le fragment de code suivant provient de l'exemple de méthode printSubproject.
if (subProject.getSystems()[0].isConnected()) {
printMembers(subProject, indent);
} else {
......
}
Il est possible que le mécanisme permettant d'extraire et de définir des projets devienne obsolète ou change à l'avenir.
La méthode getPersistentProperty peut servir à extraire les propriétés d'un projet. Le fragment de code suivant de l'exemple de méthode printSubproject extrait les options de compilation COBOL pour le sous-projet donné.
String compileOptions = subProject.getPersistentProperty( IPhysicalResourceCoreConstants.COBOL_COMPILE_OPTIONS);
De même, l'exemple de méthode printMember l'utilise pour récupérer la COPYLIB associée à la ressource spécifiée.
String copyLibraries = resource.getPersistentProperty(IPhysicalResourceCoreConstants.COBOL_COMPILE_COPYLIBRARIES);
Pour obtenir l'artefact ajouté à un sous-projet donné, ou n'importe quel objet ILogicalContainer, ayez recours à la méthode members. Le fragment de code suivant provient de la méthode printMembers. Une classe ILogicalSubProject hérite de la classe ILogicalContainer.
IAdaptable [] members = container.members();
for (int j = 0; j < members.length; j++) {
printMember((ILogicalResource) members[j], indent + INDENT_PREFIX);
}
La méthode printMember imprime ensuite les informations appropriées relatives à la ressource courante. Si cette dernière est un conteneur ILogicalContainer, la méthode printMembers est appelée de manière co-récursive pour explorer la sous-arborescence.
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);
}