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

org.javers.repository.api.SnapshotIdentifier Maven / Gradle / Ivy

package org.javers.repository.api;

import org.javers.common.validation.Validate;
import org.javers.core.metamodel.object.CdoSnapshot;
import org.javers.core.metamodel.object.GlobalId;

import java.util.Objects;

public final class SnapshotIdentifier {

    private final GlobalId globalId;
    private final long version;

    public SnapshotIdentifier(GlobalId globalId, long version) {
        Validate.argumentIsNotNull(globalId);
        Validate.argumentCheck(version > 0, "Version is not a positive number.");
        this.globalId = globalId;
        this.version = version;
    }

    public static SnapshotIdentifier from(CdoSnapshot snapshot) {
        Validate.argumentIsNotNull(snapshot);
        return new SnapshotIdentifier(snapshot.getGlobalId(), snapshot.getVersion());
    }

    public GlobalId getGlobalId() {
        return globalId;
    }

    public long getVersion() {
        return version;
    }

    public SnapshotIdentifier previous() {
        return new SnapshotIdentifier(getGlobalId(), getVersion() - 1);
    }

    public SnapshotIdentifier next() {
        return new SnapshotIdentifier(getGlobalId(), getVersion() + 1);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SnapshotIdentifier that = (SnapshotIdentifier) o;
        return version == that.version && Objects.equals(globalId, that.globalId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(globalId, version);
    }

    @Override
    public String toString() {
        return "SnapshotIdentifier{id:" + globalId.value() +", ver:" + version + "}";
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy