Rational Developer for System z, Version 7.6

Member in einer partitionierten Datei erstellen

Dieses Beispiel veranschaulicht, wie ein neues Dateimember unter einer partitionierten Datei erstellt wird. Außerdem zeigt es, wie in den Navigatoransichten ein Menüeintrag zum Popup-Menü für ferne Artefakte hinzugefügt wird.

Beispielszenario

Sie können dieses Beispiel verwenden, indem Sie mit der rechten Maustaste in der Ansicht des Remote Systems Explorer auf eine partitionierte Datei klicken und die Aktion API-Beispielaktionen > Member erstellen auswählen.

Bildmaterial für createMemberMenu

Ein Member mit dem Namen TEMP wird in der ausgewählten Datei erstellt.

Bildmaterial für createMemberResults

Erläuterung des Beispielcodes

Dateimember IPhysicalResource erstellen

Die Methode createPhysicalMember des Beispiels stellt zu Beginn mithilfe der Methode findMember sicher, dass das zu erstellende Member noch nicht vorhanden ist. Die Methode findMember gibt NULL zurück, wenn die Ressource nicht gefunden wurde.

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

Das Member wird dann auf folgende Weise erstellt. Ein IPhysicalResource-Objekt, das auf das Member verweist, wird mithilfe der Methode getPhysicalResource der Klasse ZOSPhysicalResourceFactory erstellt. (Das von der Methode getPhysicalResource zurückgegebene Ressourcenobjekt muss keine tatsächlich vorhandene Hostressource darstellen.) Sobald das IPhysicalResource-Objekt zur Verfügung steht, kann das konkrete Member auf dem Host erstellt werden, indem die Methode create aufgerufen wird.

 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) {
		......
	}

Die Methode create erwartet einen InputStream, der den Inhalt für die zu erstellende Datei enthält.

Dateimember ILogicalResource erstellen

Die Erstellung eines Dateimembers in einem MVS-Unterprojekt verläuft auf ähnliche Weise. Betrachten Sie die Methode createLogicalMember in der Beispielklasse CreateMemberAction. Sie startet, indem sie mithilfe der Methode getPhysicalResource das IPhysicalResource-Objekt abruft, auf das durch das ausgewählte ILogicalResource-Objekt verwiesen wird.

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

Die Verarbeitung von Offlineressourcen mithilfe der API für den Fernzugriff wird noch nicht unterstützt.

Anschließend wird im Code ein Dateimember IPhysicalResource wie in Dateimember IPhysicalResource erstellen erstellt.

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

Im folgenden Codefragment wird die Ressource anschließend dem entsprechenden Unterprojekt hinzugefügt, das mithilfe der Methode getSubProject abgerufen wurde. In dem Codefragment wird dies mithilfe der Klasse LogicalResourceFactory erreicht. Diese Methode kann verwendet werden, um einem Projekt unter Verwendung der Menüaktion Zum Unterprojekt hinzufügen beliebige physische Ressourcen hinzuzufügen.

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

Auf Auswahländerungsereignisse reagieren

Dieses Beispiel veranschaulicht auch, wie Sie auf Auswahländerungsereignisse in Eclipse reagieren können. Die Klasse CreateMemberAction implementiert die Schnittstelle ISelectionListener. Ihre Implementierung der Methode selectionChanged reagiert auf Ereignisse, die sich auf eine IStructuredSelection beziehen und normalerweise durch eine Änderung der aktuellen Auswahl in einer Baumstruktur verursacht werden. Im Beispielcode werden die in der aktuellen Auswahl enthaltenen Elemente mithilfe eines Iterators durchlaufen, der der Auswahl zugewiesen wurde. In diesem Beispiel wird das erste ausgewählte Element ausgewählt.

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

Ein ILogicalResource-Objekt (in diesem Fall LZOSPartitionedDataSet) wird im Auswahlobjekt zurückgegeben, wenn ein Objekt in einem z/OS-Projekt ausgewählt wird. Wird ein Objekt im MVS-Dateisystem in der Ansicht von Remote Systems Explorer ausgewählt, wird ein ZOSResourceReference-Objekt zurückgegeben. Im letzteren Fall können Sie die entsprechende IPhysicalResource mithilfe der Methode getReferent abrufen.


Nutzungsbedingungen | Feedback

Dieses Information Center basiert auf Eclipse-Technologie. (http://www.eclipse.org)