org.sfs.vo.BlobReference.java Source code

Java tutorial

Introduction

Here is the source code for org.sfs.vo.BlobReference.java

Source

/*
 * Copyright 2016 The Simple File Server Authors
 *
 * Licensed 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.sfs.vo;

import com.google.common.base.Optional;
import io.vertx.core.json.JsonObject;

import static com.google.common.base.Optional.fromNullable;
import static java.lang.Boolean.TRUE;

public abstract class BlobReference<T extends BlobReference> {

    private final Segment<? extends Segment> segment;
    private String volumeId;
    private Long position;
    private byte[] readSha512;
    private Long readLength;
    private Boolean acknowledged;
    private Boolean deleted;
    private Integer verifyFailCount;

    public BlobReference(Segment segment) {
        this.segment = segment;
    }

    public Segment<? extends Segment> getSegment() {
        return segment;
    }

    public Optional<Integer> getVerifyFailCount() {
        return fromNullable(verifyFailCount);
    }

    public T setVerifyFailCount(Integer verifyFailCount) {
        this.verifyFailCount = verifyFailCount;
        return (T) this;
    }

    public T setVolumeId(String volumeId) {
        this.volumeId = volumeId;
        return (T) this;
    }

    public T setPosition(Long position) {
        this.position = position;
        return (T) this;
    }

    public boolean isAcknowledged() {
        return TRUE.equals(acknowledged);
    }

    public T setAcknowledged(Boolean acknowledged) {
        this.acknowledged = acknowledged;
        return (T) this;
    }

    public boolean isDeleted() {
        return TRUE.equals(deleted);
    }

    public T setDeleted(Boolean deleted) {
        this.deleted = deleted;
        return (T) this;
    }

    public T setReadLength(Long readLength) {
        this.readLength = readLength;
        return (T) this;
    }

    public Optional<Long> getReadLength() {
        return fromNullable(readLength);
    }

    public Optional<byte[]> getReadSha512() {
        return fromNullable(readSha512);
    }

    public T setReadSha512(byte[] readSha512) {
        this.readSha512 = readSha512;
        return (T) this;
    }

    public Optional<String> getVolumeId() {
        return fromNullable(volumeId);
    }

    public Optional<Long> getPosition() {
        return fromNullable(position);
    }

    public JsonObject toJsonObject() {
        JsonObject jsonObject = new JsonObject().put("volume_id", volumeId).put("position", position)
                .put("read_sha512", readSha512).put("read_length", readLength).put("acknowledged", acknowledged)
                .put("deleted", deleted).put("verify_fail_count", verifyFailCount);
        return jsonObject;
    }

    public T merge(JsonObject jsonObject) {
        volumeId = jsonObject.getString("volume_id");
        position = jsonObject.getLong("position");
        readSha512 = jsonObject.getBinary("read_sha512");
        readLength = jsonObject.getLong("read_length");
        acknowledged = jsonObject.getBoolean("acknowledged");
        deleted = jsonObject.getBoolean("deleted");
        verifyFailCount = jsonObject.getInteger("verify_fail_count", 0);

        return (T) this;
    }
}