未验证 提交 6513ab15 编写于 作者: S Serge Rider 提交者: GitHub

Merge pull request #5907 from riednyko/#5654_sqldeveloper_json

SQL Developer connection import #5654
......@@ -17,7 +17,11 @@
package org.jkiss.dbeaver.ext.oracle.tools.sqldeveloper;
import com.google.gson.*;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.import_config.wizards.ConfigImportWizardPage;
import org.jkiss.dbeaver.ext.import_config.wizards.ImportConnectionInfo;
import org.jkiss.dbeaver.ext.import_config.wizards.ImportData;
......@@ -26,6 +30,7 @@ import org.jkiss.dbeaver.ext.oracle.Activator;
import org.jkiss.dbeaver.ext.oracle.OracleMessages;
import org.jkiss.dbeaver.ext.oracle.model.OracleConstants;
import org.jkiss.dbeaver.ext.oracle.model.dict.OracleConnectionType;
import org.jkiss.dbeaver.model.data.json.JSONUtils;
import org.jkiss.dbeaver.utils.RuntimeUtils;
import org.jkiss.utils.CommonUtils;
import org.jkiss.utils.xml.XMLException;
......@@ -33,24 +38,24 @@ import org.jkiss.utils.xml.XMLUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.File;
import java.io.FilenameFilter;
import java.util.LinkedHashMap;
import java.util.Map;
import java.io.*;
import java.util.*;
public class ConfigImportWizardPageSqlDeveloper extends ConfigImportWizardPage {
public static final String SQLD_HOME_FOLDER = "SQL Developer";
public static final String SQLD_CONFIG_FILE = "connections.xml";
public static final String SQLD_CONFIG_JSON_FILE = "connections.json";
public static final String SQLD_SYSCONFIG_FOLDER = "system";
public static final String SQLD_CONNECTIONS_FOLDER = "o.jdeveloper.db.connection";
private static final Log log = Log.getLog(ConfigImportWizardPageSqlDeveloper.class);
private final ImportDriverInfo oraDriver;
protected ConfigImportWizardPageSqlDeveloper()
{
protected ConfigImportWizardPageSqlDeveloper() {
super("SQLDeveloper");
setTitle("SQL Developer");
setDescription("Import Oracle SQL Developer connections");
......@@ -95,11 +100,182 @@ public class ConfigImportWizardPageSqlDeveloper extends ConfigImportWizardPage {
continue;
}
final File connectionFolder = connectionFolders[0];
final File connectionsJsonFile = new File(connectionFolder, SQLD_CONFIG_JSON_FILE);
final File connectionsFile = new File(connectionFolder, SQLD_CONFIG_FILE);
if (!connectionsFile.exists()) {
continue;
if (connectionsFile.exists()) {
parseConnections(connectionsFile, importData);
} else if (connectionsJsonFile.exists()) {
parseJsonConnections(connectionsJsonFile, importData);
}
}
}
public static class ConnectionDescription {
@SerializedName("name")
private String name;
@SerializedName("type")
private String type;
@SerializedName("info")
private ConnectionInfo info;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public ConnectionInfo getInfo() {
return info;
}
public void setInfo(ConnectionInfo info) {
this.info = info;
}
}
public static class ConnectionList {
@SerializedName("connections")
private List<ConnectionDescription> connections = new ArrayList();
public List<ConnectionDescription> getConnections() {
return connections;
}
}
public class ConnectionInfo {
@SerializedName("role")
private String role;
@SerializedName("hostname")
private String hostname;
@SerializedName("port")
private String port;
@SerializedName("sid")
private String sid;
@SerializedName("serviceName")
private String serviceName;
@SerializedName("user")
private String user;
@SerializedName("customUrl")
private String customUrl;
@SerializedName("OS_AUTHENTICATION")
private String OsAuth;
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getHost() {
return hostname;
}
public void setHost(String hostname) {
this.hostname = hostname;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getSID() {
return sid;
}
public void setSID(String sid) {
this.sid = sid;
}
public String getServiceName() {
return serviceName;
}
public void setServiceName(String serviceName) {
this.serviceName = serviceName;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getUrl() {
return customUrl;
}
public void setUrl(String customUrl) {
this.customUrl = customUrl;
}
public String getOsAuth() {
return OsAuth;
}
public void setOsAuth(String OS_AUTHENTICATION) {
this.OsAuth = OS_AUTHENTICATION;
}
}
private void parseJsonConnections(File connectionsFile, ImportData importData) throws JsonSyntaxException {
try {
Gson gson = new GsonBuilder().create();
try (Reader br = new BufferedReader(new FileReader(connectionsFile))) {
ConnectionList connResult = gson.fromJson(br, ConnectionList.class);
for (ConnectionDescription conn : connResult.getConnections()) {
if (CommonUtils.isEmpty(conn.getName())) {
continue;
}
ConnectionInfo info = conn.getInfo();
if (CommonUtils.isEmpty(info.getHost()) && CommonUtils.isEmpty(info.getUrl())) {
continue;
}
String dbName = CommonUtils.isEmpty(info.getSID()) ? info.getServiceName() : info.getSID();
ImportConnectionInfo connectionInfo = new ImportConnectionInfo(oraDriver, null, conn.getName(), info.getUrl(), info.getHost(), info.getPort(), dbName, info.getHost(), null);
if (!CommonUtils.isEmpty(info.getSID())) {
connectionInfo.setProviderProperty(OracleConstants.PROP_SID_SERVICE, OracleConnectionType.SID.name());
} else if (!CommonUtils.isEmpty(info.getServiceName())) {
connectionInfo.setProviderProperty(OracleConstants.PROP_SID_SERVICE, OracleConnectionType.SERVICE.name());
}
if (CommonUtils.toBoolean(info.getOsAuth())) {
connectionInfo.setUser(OracleConstants.OS_AUTH_PROP);
}
if (!CommonUtils.isEmpty(info.getRole())) {
connectionInfo.setProviderProperty(OracleConstants.PROP_INTERNAL_LOGON, info.getRole());
}
if (!CommonUtils.isEmpty(conn.getType())) {
connectionInfo.setProviderProperty(OracleConstants.PROP_CONNECTION_TYPE, conn.getType());
}
importData.addConnection(connectionInfo);
}
}
parseConnections(connectionsFile, importData);
} catch (Exception e) {
log.error("Configuration parse error", e);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册