Este ejemplo muestra cómo crear programáticamente un grupo de propiedades que tenga valores para propiedades predefinidas y propiedades registrada con Rational Developer for System z.
Para crear un grupo de propiedades, seleccione la acción Acciones de ejemplo de API -> Crear grupo de propiedades del menú emergente de un nodo Archivos MVS en la vista Sistemas remotos.
Las sentencias se visualizan cuando se crea el grupo de propiedades y cuando se establecen los valores de propiedades. Además, si se detectan condiciones de error, también se visualizan mensajes de error. Se visualizarán en la salida estándar asociada al entorno de trabajo. Esto puede encontrarse en la ventana DOS desde la que se inició el entorno de trabajo o en la vista Consola del entorno de trabajo hospedante en el caso del entorno de trabajo de tiempo de ejecución.
La ilustración siguiente muestra los resultados de la creación satisfactoria del grupo de propiedades y del establecimiento de los valores:
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();
// Obtener el contenedor de grupo de propiedades para este sistema.
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;
}
Empieza verificando que selectedItem es una instancia de la clase ZOSSystemReference. Si es así, recupera ZOSSystemImage de ZOSSystemReference mediante el método getReferent.
Para cada conexión del sistema, hay un contenedor de grupo de propiedades. El contenedor de grupo de propiedades para un nombre del sistema dado puede recuperarse mediante el método getPropertyGroupContainer de la clase 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;
}
El grupo de propiedades se ha creado mediante el método createPropertyGroup. Si el grupo de propiedades ya existe, se lanza un DuplicatePropertyGroupException y se imprime un mensaje de error.
// Crear una instancia de la categoría definida por el usuario, establecer
// propiedades y añadir la instancia l grupo de propiedades. Estas propiedades no
// aparecerán en Interfaz de usuario, pero estarán disponibles a través de la 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 establecida en value1");
instance.setValue("PROPERTY_2", "value2");
System.out.println("PROPERTY_2 establecida en 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>
Estos valores de propiedades no se visualizan en la interfaz de usuario de Rational Developer for System z porque la interfaz de usuario no es ampliable, pero están disponibles a través de la API.
// Crear una instancia de una categoría predefinida, establecer las
// propiedades y añadir la instancia al grupo de propiedades. Los valores
// no son valores realistas, esto sólo es un ejemplo de cómo trabajar con
// propiedades predefinidas.
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) contiene los nombres de las categorías y las propiedades predefinidas.