org.sfs.vo.XAllocatedFile.java Source code

Java tutorial

Introduction

Here is the source code for org.sfs.vo.XAllocatedFile.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;

public abstract class XAllocatedFile<T extends XAllocatedFile> {

    private String file;
    private Long fileSizeBytes;
    private Integer freeRangeCount;
    private Long bytesFree;
    private Integer lockCount;
    private Long writeQueueBytesPending;
    private Long writeQueueBytesFull;
    private Long writeQueueBytesDrained;

    public String getFile() {
        return file;
    }

    public T setFile(String file) {
        this.file = file;
        return (T) this;
    }

    public Optional<Long> getFileSizeBytes() {
        return fromNullable(fileSizeBytes);
    }

    public T setFileSizeBytes(Long fileSizeBytes) {
        this.fileSizeBytes = fileSizeBytes;
        return (T) this;
    }

    public Optional<Long> getBytesFree() {
        return fromNullable(bytesFree);
    }

    public T setBytesFree(Long bytesFree) {
        this.bytesFree = bytesFree;
        return (T) this;
    }

    public Optional<Integer> getFreeRangeCount() {
        return fromNullable(freeRangeCount);
    }

    public T setFreeRangeCount(Integer freeRangeCount) {
        this.freeRangeCount = freeRangeCount;
        return (T) this;
    }

    public Optional<Integer> getLockCount() {
        return fromNullable(lockCount);
    }

    public T setLockCount(Integer lockCount) {
        this.lockCount = lockCount;
        return (T) this;
    }

    public Optional<Long> getWriteQueueBytesPending() {
        return fromNullable(writeQueueBytesPending);
    }

    public T setWriteQueueBytesPending(Long writeQueueBytesPending) {
        this.writeQueueBytesPending = writeQueueBytesPending;
        return (T) this;
    }

    public Optional<Long> getWriteQueueBytesFull() {
        return fromNullable(writeQueueBytesFull);
    }

    public T setWriteQueueBytesFull(Long writeQueueBytesFull) {
        this.writeQueueBytesFull = writeQueueBytesFull;
        return (T) this;
    }

    public Optional<Long> getWriteQueueBytesDrained() {
        return fromNullable(writeQueueBytesDrained);
    }

    public T setWriteQueueBytesDrained(Long writeQueueBytesDrained) {
        this.writeQueueBytesDrained = writeQueueBytesDrained;
        return (T) this;
    }

    public abstract T copy();

    protected T copyInternal(XAllocatedFile t) {
        setBytesFree(t.bytesFree);
        setFreeRangeCount(t.freeRangeCount);
        setFile(t.file);
        setFileSizeBytes(t.fileSizeBytes);
        setLockCount(t.lockCount);
        setWriteQueueBytesPending(t.writeQueueBytesPending);
        setWriteQueueBytesFull(t.writeQueueBytesFull);
        setWriteQueueBytesDrained(t.writeQueueBytesDrained);
        return (T) this;
    }

    public T merge(XAllocatedFile<? extends XAllocatedFile> other) {
        this.freeRangeCount = other.freeRangeCount;
        this.bytesFree = other.bytesFree;
        this.file = other.file;
        this.fileSizeBytes = other.fileSizeBytes;
        this.lockCount = other.lockCount;
        this.writeQueueBytesPending = other.writeQueueBytesPending;
        this.writeQueueBytesFull = other.writeQueueBytesFull;
        this.writeQueueBytesDrained = other.writeQueueBytesDrained;
        return (T) this;
    }

    public T merge(JsonObject jsonObject) {
        this.freeRangeCount = jsonObject.getInteger("free_range_count");
        this.bytesFree = jsonObject.getLong("bytes_free");
        this.file = jsonObject.getString("file");
        this.fileSizeBytes = jsonObject.getLong("file_size_bytes");
        this.lockCount = jsonObject.getInteger("lock_count");
        this.writeQueueBytesPending = jsonObject.getLong("write_queue_pending_bytes");
        this.writeQueueBytesFull = jsonObject.getLong("write_queue_full_bytes");
        this.writeQueueBytesDrained = jsonObject.getLong("write_queue_drained_bytes");
        return (T) this;
    }

    public JsonObject toJsonObject() {
        return new JsonObject().put("free_range_count", freeRangeCount).put("bytes_free", bytesFree)
                .put("file", file).put("file_size_bytes", fileSizeBytes).put("lock_count", lockCount)
                .put("write_queue_pending_bytes", writeQueueBytesPending)
                .put("write_queue_full_bytes", writeQueueBytesFull)
                .put("write_queue_drained_bytes", writeQueueBytesDrained);
    }
}