Package com.dci.intellij.dbn.connection.config

Source Code of com.dci.intellij.dbn.connection.config.ConnectionSettings

package com.dci.intellij.dbn.connection.config;

import com.dci.intellij.dbn.common.options.CompositeConfiguration;
import com.dci.intellij.dbn.common.options.Configuration;
import com.dci.intellij.dbn.connection.ConnectionBundle;
import com.dci.intellij.dbn.connection.config.ui.ConnectionSettingsForm;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.WriteExternalException;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;

public class ConnectionSettings extends CompositeConfiguration<ConnectionSettingsForm> {
    private ConnectionDatabaseSettings databaseSettings;
    private ConnectionDetailSettings detailSettings;
    private ConnectionFilterSettings filterSettings;

    public ConnectionSettings(ConnectionBundle connectionBundle) {
        Project project = connectionBundle.getProject();
        databaseSettings = new GenericConnectionDatabaseSettings(connectionBundle);
        detailSettings = new ConnectionDetailSettings(project);
        filterSettings = new ConnectionFilterSettings(project);
    }

    public ConnectionSettings(GenericConnectionDatabaseSettings databaseSettings, ConnectionDetailSettings detailSettings, ConnectionFilterSettings filterSettings) {
        this.databaseSettings = databaseSettings;
        this.detailSettings = detailSettings;
        this.filterSettings = filterSettings;
    }

    public ConnectionDatabaseSettings getDatabaseSettings() {
        return databaseSettings;
    }

    public ConnectionDetailSettings getDetailSettings() {
        return detailSettings;
    }

    public ConnectionFilterSettings getFilterSettings() {
        return filterSettings;
    }

    @Override
    protected Configuration[] createConfigurations() {
        return new Configuration[] {databaseSettings, detailSettings, filterSettings};
    }

    @Override
    protected ConnectionSettingsForm createConfigurationEditor() {
        return new ConnectionSettingsForm(this);
    }

    @NotNull
    @Override
    public String getId() {
        return databaseSettings.getId();
    }

    public ConnectionSettings clone() {
        try {
            Element connectionElement = new Element("Connection");
            writeConfiguration(connectionElement);
            ConnectionSettings clone = new ConnectionSettings(databaseSettings.getConnectionBundle());
            clone.readConfiguration(connectionElement);
            clone.getDatabaseSettings().setConnectivityStatus(databaseSettings.getConnectivityStatus());
            clone.getDatabaseSettings().generateNewId();
            return clone;
        } catch (Exception e) {
        }
        return null;
    }


    /*********************************************************
     *                     Configuration                     *
     *********************************************************/
    public void readConfiguration(Element element) throws InvalidDataException {
        readConfiguration(element, detailSettings);
        readConfiguration(element, filterSettings);
        databaseSettings.readConfiguration(element);
    }

    public void writeConfiguration(Element element) throws WriteExternalException {
        writeConfiguration(element, detailSettings);
        writeConfiguration(element, filterSettings);
        databaseSettings.writeConfiguration(element);
    }
}
TOP

Related Classes of com.dci.intellij.dbn.connection.config.ConnectionSettings

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.