Rational Developer for System z

区分データ・セットのメンバーの作成

このサンプルでは、区分データ・セットに新しいデータ・セット・メンバーを作成する方法を示します。さらに、ナビゲーター・ビューのリモート成果物に対してポップアップ・メニューのメニュー項目を提供する方法も示します。

サンプル・シナリオ

このサンプルを使用するには、「リモート・システム・エクスプローラー」ビューで区分データ・セットを右クリックし、「API サンプル・アクション」->「メンバーの作成 」アクションを選択します。

TEMP という名前のメンバーが、選択したデータ・セットに作成されています。

サンプル・コードのウォークスルー

データ・セット・メンバー IPhysicalResource の作成

createPhysicalMember サンプル・メソッドは、メソッド findMember を使用して、作成しようとするメンバーがまだ存在しないことの確認検査から開始します。リソースが検出されない場合、findMember メソッドは NULL を返します。

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

メンバーは、次のように作成されます。ZOSPhysicalResourceFactory クラスの getPhysicalResource メソッドを使用して、メンバーを参照する IPhysicalResource オブジェクトが作成されます。(getPhysicalResource メソッドによって返されるリソース・オブジェクトは、実際に存在するホスト・リソースを表す必要はありません。)IPhysicalResource を作成したら、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) {
		......
	}

create メソッドには、作成するファイルの内容を収める InputStream が必要です。

データ・セット・メンバー ILogicalResource の作成

MVS™ サブプロジェクトでデータ・セット・メンバーを作成するプロセスは似ています。CreateMemberAction サンプル・クラスの createLogicalMember メソッドを考慮してください。これは getPhysicalResource メソッドを使用して、選択された ILogicalResource によって参照される IPhysicalResource オブジェクトの取得から開始します。

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

リモート・アクセス API を使用したオフライン・リソースの処理は、まだサポートされていません。

次に、データ・セット・メンバー IPhysicalResource の作成と同様に、データ・セット・メンバー IPhysicalResource を作成するコードに進みます。

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

以下のコード・スニペットは、getSubProject メソッドから取得した該当サブプロジェクトにリソースを追加します。 コード・スニペットはこれを実行するために、LogicalResourceFactory クラスを使用します。 このメソッドを使用すると、「サブプロジェクトに追加」メニュー・アクションを使用して、プロジェクトに物理リソースを追加できます。

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

選択変更イベントへの応答

このサンプルでは、Eclipse での選択変更イベントへの応答方法も示します。CreateMemberAction クラスは、ISelectionListener インターフェースを実装します。その selectionChanged メソッド実装は、IStructuredSelection を参照するイベントに応答しますが、これは通常、ツリー・ナビゲーターの現行選択の変更によって発生します。 サンプル・コードは、現行選択に関連付けられたイテレーターを使用して、現行選択に含まれる項目の処理を繰り返します。この例では、最初の選択項目が選択されています。

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

ILogicalResource オブジェクト (この場合は LZOSPartitionedDataSet) は、z/OS® プロジェクトが選択されている場合、選択オブジェクトに返されます。MVS ファイル・システムのオブジェクトが「リモート・システム・エクスプローラー」ビューで選択されている場合、ZOSResourceReference が返されます。後者の場合、getReferent メソッドを使用して、対応する IPhysicalResource を検索できます。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)