/* * DBeaver - Universal Database Manager * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) * * 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 * * http://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 org.jkiss.dbeaver.model; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSInstance; /** * Data Source. * Root object of all database structure and data objects. * Usually represents a database server. * * Note: do not store direct references on datasource objects in any GUI components - * datasource instance may be refreshed at any moment. Obtain references on datasource only * from DBSObject or DBPContextProvider interfaces. */ public interface DBPDataSource extends DBSInstance { /** * Datasource container * @return container implementation */ @NotNull DBPDataSourceContainer getContainer(); /** * Datasource information/options * Info SHOULD be read at datasource initialization stage and should be cached and available * at the moment of invocation of this function. * @return datasource info. */ @NotNull DBPDataSourceInfo getInfo(); /** * Reads base metadata from remote database or do any necessarily initialization routines. * @throws DBException on any DB error * @param monitor progress monitor */ void initialize(@NotNull DBRProgressMonitor monitor) throws DBException; }