次のステップではコード・サンプルを使用して、Java Database Connectivity (JDBC) データ・メディエーター・サービス (DMS) 向けのメタデータを作成する方法、および DMS DataGraph を インスタンス化する方法について説明します。
MetadataFactory factory = MetadataFactory.eINSTANCE; Metadata metadata = factory.createMetadata();
Table custTable = metadata.addTable("CUSTOMER");
custTable.beRoot();2 番目のオプションを使用する場合は、以下のようにコード化します。
metadata.setRootTable(custTable)
Column custID = custTable.addIntegerColumn("CUSTID"); custID.setNullable(false);この例では、この列の列オブジェクトを作成し、残りの列オブジェクトは作成しません。 この列が 1 次キーであり、残りの列が追加された後に、 テーブルの 1 次キーを設定するのに使用されるためです。 1 次キーをヌルにすることはできないため、custID.setNullable(false) がこれを発生させないようにします。 残りの列を追加するには、次のようにします。
custTable.addStringColumn("CUSTFIRSTNAME"); custTable.addStringColumn("CUSTLASTNAME"); custTable.addStringColumn("CUSTSTREETADDRESS"); custTable.addStringColumn("CUSTCITY"); custTable.addStringColumn("CUSTSTATE"); custTable.addStringColumn("CUSTZIPCODE"); custTable.addIntegerColumn("CUSTAREACODE"); custTable.addStringColumn("CUSTPHONENUMBER"); custTable.setPrimaryKey(custID);
Table orderTable = metadata.addTable("ORDER"); Column orderNumber = orderTable.addIntegerColumn("ORDERNUMBER"); orderNumber.setNullable(false); orderTable.addDateColumn("ORDERDATE"); orderTable.addDateColumn("SHIPDATE"); Column custFKColumn = orderTable.addIntegerColumn("CUSTOMERID"); orderTable.setPrimaryKey(orderNumber);
Key custFK = factory.createKey(); custFK.getColumns().add(custFKColumn); orderTable.getForeignKeys().add(custFK);関係には 2 つのキーがあります。 親キーと子キーです。 特定の名前がないため、CUSTOMER_ORDER のデフォルトの連結は、この関係に使用される名前です。
metadata.addRelationship(custTable.getPrimaryKey(), custFK);デフォルトの関係は、注文した顧客全員を含みます。 注文していない顧客も全員取得するには、以下の行も必要です。
metadata.getRelationship("CUSTOMER_ORDER") .setExclusive(false);これで、2 つのテーブルが互いに関連付けられ、 特定の特性をもつ顧客を検索するために顧客テーブルにフィルターを追加することができます。
Filter filter = factory.createFilter(); filter.setPredicate("CUSTOMER.CUSTSTATE = ? AND CUSTOMER.CUSTLASTNAME = ?"); FilterArgument arg1 = factory.createFilterArgument(); arg1.setName("CUSTSTATE"); arg1.setType(Column.STRING); filter.getFilterArguments().add(arg1); FilterArgument arg2 = factory.createFilterArgument(); arg2.setName("CUSTLASTNAME"); arg2.setType(Column.STRING); filter.getFilterArguments().add(arg2); custTable.setFilter(filter);
Column firstName = ((TableImpl)custTable).getColumn("CUSTFIRSTNAME"); OrderBy orderBy = factory.createOrderBy(); orderBy.setColumn(firstName); orderBy.setAscending(true); metadata.getOrderBys().add(orderBy);これによって、この JDBC DMS のメタデータの作成が完了します。
ConnectionWrapperFactory factory = ConnectionWrapperFactory.soleInstance; connectionWrapper = factory.createConnectionWrapper(connect()); JDBCMediatorFactory mFactory = JDBCMediatorFactory.soleInstance; JDBCMediator mediator = mFactory.createMediator(metadata, connectionWrapper); DataObject parameters = mediator.getParameterDataObject(); parameters.setString("CUSTSTATE", "NY"); parameters.setString('CUSTLASTNAME', 'Smith'); DataObject graph = mediator.getGraph(parameters);これで、DataGraph が作成されたので、好きなように情報を操作することができます。簡単な例は、例: DataGraph オブジェクトでのデータの操作 にあります。