この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Lightning Connect カスタムアダプタの集計

COUNT() クエリを受信すると、選択された列の aggregation プロパティの値が QueryAggregation.COUNT になります。選択された列は、DataSource.QueryContexttableSelectioncolumnsSelected プロパティで指定されます。

次の例は、aggregation プロパティの値を適用して COUNT() クエリを処理する方法を示しています。

1// Handle COUNT() queries
2if (context.tableSelection.columnsSelected.size() == 1 &&      
3    context.tableSelection.columnsSelected.get(0).aggregation == 
4        QueryAggregation.COUNT) {
5    List<Map<String, Object>> countResponse = new List<Map<String, Object>>();
6    Map<String, Object> countRow = new Map<String, Object>();
7    countRow.put(context.tableSelection.columnsSelected.get(0).columnName, 
8    response.size());
9    countResponse.add(countRow);
10    return countResponse;
11}

集計クエリには検索条件を設定できるため、次の例のようにクエリメソッドを実装して、基本的な aggregation クエリを (検索条件の有無を問わず) サポートできます。

1override global DataSource.TableResult query(DataSource.QueryContext context) {
2    List<Map<String,Object>> rows = retrieveData(context);
3    List<Map<String,Object>> response = postFilterRecords(
4            context.tableSelection.filter, rows);
5    if (context.tableSelection.columnsSelected.size() == 1 &&        
6        context.tableSelection.columnsSelected.get(0).aggregation ==   
7                DataSource.QueryAggregation.COUNT) {
8        List<Map<String, Object>> countResponse = new List<Map<String, 
9                Object>>();
10        Map<String, Object> countRow = new Map<String, Object>();
11        countRow.put(context.tableSelection.columnsSelected.get(0).columnName, 
12                response.size());
13        countResponse.add(countRow);
14        return DataSource.TableResult.get(context, countResponse);
15    }
16    return DataSource.TableResult.get(context, response);
17}