/** * セル配下の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(); }
/** * セル配下の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); } }