提交 b3c52838 编写于 作者: J jurgen

FB and Postgre meta model.

上级 bdb7d434
......@@ -22,7 +22,7 @@ package org.jkiss.dbeaver.ext.firebird;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.ext.firebird.model.FireBirdProcedure;
import org.jkiss.dbeaver.ext.generic.model.GenericProcedure;
import org.jkiss.dbeaver.ext.generic.model.GenericTable;
import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
......@@ -38,7 +38,7 @@ public class FireBirdUtils {
static final Log log = LogFactory.getLog(FireBirdUtils.class);
public static String getProcedureSource(DBRProgressMonitor monitor, FireBirdProcedure procedure)
public static String getProcedureSource(DBRProgressMonitor monitor, GenericProcedure procedure)
throws DBException
{
JDBCSession session = procedure.getDataSource().openSession(monitor, DBCExecutionPurpose.META, "Load procedure source code");
......
......@@ -41,23 +41,12 @@ public class FireBirdMetaModel extends GenericMetaModel
super(cfg);
}
protected GenericProcedure createProcedureImpl(
GenericStructContainer container,
String procedureName,
String specificName,
String remarks,
DBSProcedureType procedureType)
{
return new FireBirdProcedure(
container,
procedureName,
specificName,
remarks,
procedureType);
}
public String getViewDDL(DBRProgressMonitor monitor, GenericTable sourceObject) throws DBException {
return FireBirdUtils.getViewSource(monitor, sourceObject);
}
@Override
public String getProcedureDDL(DBRProgressMonitor monitor, GenericProcedure sourceObject) throws DBException {
return FireBirdUtils.getProcedureSource(monitor, sourceObject);
}
}
/*
* Copyright (C) 2010-2014 Serge Rieder
* serge@jkiss.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.jkiss.dbeaver.ext.firebird.model;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.ext.firebird.FireBirdUtils;
import org.jkiss.dbeaver.ext.generic.model.GenericProcedure;
import org.jkiss.dbeaver.ext.generic.model.GenericStructContainer;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.rdb.DBSProcedureType;
/**
* FireBirdProcedure
*/
public class FireBirdProcedure extends GenericProcedure
{
private String sourceDeclaration;
public FireBirdProcedure(GenericStructContainer container, String procedureName, String specificName, String description, DBSProcedureType procedureType) {
super(container, procedureName, specificName, description, procedureType);
}
@Override
@Property(hidden = true, editable = true, updatable = true, order = -1)
public String getSource(DBRProgressMonitor monitor) throws DBException
{
if (sourceDeclaration == null && monitor != null) {
sourceDeclaration = FireBirdUtils.getProcedureSource(monitor, this);
}
return sourceDeclaration;
}
}
......@@ -53,6 +53,7 @@ public class GenericProcedure extends AbstractProcedure<GenericDataSource, Gener
private String specificName;
private DBSProcedureType procedureType;
private List<GenericProcedureParameter> columns;
private String source;
public GenericProcedure(
GenericStructContainer container,
......@@ -221,6 +222,9 @@ public class GenericProcedure extends AbstractProcedure<GenericDataSource, Gener
@Override
public String getSource(DBRProgressMonitor monitor) throws DBException {
return null;
if (source == null) {
source = getDataSource().getMetaModel().getProcedureDDL(monitor, this);
}
return source;
}
}
......@@ -166,4 +166,8 @@ public class GenericMetaModel {
return "";
}
public String getProcedureDDL(DBRProgressMonitor monitor, GenericProcedure sourceObject) throws DBException {
return "";
}
}
......@@ -27,11 +27,17 @@ import org.jkiss.dbeaver.ext.generic.model.GenericProcedure;
import org.jkiss.dbeaver.ext.generic.model.GenericStructContainer;
import org.jkiss.dbeaver.ext.generic.model.GenericTable;
import org.jkiss.dbeaver.ext.generic.model.meta.GenericMetaModel;
import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.sql.SQLUtils;
import org.jkiss.dbeaver.model.struct.rdb.DBSProcedureType;
import java.sql.SQLException;
/**
* postgresqlDataSource
* PostgreMetaModel
*/
public class PostgreMetaModel extends GenericMetaModel
{
......@@ -41,23 +47,19 @@ public class PostgreMetaModel extends GenericMetaModel
super(cfg);
}
protected GenericProcedure createProcedureImpl(
GenericStructContainer container,
String procedureName,
String specificName,
String remarks,
DBSProcedureType procedureType)
{
return new PostgreProcedure(
container,
procedureName,
specificName,
remarks,
procedureType);
}
public String getViewDDL(DBRProgressMonitor monitor, GenericTable sourceObject) throws DBException {
return PostgreUtils.getViewSource(monitor, sourceObject);
JDBCSession session = sourceObject.getDataSource().openSession(monitor, DBCExecutionPurpose.META, "Read view definition");
try {
return JDBCUtils.queryString(session, "SELECT definition FROM PG_CATALOG.PG_VIEWS WHERE SchemaName=? and ViewName=?", sourceObject.getContainer().getName(), sourceObject.getName());
} catch (SQLException e) {
throw new DBException(e, sourceObject.getDataSource());
} finally {
session.close();
}
}
@Override
public String getProcedureDDL(DBRProgressMonitor monitor, GenericProcedure sourceObject) throws DBException {
return super.getProcedureDDL(monitor, sourceObject);
}
}
......@@ -18,12 +18,8 @@
*/
package org.jkiss.dbeaver.ext.postgresql.model;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.ext.postgresql.PostgreUtils;
import org.jkiss.dbeaver.ext.generic.model.GenericProcedure;
import org.jkiss.dbeaver.ext.generic.model.GenericStructContainer;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.rdb.DBSProcedureType;
/**
......@@ -32,20 +28,8 @@ import org.jkiss.dbeaver.model.struct.rdb.DBSProcedureType;
public class PostgreProcedure extends GenericProcedure
{
private String sourceDeclaration;
public PostgreProcedure(GenericStructContainer container, String procedureName, String specificName, String description, DBSProcedureType procedureType) {
super(container, procedureName, specificName, description, procedureType);
}
@Override
@Property(hidden = true, editable = true, updatable = true, order = -1)
public String getSource(DBRProgressMonitor monitor) throws DBException
{
if (sourceDeclaration == null && monitor != null) {
sourceDeclaration = PostgreUtils.getProcedureSource(monitor, this);
}
return sourceDeclaration;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册