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

com.staros.filestore.FileStore Maven / Gradle / Ivy

// Copyright 2021-present StarRocks, Inc. All rights reserved.
//
// 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
//
//     https://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 com.staros.filestore;

import com.staros.proto.FileStoreInfo;
import com.staros.proto.FileStoreType;

public abstract class FileStore {
    protected String key;

    protected String name;

    protected boolean enabled = true;

    protected boolean isDefault = false;

    protected String comment = "";

    public FileStore(String key, String name) {
        this.key = key;
        this.name = name;
    }

    public FileStore(FileStoreInfo fsInfo) {
        this.key = fsInfo.getFsKey();
        this.name = fsInfo.getFsName();
        this.enabled = fsInfo.getEnabled();
        this.isDefault = fsInfo.getIsDefault();
        this.comment = fsInfo.getComment();
    }

    // Return file store key
    // Each file store has one unique key
    public String key() {
        return key;
    }

    // Return file store name
    // Name is not ensured to be unique
    public String name() {
        return name;
    }

    public String getComment() {
        return comment;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public boolean getEnabled() {
        return enabled;
    }

    public void setIsDefault(boolean isDefault) {
        this.isDefault = isDefault;
    }

    public boolean isDefault() {
        return isDefault;
    }

    // Return file store type, 'S3','HDFS' etc
    public abstract FileStoreType type();

    // Return file store root path
    public abstract String rootPath();

    public abstract boolean isValid();

    // Serialize file store to protobuf format
    public FileStoreInfo toProtobuf() {
        FileStoreInfo.Builder builder = FileStoreInfo.newBuilder();
        return builder.setFsKey(key)
                .setFsName(name)
                .setEnabled(enabled)
                .setIsDefault(isDefault)
                .setComment(comment).build();
    }

    public void mergeFrom(FileStore other) {
        if (!other.getComment().isEmpty()) {
            this.comment = other.comment;
        }
        this.enabled = other.enabled;
        this.isDefault = other.isDefault;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy