Rational Developer for System z

Création d'un membre dans un fichier partitionné

Cet exemple montre comment créer un membre dans un fichier partitionné. Il explique également comment ajouter une option au menu contextuel pour les artefacts distants dans les vues du navigateur.

Exemple de scénario

Pour suivre ce scénario, cliquez avec le bouton droit de la souris sur un fichier partitionné dans la vue de l'Explorateur de systèmes distants, puis sélectionnez l'action Actions de l'échantillon d'API > Créer un membre.

Un membre du nom TEMP est créé dans le fichier indiqué.

Exemple de structure de code

Création d'un membre d'un fichier IPhysicalResource

La méthode createPhysicalMember commence par vérifier que le membre à créer n'existe pas déjà, à l'aide de la méthode findMember. La méthode findMember renvoie la valeur null si la ressource est introuvable.

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

Le membre est ensuite créé comme indiqué ci-après. Un objet IPhysicalResource faisant référence au membre est créé à l'aide de la méthode getPhysicalResource de la classe ZOSPhysicalResourceFactory. (L'objet de ressource renvoyé par la méthode getPhysicalResource ne doit pas nécessairement représenter une ressource de l'hôte existante.) Une fois la ressource IPhysicalResource obtenue, le véritable membre peut être créé par l'hôte en utilisant la méthode 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) {
		......
	}

La méthode create attend un flux en entrée InputStream avec le contenu du fichier à créer.

Création d'un membre d'un fichier ILogicalResource

Le processus de création d'un membre d'un fichier dans un sous-projet MVS est similaire. Prenez la méthode createLogicalMember de l'exemple de classe CreateMemberAction. Elle commence par obtenir l'objet IPhysicalResource auquel fait référence la ressource ILogicalResource sélectionnée, à l'aide de la méthode getPhysicalResource.

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

Le traitement des ressources hors ligne avec l'API Remote Access n'est pas encore pris en charge.

Le code permet ensuite de créer un membre de fichier IPhysicalResource comme à la section Création d'un membre d'un fichier IPhysicalResource.

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

Le fragment de code suivant ajoute ensuite la ressource dans le sous-projet adéquat, obtenu via la méthode getSubProject. Pour ce faire, la classe LogicalResourceFactory est utilisée. Cette méthode permet d'ajouter une ressource physique quelconque à un projet, à l'aide de l'action de menu Ajouter au sous-projet.

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

Réponse à des événements de changement de sélection

Cet exemple explique également comment réagir devant des événements de changement de sélection dans Eclipse. La classe CreateMemberAction implémente l'interface ISelectionListener. L'implémentation de sa méthode selectionChanged réagit face aux événements faisant référence à une sélection IStructuredSelection, causée généralement par une modification de la sélection courante dans un navigateur. Le code de l'exemple lance une itération dans les éléments de la sélection courante à l'aide d'un itérateur associé. Dans cet exemple, le premier élément sélectionné est choisi.

 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;
				}
			}
		}
	}

Un objet ILogicalResource (LZOSPartitionedDataSet dans ce cas) est renvoyé dans l'objet de sélection, si un objet d'un projet z/OS est sélectionné. Si un objet du système de fichiers MVS est sélectionné dans la vue de l'Explorateur de systèmes distants, un objet ZOSResourceReference est renvoyé. Dans ce dernier cas, vous pouvez récupérer la ressource IPhysicalResource correspondante à l'aide de la méthode getReferent.


Conditions d'utilisation | Commentaires

Ce centre de documentation utilise la technologie Eclipse. (http://www.eclipse.org)