package io.activej.cube.bean;

import io.activej.aggregation.annotation.Key;
import io.activej.aggregation.annotation.Measures;

import java.util.Objects;

public class DataItemString2 {
	@Key
	public String key1;
	@Key
	public int key2;

	@Measures
	public long metric2;
	@Measures
	public long metric3;

	public DataItemString2() {
	}

	public DataItemString2(String key1, int key2, long metric2, long metric3) {
		this.key1 = key1;
		this.key2 = key2;
		this.metric2 = metric2;
		this.metric3 = metric3;
	}

	@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (o == null || getClass() != o.getClass()) return false;

		DataItemString2 that = (DataItemString2) o;

		if (key2 != that.key2) return false;
		if (metric2 != that.metric2) return false;
		if (metric3 != that.metric3) return false;
		return Objects.equals(key1, that.key1);

	}

	@Override
	public int hashCode() {
		int result = key1 != null ? key1.hashCode() : 0;
		result = 31 * result + key2;
		result = 31 * result + (int) (metric2 ^ (metric2 >>> 32));
		result = 31 * result + (int) (metric3 ^ (metric3 >>> 32));
		return result;
	}
}
