Cet exemple montre comment créer à l'aide d'un programme un groupe de propriétés comportant des valeurs pour des propriétés prédéfinies et des propriétés enregistrées dans Rational Developer for System z.
Pour créer un groupe de propriétés, sélectionnez l'action Actions de l'échantillon d'API -> Créer un groupe de propriétés dans le menu en incrustation d'un noeud de fichiers MVS dans la vue Systèmes distants.
Des instructions s'affichent lors de la création du groupe de propriétés et de la définition des valeurs de propriété. En outre, des messages d'erreur apparaissent si des conditions d'erreur sont détectées. Ils figurent 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.
L'illustration suivante affiche les résultats après succès de la création du groupe de propriétés et de la définition des valeurs :
if (selectedItem == null) {
System.err.println("Create Property Group Action - Selected resource must be an MVS File subsystem.");
return;
}
if (selectedItem instanceof ZOSSystemReference) {
System.out.println("");
System.out.println("-----------------------");
System.out.println("Beginning Create Property Group Action...");
ZOSSystemReference reference = (ZOSSystemReference) selectedItem;
ZOSSystemImage system = (ZOSSystemImage) reference.getReferent();
// Get the property group container for this system.
ZOSPropertyGroupManager manager = ZOSPropertyGroupManager.getZOSPropertyGroupManager();
IPropertyGroupContainer container = manager.getPropertyGroupContainer(system.getName());
if (container == null) {
System.err.println("Create Property Group Action - No container for system: " + system.getName());
return;
}
Il y a d'abord vérification que l'élément selectedItem est une instance de la classe ZOSSystemReference. Dans l'affirmative, l'image ZOSSystemImage est récupérée à partir de ZOSSystemReference à l'aide de la méthode getReferent.
Pour chaque connexion système, il existe un conteneur de groupes de propriétés. Le conteneur de groupes de propriétés d'un nom de système donné peut être récupéré à l'aide de la méthode getPropertyGroupContainer de la classe ZOSPropertyGroupManager.
IPropertyGroup group = null;
try {
group = container.createPropertyGroup(PROPERTY_GROUP_NAME, "");
System.out.println(PROPERTY_GROUP_NAME + " created.");
} catch (DuplicatePropertyGroupException e1) {
System.err.println("Create Property Group Action - Property group already exists.");
return;
}
Le groupe de propriétés est créé à l'aide de la méthode createPropertyGroup. Si le groupe de propriétés existe déjà, une exception DuplicatePropertyGroupException est émise et un message d'erreur s'imprime.
// Create an instance of the user-defined category, set properties,
// and add the instance to the property group. These properties will not appear
// in the UI, but they are available through the API.
try {
ICategory category = manager.getCategory("SAMPLE_CATEGORY");
if (category == null) {
System.err.println("Create Property Group Action - Could not find category SAMPLE_CATEGORY.");
return;
}
ICategoryInstance instance = category.makeInstance();
instance.setValue("PROPERTY_1", "value1");
System.out.println("PROPERTY_1 set to value1");
instance.setValue("PROPERTY_2", "value2");
System.out.println("PROPERTY_2 set to value2");
group.addCategoryInstance(instance);
} catch (UnregisteredPropertyException e) {
System.err.println("Create Property Group Action - Unregistered property: " + e.getName());
return;
} catch (DuplicateInstanceException e) {
System.err.println("Create Property Group Action - Duplicate instance of category: " + e.getCategoryInstance().getCategory().getName());
return;
}
<extension point="com.ibm.ftt.properties.api.category">
<category name="SAMPLE_CATEGORY">
<property name="PROPERTY_1" />
<property name="PROPERTY_2" />
</category>
</extension>
Ces valeurs de propriété n'apparaissent pas dans l'interface utilisateur de Rational Developer for System z car celle-ci n'est pas extensible, mais elles sont accessibles via l'API.
// Create an instance of a pre-defined category, set properties,
// and add the instance to the property group. The values are not
// realistic values, this is just an example of how to work with
// pre-defined properties.
try {
ICategory category = manager.getCategory(IPropertyGroupConstants.JCL_OPTIONS);
if (category == null) {
System.err.println("Create Property Group Action - Could not find category " + IPropertyGroupConstants.COBOL_SETTINGS);
return;
}
ICategoryInstance instance = category.makeInstance();
instance.setValue(IPropertyGroupConstants.JOBCARD, "//sample jobcard");
System.out.println(IPropertyGroupConstants.JOBCARD + " set to //sample jobcard");
instance.setValue(IPropertyGroupConstants.GENERATED_JCL_DATASET, "sample.test.jcl");
System.out.println(IPropertyGroupConstants.GENERATED_JCL_DATASET + " set to sample.test.jcl");
group.addCategoryInstance(instance);
} catch (UnregisteredPropertyException e) {
System.err.println("Create Property Group Action - Unregistered property: " + e.getName());
return;
} catch (DuplicateInstanceException e) {
System.err.println("Create Property Group Action - Duplicate instance of category: " + e.getCategoryInstance().getCategory().getName());
}
(IPropertyGroupConstants) contient le nom des catégories prédéfinies et des propriétés.