diff --git a/main/plugins/org.talend.designer.codegen/src/main/java/messages_ja.properties b/main/plugins/org.talend.designer.codegen/src/main/java/messages_ja.properties
index 867202e2a78..7f26ab2dc3d 100644
--- a/main/plugins/org.talend.designer.codegen/src/main/java/messages_ja.properties
+++ b/main/plugins/org.talend.designer.codegen/src/main/java/messages_ja.properties
@@ -10,7 +10,7 @@ CodeGenerator.getGraphicalNode2=------process.getGeneratingNodes()------
CodeGenerator.JET.TimeOut=JET\u306E\u521D\u671F\u5316\u51E6\u7406\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F
CodeGenerator.newLine=\n\n\n\n
CodeGenerator.Node.NotFound=\u73FE\u5728\u306E\u30D7\u30ED\u30BB\u30B9\u306B\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-CodeGenerator.Component.NotFound=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u6B20\u843D\u3057\u3066\u3044\u307E\u3059: {0}\u3002Studio\u3067 -D{1}=false\u3092\u4F7F\u3046\u3068\u3053\u306E\u30C1\u30A7\u30C3\u30AF\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u3001\u8B66\u544A\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u30ED\u30B0\u30D5\u30A1\u30A4\u30EB\u306B\u8A18\u9332\u3055\u308C\u307E\u3059\u3002
+CodeGenerator.Components.NotFound={0}: \u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u6B20\u843D\u3057\u3066\u3044\u307E\u3059: {1}\u3002Studio\u3067 -D{2}=false\u3092\u4F7F\u3046\u3068\u3053\u306E\u30C1\u30A7\u30C3\u30AF\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u3001\u8B66\u544A\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u30ED\u30B0\u30D5\u30A1\u30A4\u30EB\u306B\u8A18\u9332\u3055\u308C\u307E\u3059\u3002
JavaRoutineSynchronizer.UnsupportedOperation.Exception1=\u30E1\u30BD\u30C3\u30C9\u304C\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093\\: org.talend.designer.codegen.JavaRoutineSynchronizer line\\:49
JavaRoutineSynchronizer.UnsupportedOperation.Exception2=\u30E1\u30BD\u30C3\u30C9\u304C\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093\\: org.talend.designer.codegen.JavaRoutineSynchronizer line\\:58
JetSkeletonManager.unableLoad=\u30B9\u30B1\u30EB\u30C8\u30F3\u66F4\u65B0\u30AD\u30E3\u30C3\u30B7\u30E5\u30D5\u30A1\u30A4\u30EB\u3092\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093
diff --git a/main/plugins/org.talend.designer.codegen/src/main/java/messages_zh_CN.properties b/main/plugins/org.talend.designer.codegen/src/main/java/messages_zh_CN.properties
index 7366aa6132b..6d7272124ef 100644
--- a/main/plugins/org.talend.designer.codegen/src/main/java/messages_zh_CN.properties
+++ b/main/plugins/org.talend.designer.codegen/src/main/java/messages_zh_CN.properties
@@ -10,7 +10,7 @@ CodeGenerator.getGraphicalNode2=\u8FDB\u7A0B\u5F97\u5230\u751F\u6210\u8282\u70B9
CodeGenerator.JET.TimeOut=JET \u521D\u59CB\u5316\u8D85\u65F6
CodeGenerator.newLine=\n\n\n\n
CodeGenerator.Node.NotFound=\u5728\u5F53\u524D
-CodeGenerator.Component.NotFound=\u7EC4\u4EF6\u7F3A\u5931: {0}; \u5728 Studio \u6216\u547D\u4EE4\u884C\u4E2D\u4F7F\u7528 -D{1}=false \u53EF\u8DF3\u8FC7\u6B64\u9879\u68C0\u67E5\uFF0C\u540C\u65F6\u89E6\u53D1\u8B66\u544A\u6D88\u606F\u3002
+CodeGenerator.Components.NotFound={0}: \u7EC4\u4EF6\u7F3A\u5931: {1}; \u5728 Studio \u6216\u547D\u4EE4\u884C\u4E2D\u4F7F\u7528 -D{2}=false \u53EF\u8DF3\u8FC7\u6B64\u9879\u68C0\u67E5\uFF0C\u540C\u65F6\u89E6\u53D1\u8B66\u544A\u6D88\u606F\u3002
JavaRoutineSynchronizer.UnsupportedOperation.Exception1=\u65B9\u6CD5\u672A\u5B9E\u65BD\uFF1Aorg.talend.designer.codegen.JavaRoutineSynchronizer line:49
JavaRoutineSynchronizer.UnsupportedOperation.Exception2=\u65B9\u6CD5\u672A\u5B9E\u65BD\uFF1Aorg.talend.designer.codegen.JavaRoutineSynchronizer line:58
JetSkeletonManager.unableLoad=\u65E0\u6CD5\u52A0\u8F7D\u4E3B\u5E72\u66F4\u65B0\u7F13\u5B58\u6587\u4EF6
diff --git a/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_java.xml b/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_java.xml
index 7a7be895c38..5d49ef87800 100644
--- a/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_java.xml
+++ b/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_java.xml
@@ -257,6 +257,18 @@
+
+
+
+
+
+
+
""
"prompt=false"
+
+
+
+
+
+
+
+
+
+
false
@@ -854,12 +886,12 @@
-
-
+
-
+
+
diff --git a/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_main.javajet b/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_main.javajet
index 96678da4bf1..bee683f6f92 100644
--- a/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_main.javajet
+++ b/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_main.javajet
@@ -1997,12 +1997,51 @@ class RedshiftManager extends Manager {
public String getSpecificConnectionURL() {
return "\"jdbc:redshift://\" + " + host + " + \":\" + " + port + " + \"/\" + " + dbName;
}
+
+ public String getConnectionURL(){
+ boolean useStringProperties = "true".equals(ElementParameterParser.getValue(node, "__USE_STRING_PROPERTIES__"));
+ int driveVersion = "DRIVER_V2".equals(ElementParameterParser.getValue(node, "__REDSHIFT_DRIVER_VERSION__"))? 2 : 1;
+
+ if (getAdditionalParams() == null || "\"\"".equals(getAdditionalParams().trim()) || (!useStringProperties && driveVersion == 2) ){
+ return getSpecificConnectionURL();
+ }else{
+ return getSpecificConnectionURL() + " + \"" + getSeparator() + "\" + " + getAdditionalParams();
+ }
+ }
+
public String getConnection() {
+ boolean useStringProperties = "true".equals(ElementParameterParser.getValue(node, "__USE_STRING_PROPERTIES__"));
+ int driveVersion = "DRIVER_V2".equals(ElementParameterParser.getValue(node, "__REDSHIFT_DRIVER_VERSION__"))? 2 : 1;
StringBuilder javaCode = new StringBuilder();
if(useExistingConnection) {
javaCode.append(retrieveTable());
javaCode.append("java.sql.Connection conn_" + cid + " = (java.sql.Connection)globalMap.get(\"conn_" + connection + "\");");
- } else {
+ } else if(!useStringProperties && driveVersion == 2){
+
+ javaCode.append(retrieveTable());
+ javaCode.append("java.lang.Class jdbcclazz_" + cid + "= java.lang.Class.forName(\"" + getDriver()+ "\");\r\n");
+
+ newInstance(javaCode);
+
+ log4jCodeGenerateUtil.connect_begin();
+ String passwordFieldName = "__PASS__";
+ if(ElementParameterParser.canEncrypt(node, passwordFieldName)) {
+ javaCode.append("final String decryptedPassword_" + cid + "= routines.system.PasswordEncryptUtil.decryptPassword(" + ElementParameterParser.getEncryptedValue(node, passwordFieldName) + ");\r\n");
+ } else {
+ javaCode.append("final String decryptedPassword_" + cid + "= " + ElementParameterParser.getValue(node, passwordFieldName) + ";\r\n");
+ }
+ java.util.List> properties = (java.util.List>)ElementParameterParser.getObjectValue(node, "__ENTRY_PROPERTIES__");
+
+
+ javaCode.append("java.util.Properties atnParamsPrope_" + cid + "= new java.util.Properties();\r\n");
+ javaCode.append("atnParamsPrope_" + cid + ".put(\"user\",dbUser_"+ cid + ");\r\n");
+ javaCode.append("atnParamsPrope_" + cid + ".put(\"password\",decryptedPassword_" + cid + ");\r\n");
+ for(java.util.Map entry : properties){
+ javaCode.append("atnParamsPrope_" + cid + ".put(" + entry.get("KEY") + "," + entry.get("VALUE") + ");\r\n");
+ }
+ javaCode.append("java.sql.Connection conn_" + cid + " = java.sql.DriverManager.getConnection(url_" + cid + ", atnParamsPrope_" + cid + ");\r\n");
+
+ }else {
javaCode.append(super.getConnection());
}
return javaCode.toString();
@@ -2690,10 +2729,13 @@ if(columnList != null && columnList.size() > 0) {
<%
}
}
- log4jCodeGenerateUtil.close_begin();
+ if(!useExistingConnection){
+ log4jCodeGenerateUtil.close_begin();
+ %>
+ <%=manager.closeConnection()%>
+ <%log4jCodeGenerateUtil.close_end();
+ }
%>
- <%=manager.closeConnection()%>
- <%log4jCodeGenerateUtil.close_end();%>
globalMap.put("<%=cid%>_QUERY", "<%=manager.getCreateTableSQL(columnList)%>");
} catch(java.lang.Exception e) {
globalMap.put("<%=cid%>_ERROR_MESSAGE",e.getMessage());
diff --git a/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_messages.properties b/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_messages.properties
index 60dc8a096be..5c2606b3ccc 100644
--- a/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_messages.properties
+++ b/main/plugins/org.talend.designer.components.localprovider/components/tCreateTable/tCreateTable_messages.properties
@@ -137,3 +137,12 @@ ACCOUNT.NAME=Account
ROLE.NAME=Role
ENFORCE_DELIMITED_IDENTIFIERS.NAME=Enforce database delimited identifiers
UNLOGGED.NAME=Unlogged Table
+
+REDSHIFT_DRIVER_VERSION.NAME=Driver version
+REDSHIFT_DRIVER_VERSION.ITEM.DRIVER_V1=Driver v1
+REDSHIFT_DRIVER_VERSION.ITEM.DRIVER_V2=Driver v2
+
+USE_STRING_PROPERTIES.NAME=Use String JDBC parameters
+ENTRY_PROPERTIES.NAME=Additional JDBC Parameters
+ENTRY_PROPERTIES.ITEM.KEY=Key
+ENTRY_PROPERTIES.ITEM.VALUE=Value
\ No newline at end of file
diff --git a/main/plugins/org.talend.designer.components.localprovider/components/tELTOutput/tELTOutput_main.javajet b/main/plugins/org.talend.designer.components.localprovider/components/tELTOutput/tELTOutput_main.javajet
index ae668f5fdcc..81d5d78ff21 100644
--- a/main/plugins/org.talend.designer.components.localprovider/components/tELTOutput/tELTOutput_main.javajet
+++ b/main/plugins/org.talend.designer.components.localprovider/components/tELTOutput/tELTOutput_main.javajet
@@ -13,7 +13,7 @@ imports="
java.util.List
java.util.ArrayList
java.util.LinkedList
- java.util.StringJoiner
+ java.util.StringJoiner
java.util.Map
java.util.HashMap
"
@@ -80,6 +80,7 @@ skeleton="../templates/db_output_bulk.skeleton"
String dbuser = null;
boolean useExistingConn = false;
boolean dryRun = false;
+ boolean autoWrapColumnName = false;
if(previousNode != null) {
dryRun = ("true").equals(ElementParameterParser.getValue(previousNode, "__DRY_RUN__"));
if(!dryRun){
@@ -88,6 +89,7 @@ skeleton="../templates/db_output_bulk.skeleton"
dbuser = ElementParameterParser.getValue(previousNode, "__USER__");
useExistingConn = ("true").equals(ElementParameterParser.getValue(previousNode, "__USE_EXISTING_CONNECTION__"));
}
+ autoWrapColumnName = "true".equals(ElementParameterParser.getValue(previousNode, "__ACTIVE_DATABASE_DELIMITED_IDENTIFIERS__"));
}
boolean useWhereTable = ("true").equals(ElementParameterParser.getValue(node, "__USE_WHERE_CONDITIONS_TABLE__"));
@@ -140,7 +142,7 @@ skeleton="../templates/db_output_bulk.skeleton"
columnList = metadata.getListColumns();
}
}
-
+
if(columnList != null && columnList.size()>0){
StringBuilder insertColName = new StringBuilder();
@@ -148,6 +150,7 @@ skeleton="../templates/db_output_bulk.skeleton"
boolean isUpdate = "UPDATE".equals(dataAction);
List