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

io.virtdata.docsys.metafs.fs.renderfs.model.TargetPathView Maven / Gradle / Ivy

package io.virtdata.docsys.metafs.fs.renderfs.model;

import io.virtdata.docsys.metafs.fs.renderfs.api.MarkdownStringer;
import io.virtdata.docsys.metafs.fs.renderfs.api.Versioned;
import io.virtdata.docsys.metafs.fs.renderfs.model.properties.ListView;
import io.virtdata.docsys.metafs.fs.renderfs.model.properties.PathView;
import io.virtdata.docsys.metafs.fs.renderfs.model.properties.TreeView;

import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;

public class TargetPathView implements Versioned, MarkdownStringer {
    private TargetPathView parent;
    private Path path;
    private long version;

    public TargetPathView(Path path, long version) {
        this.path = path;
        this.version = version;
    }

    public TargetPathView setParent(TargetPathView parent) {
        this.parent = parent;
        return this;
    }

    public TargetPathView getParent() {
        return parent;
    }

    public List getBreadcrumbs() {
        ArrayList paths = new ArrayList<>();
        path.iterator().forEachRemaining(paths::add);
        return paths;
    }

    public PathView getPath() {
        return new PathView(path);
    }

    public ListView getFiles() {
        List files = new ArrayList<>();
        Path dirPath = path.getParent();
        try {
            DirectoryStream paths =
                    dirPath.getFileSystem().provider()
                            .newDirectoryStream(dirPath, AcceptAllFiles);
            paths.forEach(p -> files.add(p.getFileName().toString()));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return new ListView(files);
    }

    public TreeView getFileTree() {
        return new TreeView(this);
    }

    private final static DirectoryStream.Filter AcceptAllFiles = new DirectoryStream.Filter() {
        @Override
        public boolean accept(Path entry) throws IOException {
            return true;
        }
    };

    @Override
    public long getVersion() {
        return version;
    }

    @Override
    public String toString() {
        return "TargetPathView{" +
                "path=" + path +
                ", version=" + version +
                '}';
    }

    @Override
    public String asMarkdown() {
        return "```\n" + toString() + "\n```\n";
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy