es_lazyDataModel

ilyasaglar tarafından tarihinde yayınlandı

public class ChangeLogLazyDataModel extends LazyDataModel<ChangeLog> {


  private String filter1;
   private String filter2;
  private int objectId;
  private String hostname;
  
    public ChangeLogLazyDataModel(String filter1, String filter2, int objectId, String hostName) {
    this.filter1 = filter1;
    this.filter2 = filter2;
    this.objectId = objectId;
    this.hostname = hostName;

  }
  
  @Override
  public List<ChangeLog> load(int first, int pageSize, String sortField, SortOrder sortOrder,
      Map<String, Object> filters) {

    RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(new HttpHost(hostname)));

    SearchRequest searchRequest = new SearchRequest();
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

    
    if (StringUtils.isEmpty(objectId)) {
      throw new BusinessException("current user should be selected");
    }
    
    //objectId'ye göre filtreleme yapılıyor
    
    BoolQueryBuilder bqb= QueryBuilders.boolQuery()
        .must(QueryBuilders.matchQuery("objectId", objectId));



    if (!StringUtils.isEmpty(filter1)) {
      bqb.must(QueryBuilders.matchQuery("fieldName", filter1));
    }


    if (!StringUtils.isEmpty(filter2)) {
      bqb.must(QueryBuilders.matchQuery("newValue", filter2));
    }
    
    //istediginiz kadar filtre ekleyebilirsiniz yukarıda oldugu gibi

    //timestamp'e göre sıralama için kullanıyoruz
    searchRequest.source(searchSourceBuilder.query(bqb).size(pageSize).from(first).sort("@timestamp", org.elasticsearch.search.sort.SortOrder.DESC));


    List<ChangeLog> changeLogList = null;
    try {
      SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
      SearchHits hits = searchResponse.getHits();
      this.setRowCount(((Long)searchResponse.getHits().getTotalHits().value).intValue());
      changeLogList = Arrays.stream(hits.getHits())
          .map(SearchHit::getSourceAsString)
          .map(ChangeLogLazyDataModel::convert2Object)
          .collect(Collectors.toList());

    } catch (IOException e) {
      throw new RuntimeException(e);
    }
    return changeLogList;
  }
  
  //objectMapper kullanarak json veriyi model'e dönüştürme 
   public static ChangeLog convert2Object(String json) {
    ObjectMapper objectMapper = new ObjectMapper();
    try {
      ChangeLog obj = objectMapper.readValue(json, ChangeLog.class);
      return obj;
    } catch (JsonProcessingException e) {
      return new ChangeLog();
    }
  }
  
  
  }
Kategoriler: