Package com.dci.intellij.dbn.vfs

Source Code of com.dci.intellij.dbn.vfs.DatabaseContentFile

package com.dci.intellij.dbn.vfs;

import com.dci.intellij.dbn.common.DevNullStreams;
import com.dci.intellij.dbn.connection.ConnectionHandler;
import com.dci.intellij.dbn.connection.mapping.FileConnectionMappingProvider;
import com.dci.intellij.dbn.ddl.DDLFileType;
import com.dci.intellij.dbn.editor.DBContentType;
import com.dci.intellij.dbn.language.common.DBLanguage;
import com.dci.intellij.dbn.language.common.DBLanguageDialect;
import com.dci.intellij.dbn.language.psql.PSQLLanguage;
import com.dci.intellij.dbn.language.sql.SQLLanguage;
import com.dci.intellij.dbn.object.DBSchema;
import com.dci.intellij.dbn.object.DBView;
import com.dci.intellij.dbn.object.common.DBObject;
import com.dci.intellij.dbn.object.common.DBSchemaObject;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileSystem;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.swing.Icon;
import java.io.IOException;
import java.io.InputStream;

public abstract class DatabaseContentFile extends VirtualFile implements FileConnectionMappingProvider, DBVirtualFile {
    protected DatabaseEditableObjectFile databaseFile;
    protected DBContentType contentType;
    private FileType fileType;
    private boolean modified;
    private String name;
    private String path;
    private String url;

    public ConnectionHandler getActiveConnection() {
        return getObject().getConnectionHandler();
    }

    @Override
    public boolean isInLocalFileSystem() {
        return false;
    }

    public DBSchema getCurrentSchema() {
        return getObject().getSchema();
    }

    public DatabaseContentFile(DatabaseEditableObjectFile databaseFile, DBContentType contentType) {
        this.databaseFile = databaseFile;
        this.contentType = contentType;

        DBSchemaObject object = databaseFile.getObject();
        this.name = object.getName();
        this.path = DatabaseFileSystem.createPath(object, getContentType());
        this.url = DatabaseFileSystem.createUrl(object);

        DDLFileType ddlFileType = object.getDDLFileType(contentType);
        this.fileType = ddlFileType == null ? null : ddlFileType.getLanguageFileType();
    }

    public DatabaseEditableObjectFile getDatabaseFile() {
        return databaseFile;
    }

    public DBContentType getContentType() {
        return contentType;
    }

    public boolean isModified() {
        return modified;
    }

    public void setModified(boolean modified) {
        this.modified = modified;
    }

    @Nullable
    public DBSchemaObject getObject() {
        return databaseFile == null ? null : databaseFile.getObject();
    }

    @Override
    public ConnectionHandler getConnectionHandler() {
        return databaseFile.getConnectionHandler();
    }

    public DBLanguageDialect getLanguageDialect() {
        DBSchemaObject object = getObject();
        DBLanguage language =
                object instanceof DBView ?
                        SQLLanguage.INSTANCE :
                        PSQLLanguage.INSTANCE;
       
        return object == null ?
                language.getMainLanguageDialect() :
                object.getLanguageDialect(language);
    }

    /*********************************************************
     *                     VirtualFile                       *
     *********************************************************/
    @NotNull
    @NonNls
    public String getName() {
        return name;
    }

    @NotNull
    public FileType getFileType() {
        return fileType;
    }

    @NotNull
    public VirtualFileSystem getFileSystem() {
        return DatabaseFileSystem.getInstance();
    }

    @NotNull
    public String getPath() {
        return path;
    }

    @NotNull
    public String getUrl() {
        return url;
    }

    public Project getProject() {
        DBSchemaObject object = getObject();
        return object == null ? null : object.getProject();
    }

    public boolean isWritable() {
        return true;
    }

    public boolean isDirectory() {
        return false;
    }

    public boolean isValid() {
        return true;
    }

    @Nullable
    public VirtualFile getParent() {
        DBSchemaObject object = databaseFile.getObject();
        if (object != null) {
            DBObject parentObject = object.getParentObject();
            if (parentObject != null) {
                return parentObject.getVirtualFile();
            }
        }
        return null;
    }

    public Icon getIcon() {
        DBSchemaObject object = getObject();
        return object == null ? null : object.getOriginalIcon();
    }

    public VirtualFile[] getChildren() {
        return VirtualFile.EMPTY_ARRAY;
    }

    public long getTimeStamp() {
        return 0;
    }

    public void refresh(boolean b, boolean b1, Runnable runnable) {

    }

    public InputStream getInputStream() throws IOException {
        return DevNullStreams.INPUT_STREAM;
    }

    public long getModificationStamp() {
        return 1;
    }

    @Override
    public void dispose() {
        databaseFile = null;
    }
}
TOP

Related Classes of com.dci.intellij.dbn.vfs.DatabaseContentFile

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.