Rational Developer for System z

Crear un miembro en un conjunto de datos particionado

Este ejemplo muestra cómo crear un miembro de conjunto de datos nuevo bajo un conjunto de datos particionado. También demuestra cómo aportar un elemento de menú en el menú emergente para artefactos remotos en las vistas de navegador.

Escenario de ejemplo

Para utilizar este ejemplo, pulse con el botón derecho del ratón sobre un conjunto de datos particionado en la vista Explorador de sistemas remotos y seleccione la acción Acciones de ejemplo de API > Crear miembro.

Se crea un miembro con el nombre TEMP en el conjunto de datos seleccionado.

Recorrido por el código de ejemplo

Crear un miembro de conjunto de datos IPhysicalResource

El método de ejemplo createPhysicalMember empieza comprobando que el miembro a crear no exista ya mediante el método findMember. El método findMember devuelve nulo si no se encuentra el recurso.

 IPhysicalFile resource = (IPhysicalFile) 
		dataSet.findMember(MEMBER_NAME);
	if (resource != null) {
		System.err.println("Resource " + MEMBER_NAME + 
			" already exists");
		return;
	}

El miembro se crea de la forma siguiente. Se crea un objeto IPhysicalResource que hace referencia al miembro mediante el método getPhysicalResource de la clase ZOSPhysicalResourceFactory. (El objeto de recurso devuelto por el método getPhysicalResource no tiene que representar un recurso de host existente real.) Una vez tenga el IPhysicalResource, se puede crear el miembro real en el host invocando el método create.

 ZOSPhysicalResourceFactory factory = 
		ZOSPhysicalResourceFactory.eINSTANCE;
	resource = (IPhysicalFile) factory.getPhysicalResource(dataSet,
		ZOSDataSetMember.class, MEMBER_NAME);
	try {
		resource.create(
				new ByteArrayInputStream(MEMBER_CONTENT.getBytes()), 
					true, null);
	} catch (OperationFailedException e) {
		......
	}

El método create espera un InputStream con el contenido del archivo a crear.

Crear un miembro de conjunto de datos ILogicalResource

El proceso de crear un miembro de conjunto de datos en un subproyecto MVS es parecido. Tome el método createLogicalMember en la clase de ejemplo CreateMemberAction. Empieza obteniendo el objeto IPhysicalResource al que hace referencia el ILogicalResource seleccionado, mediante el método getPhysicalResource.

 IPhysicalContainer container = null;
	if (dataSet.getState().isOnline()) {
		container = (IPhysicalContainer) dataSet.
			getPhysicalResource();
	} else {
		System.err.println("DataSet " + dataSet.getName() + 
			" should not be offline.");
		return;
	}

El proceso de recursos fuera de línea mediante la API de acceso remoto no está soportado todavía.

El código pasa a crear un miembro de conjunto de datos IPhysicalResource como en Crear un miembro de conjunto de datos IPhysicalResource.

 IPhysicalFile resource = (IPhysicalFile) factory.getPhysicalResource(
			container, ZOSDataSetMember.class, MEMBER_NAME);
	try {
		resource.create(
				new ByteArrayInputStream(MEMBER_CONTENT.getBytes()),
				true, null);
	} catch (OperationFailedException e) {
		......
	}

El fragmento de código siguiente añade a continuación el recurso al subproyecto adecuado obtenido a través del método getSubProject. El fragmento de código consigue esto mediante la clase LogicalResourceFactory. Este método puede utilizarse para añadir un recurso físico a un proyecto mediante la acción de menú Añadir a subproyecto.

 ILogicalSubProject subProject = dataSet.getSubProject();
	if (project != null && resource != null) {
		LogicalResourceFactoryFactory.getSingleton().getLogicalResource( 	
			subProject, resource);
	}

Responder a eventos de cambio de selección

Este ejemplo también muestra como reaccionar a eventos de cambio de selección en Eclipse. La clase CreateMemberAction implementa la interfaz ISelectionListener. La implementación del método selectionChanged correspondiente reacciona a eventos que hacen referencia a un IStructuredSelection, originado normalmente por un cambio en la selección actual de un navegador de árbol. El código de ejemplo itera sobre los elementos contenidos en la selección actual mediante un iterador asociado. En este ejemplo, se elige el primer elemento seleccionado.

 selectedItem = null;
	if (selection instanceof IStructuredSelection) {
		IStructuredSelection currentSelection = 
			(IStructuredSelection) selection;
		Iterator iterator = currentSelection.iterator();
		while (iterator.hasNext()) {
			Object item = iterator.next();
			if (item instanceof LZOSPartitionedDataSet) {
				selectedItem = item;
				break;
			} else if (item instanceof ZOSResourceReference) {
				item = ((ZOSResourceReference) item).getReferent();
				if (item instanceof ZOSPartitionedDataSet) {
					selectedItem = item;
					break;
				}
			}
		}
	}

si se selecciona un objeto en un proyecto z/OS, se devuelve un objeto ILogicalResource (LZOSPartitionedDataSet en este caso) en el objeto de selección. Si se selecciona un objeto en el sistema de archivos MVS en la vista Explorador de sistemas remotos, se devuelve ZOSResourceReference. En este último caso puede recuperar el IPhysicalResource correspondiente mediante el método getReferent.


Términos de uso | Comentarios

Este Information Center está basado en tecnología Eclipse. (http://www.eclipse.org)