Package com.dci.intellij.dbn.common.util

Source Code of com.dci.intellij.dbn.common.util.VirtualFileUtil

package com.dci.intellij.dbn.common.util;

import com.dci.intellij.dbn.vfs.DBVirtualFile;
import com.dci.intellij.dbn.vfs.DatabaseFileSystem;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.io.ReadOnlyAttributeUtil;

import javax.swing.Icon;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class VirtualFileUtil {

    public static Icon getIcon(VirtualFile virtualFile) {
        if (virtualFile instanceof DBVirtualFile) {
            DBVirtualFile file = (DBVirtualFile) virtualFile;
            return file.getIcon();
        }
        return virtualFile.getFileType().getIcon();
    }

    public static boolean isDatabaseFileSystem(VirtualFile file) {
        return file.getFileSystem() == DatabaseFileSystem.getInstance();
    }

    public static boolean isLocalFileSystem(VirtualFile file) {
        return file.isInLocalFileSystem();
    }

    public static boolean isVirtualFileSystem(VirtualFile file) {
        return !isDatabaseFileSystem(file) && !isLocalFileSystem(file);
    }   

    public static VirtualFile ioFileToVirtualFile(File file) {
        return LocalFileSystem.getInstance().findFileByIoFile(file);
    }

    public static void setReadOnlyAttribute(VirtualFile file, boolean readonly) {
        try {
            ReadOnlyAttributeUtil.setReadOnlyAttribute(file, readonly);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void setReadOnlyAttribute(String path, boolean readonly) {
        try {
            ReadOnlyAttributeUtil.setReadOnlyAttribute(path, readonly);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static VirtualFile[] lookupFilesForName(Project project, String name) {
        ProjectRootManager rootManager = ProjectRootManager.getInstance(project);
        VirtualFile[] contentRoots = rootManager.getContentRoots();
        return lookupFilesForName(contentRoots, name);
    }

    public static VirtualFile[] lookupFilesForName(Module module, String name) {
        ProjectRootManager rootManager = ProjectRootManager.getInstance(module.getProject());
        VirtualFile[] contentRoots = rootManager.getContentRoots();
        return lookupFilesForName(contentRoots, name);
    }

    public static VirtualFile[] lookupFilesForName(VirtualFile[] roots, String name) {
        List<VirtualFile> bucket = new ArrayList<VirtualFile>();
        for (VirtualFile root: roots) {
            collectFilesForName(root, name, bucket);
        }
        return bucket.toArray(new VirtualFile[bucket.size()]);
    }

    private static void collectFilesForName(VirtualFile root, String name, List<VirtualFile> bucket) {
        for (VirtualFile virtualFile: root.getChildren()) {
            boolean fileIgnored = FileTypeManager.getInstance().isFileIgnored(virtualFile.getName());
            if (!fileIgnored) {
                if (virtualFile.isDirectory() ) {
                    collectFilesForName(virtualFile, name, bucket);
                } else {
                    if (virtualFile.getName().equalsIgnoreCase(name)) {
                        bucket.add(virtualFile);
                    }
                }
            }
        }
    }
}
TOP

Related Classes of com.dci.intellij.dbn.common.util.VirtualFileUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.