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

com.avaje.ebeanservice.elastic.index.AliasChanges Maven / Gradle / Ivy

package com.avaje.ebeanservice.elastic.index;

import com.fasterxml.jackson.core.JsonGenerator;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * Holds index alias Add and Remove changes.
 */
public class AliasChanges {

  private final List entries = new ArrayList();

  /**
   * Add an index alias ADD change.
   *
   * @param index The index name
   * @param alias The alias name
   */
  public AliasChanges add(String index, String alias) {
    entries.add(new Entry(true, index, alias));
    return this;
  }

  /**
   * Add an index alias REMOVE change.
   *
   * @param index The index name
   * @param alias The alias name
   */
  public AliasChanges remove(String index, String alias) {
    entries.add(new Entry(false, index, alias));
    return this;
  }

  /**
   * Return true if there are no changes.
   */
  public boolean isEmpty() {
    return entries.isEmpty();
  }

  public void writeJson(JsonGenerator gen) throws IOException {
    gen.writeStartObject();
    gen.writeFieldName("actions");
    gen.writeStartArray();
    for (Entry entry : entries) {
      entry.writeJson(gen);
    }
    gen.writeEndArray();
    gen.writeEndObject();
  }

  private class Entry {

    private final boolean add;
    private final String index;
    private final String alias;

    Entry(boolean add, String index, String alias) {
      this.add = add;
      this.index = index;
      this.alias = alias;
    }

    void writeJson(JsonGenerator gen) throws IOException {

      gen.writeStartObject();
      gen.writeFieldName(add? "add" : "remove");
      gen.writeStartObject();
      gen.writeStringField("index", index);
      gen.writeStringField("alias", alias);
      gen.writeEndObject();
      gen.writeEndObject();
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy