content: package pl.allegro.tech.hermes.api;
  
  import com.google.common.base.MoreObjects;
  import java.util.Objects;
  
  public final class RawSchemaWithMetadata {
  
    private final RawSchema schema;
    private final int id;
    private final int version;
  
    private RawSchemaWithMetadata(RawSchema schema, int id, int version) {
      this.schema = schema;
      this.id = id;
      this.version = version;
    }
  
    public static RawSchemaWithMetadata of(String schema, int id, int version) {
      return new RawSchemaWithMetadata(RawSchema.valueOf(schema), id, version);
    }
  
    public RawSchema getSchema() {
      return schema;
    }
  
    public String getSchemaString() {
      return schema.value();
    }
  
    public int getId() {
      return id;
    }
  
    public int getVersion() {
      return version;
    }
  
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
  
      RawSchemaWithMetadata that = (RawSchemaWithMetadata) o;
  
      return schema.equals(that.schema)
          && Objects.equals(id, that.id)
          && Objects.equals(version, that.version);
    }
  
    @Override
    public String toString() {
      return MoreObjects.toStringHelper(this)
          .add("schema", schema)
          .add("id", id)
          .add("version", version)
          .toString();
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(schema, id, version);
    }
  }
  