mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
CB-348 Origin details
This commit is contained in:
@@ -188,6 +188,7 @@ type ConnectionInfo {
|
||||
connected: Boolean!
|
||||
provided: Boolean!
|
||||
readOnly: Boolean!
|
||||
useUrl: Boolean!
|
||||
saveCredentials: Boolean!
|
||||
|
||||
connectTime: String
|
||||
@@ -212,6 +213,7 @@ type ConnectionOrigin {
|
||||
displayName: String!
|
||||
icon: String
|
||||
configuration: Object
|
||||
details: [ObjectPropertyInfo!]
|
||||
}
|
||||
|
||||
# Configuration of particular connection. Used for new connection create. Includes auth info
|
||||
|
||||
@@ -10,10 +10,17 @@ type ObjectDescriptor {
|
||||
}
|
||||
|
||||
input ObjectPropertyFilter {
|
||||
ids: [String]
|
||||
features: [String]
|
||||
categories: [String]
|
||||
dataTypes: [String]
|
||||
ids: [String!]
|
||||
features: [String!]
|
||||
categories: [String!]
|
||||
dataTypes: [String!]
|
||||
}
|
||||
|
||||
type ObjectDetails {
|
||||
id: Int
|
||||
displayName: String
|
||||
description: String
|
||||
value: Object
|
||||
}
|
||||
|
||||
type DatabaseObjectInfo {
|
||||
|
||||
+1
-1
@@ -227,7 +227,7 @@ public class WebConnectionInfo {
|
||||
|
||||
@Property
|
||||
public WebConnectionOriginInfo getOrigin() {
|
||||
return new WebConnectionOriginInfo(dataSourceContainer.getOrigin());
|
||||
return new WebConnectionOriginInfo(session, dataSourceContainer, dataSourceContainer.getOrigin());
|
||||
}
|
||||
|
||||
@Property
|
||||
|
||||
+28
-1
@@ -16,11 +16,20 @@
|
||||
*/
|
||||
package io.cloudbeaver.model;
|
||||
|
||||
import io.cloudbeaver.DBWebException;
|
||||
import io.cloudbeaver.WebServiceUtils;
|
||||
import io.cloudbeaver.model.session.WebSession;
|
||||
import org.jkiss.code.NotNull;
|
||||
import org.jkiss.code.Nullable;
|
||||
import org.jkiss.dbeaver.DBException;
|
||||
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
|
||||
import org.jkiss.dbeaver.model.DBPDataSourceOrigin;
|
||||
import org.jkiss.dbeaver.model.DBPObject;
|
||||
import org.jkiss.dbeaver.model.meta.Property;
|
||||
import org.jkiss.dbeaver.runtime.properties.ObjectPropertyDescriptor;
|
||||
import org.jkiss.dbeaver.runtime.properties.PropertyCollector;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -28,9 +37,13 @@ import java.util.Map;
|
||||
*/
|
||||
public class WebConnectionOriginInfo {
|
||||
|
||||
private final WebSession session;
|
||||
private final DBPDataSourceContainer dataSourceContainer;
|
||||
private final DBPDataSourceOrigin origin;
|
||||
|
||||
public WebConnectionOriginInfo(DBPDataSourceOrigin origin) {
|
||||
public WebConnectionOriginInfo(WebSession session, DBPDataSourceContainer dataSourceContainer, DBPDataSourceOrigin origin) {
|
||||
this.session = session;
|
||||
this.dataSourceContainer = dataSourceContainer;
|
||||
this.origin = origin;
|
||||
}
|
||||
|
||||
@@ -54,4 +67,18 @@ public class WebConnectionOriginInfo {
|
||||
return origin.getConfiguration();
|
||||
}
|
||||
|
||||
@Property
|
||||
public WebPropertyInfo[] getDetails() throws DBWebException {
|
||||
try {
|
||||
DBPObject details = origin.getDataSourceDetails(session.getProgressMonitor(), dataSourceContainer);
|
||||
PropertyCollector propertyCollector = new PropertyCollector(details, false);
|
||||
propertyCollector.collectProperties();
|
||||
return Arrays.stream(propertyCollector.getProperties())
|
||||
.filter(p -> !(p instanceof ObjectPropertyDescriptor && ((ObjectPropertyDescriptor) p).isHidden()))
|
||||
.map(p -> new WebPropertyInfo(session, p)).toArray(WebPropertyInfo[]::new);
|
||||
} catch (DBException e) {
|
||||
throw new DBWebException("Error reading origin details", e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user