/** * セル配下のDavFile数を返却する. * * @param cellId 削除対象のセルID * @param unitUserName ユニットユーザ名 * @return セル配下のDavFile数 */ public long getDavFileTotalCount(String cellId, String unitUserName) { // CellAccessorはadインデックスに対するアクセスのため、ユニットユーザ側のアクセッサを取得 DataSourceAccessor accessor = EsModel.dsa(unitUserName); // Countのみを取得するためサイズを0で指定 Map<String, Object> countQuery = getDavFileFilterQuery(cellId); countQuery.put("size", 0); DcSearchResponse response = accessor.searchForIndex(cellId, countQuery); return response.getHits().getAllPages(); }
/** * すべてのテスト毎に1度実行される処理. * * @throws InterruptedException InterruptedException */ @Before @SuppressWarnings("unchecked") public void before() throws InterruptedException { // データ検索確認用のテストデータを作成(EsModelのテストをベースにデータ作成) EsIndex idx = EsModel.idxUser(idxName); // インデックスの作成 idx.create(); // Typeの定義 // (Type 名に # は使えないっぽい。) EsType type = EsModel.type(idx.getName(), "tType2", ROUTING_ID, 0, 0); // ドキュメント登録 JSONObject json1 = new JSONObject(); json1.put("key1-1", "value1"); json1.put("key1-2", "value2"); DcIndexResponse res1 = type.create("documentId1", json1); assertEquals(idList[0], res1.getId()); JSONObject json2 = new JSONObject(); json2.put("key2-1", "value1"); json2.put("key2-2", "value2"); DcIndexResponse res2 = type.create("documentId2", json2); assertEquals(idList[1], res2.getId()); }
/** * セル配下のDavFileID一覧を返却する. * * @param cellId 削除対象のセルID * @param unitUserName ユニットユーザ名 * @param size 取得件数 * @param from 取得開始位置 * @return セル配下のDavFile数 */ public List<String> getDavFileIdList(String cellId, String unitUserName, int size, int from) { // CellAccessorはadインデックスに対するアクセスのため、ユニットユーザ側のアクセッサを取得 DataSourceAccessor accessor = EsModel.dsa(unitUserName); Map<String, Object> searchQuery = getDavFileFilterQuery(cellId); searchQuery.put("size", size); searchQuery.put("from", from); DcSearchResponse response = accessor.searchForIndex(cellId, searchQuery); List<String> davFileIdList = new ArrayList<String>(); for (DcSearchHit hit : response.getHits().getHits()) { davFileIdList.add(hit.getId()); } return davFileIdList; }
/** * セル配下のエンティティを一括削除する. * * @param cellId 削除対象のセルID * @param unitUserName ユニットユーザ名 */ public void cellBulkDeletion(String cellId, String unitUserName) { // AdsのCell配下のエンティティはバッチにて削除するので // Cell削除管理テーブルに削除対象のDB名とセルIDを追加する insertCellDeleteRecord(unitUserName, cellId); DataSourceAccessor accessor = EsModel.dsa(unitUserName); // セルIDを指定してelasticsearchからセル関連エンティティを一括削除する DcQueryBuilder matchQuery = DcQueryBuilders.matchQuery("c", cellId); try { accessor.deleteByQuery(cellId, matchQuery); log.info("KVS Deletion Success."); } catch (EsClientException e) { // 削除に失敗した場合はログを出力して処理を続行する log.warn( String.format( "Delete CellResource From KVS Failed. CellId:[%s], CellUnitUserName:[%s]", cellId, unitUserName), e); } }
/** * すべてのテスト毎に1度実行される処理. * * @throws InterruptedException InterruptedException */ @After public void after() throws InterruptedException { // 作成したインデックスを消す EsIndex idx = EsModel.idxUser(idxName); idx.delete(); }