alluxio.util.UnixMountInfo.java Source code

Java tutorial

Introduction

Here is the source code for alluxio.util.UnixMountInfo.java

Source

/*
 * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
 * (the "License"). You may not use this work except in compliance with the License, which is
 * available at www.apache.org/licenses/LICENSE-2.0
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied, as more fully set forth in the License.
 *
 * See the NOTICE file distributed with this work for information regarding copyright ownership.
 */

package alluxio.util;

import com.google.common.base.Objects;
import com.google.common.base.Optional;

/**
 * Class representing an entry in a Unix /etc/fstab file.
 */
public final class UnixMountInfo {
    private final Optional<String> mDeviceSpec;
    private final Optional<String> mMountPoint;
    private final Optional<String> mFsType;
    private final Options mMountOptions;

    private UnixMountInfo(String deviceSpec, String mountPoint, String fsType, Options options) {
        mDeviceSpec = Optional.fromNullable(deviceSpec);
        mMountPoint = Optional.fromNullable(mountPoint);
        mFsType = Optional.fromNullable(fsType);
        mMountOptions = options;
    }

    /**
     * @return the device spec
     */
    public Optional<String> getDeviceSpec() {
        return mDeviceSpec;
    }

    /**
     * @return the mount point
     */
    public Optional<String> getMountPoint() {
        return mMountPoint;
    }

    /**
     * @return the filesystem type
     */
    public Optional<String> getFsType() {
        return mFsType;
    }

    /**
     * @return the mount options
     */
    public Options getOptions() {
        return mMountOptions;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof UnixMountInfo)) {
            return false;
        }
        UnixMountInfo that = (UnixMountInfo) o;
        return Objects.equal(mDeviceSpec, that.mDeviceSpec) && Objects.equal(mMountPoint, that.mMountPoint)
                && Objects.equal(mFsType, that.mFsType) && Objects.equal(mMountOptions, that.mMountOptions);
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(mDeviceSpec, mMountPoint, mFsType, mMountOptions);
    }

    @Override
    public String toString() {
        return Objects.toStringHelper(this).add("deviceSpec", mDeviceSpec).add("mountPoint", mMountPoint)
                .add("fsType", mFsType).add("options", mMountOptions).toString();
    }

    /** Builder for {@link UnixMountInfo}. */
    public static class Builder {
        private String mDeviceSpec;
        private String mMountPoint;
        private String mFsType;
        private Options mOptions;

        /** Constructs a new Unix mount info builder. */
        public Builder() {
        }

        /**
         * @param deviceSpec the device spec to set
         * @return the builder
         */
        public Builder setDeviceSpec(String deviceSpec) {
            mDeviceSpec = deviceSpec;
            return this;
        }

        /**
         * @param mountPoint the mount point to set
         * @return the builder
         */
        public Builder setMountPoint(String mountPoint) {
            mMountPoint = mountPoint;
            return this;
        }

        /**
         * @param fsType the fs type to set
         * @return the builder
         */
        public Builder setFsType(String fsType) {
            mFsType = fsType;
            return this;
        }

        /**
         * @param options the mount info options to set
         * @return the builder
         */
        public Builder setOptions(Options options) {
            mOptions = options;
            return this;
        }

        /**
         * @return the built Unix mount info
         */
        public UnixMountInfo build() {
            return new UnixMountInfo(mDeviceSpec, mMountPoint, mFsType, mOptions);
        }
    }

    /** Unix mount info options. */
    public static final class Options {
        private final Optional<Long> mSize;

        private Options(Long size) {
            mSize = Optional.fromNullable(size);
        }

        /**
         * @return the mount point size
         */
        public Optional<Long> getSize() {
            return mSize;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) {
                return true;
            }
            if (!(o instanceof Options)) {
                return false;
            }
            Options that = (Options) o;
            return Objects.equal(mSize, that.mSize);
        }

        @Override
        public int hashCode() {
            return Objects.hashCode(mSize);
        }

        @Override
        public String toString() {
            return Objects.toStringHelper(this).add("size", mSize).toString();
        }

        /** Builder for Unix mount info options. */
        public static class Builder {
            private Long mSize;

            /** Constructs a new unix mount info options builder. */
            public Builder() {
            }

            /**
             * @param size the mount size to set
             * @return the builder
             */
            public Builder setSize(Long size) {
                mSize = size;
                return this;
            }

            /**
             * @return the built Unix mount info options
             */
            public Options build() {
                return new Options(mSize);
            }
        }
    }
}