All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avaje.ebeanservice.elastic.querywriter.ElasticJsonContext Maven / Gradle / Ivy

package com.avaje.ebeanservice.elastic.querywriter;

import com.avaje.ebean.search.Match;
import com.avaje.ebean.search.MultiMatch;
import com.avaje.ebean.search.TextCommonTerms;
import com.avaje.ebean.search.TextQueryString;
import com.avaje.ebean.search.TextSimple;
import com.avaje.ebean.text.json.JsonContext;
import com.fasterxml.jackson.core.JsonGenerator;

import java.io.IOException;
import java.io.StringWriter;

/**
 * Context for helping write JSON expressions.
 */
public class ElasticJsonContext {

  private final JsonContext jsonContext;

  private final WriteMatchExpression matchWriter;

  private final WriteCommonTermsExpression commonTermsWriter;

  private final WriteTextSimpleExpression simpleWriter;

  private final WriteQueryStringExpression queryStringWriter;

  /**
   * Construct with the Ebean JsonContext (which handles all scalar types know to Ebean).
   */
  public ElasticJsonContext(JsonContext jsonContext) {
    this.jsonContext = jsonContext;
    this.matchWriter = new WriteMatchExpression(jsonContext);
    this.commonTermsWriter = new WriteCommonTermsExpression();
    this.simpleWriter = new WriteTextSimpleExpression();
    this.queryStringWriter = new WriteQueryStringExpression();
  }

  /**
   * Create a new JsonGenerator.
   */
  public JsonGenerator createGenerator(StringWriter writer) {
    return jsonContext.createGenerator(writer);
  }

  /**
   * Write a scalar value (handles any type known to Ebean - Enums, Java8, Joda etc).
   */
  public void writeScalar(JsonGenerator json, Object value) throws IOException {
    jsonContext.writeScalar(json, value);
  }

  /**
   * Write a match expression.
   */
  public void writeMatch(JsonGenerator json, String propertyName, String value, Match options) throws IOException {
    matchWriter.writeMatch(json, propertyName, value, options);
  }

  /**
   * Write a multi-match expression.
   */
  public void writeMultiMatch(JsonGenerator json, String search, MultiMatch options) throws IOException {
    matchWriter.writeMultiMatch(json, search, options);
  }

  /**
   * Write a common terms expression.
   */
  public void writeCommonTerms(JsonGenerator json, String search, TextCommonTerms options) throws IOException {
    commonTermsWriter.write(json, search, options);
  }

  /**
   * Write a query string expression.
   */
  public void writeQueryString(JsonGenerator json, String search, TextQueryString options) throws IOException {
    queryStringWriter.write(json, search, options);
  }

  /**
   * Write a simple query expression.
   */
  public void writeSimple(JsonGenerator json, String search, TextSimple options) throws IOException {
    simpleWriter.write(json, search, options);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy