org.apache.bookkeeper.stream.protocol.RangeId Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.bookkeeper.stream.protocol;
import java.io.Serializable;
import java.util.Comparator;
/**
* A range (at a given revision) of a stream.
*/
public class RangeId implements Comparable, Serializable {
public static final Comparator COMPARATOR = Comparator.naturalOrder();
private static final long serialVersionUID = 1704491294262309389L;
private final long streamId;
private final long rangeId;
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("range(").append(streamId).append(", ").append(rangeId).append(')');
return sb.toString();
}
@Override
public int compareTo(RangeId other) {
int result = Long.compare(streamId, other.streamId);
if (result == 0) {
result = Long.compare(rangeId, other.rangeId);
}
return result;
}
private RangeId(final long streamId, final long rangeId) {
this.streamId = streamId;
this.rangeId = rangeId;
}
public static RangeId of(final long streamId, final long rangeId) {
return new RangeId(streamId, rangeId);
}
public long getStreamId() {
return this.streamId;
}
public long getRangeId() {
return this.rangeId;
}
@Override
public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof RangeId)) return false;
final RangeId other = (RangeId) o;
if (!other.canEqual((Object) this)) return false;
if (this.getStreamId() != other.getStreamId()) return false;
if (this.getRangeId() != other.getRangeId()) return false;
return true;
}
protected boolean canEqual(final Object other) {
return other instanceof RangeId;
}
@Override
public int hashCode() {
final int PRIME = 59;
int result = 1;
final long $streamId = this.getStreamId();
result = result * PRIME + (int) ($streamId >>> 32 ^ $streamId);
final long $rangeId = this.getRangeId();
result = result * PRIME + (int) ($rangeId >>> 32 ^ $rangeId);
return result;
}
}