org.sfs.vo.XFileSystem.java Source code

Java tutorial

Introduction

Here is the source code for org.sfs.vo.XFileSystem.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 XFileSystem<T extends XFileSystem> {

    private String partition;
    private String device;
    private String path;
    private Long totalSpace;
    private Long unallocatedSpace;
    private Long usableSpace;
    private String type;

    public Optional<String> getPath() {
        return fromNullable(path);
    }

    public T setPath(String path) {
        this.path = path;
        return (T) this;
    }

    public Optional<String> getDevice() {
        return fromNullable(device);
    }

    public T setDevice(String device) {
        this.device = device;
        return (T) this;
    }

    public Optional<Long> getTotalSpace() {
        return fromNullable(totalSpace);
    }

    public T setTotalSpace(Long totalSpace) {
        this.totalSpace = totalSpace;
        return (T) this;
    }

    public Optional<Long> getUnallocatedSpace() {
        return fromNullable(unallocatedSpace);
    }

    public T setUnallocatedSpace(Long unallocatedSpace) {
        this.unallocatedSpace = unallocatedSpace;
        return (T) this;
    }

    public Optional<String> getType() {
        return fromNullable(type);
    }

    public T setType(String type) {
        this.type = type;
        return (T) this;
    }

    public Optional<Long> getUsableSpace() {
        return fromNullable(usableSpace);
    }

    public T setUsableSpace(Long usableSpace) {
        this.usableSpace = usableSpace;
        return (T) this;
    }

    public Optional<String> getPartition() {
        return fromNullable(partition);
    }

    public T setPartition(String partition) {
        this.partition = partition;
        return (T) this;
    }

    public abstract T copy();

    protected T copyInternal(XFileSystem t) {
        setPath(t.path);
        setTotalSpace(t.totalSpace);
        setUnallocatedSpace(t.unallocatedSpace);
        setUsableSpace(t.usableSpace);
        setType(t.type);
        setDevice(t.device);
        setPartition(t.partition);
        return (T) this;
    }

    public T merge(XFileSystem<? extends XFileSystem> other) {
        this.path = other.path;
        this.totalSpace = other.totalSpace;
        this.unallocatedSpace = other.unallocatedSpace;
        this.usableSpace = other.usableSpace;
        this.type = other.type;
        this.device = other.device;
        this.partition = other.partition;
        return (T) this;
    }

    public T merge(JsonObject jsonObject) {
        this.path = jsonObject.getString("path");
        this.totalSpace = jsonObject.getLong("totalSpace");
        this.unallocatedSpace = jsonObject.getLong("unallocated_space");
        this.usableSpace = jsonObject.getLong("usable_space");
        this.type = jsonObject.getString("type");
        this.device = jsonObject.getString("device");
        this.partition = jsonObject.getString("partition");
        return (T) this;
    }

    public JsonObject toJsonObject() {
        return new JsonObject().put("path", path).put("total_space", totalSpace)
                .put("unallocated_space", unallocatedSpace).put("usable_space", usableSpace).put("type", type)
                .put("device", device).put("partition", partition);
    }
}