このサンプルでは、区分データ・セットに新しいデータ・セット・メンバーを作成する方法を示します。さらに、ナビゲーター・ビューのリモート成果物に対してコンテキスト・メニューのメニュー項目を提供する方法も示します。
このサンプルを使用するには、「リモート・システム・エクスプローラー」ビューで区分データ・セットを右クリックし、「API サンプル・アクション」->「メンバーの作成 」アクションを選択します。

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

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 が必要です。
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 を検索できます。