예제 #1
0
  /**
   * セル配下の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();
  }
예제 #2
0
 /**
  * すべてのテスト毎に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());
 }
예제 #3
0
  /**
   * セル配下の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;
  }
예제 #4
0
  /**
   * セル配下のエンティティを一括削除する.
   *
   * @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);
    }
  }
예제 #5
0
 /**
  * すべてのテスト毎に1度実行される処理.
  *
  * @throws InterruptedException InterruptedException
  */
 @After
 public void after() throws InterruptedException {
   // 作成したインデックスを消す
   EsIndex idx = EsModel.idxUser(idxName);
   idx.delete();
 }