Compare commits
214 Commits
maintenanc
...
patch/5.5.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d41682b4a | ||
|
|
106c695060 | ||
|
|
afd9a6c56b | ||
|
|
c513c98236 | ||
|
|
1d5252c550 | ||
|
|
f35625e85a | ||
|
|
f802f0b758 | ||
|
|
f28b11b1a3 | ||
|
|
465aab2360 | ||
|
|
fed4759fe1 | ||
|
|
5976e72b49 | ||
|
|
2b75569380 | ||
|
|
5834c07bea | ||
|
|
208f7fc83e | ||
|
|
baab68eb1e | ||
|
|
4b2c568319 | ||
|
|
e190a5f9c8 | ||
|
|
9202b29530 | ||
|
|
95d4686f5f | ||
|
|
e43504c1e7 | ||
|
|
7bf2a71a76 | ||
|
|
45302a3aba | ||
|
|
809bce4541 | ||
|
|
e9f4cbc03a | ||
|
|
62df192236 | ||
|
|
505a839810 | ||
|
|
e85495c525 | ||
|
|
35440834fb | ||
|
|
f12727922d | ||
|
|
c204e8e185 | ||
|
|
99db02c243 | ||
|
|
509fba3335 | ||
|
|
fe8acbae92 | ||
|
|
1686ee5be2 | ||
|
|
9f3bf52a68 | ||
|
|
b0aea33520 | ||
|
|
0561cad3bc | ||
|
|
fb226156ff | ||
|
|
53444e429c | ||
|
|
9eb9d15a6c | ||
|
|
a645e59e3d | ||
|
|
3d592205ab | ||
|
|
cfb6993fcd | ||
|
|
df16c70e69 | ||
|
|
da0d7bd1cc | ||
|
|
794caf8c6c | ||
|
|
7a6ccb2366 | ||
|
|
c9f09384bf | ||
|
|
469ee32111 | ||
|
|
b0e5e9a0fa | ||
|
|
02bc637529 | ||
|
|
2eaecae49f | ||
|
|
80430a3dd6 | ||
|
|
11bf320e70 | ||
|
|
e9f88d3313 | ||
|
|
1c6f8542d7 | ||
|
|
8d3b0867b0 | ||
|
|
062c91297d | ||
|
|
7b373cd9df | ||
|
|
159ab9f981 | ||
|
|
e6d1dfb530 | ||
|
|
a64db65fdb | ||
|
|
9a95b3aae6 | ||
|
|
88df154117 | ||
|
|
585a198b7f | ||
|
|
7f862712bc | ||
|
|
717f74dd8a | ||
|
|
8a370f3641 | ||
|
|
86790ff621 | ||
|
|
b6830a6ba2 | ||
|
|
033f6a84bb | ||
|
|
be22f14104 | ||
|
|
86c6f96350 | ||
|
|
c38b8e752a | ||
|
|
9342b968e3 | ||
|
|
f7be7b8bbd | ||
|
|
0d666ae58c | ||
|
|
67dbf5e7c5 | ||
|
|
348d956c33 | ||
|
|
eb7d8a0f1b | ||
|
|
f4d46d2045 | ||
|
|
f381a7f26a | ||
|
|
7a09eff554 | ||
|
|
c9fa3c3afc | ||
|
|
4aa89418cb | ||
|
|
cd3e9f59ed | ||
|
|
8da1e60dda | ||
|
|
402d094dd7 | ||
|
|
f36c02c8d3 | ||
|
|
7bfb9b1732 | ||
|
|
2b3cbc27f1 | ||
|
|
eed17c2430 | ||
|
|
bab72882fd | ||
|
|
37839b4ba5 | ||
|
|
950fa10187 | ||
|
|
5c2e36af1a | ||
|
|
257a355221 | ||
|
|
c52cd60499 | ||
|
|
d59c326fa2 | ||
|
|
f2e64716d0 | ||
|
|
814652e8b6 | ||
|
|
a38a115342 | ||
|
|
2afe4e814c | ||
|
|
076f4af3b2 | ||
|
|
3d627f8c7d | ||
|
|
fe020516e1 | ||
|
|
15eb6a75b1 | ||
|
|
a274a01b51 | ||
|
|
e9b125137c | ||
|
|
715a41790e | ||
|
|
e00dec641c | ||
|
|
2fee734607 | ||
|
|
4a88151f0b | ||
|
|
49d4953d63 | ||
|
|
619557cdf0 | ||
|
|
f7a2496b37 | ||
|
|
d4050cf8eb | ||
|
|
ee4b44f33f | ||
|
|
3d833aa131 | ||
|
|
36e479f2ed | ||
|
|
923800b725 | ||
|
|
631ecba267 | ||
|
|
6f25e08963 | ||
|
|
b124c9dd5c | ||
|
|
fe6d1e6dd9 | ||
|
|
6ad5227165 | ||
|
|
f735b9b1a7 | ||
|
|
3352bcf8db | ||
|
|
726dde67df | ||
|
|
da6cf54781 | ||
|
|
74955b201b | ||
|
|
e620c9fa6d | ||
|
|
c9a02c2b70 | ||
|
|
9fc8e76d9e | ||
|
|
13a6bc5642 | ||
|
|
184a0173ae | ||
|
|
0b5d233989 | ||
|
|
53e0ee8517 | ||
|
|
f10265b81b | ||
|
|
8c3e263d19 | ||
|
|
5140110668 | ||
|
|
1e8c645eb7 | ||
|
|
a3a5d8ac79 | ||
|
|
2a3b9ad92f | ||
|
|
8b2045cdc3 | ||
|
|
8db4d870c1 | ||
|
|
346d2dc0a3 | ||
|
|
05caf05e08 | ||
|
|
46b34b54f9 | ||
|
|
69736756d0 | ||
|
|
03b0fbcf89 | ||
|
|
965d49dab9 | ||
|
|
4aaa57f055 | ||
|
|
7090837293 | ||
|
|
fe765e9289 | ||
|
|
9c9113d875 | ||
|
|
d8b0c8dd4d | ||
|
|
6f26ae4044 | ||
|
|
780f425a3f | ||
|
|
4e6730f94d | ||
|
|
be7b961654 | ||
|
|
a644f1164b | ||
|
|
d6e009fd28 | ||
|
|
4234375bdd | ||
|
|
a09e4e2eb9 | ||
|
|
975299fabb | ||
|
|
fc07231bf5 | ||
|
|
7e855cd2c7 | ||
|
|
a88349cd97 | ||
|
|
fd20581cee | ||
|
|
bfbd9b1982 | ||
|
|
99d305b8f9 | ||
|
|
ed5171c3cf | ||
|
|
732490c6fd | ||
|
|
884e94a4c5 | ||
|
|
2e1213257c | ||
|
|
9532c1f396 | ||
|
|
36f7d143a7 | ||
|
|
a6570a1e0d | ||
|
|
d977762adb | ||
|
|
c044d112e4 | ||
|
|
ac9a198859 | ||
|
|
7965f47e1c | ||
|
|
c737d115cf | ||
|
|
b305b990df | ||
|
|
908d610119 | ||
|
|
770d0f8d70 | ||
|
|
aec8f5cd6b | ||
|
|
7bb2033dcd | ||
|
|
8412e36599 | ||
|
|
a9995bc365 | ||
|
|
aa44c6cc53 | ||
|
|
075f157182 | ||
|
|
aec9dddd1c | ||
|
|
612a565fc5 | ||
|
|
bf0d0eeda5 | ||
|
|
2ca54dba91 | ||
|
|
c83f908281 | ||
|
|
7c965172c7 | ||
|
|
a9be320c46 | ||
|
|
e44aeeb7b7 | ||
|
|
6f8908ca4e | ||
|
|
8dc8778d6b | ||
|
|
03c5a4e5b2 | ||
|
|
7985ec43aa | ||
|
|
7d9e0351b2 | ||
|
|
c6dabb9c31 | ||
|
|
19a57660c6 | ||
|
|
6a5ab218e8 | ||
|
|
fac04acad1 | ||
|
|
7c5cf7ba4c | ||
|
|
2654b003ad | ||
|
|
2e20059c9b | ||
|
|
3c60e6a7ae |
@@ -61,3 +61,25 @@ RegisterManagement.passwordWrong=The password you entered is incorrect.
|
||||
RegisterWizardPage.proxyUser=Proxy User
|
||||
RegisterWizardPage.proxyPassword=Proxy Password
|
||||
RegisterManagement.wrongUserOrPassword=Username or password is incorrect.
|
||||
TalendForgeDialog.newProjectTitle=Connect to TalendForge
|
||||
TalendForgeDialog.labelTitle=Connect your studio to TalendForge,the Talend online community.
|
||||
TalendForgeDialog.labelMessageOne=Download new components and connectors from Talend Exchange
|
||||
TalendForgeDialog.labelMessageTwo=Access the most recent documentation and tech articles from \nthe Talend social knowledgebase.
|
||||
TalendForgeDialog.labelMessageThree=See the latest messages in the Talend discussion forums
|
||||
TalendForgeDialog.createLabel=Create an account
|
||||
TalendForgeDialog.userNameLabel=Username:
|
||||
TalendForgeDialog.userNameLabel.tooltip=Username is needed
|
||||
TalendForgeDialog.emailLabel=Email:
|
||||
TalendForgeDialog.emailLabel.tooltip=Please input a valid email
|
||||
TalendForgeDialog.countryLabel=Country:
|
||||
TalendForgeDialog.link=(or connect on existing account):
|
||||
TalendForgeDialog.passwordLabel=Password:
|
||||
TalendForgeDialog.passwordLabel.tooltip=Password is needed
|
||||
TalendForgeDialog.passwordAgainLabel=Password(again):
|
||||
TalendForgeDialog.passwordAgainLabel.tooltip=Password(again) must be the same as Password
|
||||
TalendForgeDialog.agreeButton=I Agree to the TalendForge Terms of Use
|
||||
TalendForgeDialog.improveButton=I want to help to improve Talend by sharing anonymous usage statistics
|
||||
TalendForgeDialog.readMore=(read more...)
|
||||
TalendForgeDialog.createAccountButton=Create Account
|
||||
TalendForgeDialog.proxySettingButton=Proxy settings...
|
||||
TalendForgeDialog.skipButton=Skip
|
||||
|
||||
BIN
main/plugins/org.talend.common.ui.runtime/icons1/map.gif
Normal file
BIN
main/plugins/org.talend.common.ui.runtime/icons1/map.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
BIN
main/plugins/org.talend.common.ui.runtime/icons1/reduce.gif
Normal file
BIN
main/plugins/org.talend.common.ui.runtime/icons1/reduce.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
@@ -176,6 +176,8 @@ public enum ECoreImage implements IImage {
|
||||
EXCHNAGEIMAGEMISSING("/icons/component_missing.gif"), //$NON-NLS-1$
|
||||
STATUS_OK("/icons/ok.png"), //$NON-NLS-1$
|
||||
MRGREEBAR("/icons1/mrGreeBar.gif"), //$NON-NLS-1$
|
||||
MRMAP("/icons1/map.gif"), //$NON-NLS-1$
|
||||
MRREDUCE("/icons1/reduce.gif"), //$NON-NLS-1$
|
||||
MRREDBAR("/icons1/mrRedBar.gif"), //$NON-NLS-1$
|
||||
MRGRAYBAR("/icons1/mrGrayBar.gif"), //$NON-NLS-1$
|
||||
|
||||
|
||||
@@ -60,9 +60,9 @@ public class PasswordEncryptUtil {
|
||||
}
|
||||
|
||||
private static SecretKey passwordKey = null;
|
||||
|
||||
|
||||
private static String CHARSET = "UTF-8";
|
||||
|
||||
|
||||
private static SecretKey getSecretKeyUTF8() throws Exception {
|
||||
if (passwordKey == null) {
|
||||
byte rawKeyData[] = rawKey.getBytes(CHARSET);
|
||||
@@ -72,20 +72,19 @@ public class PasswordEncryptUtil {
|
||||
}
|
||||
return passwordKey;
|
||||
}
|
||||
|
||||
|
||||
public static String encryptPasswordHex(String input) throws Exception {
|
||||
if (input == null || input.length() == 0) {
|
||||
if (input == null) {
|
||||
return input;
|
||||
}
|
||||
SecretKey key = getSecretKeyUTF8();
|
||||
Cipher c = Cipher.getInstance("DES"); //$NON-NLS-1$
|
||||
c.init(Cipher.ENCRYPT_MODE, key, secureRandom);
|
||||
byte[] cipherByte = c.doFinal(input.getBytes(CHARSET));//$NON-NLS-1$
|
||||
byte[] cipherByte = c.doFinal(input.getBytes(CHARSET));
|
||||
String dec = Hex.encodeHexString(cipherByte);
|
||||
return dec;
|
||||
}
|
||||
|
||||
|
||||
public static String decryptPassword(String input) throws Exception, BadPaddingException {
|
||||
if (input == null || input.length() == 0) {
|
||||
return input;
|
||||
|
||||
@@ -13,39 +13,45 @@
|
||||
package org.talend.commons.utils.database;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
/**
|
||||
* created by zshen on Apr 12, 2013 Detailled comment
|
||||
*
|
||||
*/
|
||||
public class AS400DatabaseMetaData extends PackageFakeDatabaseMetadata {
|
||||
|
||||
private static final String[] TABLE_META = {
|
||||
"TABLE_TYPE", "TABLE_NAME", "SYSTEM_TABLE_NAME", "TABLE_SCHEMA", "SYSTEM_TABLE_SCHEMA" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
|
||||
|
||||
private String T = "T";//$NON-NLS-1$
|
||||
|
||||
private String V = "V";//$NON-NLS-1$
|
||||
|
||||
private String S = "S";//$NON-NLS-1$
|
||||
|
||||
private String A = "A";//$NON-NLS-1$
|
||||
|
||||
private String TABLE = "TABLE"; //$NON-NLS-1$
|
||||
|
||||
private String VIEW = "VIEW"; //$NON-NLS-1$
|
||||
|
||||
private String SYNONYM = "SYNONYM"; //$NON-NLS-1$
|
||||
|
||||
private String ALIAS = "ALIAS"; //$NON-NLS-1$
|
||||
// private static final String[] TABLE_META = {
|
||||
// "ID", "TABLE_SCHEM", "TABLE_NAME", "TABLE_TYPE", "REMARKS", "TABLE_NAME", "SYSTEM_TABLE_NAME", "TABLE_SCHEMA", "SYSTEM_TABLE_SCHEMA" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
|
||||
|
||||
private static final String[] TABLE_META = {
|
||||
"TABLE_TYPE", "TABLE_NAME", "SYSTEM_TABLE_NAME", "TABLE_SCHEMA", "SYSTEM_TABLE_SCHEMA" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
|
||||
|
||||
private String T = "T";//$NON-NLS-1$
|
||||
|
||||
private String V = "V";//$NON-NLS-1$
|
||||
|
||||
private String S = "S";//$NON-NLS-1$
|
||||
|
||||
private String A = "A";//$NON-NLS-1$
|
||||
|
||||
private String P = "P";//$NON-NLS-1$
|
||||
|
||||
private String TABLE = "TABLE"; //$NON-NLS-1$
|
||||
|
||||
private String EXTERNAL_TABLE = "EXTERNAL_TABLE"; //$NON-NLS-1$
|
||||
|
||||
private String VIEW = "VIEW"; //$NON-NLS-1$
|
||||
|
||||
private String SYNONYM = "SYNONYM"; //$NON-NLS-1$
|
||||
|
||||
private String ALIAS = "ALIAS"; //$NON-NLS-1$
|
||||
|
||||
public AS400DatabaseMetaData(Connection conn) throws SQLException {
|
||||
super(conn);
|
||||
@@ -123,9 +129,9 @@ public class AS400DatabaseMetaData extends PackageFakeDatabaseMetadata {
|
||||
String table_name = rs.getString("TABLE_NAME"); //$NON-NLS-1$
|
||||
String system_table_name = rs.getString("SYSTEM_TABLE_NAME"); //$NON-NLS-1$
|
||||
String table_schema = rs.getString("TABLE_SCHEMA"); //$NON-NLS-1$
|
||||
String system_table_schema = rs.getString("SYSTEM_TABLE_SCHEMA");
|
||||
String system_table_schema = rs.getString("SYSTEM_TABLE_SCHEMA"); //$NON-NLS-1$
|
||||
|
||||
String[] r = new String[] { type, table_name, system_table_name, table_schema, system_table_schema }; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
String[] r = new String[] { type, table_name, system_table_name, table_schema, system_table_schema };
|
||||
list.add(r);
|
||||
}
|
||||
|
||||
@@ -138,11 +144,11 @@ public class AS400DatabaseMetaData extends PackageFakeDatabaseMetadata {
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
|
||||
AS400ResultSet tableResultSet = new AS400ResultSet();
|
||||
tableResultSet.setMetadata(TABLE_META);
|
||||
tableResultSet.setData(list);
|
||||
return tableResultSet;
|
||||
// return super.getTables(catalog, schemaPattern, tableNamePattern, types);
|
||||
}
|
||||
|
||||
private String getTypeNameType(String typeName) {
|
||||
@@ -187,6 +193,8 @@ public class AS400DatabaseMetaData extends PackageFakeDatabaseMetadata {
|
||||
result = S;
|
||||
} else if (ALIAS.equals(typeName)) {
|
||||
result = A;
|
||||
} else if (EXTERNAL_TABLE.equals(typeName)) {
|
||||
result = P;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
@@ -27,6 +28,10 @@ import org.apache.log4j.Logger;
|
||||
*/
|
||||
public class SybaseDatabaseMetaData extends PackageFakeDatabaseMetadata {
|
||||
|
||||
private static final String[] TABLE_META = { "ID", "TABLE_SCHEM", "TABLE_NAME", "TABLE_TYPE", "REMARKS" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
|
||||
|
||||
private static final String[] NEEDED_TYPES = { "TABLE", "VIEW" }; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
||||
private static Logger log = Logger.getLogger(SybaseDatabaseMetaData.class);
|
||||
|
||||
/**
|
||||
@@ -150,4 +155,39 @@ public class SybaseDatabaseMetaData extends PackageFakeDatabaseMetadata {
|
||||
return sybaseRS;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.utils.database.PackageFakeDatabaseMetadata#getTables(java.lang.String, java.lang.String,
|
||||
* java.lang.String, java.lang.String[])
|
||||
*/
|
||||
@Override
|
||||
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException {
|
||||
ResultSet sybaseRS = super.getTables(catalog, schemaPattern, tableNamePattern, NEEDED_TYPES);
|
||||
List<String[]> list = new ArrayList<String[]>();
|
||||
while (sybaseRS.next()) {
|
||||
String name = sybaseRS.getString("TABLE_NAME"); //$NON-NLS-1$
|
||||
String schema = sybaseRS.getString("TABLE_SCHEM"); //$NON-NLS-1$
|
||||
String type = sybaseRS.getString("TABLE_TYPE"); //$NON-NLS-1$
|
||||
|
||||
String id = ""; //$NON-NLS-1$
|
||||
String remarks = ""; //$NON-NLS-1$
|
||||
try {
|
||||
remarks = sybaseRS.getString("REMARKS"); //$NON-NLS-1$
|
||||
} catch (Exception e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
if (ArrayUtils.contains(NEEDED_TYPES, type)) {
|
||||
// check if the type is contained is in the types needed.
|
||||
// since sybase can return some system views as "SYSTEM VIEW" instead of "VIEW/TABLE" from the request.
|
||||
String[] r = new String[] { id, schema, name, type, remarks };
|
||||
list.add(r);
|
||||
}
|
||||
}
|
||||
SybaseResultSet tableResultSet = new SybaseResultSet();
|
||||
tableResultSet.setMetadata(TABLE_META);
|
||||
tableResultSet.setData(list);
|
||||
return tableResultSet;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ public class TeradataDataBaseMetadata extends FakeDatabaseMetaData {
|
||||
@Override
|
||||
public ResultSet getTables(String catalog, String database, String tableNamePattern, String[] types) throws SQLException {
|
||||
// modify by wzhang
|
||||
if (databaseName != null) {
|
||||
if (databaseName != null && !databaseName.trim().isEmpty()) {
|
||||
database = databaseName;
|
||||
}
|
||||
// end
|
||||
|
||||
@@ -95,35 +95,48 @@ public class FileCopyUtils {
|
||||
|
||||
public static void copyFolder(File resFolder, File destFolder) {
|
||||
try {
|
||||
if (!resFolder.exists()) {
|
||||
return;
|
||||
}
|
||||
destFolder.mkdirs();
|
||||
String[] file = resFolder.list();
|
||||
File temp = null;
|
||||
for (String element : file) {
|
||||
temp = new File(resFolder, element);
|
||||
|
||||
if (temp.isFile()) {
|
||||
FileInputStream input = new FileInputStream(temp);
|
||||
FileOutputStream output = new FileOutputStream(new File(destFolder, temp.getName()));
|
||||
byte[] b = new byte[1024 * 5];
|
||||
int len;
|
||||
while ((len = input.read(b)) != -1) {
|
||||
output.write(b, 0, len);
|
||||
}
|
||||
output.flush();
|
||||
output.close();
|
||||
input.close();
|
||||
}
|
||||
if (temp.isDirectory()) {
|
||||
copyFolder(new File(resFolder, element), new File(destFolder, element));
|
||||
}
|
||||
}
|
||||
copyFolder(resFolder, destFolder, false);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void copyFolder(File resFolder, File destFolder, boolean interruptable) throws Exception {
|
||||
Thread currentThread = Thread.currentThread();
|
||||
if (interruptable && currentThread.isInterrupted()) {
|
||||
throw new InterruptedException();
|
||||
}
|
||||
if (!resFolder.exists()) {
|
||||
return;
|
||||
}
|
||||
destFolder.mkdirs();
|
||||
String[] file = resFolder.list();
|
||||
File temp = null;
|
||||
for (String element : file) {
|
||||
if (interruptable && currentThread.isInterrupted()) {
|
||||
throw new InterruptedException();
|
||||
}
|
||||
temp = new File(resFolder, element);
|
||||
|
||||
if (temp.isFile()) {
|
||||
FileInputStream input = new FileInputStream(temp);
|
||||
FileOutputStream output = new FileOutputStream(new File(destFolder, temp.getName()));
|
||||
byte[] b = new byte[1024 * 5];
|
||||
int len;
|
||||
while ((len = input.read(b)) != -1) {
|
||||
if (interruptable && currentThread.isInterrupted()) {
|
||||
break;
|
||||
}
|
||||
output.write(b, 0, len);
|
||||
}
|
||||
output.flush();
|
||||
output.close();
|
||||
input.close();
|
||||
}
|
||||
if (temp.isDirectory()) {
|
||||
copyFolder(new File(resFolder, element), new File(destFolder, element), interruptable);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,11 @@ public class TalendCustomThreadPoolExecutor extends ThreadPoolExecutor {
|
||||
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
|
||||
}
|
||||
|
||||
public TalendCustomThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,
|
||||
BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler) {
|
||||
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, handler);
|
||||
}
|
||||
|
||||
public TalendCustomThreadPoolExecutor(int queueCapacity, RejectedExecutionHandler handler) {
|
||||
super(5, 10, 0, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(queueCapacity), handler);
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
talend.version=5.4.3
|
||||
talend.version=5.5.2
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.eclipse.swt.layout.RowData;
|
||||
import org.eclipse.swt.layout.RowLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
|
||||
/**
|
||||
* Dimensionned Button ( defined width & height OR use FillLayout).
|
||||
@@ -195,4 +196,8 @@ public class UtilsButton {
|
||||
public String getText() {
|
||||
return button.getText();
|
||||
}
|
||||
|
||||
public Control getControl() {
|
||||
return button;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.properties.User;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.cwm.helper.SubItemHelper;
|
||||
import org.talend.repository.model.ERepositoryStatus;
|
||||
import org.talend.repository.model.IRepositoryNode;
|
||||
|
||||
@@ -20,9 +20,9 @@ import org.talend.core.model.relationship.RelationshipItemBuilder;
|
||||
*/
|
||||
public class PropertyTypeParameterRelationshipHandler extends AbstractJobParameterInRepositoryRelationshipHandler {
|
||||
|
||||
public static final String PROPERTY_PROPERTY_TYPE = "PROPERTY:PROPERTY_TYPE"; //$NON-NLS-1$
|
||||
public static final String PROPERTY_PROPERTY_TYPE = "PROPERTY_TYPE"; //$NON-NLS-1$
|
||||
|
||||
public static final String PROPERTY_REPOSITORY_PROPERTY_TYPE = "PROPERTY:REPOSITORY_PROPERTY_TYPE"; //$NON-NLS-1$
|
||||
public static final String PROPERTY_REPOSITORY_PROPERTY_TYPE = "REPOSITORY_PROPERTY_TYPE"; //$NON-NLS-1$
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
|
||||
@@ -28,7 +28,7 @@ public class QueryTypeParameterRelationshipHandler extends AbstractJobParameterI
|
||||
*/
|
||||
@Override
|
||||
protected String getRepositoryTypeName() {
|
||||
return "QUERYSTORE:QUERYSTORE_TYPE"; //$NON-NLS-1$
|
||||
return "QUERYSTORE_TYPE"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -40,7 +40,7 @@ public class QueryTypeParameterRelationshipHandler extends AbstractJobParameterI
|
||||
*/
|
||||
@Override
|
||||
protected String getRepositoryTypeValueName() {
|
||||
return "QUERYSTORE:REPOSITORY_QUERYSTORE_TYPE"; //$NON-NLS-1$
|
||||
return "REPOSITORY_QUERYSTORE_TYPE"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -28,18 +28,7 @@ public class SchemaTypeParameterRelationshipHandler extends AbstractJobParameter
|
||||
*/
|
||||
@Override
|
||||
protected String getRepositoryTypeName() {
|
||||
return "SCHEMA:SCHEMA_TYPE"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.talend.core.model.relationship.AbstractJobParameterInRepositoryRelationshipHandler#getRepositoryTypeNameN()
|
||||
*/
|
||||
@Override
|
||||
protected String[] getRepositoryTypeNameN() {
|
||||
return new String[] { "SCHEMA_OTHER:SCHEMA_TYPE" }; //$NON-NLS-1$
|
||||
return "SCHEMA_TYPE"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -51,19 +40,7 @@ public class SchemaTypeParameterRelationshipHandler extends AbstractJobParameter
|
||||
*/
|
||||
@Override
|
||||
protected String getRepositoryTypeValueName() {
|
||||
return "SCHEMA:REPOSITORY_SCHEMA_TYPE"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.talend.core.model.relationship.AbstractJobParameterInRepositoryRelationshipHandler#getRepositoryTypeValueNameN
|
||||
* ()
|
||||
*/
|
||||
@Override
|
||||
protected String[] getRepositoryTypeValueNameN() {
|
||||
return new String[] { "SCHEMA_OTHER:REPOSITORY_SCHEMA_TYPE" }; //$NON-NLS-1$
|
||||
return "REPOSITORY_SCHEMA_TYPE"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -25,6 +25,7 @@ ProxyRepositoryFactory.log.unlock=Unlock [{0}] by "{1}".
|
||||
ProxyRepositoryFactory.logonInProgress=Log on in progress...
|
||||
ProxyRepositoryFactory.MoveFolderContainsLockedItem=Cannot move a folder which contains locked items
|
||||
ProxyRepositoryFactory.projectIsNotCompatible=The project {0} had been opend by a more recent studio so cannot open it.
|
||||
ProxyRepositoryFactory.projectCanNotOpen=Cannot open the project.Error task is {0}.
|
||||
ProxyRepositoryFactory.RenameFolderContainsLockedItem=Cannot rename a folder which contains locked items
|
||||
ProxyRepositoryFactory.ReplaceJob=is already in use,do you want to replace it?
|
||||
ProxyRepositoryFactory.synch.repo.items=Synchronize repository items
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.Set;
|
||||
import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.RepositoryObject;
|
||||
import org.talend.core.repository.ICheckDeleteItemReference;
|
||||
import org.talend.repository.model.IProxyRepositoryFactory;
|
||||
import org.talend.repository.model.IRepositoryNode;
|
||||
@@ -49,7 +50,7 @@ public abstract class AbstractCheckDeleteItemReference implements ICheckDeleteIt
|
||||
for (IRepositoryNode repositoryNode : deleteNodes) {
|
||||
IRepositoryViewObject repoObject = repositoryNode.getObject();
|
||||
if(repoObject!=null) {
|
||||
refBeans.addAll(checkItemReferenceBeans(factory, deleteActionCache, repoObject));
|
||||
refBeans.addAll(checkItemReferenceBeans(factory, deleteActionCache, new RepositoryObject(repoObject.getProperty())));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -890,10 +890,15 @@ public abstract class AbstractEMFRepositoryFactory extends AbstractRepositoryFac
|
||||
|
||||
@Override
|
||||
public FolderItem getFolderItem(Project project, ERepositoryObjectType itemType, IPath path) {
|
||||
if (project == null || itemType == null) {
|
||||
// add this to fix NPE of junit for logon
|
||||
return null;
|
||||
}
|
||||
FolderHelper folderHelper = getFolderHelper(project.getEmfProject());
|
||||
FolderItem folderItem = folderHelper.getFolder(ERepositoryObjectType.getFolderName(itemType) + IPath.SEPARATOR + path);
|
||||
if (folderItem == null && itemType != null) {
|
||||
folderItem = folderHelper.createFolder(ERepositoryObjectType.getFolderName(itemType) + IPath.SEPARATOR + path);
|
||||
String pathStr = ERepositoryObjectType.getFolderName(itemType) + IPath.SEPARATOR + path;
|
||||
FolderItem folderItem = folderHelper.getFolder(pathStr);
|
||||
if (folderItem == null) {
|
||||
folderItem = folderHelper.createFolder(pathStr);
|
||||
}
|
||||
return folderItem;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import org.talend.core.model.process.IProcess2;
|
||||
import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.ProcessItem;
|
||||
import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.relationship.Relation;
|
||||
import org.talend.core.model.relationship.RelationshipItemBuilder;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.ICheckDeleteItemReference;
|
||||
@@ -45,7 +47,7 @@ import org.talend.repository.ui.actions.DeleteActionCache;
|
||||
*/
|
||||
public class CheckJobDeleteReference extends AbstractCheckDeleteItemReference implements ICheckDeleteItemReference {
|
||||
|
||||
private static final String PROCESS_TYPE_PROCESS = "PROCESS_TYPE_PROCESS"; //$NON-NLS-1$
|
||||
private static final String PROCESS_TYPE_PROCESS = "PROCESS_TYPE_PROCESS"; //$NON-NLS-1$
|
||||
|
||||
private static final String USE_DYNAMIC_JOB = "USE_DYNAMIC_JOB"; //$NON-NLS-1$
|
||||
|
||||
@@ -70,8 +72,10 @@ public class CheckJobDeleteReference extends AbstractCheckDeleteItemReference im
|
||||
if (!(item instanceof ProcessItem)) {
|
||||
return list;
|
||||
}
|
||||
EList<?> nodesList = null;
|
||||
// fix bug 10050
|
||||
List<Relation> relations = RelationshipItemBuilder.getInstance().getItemsHaveRelationWith(property.getId());
|
||||
if (relations.isEmpty()) {
|
||||
return list;
|
||||
}
|
||||
Set<Project> refParentProjects = new HashSet<Project>();
|
||||
try {
|
||||
refParentProjects.add(ProjectManager.getInstance().getCurrentProject());
|
||||
@@ -81,121 +85,95 @@ public class CheckJobDeleteReference extends AbstractCheckDeleteItemReference im
|
||||
deleteActionCache.setProcessList(processes);
|
||||
for (IRepositoryViewObject process : deleteActionCache.getProcessList()) {
|
||||
Property property2 = process.getProperty();
|
||||
if (isOpenedItem(property2, deleteActionCache.getOpenProcessMap())) {
|
||||
// will be checked in the opened item list.
|
||||
continue;
|
||||
}
|
||||
Relation current = new Relation();
|
||||
current.setId(property2.getId());
|
||||
current.setType(RelationshipItemBuilder.JOB_RELATION);
|
||||
current.setVersion(property2.getVersion());
|
||||
if (!relations.contains(current)) {
|
||||
continue;
|
||||
}
|
||||
boolean isDelete = factory.getStatus(process) == ERepositoryStatus.DELETED;
|
||||
Item item2 = property2.getItem();
|
||||
if (item == item2) {
|
||||
continue;
|
||||
}
|
||||
if (!isOpenedItem(item2, deleteActionCache.getOpenProcessMap())) {
|
||||
if (item2 instanceof ProcessItem) {
|
||||
nodesList = ((ProcessItem) item2).getProcess().getNode();
|
||||
|
||||
String path = item2.getState().getPath();
|
||||
boolean found = false;
|
||||
ItemReferenceBean bean = new ItemReferenceBean();
|
||||
bean.setItemName(label);
|
||||
bean.setItemVersion(version);
|
||||
bean.setItemType(type);
|
||||
bean.setItemDeleted(isItemDeleted);
|
||||
bean.setReferenceItemName(property2.getLabel());
|
||||
bean.setReferenceItemVersion(property2.getVersion());
|
||||
bean.setReferenceItemType(process.getRepositoryObjectType());
|
||||
bean.setReferenceItemPath(path);
|
||||
bean.setReferenceProjectName(refP.getLabel());
|
||||
bean.setReferenceItemDeleted(isDelete);
|
||||
for (ItemReferenceBean b : list) {
|
||||
if (b.equals(bean)) {
|
||||
found = true;
|
||||
b.addNodeNum();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (nodesList != null) {
|
||||
for (Object object2 : nodesList) {
|
||||
if (object2 instanceof NodeType) {
|
||||
NodeType nodeType = (NodeType) object2;
|
||||
boolean equals = false;
|
||||
// only detect the tRunJob component releationship between father job and child job //$NON-NLS-1$
|
||||
if ("tRunJob".equals(nodeType.getComponentName())) {
|
||||
boolean isUseDynamicJob = false;
|
||||
for (Object obj : nodeType.getElementParameter()) {
|
||||
if (obj != null && obj instanceof ElementParameterType) {
|
||||
ElementParameterType param = (ElementParameterType) obj;
|
||||
if (USE_DYNAMIC_JOB.equals(param.getName())) { //$NON-NLS-1$
|
||||
isUseDynamicJob = Boolean.parseBoolean(param.getValue());
|
||||
}
|
||||
if ("PROCESS:PROCESS_TYPE_PROCESS".equals(param.getName())) { //$NON-NLS-1$
|
||||
if (isUseDynamicJob) {
|
||||
String[] jobIDs = param.getValue().split(";"); //$NON-NLS-1$
|
||||
for (String jobID : jobIDs) {
|
||||
if (property.getId().equals(jobID)) {
|
||||
equals = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (property.getId().equals(param.getValue())) {
|
||||
equals = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (equals) {
|
||||
String path = item2.getState().getPath();
|
||||
boolean found = false;
|
||||
ItemReferenceBean bean = new ItemReferenceBean();
|
||||
bean.setItemName(label);
|
||||
bean.setItemVersion(version);
|
||||
bean.setItemType(type);
|
||||
bean.setItemDeleted(isItemDeleted);
|
||||
bean.setReferenceItemName(property2.getLabel());
|
||||
bean.setReferenceItemVersion(property2.getVersion());
|
||||
bean.setReferenceItemType(process.getRepositoryObjectType());
|
||||
bean.setReferenceItemPath(path);
|
||||
bean.setReferenceProjectName(refP.getLabel());
|
||||
bean.setReferenceItemDeleted(isDelete);
|
||||
for (ItemReferenceBean b : list) {
|
||||
if (b.equals(bean)) {
|
||||
found = true;
|
||||
b.addNodeNum();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
list.add(bean);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
list.add(bean);
|
||||
}
|
||||
}
|
||||
for (IProcess2 openedProcess : deleteActionCache.getOpenedProcessList()) {
|
||||
for (INode node : openedProcess.getGraphicalNodes()) {
|
||||
boolean equals = false;
|
||||
IElementParameter processTypeParam = node.getElementParameter(PROCESS_TYPE_PROCESS);
|
||||
if (processTypeParam != null) {
|
||||
IElementParameter isUseDynamicJob = node.getElementParameter(USE_DYNAMIC_JOB); //$NON-NLS-1$
|
||||
if (isUseDynamicJob != null && (Boolean) isUseDynamicJob.getValue()) {
|
||||
String[] jobsID = ((String) processTypeParam.getValue()).split(";"); //$NON-NLS-1$
|
||||
for (String jobID : jobsID) {
|
||||
if (property.getId().equals(jobID)) {
|
||||
equals = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (property.getId().equals(processTypeParam.getValue())) {
|
||||
equals = true;
|
||||
}
|
||||
}
|
||||
boolean isDelete = factory.getStatus(openedProcess) == ERepositoryStatus.DELETED;
|
||||
Property property2 = openedProcess.getProperty();
|
||||
Item item2 = property2.getItem();
|
||||
String path = item2.getState().getPath();
|
||||
if (equals) {
|
||||
boolean found = false;
|
||||
ItemReferenceBean bean = new ItemReferenceBean();
|
||||
bean.setItemName(label);
|
||||
bean.setItemVersion(version);
|
||||
bean.setItemType(type);
|
||||
bean.setItemDeleted(isItemDeleted);
|
||||
bean.setReferenceItemName(property2.getLabel());
|
||||
bean.setReferenceItemVersion(property2.getVersion());
|
||||
bean.setReferenceItemType(ERepositoryObjectType.getItemType(item2));
|
||||
bean.setReferenceItemPath(path);
|
||||
bean.setReferenceProjectName(refP.getLabel());
|
||||
bean.setReferenceItemDeleted(isDelete);
|
||||
for (ItemReferenceBean b : list) {
|
||||
if (b.equals(bean)) {
|
||||
found = true;
|
||||
b.addNodeNum();
|
||||
}
|
||||
|
||||
for (IProcess2 openedProcess : deleteActionCache.getOpenedProcessList()) {
|
||||
for (INode node : openedProcess.getGraphicalNodes()) {
|
||||
boolean equals = false;
|
||||
IElementParameter processTypeParam = node.getElementParameter(PROCESS_TYPE_PROCESS);
|
||||
if (processTypeParam != null) {
|
||||
IElementParameter isUseDynamicJob = node.getElementParameter(USE_DYNAMIC_JOB); //$NON-NLS-1$
|
||||
if (isUseDynamicJob != null && (Boolean) isUseDynamicJob.getValue()) {
|
||||
String[] jobsID = ((String) processTypeParam.getValue()).split(";"); //$NON-NLS-1$
|
||||
for (String jobID : jobsID) {
|
||||
if (property.getId().equals(jobID)) {
|
||||
equals = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
list.add(bean);
|
||||
} else if (property.getId().equals(processTypeParam.getValue())) {
|
||||
equals = true;
|
||||
}
|
||||
}
|
||||
boolean isDelete = factory.getStatus(openedProcess) == ERepositoryStatus.DELETED;
|
||||
Property property2 = openedProcess.getProperty();
|
||||
Item item2 = property2.getItem();
|
||||
String path = item2.getState().getPath();
|
||||
if (equals) {
|
||||
boolean found = false;
|
||||
ItemReferenceBean bean = new ItemReferenceBean();
|
||||
bean.setItemName(label);
|
||||
bean.setItemVersion(version);
|
||||
bean.setItemType(type);
|
||||
bean.setItemDeleted(isItemDeleted);
|
||||
bean.setReferenceItemName(property2.getLabel());
|
||||
bean.setReferenceItemVersion(property2.getVersion());
|
||||
bean.setReferenceItemType(ERepositoryObjectType.getItemType(item2));
|
||||
bean.setReferenceItemPath(path);
|
||||
|
||||
bean.setReferenceProjectName(ProjectManager.getInstance().getProject(property2).getLabel());
|
||||
bean.setReferenceItemDeleted(isDelete);
|
||||
for (ItemReferenceBean b : list) {
|
||||
if (b.equals(bean)) {
|
||||
found = true;
|
||||
b.addNodeNum();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
list.add(bean);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -224,11 +202,10 @@ public class CheckJobDeleteReference extends AbstractCheckDeleteItemReference im
|
||||
return list;
|
||||
}
|
||||
|
||||
private static boolean isOpenedItem(Item openedItem, MultiKeyMap openProcessMap) {
|
||||
if (openedItem == null) {
|
||||
private boolean isOpenedItem(Property property, MultiKeyMap openProcessMap) {
|
||||
if (property == null) {
|
||||
return false;
|
||||
}
|
||||
Property property = openedItem.getProperty();
|
||||
return (openProcessMap.get(property.getId(), property.getLabel(), property.getVersion()) != null);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.JobletProcessItem;
|
||||
import org.talend.core.model.properties.ProcessItem;
|
||||
import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.relationship.Relation;
|
||||
import org.talend.core.model.relationship.RelationshipItemBuilder;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.ICheckDeleteItemReference;
|
||||
@@ -53,8 +55,10 @@ public class CheckJobletDeleteReference extends AbstractCheckDeleteItemReference
|
||||
if (!(item instanceof JobletProcessItem)) {
|
||||
return list;
|
||||
}
|
||||
EList<?> nodesList = null;
|
||||
// wzhang added to fix bug 10050
|
||||
List<Relation> relations = RelationshipItemBuilder.getInstance().getItemsHaveRelationWith(property.getId());
|
||||
if (relations.isEmpty()) {
|
||||
return list;
|
||||
}
|
||||
Set<Project> refParentProjects = new HashSet<Project>();
|
||||
try {
|
||||
refParentProjects.add(ProjectManager.getInstance().getCurrentProject());
|
||||
@@ -65,63 +69,18 @@ public class CheckJobletDeleteReference extends AbstractCheckDeleteItemReference
|
||||
ERepositoryObjectType jobType = ERepositoryObjectType.PROCESS;
|
||||
if (jobType != null) {
|
||||
List<IRepositoryViewObject> jobs = factory.getAll(refP, jobType, true);
|
||||
processes.addAll(jobs);
|
||||
checkRelationshipItems(factory, jobs, RelationshipItemBuilder.JOB_RELATION,
|
||||
list, label, version, type, isItemDeleted,
|
||||
item, relations, refP, deleteActionCache);
|
||||
}
|
||||
ERepositoryObjectType jobletType = ERepositoryObjectType.JOBLET;
|
||||
if (jobletType != null) {
|
||||
List<IRepositoryViewObject> jobletes = factory.getAll(refP, jobletType, true);
|
||||
processes.addAll(jobletes);
|
||||
List<IRepositoryViewObject> joblets = factory.getAll(refP, jobletType, true);
|
||||
checkRelationshipItems(factory, joblets, RelationshipItemBuilder.JOBLET_RELATION,
|
||||
list, label, version, type, isItemDeleted,
|
||||
item, relations, refP,deleteActionCache);
|
||||
}
|
||||
deleteActionCache.setProcessList(processes);
|
||||
for (IRepositoryViewObject process : deleteActionCache.getProcessList()) {
|
||||
Property property2 = process.getProperty();
|
||||
boolean isDelete = factory.getStatus(process) == ERepositoryStatus.DELETED;
|
||||
Item item2 = property2.getItem();
|
||||
if (item == item2) {
|
||||
continue;
|
||||
}
|
||||
if (!isOpenedItem(item2, deleteActionCache.getOpenProcessMap())) {
|
||||
if (item2 instanceof ProcessItem) {
|
||||
nodesList = ((ProcessItem) item2).getProcess().getNode();
|
||||
} else if (item2 instanceof JobletProcessItem) {
|
||||
nodesList = ((JobletProcessItem) item2).getJobletProcess().getNode();
|
||||
}
|
||||
}
|
||||
if (nodesList != null) {
|
||||
for (Object object2 : nodesList) {
|
||||
if (object2 instanceof NodeType) {
|
||||
NodeType nodeType = (NodeType) object2;
|
||||
nodeType.getElementParameter();
|
||||
boolean equals = nodeType.getComponentName().equals(label);
|
||||
if (equals) {
|
||||
String path = item2.getState().getPath();
|
||||
boolean found = false;
|
||||
ItemReferenceBean bean = new ItemReferenceBean();
|
||||
bean.setItemName(label);
|
||||
bean.setItemVersion(version);
|
||||
bean.setItemType(type);
|
||||
bean.setItemDeleted(isItemDeleted);
|
||||
bean.setReferenceItemName(property2.getLabel());
|
||||
bean.setReferenceItemVersion(property2.getVersion());
|
||||
bean.setReferenceItemType(process.getRepositoryObjectType());
|
||||
bean.setReferenceItemPath(path);
|
||||
bean.setReferenceProjectName(refP.getLabel());
|
||||
bean.setReferenceItemDeleted(isDelete);
|
||||
for (ItemReferenceBean b : list) {
|
||||
if (b.equals(bean)) {
|
||||
found = true;
|
||||
b.addNodeNum();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
list.add(bean);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (IProcess2 openedProcess : deleteActionCache.getOpenedProcessList()) {
|
||||
for (INode node : openedProcess.getGraphicalNodes()) {
|
||||
boolean equals = node.getComponent().getName().equals(label);
|
||||
@@ -181,11 +140,59 @@ public class CheckJobletDeleteReference extends AbstractCheckDeleteItemReference
|
||||
return list;
|
||||
}
|
||||
|
||||
private static boolean isOpenedItem(Item openedItem, MultiKeyMap openProcessMap) {
|
||||
if (openedItem == null) {
|
||||
private void checkRelationshipItems(IProxyRepositoryFactory factory, List<IRepositoryViewObject> objects, String curRepoObjectType, Set<ItemReferenceBean> list,
|
||||
String label, String version, ERepositoryObjectType type,
|
||||
boolean isItemDeleted, Item item, List<Relation> relations,
|
||||
Project refP, DeleteActionCache deleteActionCache) {
|
||||
for (IRepositoryViewObject process : objects) {
|
||||
Property property2 = process.getProperty();
|
||||
boolean isDelete = factory.getStatus(process) == ERepositoryStatus.DELETED;
|
||||
Item item2 = property2.getItem();
|
||||
if (item == item2) {
|
||||
continue;
|
||||
}
|
||||
if (isOpenedItem(property2, deleteActionCache.getOpenProcessMap())) {
|
||||
// will be checked in the opened item list.
|
||||
continue;
|
||||
}
|
||||
Relation current = new Relation();
|
||||
current.setId(property2.getId());
|
||||
current.setType(curRepoObjectType);
|
||||
current.setVersion(property2.getVersion());
|
||||
if (!relations.contains(current)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String path = item2.getState().getPath();
|
||||
boolean found = false;
|
||||
ItemReferenceBean bean = new ItemReferenceBean();
|
||||
bean.setItemName(label);
|
||||
bean.setItemVersion(version);
|
||||
bean.setItemType(type);
|
||||
bean.setItemDeleted(isItemDeleted);
|
||||
bean.setReferenceItemName(property2.getLabel());
|
||||
bean.setReferenceItemVersion(property2.getVersion());
|
||||
bean.setReferenceItemType(process.getRepositoryObjectType());
|
||||
bean.setReferenceItemPath(path);
|
||||
bean.setReferenceProjectName(refP.getLabel());
|
||||
bean.setReferenceItemDeleted(isDelete);
|
||||
for (ItemReferenceBean b : list) {
|
||||
if (b.equals(bean)) {
|
||||
found = true;
|
||||
b.addNodeNum();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
list.add(bean);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isOpenedItem(Property property, MultiKeyMap openProcessMap) {
|
||||
if (property == null) {
|
||||
return false;
|
||||
}
|
||||
Property property = openedItem.getProperty();
|
||||
return (openProcessMap.get(property.getId(), property.getLabel(), property.getVersion()) != null);
|
||||
}
|
||||
|
||||
|
||||
@@ -286,8 +286,11 @@ public abstract class FolderHelper {
|
||||
continue;
|
||||
}
|
||||
item.setParent(parentItem);
|
||||
if (item instanceof FolderItem && item.getProperty().getLabel().equals(name)) {
|
||||
return (FolderItem) item;
|
||||
if (item instanceof FolderItem) {
|
||||
// TDI-29841, if in win, case insensitive issue for folder, must ignore case
|
||||
if (item.getProperty().getLabel().equalsIgnoreCase(name)) {
|
||||
return (FolderItem) item;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -14,8 +14,6 @@ package org.talend.core.repository.model;
|
||||
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.beans.PropertyChangeSupport;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.Dictionary;
|
||||
@@ -39,7 +37,6 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.OperationCanceledException;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.SubMonitor;
|
||||
import org.eclipse.emf.common.util.URI;
|
||||
import org.eclipse.emf.ecore.EObject;
|
||||
@@ -72,13 +69,11 @@ import org.talend.core.AbstractDQModelService;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.ICoreService;
|
||||
import org.talend.core.IESBService;
|
||||
import org.talend.core.ISVNProviderServiceInCoreRuntime;
|
||||
import org.talend.core.ITDQRepositoryService;
|
||||
import org.talend.core.PluginChecker;
|
||||
import org.talend.core.context.Context;
|
||||
import org.talend.core.context.RepositoryContext;
|
||||
import org.talend.core.exception.TalendInternalPersistenceException;
|
||||
import org.talend.core.language.ECodeLanguage;
|
||||
import org.talend.core.language.LanguageManager;
|
||||
import org.talend.core.model.general.ModuleNeeded;
|
||||
import org.talend.core.model.general.Project;
|
||||
@@ -105,6 +100,7 @@ import org.talend.core.model.repository.Folder;
|
||||
import org.talend.core.model.repository.IRepositoryContentHandler;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.IRepositoryWorkUnitListener;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.LockInfo;
|
||||
import org.talend.core.model.repository.RepositoryContentManager;
|
||||
import org.talend.core.model.repository.RepositoryObject;
|
||||
@@ -288,7 +284,9 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
migrationToolService.updateMigrationSystem(project.getEmfProject(), false);
|
||||
boolean isProjectCompatibility = migrationToolService.checkMigrationTasks(project.getEmfProject());
|
||||
if (!isProjectCompatibility) {
|
||||
throw new LoginException(Messages.getString("ProxyRepositoryFactory.projectIsNotCompatible", project.getLabel())); //$NON-NLS-1$
|
||||
throw new LoginException(Messages.getString(
|
||||
"ProxyRepositoryFactory.projectCanNotOpen", migrationToolService.getTaskId())); //$NON-NLS-1$
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1085,10 +1083,14 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
// for bug 9352: .svnlog folder should not be visible in wizards
|
||||
EObject obj = source.getParent();
|
||||
if (obj != null && obj instanceof FolderItemImpl) {
|
||||
target.add(path + source.getProperty().getLabel());
|
||||
String onePath = path + source.getProperty().getLabel();
|
||||
// TDI-29841, if in win, case sensitive issue for folder.
|
||||
onePath = onePath.toUpperCase();
|
||||
target.add(onePath);
|
||||
|
||||
for (Object current : source.getChildren()) {
|
||||
if (current instanceof FolderItem) {
|
||||
addChildren(target, (FolderItem) current, type, path + source.getProperty().getLabel() + "/"); //$NON-NLS-1$
|
||||
addChildren(target, (FolderItem) current, type, onePath + "/"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1187,6 +1189,8 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
String folderLabel = path.segment(i);
|
||||
|
||||
String folderName = parentPath.append(folderLabel).toString();
|
||||
// TDI-29841, if in win, case insensitive issue for folder.
|
||||
folderName = folderName.toUpperCase();
|
||||
if (!folders.contains(folderName)) {
|
||||
createFolder(project, itemType, parentPath, folderLabel);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.properties.User;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.cwm.helper.CatalogHelper;
|
||||
import org.talend.repository.model.ERepositoryStatus;
|
||||
import org.talend.repository.model.IRepositoryNode;
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.properties.User;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.cwm.helper.CatalogHelper;
|
||||
import org.talend.cwm.helper.SchemaHelper;
|
||||
import org.talend.repository.model.ERepositoryStatus;
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.properties.User;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.cwm.helper.ConnectionHelper;
|
||||
import org.talend.cwm.helper.SubItemHelper;
|
||||
import org.talend.cwm.helper.SwitchHelpers;
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.properties.User;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.cwm.xml.TdXmlElementType;
|
||||
import org.talend.repository.model.ERepositoryStatus;
|
||||
import org.talend.repository.model.IRepositoryNode;
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.properties.User;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.cwm.xml.TdXmlSchema;
|
||||
import org.talend.repository.model.ERepositoryStatus;
|
||||
import org.talend.repository.model.IRepositoryNode;
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.properties.User;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.cwm.helper.SubItemHelper;
|
||||
import orgomg.cwm.objectmodel.core.ModelElement;
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@ import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.RepositoryObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import orgomg.cwm.objectmodel.core.ModelElement;
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,8 +23,8 @@ import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.RepositoryObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import orgomg.cwm.objectmodel.core.ModelElement;
|
||||
|
||||
/**
|
||||
@@ -51,6 +51,7 @@ public class SAPIDocRepositoryObject extends RepositoryObject implements ISubRep
|
||||
return ERepositoryObjectType.METADATA_SAP_IDOC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLabel(String value) {
|
||||
if (iDocUnit.getLabel() == null) {
|
||||
iDocUnit.setLabel(value);
|
||||
@@ -89,6 +90,7 @@ public class SAPIDocRepositoryObject extends RepositoryObject implements ISubRep
|
||||
*
|
||||
* @see org.talend.repository.model.ISubRepositoryObject#getAbstractMetadataObject ()
|
||||
*/
|
||||
@Override
|
||||
public AbstractMetadataObject getAbstractMetadataObject() {
|
||||
return iDocUnit;
|
||||
}
|
||||
@@ -98,10 +100,12 @@ public class SAPIDocRepositoryObject extends RepositoryObject implements ISubRep
|
||||
*
|
||||
* @see org.talend.repository.model.ISubRepositoryObject#removeFromParent()
|
||||
*/
|
||||
@Override
|
||||
public void removeFromParent() {
|
||||
iDocUnit.getConnection().getIDocs().remove(iDocUnit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ERepositoryStatus getRepositoryStatus() {
|
||||
return repObj.getRepositoryStatus();
|
||||
}
|
||||
@@ -132,6 +136,7 @@ public class SAPIDocRepositoryObject extends RepositoryObject implements ISubRep
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelElement getModelElement() {
|
||||
return iDocUnit;
|
||||
}
|
||||
|
||||
@@ -25,8 +25,8 @@ import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.RepositoryObject;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.cwm.helper.SubItemHelper;
|
||||
import orgomg.cwm.objectmodel.core.ModelElement;
|
||||
|
||||
@@ -67,6 +67,7 @@ public class SalesforceModuleRepositoryObject extends RepositoryObject implement
|
||||
return ERepositoryObjectType.METADATA_SALESFORCE_MODULE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLabel(String value) {
|
||||
if (moduleUnit.getLabel() == null) {
|
||||
moduleUnit.setLabel(value);
|
||||
@@ -114,6 +115,7 @@ public class SalesforceModuleRepositoryObject extends RepositoryObject implement
|
||||
*
|
||||
* @see org.talend.repository.model.ISubRepositoryObject#getAbstractMetadataObject ()
|
||||
*/
|
||||
@Override
|
||||
public AbstractMetadataObject getAbstractMetadataObject() {
|
||||
return this.moduleUnit;
|
||||
}
|
||||
@@ -123,10 +125,12 @@ public class SalesforceModuleRepositoryObject extends RepositoryObject implement
|
||||
*
|
||||
* @see org.talend.repository.model.ISubRepositoryObject#removeFromParent()
|
||||
*/
|
||||
@Override
|
||||
public void removeFromParent() {
|
||||
moduleUnit.getConnection().getModules().remove(moduleUnit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ERepositoryStatus getRepositoryStatus() {
|
||||
return repObj.getRepositoryStatus();
|
||||
}
|
||||
@@ -159,6 +163,7 @@ public class SalesforceModuleRepositoryObject extends RepositoryObject implement
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelElement getModelElement() {
|
||||
return this.moduleUnit;
|
||||
}
|
||||
|
||||
@@ -75,11 +75,11 @@ import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.Folder;
|
||||
import org.talend.core.model.repository.IRepositoryContentHandler;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.RepositoryContentManager;
|
||||
import org.talend.core.model.repository.RepositoryManager;
|
||||
import org.talend.core.model.utils.RepositoryManagerHelper;
|
||||
import org.talend.core.repository.i18n.Messages;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.repository.model.ProxyRepositoryFactory;
|
||||
import org.talend.core.repository.model.repositoryObject.MetadataTableRepositoryObject;
|
||||
import org.talend.core.repository.utils.AbstractResourceChangesService;
|
||||
@@ -586,10 +586,10 @@ public class DeleteAction extends AContextualAction {
|
||||
BusinessException bex = null;
|
||||
for (IRepositoryNode repositoryNode2 : repositoryList) {
|
||||
try {
|
||||
boolean ret = deleteRepositoryNode(repositoryNode2, factory);
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
boolean ret = deleteRepositoryNode(repositoryNode2, factory);
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
} catch (PersistenceException e) {
|
||||
pex = e;
|
||||
} catch (BusinessException e) {
|
||||
@@ -620,12 +620,12 @@ public class DeleteAction extends AContextualAction {
|
||||
folderItem.getState().setPath(fullPath);
|
||||
return true;
|
||||
} else {
|
||||
final DeleteActionCache deleteActionCache = DeleteActionCache.getInstance();
|
||||
final DeleteActionCache deleteActionCache = DeleteActionCache.getInstance();
|
||||
deleteActionCache.setGetAlways(false);
|
||||
deleteActionCache.setDocRefresh(false);
|
||||
deleteActionCache.createRecords();
|
||||
final IRepositoryViewObject objToDelete = repositoryNode.getObject();
|
||||
|
||||
|
||||
final boolean[] enableDeleting = new boolean[1];
|
||||
enableDeleting[0] = true;
|
||||
|
||||
@@ -1447,9 +1447,7 @@ public class DeleteAction extends AContextualAction {
|
||||
case SIMPLE_FOLDER:
|
||||
Object obj = node.getProperties(EProperties.LABEL);
|
||||
String label = null;
|
||||
IRepositoryViewObject folderObj = node.getObject();
|
||||
ERepositoryStatus statusFolder = folderObj.getRepositoryStatus();
|
||||
boolean isDeletedFolder = statusFolder == ERepositoryStatus.DELETED;
|
||||
boolean isDeletedFolder = node.getObject().isDeleted();
|
||||
if (obj instanceof String) {
|
||||
label = (String) obj;
|
||||
}
|
||||
|
||||
@@ -44,9 +44,9 @@ import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.SalesforceSchemaConnectionItem;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.RepositoryManager;
|
||||
import org.talend.core.repository.i18n.Messages;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.repository.model.ProxyRepositoryFactory;
|
||||
import org.talend.core.repository.model.repositoryObject.MetadataTableRepositoryObject;
|
||||
import org.talend.core.repository.utils.AbstractResourceChangesService;
|
||||
|
||||
@@ -48,11 +48,11 @@ import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryContentHandler;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.model.repository.RepositoryContentManager;
|
||||
import org.talend.core.repository.i18n.Messages;
|
||||
import org.talend.core.repository.link.IRepoViewLinker;
|
||||
import org.talend.core.repository.link.RepoViewLinkerRegistryReader;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.repository.model.ProxyRepositoryFactory;
|
||||
import org.talend.core.repository.utils.AbstractResourceChangesService;
|
||||
import org.talend.core.repository.utils.RepositoryNodeDeleteManager;
|
||||
|
||||
@@ -45,8 +45,8 @@ import org.talend.core.model.properties.FolderItem;
|
||||
import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.repository.i18n.Messages;
|
||||
import org.talend.core.repository.model.ISubRepositoryObject;
|
||||
import org.talend.core.repository.model.ProxyRepositoryFactory;
|
||||
import org.talend.core.service.ICoreUIService;
|
||||
import org.talend.cwm.helper.SubItemHelper;
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<dbType type="DECIMAL" defaultLength="20" defaultPrecision="10"/>
|
||||
<dbType type="DOUBLE" ignoreLen="true" ignorePre="true"/>
|
||||
<dbType type="FLOAT" ignoreLen="true" ignorePre="true"/>
|
||||
<dbType type="INTEGER" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="INT" ignoreLen="true" ignorePre="true"/>
|
||||
<dbType type="LONGVARBINARY" ignoreLen="true" ignorePre="true"/>
|
||||
<dbType type="LONGVARCHAR" ignoreLen="true" ignorePre="true"/>
|
||||
@@ -44,6 +45,7 @@
|
||||
</talendType>
|
||||
<talendType type="id_Integer">
|
||||
<dbType type="INT" default="true"/>
|
||||
<dbType type="INTEGER"/>
|
||||
<dbType type="BIGINT"/>
|
||||
</talendType>
|
||||
<talendType type="id_Long">
|
||||
@@ -140,6 +142,9 @@
|
||||
<dbType type="INT">
|
||||
<talendType type="id_Integer" default="true"/>
|
||||
<talendType type="id_Long"/>
|
||||
</dbType>
|
||||
<dbType type="INTEGER">
|
||||
<talendType type="id_Integer" default="true" />
|
||||
</dbType>
|
||||
<dbType type="LONGVARBINARY">
|
||||
<talendType type="id_byte[]" default="true"/>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<dbType type="TIME" ignorePre="true" />
|
||||
<dbType type="TINTERVAL" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="TIMESTAMPTZ" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="TIMESTAMP" ignorePre="true" />
|
||||
<dbType type="TIMESTAMP" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="TIMETZ" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="VARBIT" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="VARCHAR" defaultLength="200" ignorePre="true" />
|
||||
@@ -125,12 +125,12 @@
|
||||
<dbType type="TEXT" />
|
||||
</talendType>
|
||||
<talendType type="id_Date">
|
||||
<dbType type="DATE" default="true" />
|
||||
<dbType type="DATE" />
|
||||
<dbType type="ABSTIME" />
|
||||
<dbType type="TIMETZ" />
|
||||
<dbType type="TIME" />
|
||||
<dbType type="TIMESTAMPTZ" />
|
||||
<dbType type="TIMESTAMP" />
|
||||
<dbType type="TIMESTAMP" default="true"/>
|
||||
<dbType type="INTERVAL" />
|
||||
<dbType type="TINTERVAL" />
|
||||
<dbType type="RELTIME" />
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<dbType type="DATETIME" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="DECIMAL" defaultLength="20" defaultPrecision="10" />
|
||||
<dbType type="DOUBLE PRECISION" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="UNSIGNED INT" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="DOUBLE PRECIS" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="FLOAT" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="INT" ignoreLen="true" ignorePre="true" />
|
||||
@@ -92,10 +93,12 @@
|
||||
<dbType type="BIGINT" />
|
||||
<dbType type="SMALLINT"/>
|
||||
<dbType type="TINYINT"/>
|
||||
<dbType type="UNSIGNED INT"/>
|
||||
</talendType>
|
||||
<talendType type="id_Long">
|
||||
<dbType type="BIGINT" default="true" />
|
||||
<dbType type="INT"/>
|
||||
<dbType type="UNSIGNED INT"/>
|
||||
<dbType type="SMALLINT"/>
|
||||
<dbType type="TINYINT"/>
|
||||
</talendType>
|
||||
@@ -172,6 +175,10 @@
|
||||
<talendType type="id_Double"/>
|
||||
<talendType type="id_BigDecimal"/>
|
||||
</dbType>
|
||||
<dbType type="UNSIGNED INT">
|
||||
<talendType type="id_Long" default="true" />
|
||||
<talendType type="id_Integer"/>
|
||||
</dbType>
|
||||
<dbType type="INT">
|
||||
<talendType type="id_Integer" default="true" />
|
||||
<talendType type="id_Short"/>
|
||||
|
||||
@@ -58,13 +58,13 @@
|
||||
|
||||
</talendType>
|
||||
<talendType type="id_Byte">
|
||||
<dbType type="BF" default="true"/>
|
||||
<dbType type="BYTEINT" />
|
||||
<dbType type="BYTE" />
|
||||
<dbType type="BF"/>
|
||||
<dbType type="BYTEINT" default="true"/>
|
||||
<dbType type="BYTE"/>
|
||||
</talendType>
|
||||
<talendType type="id_byte[]">
|
||||
<dbType type="BF" default="true"/>
|
||||
<dbType type="VARBYTE"/>
|
||||
<dbType type="BF"/>
|
||||
<dbType type="VARBYTE" default="true"/>
|
||||
</talendType>
|
||||
<talendType type="id_Character">
|
||||
<dbType type="BYTE" />
|
||||
|
||||
@@ -63,7 +63,7 @@ public class RepositoryContext {
|
||||
* @param user the user to set
|
||||
*/
|
||||
public void setUser(User user) {
|
||||
// svn authentification is not saved actually in the emf model.
|
||||
// svn authentification is not saved actually in the emf model.
|
||||
// if the new user have no svn authentification, but old instance of user have svn authentification
|
||||
// we force the new instance to set the svn infos.
|
||||
String oldAuthentification = null;
|
||||
|
||||
@@ -286,4 +286,11 @@ public enum EDatabaseTypeName {
|
||||
return useProvider;
|
||||
}
|
||||
|
||||
public boolean isSchemaCaseSensitive() {
|
||||
if (EDatabaseTypeName.ORACLEFORSID == this || EDatabaseTypeName.TERADATA == this || EDatabaseTypeName.VERTICA == this) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -308,6 +308,9 @@ public class DatabaseConnStrUtil {
|
||||
// Added by Marvin Wang on May. 6, 2013 for bug TDI-25873.
|
||||
if (version != null) {
|
||||
for (EDatabaseConnTemplate template : EDatabaseConnTemplate.values()) {
|
||||
if (template == EDatabaseConnTemplate.GODBC || template == EDatabaseConnTemplate.MSODBC) {
|
||||
continue;
|
||||
}
|
||||
String urlTemplate = template.getUrlTemplate(version);
|
||||
if (urlTemplate.indexOf("<") != -1) {
|
||||
startTemplateString = urlTemplate.substring(0, urlTemplate.indexOf("<")); //$NON-NLS-1$
|
||||
|
||||
@@ -33,12 +33,15 @@ public class DbVersion4DriversForOracle11 extends DbVersion4Drivers {
|
||||
@Override
|
||||
Set<String> getDrivers() {
|
||||
Set<String> drivers = new HashSet<String>();
|
||||
if (System.getProperty("java.version").startsWith("1.6")) { //$NON-NLS-1$ //$NON-NLS-2$
|
||||
drivers.add(DRIVER_1_6);
|
||||
} else {
|
||||
drivers.add(DRIVER_1_5);
|
||||
String javaVersion = System.getProperty("java.version");//$NON-NLS-1$
|
||||
if (javaVersion != null) {
|
||||
org.talend.commons.utils.Version v = new org.talend.commons.utils.Version(javaVersion);
|
||||
if (v.getMajor() == 1 && v.getMinor() == 5) {
|
||||
drivers.add(DRIVER_1_5);
|
||||
} else {
|
||||
drivers.add(DRIVER_1_6);
|
||||
}
|
||||
}
|
||||
return drivers;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ public enum EDatabaseVersion4Drivers {
|
||||
// add for 9594
|
||||
MSSQL(new DbVersion4Drivers(EDatabaseTypeName.MSSQL, "jtds-1.2.5.jar")), //$NON-NLS-1$
|
||||
|
||||
VERTICA_7(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 7.0.x", "VERTICA_7_0_X", "vertica-jdbc-7.0.1-0.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
VERTICA_6_1_X(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 6.1.x", "VERTICA_6_1_X", "vertica-jdk5-6.1.2-0.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
VERTICA_6(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 6.0", "VERTICA_6_0", "vertica-jdk5-6.0.0-0.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
VERTICA_5_1(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 5.1", "VERTICA_5_1", "vertica_5.1.6_jdk_5.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
|
||||
@@ -19,34 +19,41 @@ import java.util.List;
|
||||
* DOC ycbai class global comment. Detailled comment
|
||||
*/
|
||||
public enum EHBaseDistribution4Versions {
|
||||
HDP_2_1(EHBaseDistributions.HORTONWORKS, "Hortonworks Data Platform V2.1.0(Baikal)", "HDP_2_1"),
|
||||
|
||||
HDP_1_0(EHBaseDistributions.HORTONWORKS, "Hortonworks Data Platform V1.0.0", "HDP_1_0"),
|
||||
|
||||
HDP_1_2(EHBaseDistributions.HORTONWORKS, "Hortonworks Data Platform V1.2.0(Bimota)", "HDP_1_2"),
|
||||
HDP_2_0(EHBaseDistributions.HORTONWORKS, "Hortonworks Data Platform V2.0.0(BigWheel)", "HDP_2_0"),
|
||||
|
||||
HDP_1_3(EHBaseDistributions.HORTONWORKS, "Hortonworks Data Platform V1.3.0(Condor)", "HDP_1_3"),
|
||||
|
||||
HDP_2_0(EHBaseDistributions.HORTONWORKS, "Hortonworks Data Platform V2.0.0", "HDP_2_0"),
|
||||
HDP_1_2(EHBaseDistributions.HORTONWORKS, "Hortonworks Data Platform V1.2.0(Bimota)", "HDP_1_2"),
|
||||
|
||||
APACHE_1_0_0(EHBaseDistributions.APACHE, "Apache 1.0.0", "APACHE_1_0_0"),
|
||||
|
||||
APACHE_1_0_3_EMR(EHBaseDistributions.AMAZON_EMR, "Apache 1.0.3(EMR)", "APACHE_1_0_3_EMR"),
|
||||
HDP_1_0(EHBaseDistributions.HORTONWORKS, "Hortonworks Data Platform V1.0.0(deprecated)", "HDP_1_0"),
|
||||
|
||||
APACHE_0_20_203(EHBaseDistributions.APACHE, "Apache 0.20.203", "APACHE_0_20_203"),
|
||||
|
||||
CLOUDERA_CDH3(EHBaseDistributions.CLOUDERA, "Cloudera CDH3", "Cloudera_CDH3"),
|
||||
APACHE_1_0_3_EMR(EHBaseDistributions.AMAZON_EMR, "Apache 1.0.3(EMR)", "APACHE_1_0_3_EMR"),
|
||||
|
||||
CLOUDERA_CDH4(EHBaseDistributions.CLOUDERA, "Cloudera CDH4", "Cloudera_CDH4"),
|
||||
APACHE_1_0_0(EHBaseDistributions.APACHE, "Apache 1.0.0", "APACHE_1_0_0"),
|
||||
|
||||
CLOUDERA_CDH5(EHBaseDistributions.CLOUDERA, "Cloudera CDH5", "Cloudera_CDH5"),
|
||||
|
||||
CLOUDERA_CDH4_YARN(EHBaseDistributions.CLOUDERA, "Cloudera CDH4 YARN", "Cloudera_CDH4_YARN"),
|
||||
|
||||
MAPR(EHBaseDistributions.MAPR, "MapR 2.0.0", "MAPR2"),
|
||||
CLOUDERA_CDH4(EHBaseDistributions.CLOUDERA, "Cloudera CDH4", "Cloudera_CDH4"),
|
||||
|
||||
MAPR_2_1_2(EHBaseDistributions.MAPR, "MapR 2.1.2", "MAPR212"),
|
||||
CLOUDERA_CDH3(EHBaseDistributions.CLOUDERA, "Cloudera CDH3(deprecated)", "Cloudera_CDH3"),
|
||||
|
||||
MAPR_3_1_0(EHBaseDistributions.MAPR, "MapR 3.1.0", "MAPR310"),
|
||||
|
||||
MAPR_3_0_1(EHBaseDistributions.MAPR, "MapR 3.0.1", "MAPR301"),
|
||||
|
||||
MAPR_2_1_3(EHBaseDistributions.MAPR, "MapR 2.1.3", "MAPR213"),
|
||||
|
||||
MAPR_3_0_1(EHBaseDistributions.MAPR, "MapR 3.0.1", "MAPR301"),
|
||||
MAPR_2_1_2(EHBaseDistributions.MAPR, "MapR 2.1.2", "MAPR212"),
|
||||
|
||||
MAPR(EHBaseDistributions.MAPR, "MapR 2.0.0", "MAPR2"),
|
||||
|
||||
PIVOTAL_HD_2_0(EHBaseDistributions.PIVOTAL_HD, "Pivotal HD 2.0", "PIVOTAL_HD_2_0"),
|
||||
|
||||
PIVOTAL_HD_1_0_1(EHBaseDistributions.PIVOTAL_HD, "Pivotal HD 1.0.1", "PIVOTAL_HD_1_0_1"),
|
||||
|
||||
|
||||
@@ -21,12 +21,13 @@ import org.apache.commons.lang.ArrayUtils;
|
||||
* DOC ycbai class global comment. Detailled comment
|
||||
*/
|
||||
public enum EHadoopVersion4Drivers {
|
||||
|
||||
HDP_1_0(EHadoopDistributions.HORTONWORKS, "Hortonworks Data Platform V1.0.0", "HDP_1_0", true, false),
|
||||
|
||||
HDP_1_2(EHadoopDistributions.HORTONWORKS, "Hortonworks Data Platform V1.2.0(Bimota)", "HDP_1_2", true, false),
|
||||
|
||||
HDP_1_3(EHadoopDistributions.HORTONWORKS, "Hortonworks Data Platform V1.3.0(Condor)", "HDP_1_3", true, false),
|
||||
HDP_2_1(
|
||||
EHadoopDistributions.HORTONWORKS,
|
||||
"Hortonworks Data Platform V2.1.0(Baikal)",
|
||||
"HDP_2_1",
|
||||
true,
|
||||
false,
|
||||
new EMRVersion[] { EMRVersion.YARN }),
|
||||
|
||||
HDP_2_0(
|
||||
EHadoopDistributions.HORTONWORKS,
|
||||
@@ -36,6 +37,12 @@ public enum EHadoopVersion4Drivers {
|
||||
false,
|
||||
new EMRVersion[] { EMRVersion.YARN }),
|
||||
|
||||
HDP_1_3(EHadoopDistributions.HORTONWORKS, "Hortonworks Data Platform V1.3.0(Condor)", "HDP_1_3", true, false),
|
||||
|
||||
HDP_1_2(EHadoopDistributions.HORTONWORKS, "Hortonworks Data Platform V1.2.0(Bimota)", "HDP_1_2", true, false),
|
||||
|
||||
HDP_1_0(EHadoopDistributions.HORTONWORKS, "Hortonworks Data Platform V1.0.0(deprecated)", "HDP_1_0", true, false),
|
||||
|
||||
APACHE_1_0_0(EHadoopDistributions.APACHE, "Apache 1.0.0", "APACHE_1_0_0", true, false),
|
||||
|
||||
APACHE_0_20_204(EHadoopDistributions.APACHE, "Apache 0.20.204", "APACHE_0_20_204", false, false),
|
||||
@@ -44,9 +51,13 @@ public enum EHadoopVersion4Drivers {
|
||||
|
||||
APACHE_0_20_2(EHadoopDistributions.APACHE, "Apache 0.20.2", "APACHE_0_20_2", false, true),
|
||||
|
||||
CLOUDERA_CDH3(EHadoopDistributions.CLOUDERA, "Cloudera CDH3", "Cloudera_CDH3", false, false),
|
||||
|
||||
CLOUDERA_CDH4(EHadoopDistributions.CLOUDERA, "Cloudera CDH4", "Cloudera_CDH4", true, false),
|
||||
CLOUDERA_CDH5(
|
||||
EHadoopDistributions.CLOUDERA,
|
||||
"Cloudera CDH5",
|
||||
"Cloudera_CDH5",
|
||||
true,
|
||||
false,
|
||||
new EMRVersion[] { EMRVersion.YARN }),
|
||||
|
||||
CLOUDERA_CDH4_YARN(
|
||||
EHadoopDistributions.CLOUDERA,
|
||||
@@ -56,20 +67,34 @@ public enum EHadoopVersion4Drivers {
|
||||
false,
|
||||
new EMRVersion[] { EMRVersion.YARN }),
|
||||
|
||||
MAPR1(EHadoopDistributions.MAPR, "MapR 1.2.0", "MAPR1", false, true),
|
||||
CLOUDERA_CDH4(EHadoopDistributions.CLOUDERA, "Cloudera CDH4", "Cloudera_CDH4", true, false),
|
||||
|
||||
MAPR2(EHadoopDistributions.MAPR, "MapR 2.0.0", "MAPR2", false, true),
|
||||
CLOUDERA_CDH3(EHadoopDistributions.CLOUDERA, "Cloudera CDH3(deprecated)", "Cloudera_CDH3", false, false),
|
||||
|
||||
MAPR212(EHadoopDistributions.MAPR, "MapR 2.1.2", "MAPR212", false, true),
|
||||
|
||||
MAPR213(EHadoopDistributions.MAPR, "MapR 2.1.3", "MAPR213", false, true),
|
||||
MAPR310(EHadoopDistributions.MAPR, "MapR 3.1.0", "MAPR310", false, true),
|
||||
|
||||
MAPR301(EHadoopDistributions.MAPR, "MapR 3.0.1", "MAPR301", false, true),
|
||||
|
||||
MAPR_EMR(EHadoopDistributions.AMAZON_EMR, "MapR 1.2.8", "MapR_EMR", false, true),
|
||||
MAPR213(EHadoopDistributions.MAPR, "MapR 2.1.3", "MAPR213", false, true),
|
||||
|
||||
MAPR212(EHadoopDistributions.MAPR, "MapR 2.1.2", "MAPR212", false, true),
|
||||
|
||||
MAPR2(EHadoopDistributions.MAPR, "MapR 2.0.0", "MAPR2", false, true),
|
||||
|
||||
MAPR1(EHadoopDistributions.MAPR, "MapR 1.2.0", "MAPR1", false, true),
|
||||
|
||||
APACHE_1_0_3_EMR(EHadoopDistributions.AMAZON_EMR, "Apache 1.0.3", "APACHE_1_0_3_EMR", true, false),
|
||||
|
||||
MAPR_EMR(EHadoopDistributions.AMAZON_EMR, "MapR 1.2.8(deprecated)", "MapR_EMR", false, true),
|
||||
|
||||
PIVOTAL_HD_2_0(
|
||||
EHadoopDistributions.PIVOTAL_HD,
|
||||
"Pivotal HD 2.0",
|
||||
"PIVOTAL_HD_2_0",
|
||||
true,
|
||||
false,
|
||||
new EMRVersion[] { EMRVersion.YARN }),
|
||||
|
||||
PIVOTAL_HD_1_0_1(
|
||||
EHadoopDistributions.PIVOTAL_HD,
|
||||
"Pivotal HD 1.0.1",
|
||||
|
||||
@@ -28,6 +28,8 @@ public enum ECustomVersionGroup {
|
||||
|
||||
PIG_HBASE,
|
||||
PIG_HCATALOG,
|
||||
|
||||
MAP_REDUCE,
|
||||
|
||||
ALL;
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ public enum ECustomVersionType {
|
||||
PIG_HBASE("Pig for HBase", ECustomVersionGroup.PIG_HBASE), //$NON-NLS-1$
|
||||
|
||||
PIG_HCATALOG("Pig for Hcatalog", ECustomVersionGroup.PIG_HCATALOG), //$NON-NLS-1$
|
||||
|
||||
MAP_REDUCE("Map Reduce", ECustomVersionGroup.MAP_REDUCE), //$NON-NLS-1$
|
||||
|
||||
ALL("All", ECustomVersionGroup.ALL); //$NON-NLS-1$
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.hadoop.IHadoopService;
|
||||
import org.talend.core.hadoop.version.EHadoopDistributions;
|
||||
import org.talend.core.hadoop.version.EHadoopVersion4Drivers;
|
||||
import org.talend.core.model.components.ComponentCategory;
|
||||
import org.talend.core.model.general.ModuleNeeded;
|
||||
import org.talend.core.model.process.IElementParameter;
|
||||
import org.talend.core.model.process.INode;
|
||||
@@ -99,7 +100,7 @@ public class HadoopVersionDialog extends TitleAreaDialog {
|
||||
protected void configureShell(Shell newShell) {
|
||||
super.configureShell(newShell);
|
||||
newShell.setText(Messages.getString("HadoopVersionDialog.title")); //$NON-NLS-1$
|
||||
newShell.setSize(580, 450);
|
||||
newShell.setSize(700, 450);
|
||||
setHelpAvailable(false);
|
||||
}
|
||||
|
||||
@@ -411,6 +412,8 @@ public class HadoopVersionDialog extends TitleAreaDialog {
|
||||
if (ECustomVersionType.PIG == type || ECustomVersionType.PIG_HBASE == type
|
||||
|| ECustomVersionType.PIG_HCATALOG == type) {
|
||||
hadoopLibraries = getLibrariesForPig(type);
|
||||
} else if (ECustomVersionType.MAP_REDUCE == type) {
|
||||
hadoopLibraries = getLibrariesForMapReduce(type);
|
||||
} else {
|
||||
// fix for TDI-25676 HCATALOG and OOZIE should use the same jars as HDFS
|
||||
if (!commonGroupCalculated
|
||||
@@ -447,6 +450,30 @@ public class HadoopVersionDialog extends TitleAreaDialog {
|
||||
|
||||
return libMap;
|
||||
}
|
||||
|
||||
private Set<String> getLibrariesForMapReduce(ECustomVersionType type) {
|
||||
Set<String> neededLibraries = new HashSet<String>();
|
||||
INode node = CoreRuntimePlugin.getInstance().getDesignerCoreService()
|
||||
.getRefrenceNode("tMRConfiguration", ComponentCategory.CATEGORY_4_MAPREDUCE.getName());//$NON-NLS-1$
|
||||
|
||||
IElementParameter elementParameter = node.getElementParameter("DISTRIBUTION");//$NON-NLS-1$
|
||||
if (elementParameter != null) {
|
||||
elementParameter.setValue(distribution);
|
||||
}
|
||||
|
||||
elementParameter = node.getElementParameter("MR_VERSION");//$NON-NLS-1$
|
||||
if (elementParameter != null) {
|
||||
elementParameter.setValue(version);
|
||||
}
|
||||
|
||||
List<ModuleNeeded> modulesNeeded = node.getModulesNeeded();
|
||||
for (ModuleNeeded module : modulesNeeded) {
|
||||
if (module.isRequired(node.getElementParameters())) {
|
||||
neededLibraries.add(module.getModuleName());
|
||||
}
|
||||
}
|
||||
return neededLibraries;
|
||||
}
|
||||
|
||||
private Set<String> getLibrariesForPig(ECustomVersionType type) {
|
||||
Set<String> neededLibraries = new HashSet<String>();
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.core.model.metadata;
|
||||
|
||||
/**
|
||||
* created by ldong on Jan 13, 2015 Detailled comment
|
||||
*
|
||||
*/
|
||||
public interface IDatabaseConstant {
|
||||
|
||||
public static final String REDSHIFT = "DATABASE:REDSHIFT";
|
||||
}
|
||||
@@ -206,6 +206,7 @@ public class MetadataSchema {
|
||||
final Node defaultValue = nodeMap.getNamedItem("default"); //$NON-NLS-1$
|
||||
final Node comment = nodeMap.getNamedItem("comment"); //$NON-NLS-1$
|
||||
final Node pattern = nodeMap.getNamedItem("pattern"); //$NON-NLS-1$
|
||||
final Node originalLength = nodeMap.getNamedItem("originalLength");//$NON-NLS-1$
|
||||
// see feature 4456
|
||||
|
||||
String nodeValue = MetadataToolHelper.validateColumnName(label.getNodeValue(), 0);
|
||||
@@ -222,6 +223,15 @@ public class MetadataSchema {
|
||||
} else {
|
||||
metadataColumn.setOriginalDbColumnName(nodeValue);
|
||||
}
|
||||
if (originalLength != null && originalLength.getNodeValue() != null) {
|
||||
try {
|
||||
metadataColumn.setOriginalLength(Integer.parseInt(originalLength.getNodeValue()));
|
||||
} catch (final NumberFormatException e) {
|
||||
metadataColumn.setOriginalLength(null);
|
||||
}
|
||||
} else {
|
||||
metadataColumn.setOriginalLength(null);
|
||||
}
|
||||
if (length.getNodeValue() != null) {
|
||||
try {
|
||||
metadataColumn.setLength(Integer.parseInt(length.getNodeValue()));
|
||||
@@ -784,6 +794,14 @@ public class MetadataSchema {
|
||||
}
|
||||
column.setAttributeNode(length);
|
||||
|
||||
Attr originalLength = document.createAttribute("originalLength"); //$NON-NLS-1$
|
||||
if (metadataColumn.getOriginalLength() == null) {
|
||||
originalLength.setNodeValue("-1"); //$NON-NLS-1$
|
||||
} else {
|
||||
originalLength.setNodeValue(String.valueOf(metadataColumn.getOriginalLength()));
|
||||
}
|
||||
column.setAttributeNode(originalLength);
|
||||
|
||||
Attr precision = document.createAttribute("precision"); //$NON-NLS-1$
|
||||
if (metadataColumn.getPrecision() == null) {
|
||||
precision.setNodeValue("-1"); //$NON-NLS-1$
|
||||
|
||||
@@ -15,8 +15,6 @@ package org.talend.core.model.metadata.connection.hive;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.talend.commons.utils.platform.PluginChecker;
|
||||
|
||||
/**
|
||||
* @author Marvin Wang
|
||||
* @version 1.0 jdk1.6
|
||||
@@ -126,9 +124,9 @@ public class HiveConnUtils {
|
||||
}
|
||||
}
|
||||
// ADD msjian TDQ-6407 2012-11-26:for top not support hive embedded mode
|
||||
if (PluginChecker.isOnlyTopLoaded() && (level == 0 || level == 2)) {
|
||||
list.remove(0);
|
||||
}
|
||||
// if (PluginChecker.isOnlyTopLoaded() && (level == 0 || level == 2)) {
|
||||
// list.remove(0);
|
||||
// }
|
||||
// TDQ-6407~
|
||||
return list;
|
||||
}
|
||||
@@ -242,9 +240,9 @@ public class HiveConnUtils {
|
||||
protected static List<String> getHiveModeNameList(int distributionIndex, int versionIndex, int hiveServerIndex) {
|
||||
List<HiveConnVersionInfo> hiveModeObjs = getHiveModes(distributionIndex, versionIndex, hiveServerIndex);
|
||||
// ADD msjian TDQ-6407 2012-11-26: for top, not support hive embeded mode,hide this menu
|
||||
if (PluginChecker.isOnlyTopLoaded() && hiveModeObjs.size() > 1) {
|
||||
hiveModeObjs.remove(0);
|
||||
}
|
||||
// if (PluginChecker.isOnlyTopLoaded() && hiveModeObjs.size() > 1) {
|
||||
// hiveModeObjs.remove(0);
|
||||
// }
|
||||
// TDQ-6407~
|
||||
if (hiveModeObjs != null && hiveModeObjs.size() > 0) {
|
||||
List<String> hiveModeNameList = new ArrayList<String>();
|
||||
|
||||
@@ -43,38 +43,46 @@ public enum HiveConnVersionInfo {
|
||||
|
||||
DISTRO_CUSTOM(0, "CUSTOM", "Custom - Unsupported", false), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
HDP_1_0(1, "HDP_1_0", "Hortonworks Data Platform V1.0.0", true, HiveConnVersionInfo.HORTONWORKS), //$NON-NLS-1$//$NON-NLS-2$
|
||||
HDP_2_1(1, "HDP_2_1", "Hortonworks Data Platform V2.1.0(Baikal)", true, false, true, true, HiveConnVersionInfo.HORTONWORKS), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
HDP_1_2(1, "HDP_1_2", "Hortonworks Data Platform V1.2.0(Bimota)", true, true, HiveConnVersionInfo.HORTONWORKS), //$NON-NLS-1$//$NON-NLS-2$
|
||||
HDP_2_0(1, "HDP_2_0", "Hortonworks Data Platform V2.0.0(BigWheel)", true, false, true, true, HiveConnVersionInfo.HORTONWORKS), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
HDP_1_3(1, "HDP_1_3", "Hortonworks Data Platform V1.3.0(Condor)", true, true, HiveConnVersionInfo.HORTONWORKS), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
HDP_2_0(1, "HDP_2_0", "Hortonworks Data Platform V2.0.0", true, false, true, false, HiveConnVersionInfo.HORTONWORKS), //$NON-NLS-1$//$NON-NLS-2$
|
||||
HDP_1_2(1, "HDP_1_2", "Hortonworks Data Platform V1.2.0(Bimota)", true, true, HiveConnVersionInfo.HORTONWORKS), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
APACHE_0_20_203(1, "APACHE_0_20_203", "Apache 0.20.203 (Hive 0.7.1)", false, HiveConnVersionInfo.APACHE), //$NON-NLS-1$//$NON-NLS-2$
|
||||
HDP_1_0(1, "HDP_1_0", "Hortonworks Data Platform V1.0.0(deprecated)", true, HiveConnVersionInfo.HORTONWORKS), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
APACHE_1_0_0(1, "APACHE_1_0_0", "Apache 1.0.0 (Hive 0.9.0)", false, HiveConnVersionInfo.APACHE), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
Cloudera_CDH3(1, "Cloudera_CDH3", "Cloudera CDH3", false, HiveConnVersionInfo.CLOUDERA), //$NON-NLS-1$//$NON-NLS-2$
|
||||
APACHE_0_20_203(1, "APACHE_0_20_203", "Apache 0.20.203 (Hive 0.7.1)", false, HiveConnVersionInfo.APACHE), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
Cloudera_CDH4(1, "Cloudera_CDH4", "Cloudera CDH4", true, true, HiveConnVersionInfo.CLOUDERA), //$NON-NLS-1$//$NON-NLS-2$
|
||||
Cloudera_CDH5(1, "Cloudera_CDH5", "Cloudera CDH5", true, false, true, true, HiveConnVersionInfo.CLOUDERA), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
Cloudera_CDH4_YARN(1, "Cloudera_CDH4_YARN", "Cloudera CDH4 YARN", true, false, true, false, HiveConnVersionInfo.CLOUDERA), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MAPR1(1, "MAPR1", "MapR 1.2.0", false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
Cloudera_CDH4(1, "Cloudera_CDH4", "Cloudera CDH4", true, true, HiveConnVersionInfo.CLOUDERA), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MAPR2(1, "MAPR2", "MapR 2.0.0", false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
Cloudera_CDH3(1, "Cloudera_CDH3", "Cloudera CDH3(deprecated)", false, HiveConnVersionInfo.CLOUDERA), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MAPR2_1_2(1, "MAPR212", "MapR 2.1.2", false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MAPR2_1_3(1, "MAPR213", "MapR 2.1.3", true, false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
MAPR3_1_0(1, "MAPR310", "MapR 3.1.0", true, false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MAPR3_0_1(1, "MAPR301", "MapR 3.0.1", true, false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MapR_EMR(1, "MapR_EMR", "MapR 1.2.8", false, HiveConnVersionInfo.AMAZON_EMR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
MAPR2_1_3(1, "MAPR213", "MapR 2.1.3", true, false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MAPR2_1_2(1, "MAPR212", "MapR 2.1.2", false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MAPR2(1, "MAPR2", "MapR 2.0.0", false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MAPR1(1, "MAPR1", "MapR 1.2.0", false, HiveConnVersionInfo.MAPR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
APACHE_1_0_3_EMR(1, "APACHE_1_0_3_EMR", "Apache 1.0.3 (Hive 0.8.1)", false, HiveConnVersionInfo.AMAZON_EMR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
MapR_EMR(1, "MapR_EMR", "MapR 1.2.8(deprecated)", false, HiveConnVersionInfo.AMAZON_EMR), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
PIVOTAL_HD_2_0(1, "PIVOTAL_HD_2_0", "Pivotal HD 2.0", true, false, true, true, HiveConnVersionInfo.PIVOTAL_HD), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
PIVOTAL_HD_1_0_1(1, "PIVOTAL_HD_1_0_1", "Pivotal HD 1.0.1", false, false, true, false, HiveConnVersionInfo.PIVOTAL_HD), //$NON-NLS-1$//$NON-NLS-2$
|
||||
|
||||
DISTRO_VERSION_CUSTOM(1, "DISTRO_VERSION_CUSTOM", "Customized Version", true, true, HiveConnVersionInfo.DISTRO_CUSTOM), //$NON-NLS-1$//$NON-NLS-2$
|
||||
@@ -86,15 +94,19 @@ public enum HiveConnVersionInfo {
|
||||
HiveConnVersionInfo.HDP_1_2,
|
||||
HiveConnVersionInfo.HDP_1_3,
|
||||
HiveConnVersionInfo.HDP_2_0,
|
||||
HiveConnVersionInfo.HDP_2_1,
|
||||
HiveConnVersionInfo.APACHE_1_0_0,
|
||||
HiveConnVersionInfo.Cloudera_CDH4,
|
||||
HiveConnVersionInfo.Cloudera_CDH4_YARN,
|
||||
HiveConnVersionInfo.Cloudera_CDH5,
|
||||
HiveConnVersionInfo.MAPR2,
|
||||
HiveConnVersionInfo.MAPR2_1_2,
|
||||
HiveConnVersionInfo.MAPR2_1_3,
|
||||
HiveConnVersionInfo.MAPR3_0_1,
|
||||
HiveConnVersionInfo.MAPR3_1_0,
|
||||
HiveConnVersionInfo.APACHE_1_0_3_EMR,
|
||||
HiveConnVersionInfo.PIVOTAL_HD_1_0_1,
|
||||
HiveConnVersionInfo.PIVOTAL_HD_2_0,
|
||||
HiveConnVersionInfo.DISTRO_VERSION_CUSTOM),
|
||||
|
||||
MODE_STANDALONE(2, "STANDALONE",//$NON-NLS-1$
|
||||
@@ -103,19 +115,23 @@ public enum HiveConnVersionInfo {
|
||||
HiveConnVersionInfo.HDP_1_2,
|
||||
HiveConnVersionInfo.HDP_1_3,
|
||||
HiveConnVersionInfo.HDP_2_0,
|
||||
HiveConnVersionInfo.HDP_2_1,
|
||||
HiveConnVersionInfo.APACHE_0_20_203,
|
||||
HiveConnVersionInfo.APACHE_1_0_0,
|
||||
HiveConnVersionInfo.Cloudera_CDH3,
|
||||
HiveConnVersionInfo.Cloudera_CDH4,
|
||||
HiveConnVersionInfo.Cloudera_CDH4_YARN,
|
||||
HiveConnVersionInfo.Cloudera_CDH5,
|
||||
HiveConnVersionInfo.MAPR1,
|
||||
HiveConnVersionInfo.MAPR2,
|
||||
HiveConnVersionInfo.MAPR2_1_2,
|
||||
HiveConnVersionInfo.MAPR2_1_3,
|
||||
HiveConnVersionInfo.MAPR3_0_1,
|
||||
HiveConnVersionInfo.MAPR3_1_0,
|
||||
HiveConnVersionInfo.MapR_EMR,
|
||||
HiveConnVersionInfo.APACHE_1_0_3_EMR,
|
||||
HiveConnVersionInfo.PIVOTAL_HD_1_0_1,
|
||||
HiveConnVersionInfo.PIVOTAL_HD_2_0,
|
||||
HiveConnVersionInfo.DISTRO_VERSION_CUSTOM);
|
||||
|
||||
private int level;
|
||||
@@ -134,6 +150,9 @@ public enum HiveConnVersionInfo {
|
||||
|
||||
private boolean supportSecurity;
|
||||
|
||||
private static HiveConnVersionInfo[] hiveVersions = new HiveConnVersionInfo[] { HiveConnVersionInfo.Cloudera_CDH5,
|
||||
HiveConnVersionInfo.HDP_2_1, HiveConnVersionInfo.HDP_2_0, HiveConnVersionInfo.PIVOTAL_HD_2_0 };
|
||||
|
||||
private HiveConnVersionInfo(int level, String key, String displayName, boolean supportSecurity,
|
||||
HiveConnVersionInfo... follows) {
|
||||
this(level, key, displayName, false, supportSecurity, follows);
|
||||
@@ -193,4 +212,19 @@ public enum HiveConnVersionInfo {
|
||||
return this.supportSecurity;
|
||||
}
|
||||
|
||||
public static HiveConnVersionInfo[] getHiveVersionsNotSupportOnWindows() {
|
||||
return hiveVersions;
|
||||
}
|
||||
|
||||
public static HiveConnVersionInfo getVersionByKey(String key) {
|
||||
HiveConnVersionInfo[] values = values();
|
||||
for (HiveConnVersionInfo version : values) {
|
||||
if (version.getLevel() == 1 && version.getKey().equals(key)) {
|
||||
return version;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -118,8 +118,10 @@ public class ComponentToRepositoryProperty {
|
||||
product = EDatabaseTypeName.MYSQL.getProduct();
|
||||
}
|
||||
}
|
||||
String mapping = MetadataTalendType.getDefaultDbmsFromProduct(product).getId();
|
||||
conn.setDbmsId(mapping);
|
||||
if (MetadataTalendType.getDefaultDbmsFromProduct(product) != null) {
|
||||
String mapping = MetadataTalendType.getDefaultDbmsFromProduct(product).getId();
|
||||
conn.setDbmsId(mapping);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.emf.common.util.EList;
|
||||
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
|
||||
import org.talend.commons.ui.utils.PathUtils;
|
||||
import org.talend.commons.utils.PasswordEncryptUtil;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.database.EDatabaseTypeName;
|
||||
import org.talend.core.database.conn.ConnParameterKeys;
|
||||
@@ -499,15 +500,21 @@ public class RepositoryToComponentProperty {
|
||||
return "CustomModule"; //$NON-NLS-1$
|
||||
} else {
|
||||
if (table != null) {
|
||||
EList<SalesforceModuleUnit> moduleList = connection.getModules();
|
||||
for (SalesforceModuleUnit unit : moduleList) {
|
||||
if (table.getLabel().equals(unit.getModuleName())) {
|
||||
return unit.getModuleName();
|
||||
}
|
||||
SalesforceModuleUnit currentUnit = getSaleforceModuleUnitByTable(table, connection.getModules());
|
||||
if (currentUnit != null) {
|
||||
return currentUnit.getModuleName();
|
||||
}
|
||||
}
|
||||
return connection.getModuleName();
|
||||
}
|
||||
} else if ("CUSTOM_MODULE_NAME".equals(value)) { //$NON-NLS-1$
|
||||
if (table != null) {
|
||||
SalesforceModuleUnit currentUnit = getSaleforceModuleUnitByTable(table, connection.getModules());
|
||||
if (currentUnit != null) {
|
||||
return TalendQuoteUtils.addQuotes(currentUnit.getModuleName());
|
||||
}
|
||||
}
|
||||
return TalendQuoteUtils.addQuotes(connection.getModuleName());
|
||||
} else if ("QUERY_CONDITION".equals(value)) { //$NON-NLS-1$
|
||||
if (isContextMode(connection, connection.getQueryCondition())) {
|
||||
return connection.getQueryCondition();
|
||||
@@ -595,6 +602,15 @@ public class RepositoryToComponentProperty {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static SalesforceModuleUnit getSaleforceModuleUnitByTable(IMetadataTable table, EList<SalesforceModuleUnit> moduleList) {
|
||||
for (SalesforceModuleUnit unit : moduleList) {
|
||||
if (table.getLabel().equals(unit.getModuleName())) {
|
||||
return unit;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC qzhang Comment method "getWSDLValue".
|
||||
*
|
||||
@@ -2349,7 +2365,12 @@ public class RepositoryToComponentProperty {
|
||||
if (isContextMode(connection, connection.getPassword())) {
|
||||
return connection.getPassword();
|
||||
} else {
|
||||
return TalendQuoteUtils.addQuotes(connection.getPassword());
|
||||
try {
|
||||
return TalendQuoteUtils.addQuotes(PasswordEncryptUtil.decryptPassword(connection.getPassword()));
|
||||
} catch (Exception e) {
|
||||
String pwd = ConnectionHelper.getDecryptPassword(connection.getPassword());
|
||||
return pwd == null ? TalendQuoteUtils.addQuotes(connection.getPassword()) : TalendQuoteUtils.addQuotes(pwd);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (value.equals("KEYSTORE_FILE")) {
|
||||
@@ -2364,7 +2385,33 @@ public class RepositoryToComponentProperty {
|
||||
if (isContextMode(connection, connection.getKeystorePassword())) {
|
||||
return connection.getKeystorePassword();
|
||||
} else {
|
||||
return TalendQuoteUtils.addQuotes(connection.getKeystorePassword());
|
||||
try {
|
||||
return TalendQuoteUtils.addQuotes(PasswordEncryptUtil.decryptPassword(connection.getKeystorePassword()));
|
||||
} catch (Exception e) {
|
||||
String pwd = ConnectionHelper.getDecryptPassword(connection.getKeystorePassword());
|
||||
return pwd == null ? TalendQuoteUtils.addQuotes(connection.getKeystorePassword()) : TalendQuoteUtils
|
||||
.addQuotes(pwd);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (value.equals("PRIVATEKEY")) {
|
||||
if (isContextMode(connection, connection.getPrivatekey())) {
|
||||
return connection.getPrivatekey();
|
||||
} else {
|
||||
return TalendQuoteUtils.addQuotes(connection.getPrivatekey());
|
||||
}
|
||||
}
|
||||
|
||||
if (value.equals("PASSPHRASE")) {
|
||||
if (isContextMode(connection, connection.getPassphrase())) {
|
||||
return connection.getPassphrase();
|
||||
} else {
|
||||
try {
|
||||
return TalendQuoteUtils.addQuotes(PasswordEncryptUtil.decryptPassword(connection.getPassphrase()));
|
||||
} catch (Exception e) {
|
||||
String pwd = ConnectionHelper.getDecryptPassword(connection.getPassphrase());
|
||||
return pwd == null ? TalendQuoteUtils.addQuotes(connection.getPassphrase()) : TalendQuoteUtils.addQuotes(pwd);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (value.equals("AUTH_METHOD")) {
|
||||
@@ -2431,7 +2478,13 @@ public class RepositoryToComponentProperty {
|
||||
if (isContextMode(connection, connection.getProxypassword())) {
|
||||
return connection.getProxypassword();
|
||||
} else {
|
||||
return TalendQuoteUtils.addQuotes(connection.getProxypassword());
|
||||
try {
|
||||
return TalendQuoteUtils.addQuotes(PasswordEncryptUtil.decryptPassword(connection.getProxypassword()));
|
||||
} catch (Exception e) {
|
||||
String pwd = ConnectionHelper.getDecryptPassword(connection.getProxypassword());
|
||||
return pwd == null ? TalendQuoteUtils.addQuotes(connection.getProxypassword()) : TalendQuoteUtils
|
||||
.addQuotes(pwd);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -392,6 +392,19 @@ public final class JavaTypesManager {
|
||||
return Number.class.isAssignableFrom(javaType.getNullableClass());
|
||||
}
|
||||
|
||||
/**
|
||||
* They are all the INTEGER number type.
|
||||
* <p>
|
||||
* int(Integer), long(Long), short(Short), byte(Byte)
|
||||
* </p>
|
||||
*
|
||||
* @param type
|
||||
* @return true if given type represents a primitive java type
|
||||
*/
|
||||
public static boolean isNumberIntType(JavaType javaType) {
|
||||
return javaType == BYTE || javaType == INTEGER || javaType == SHORT || javaType == LONG;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Return the default value for a given type.
|
||||
|
||||
@@ -66,4 +66,6 @@ public interface IMigrationToolService extends IService {
|
||||
*/
|
||||
public void updateMigrationSystem(org.talend.core.model.properties.Project project, boolean persistence);
|
||||
|
||||
public String getTaskId();
|
||||
|
||||
}
|
||||
|
||||
@@ -92,7 +92,13 @@ public abstract class AbstractNode implements INode {
|
||||
|
||||
private List<ModuleNeeded> modulesNeeded = new ArrayList<ModuleNeeded>();
|
||||
|
||||
// as the talend job contains multiple mapreduce jobs, use this to indicate which mapreduce job contains this
|
||||
// for DI job, and indicate if the component after the iterator
|
||||
// connection which enable parallel, even this component after
|
||||
// onComponentOk
|
||||
private String parallelIterator = null;
|
||||
|
||||
// as the talend job contains multiple mapreduce jobs, use this to indicate
|
||||
// which mapreduce job contains this
|
||||
// graphic node
|
||||
private Integer mrGroupId;
|
||||
|
||||
@@ -105,6 +111,11 @@ public abstract class AbstractNode implements INode {
|
||||
// indicate if this MR component will generate Reduce part
|
||||
private boolean mrContainsReduce;
|
||||
|
||||
private boolean mapOnlyAfterReduce;
|
||||
|
||||
// for MR, tag this component is the ref(lookup) start node
|
||||
private boolean isRefNode = false;
|
||||
|
||||
public String getComponentName() {
|
||||
return componentName;
|
||||
}
|
||||
@@ -523,7 +534,7 @@ public abstract class AbstractNode implements INode {
|
||||
}
|
||||
|
||||
for (IElementParameter param : this.getElementParameters()) {
|
||||
if (param.getName().equals("UNIQUE_NAME") || isSQLQueryParameter(param)) { //$NON-NLS-1$
|
||||
if (param.getName().equals("UNIQUE_NAME") || isSQLQueryParameter(param) || isTDMParameter(param)) { //$NON-NLS-1$
|
||||
continue;
|
||||
}
|
||||
ParameterValueUtil.renameValues(param, oldName, newName);
|
||||
@@ -542,6 +553,20 @@ public abstract class AbstractNode implements INode {
|
||||
return parameter.getFieldType().equals(EParameterFieldType.MEMO_SQL) && parameter.getName().equals("QUERY"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/**
|
||||
* bug TDM-409
|
||||
* <p>
|
||||
* DOC hwang Comment method "isTDMParameter".
|
||||
*
|
||||
* @param parameter
|
||||
* @return
|
||||
*/
|
||||
private boolean isTDMParameter(final IElementParameter parameter) {
|
||||
|
||||
return parameter.getFieldType().equals(EParameterFieldType.HMAP_PATH)
|
||||
&& parameter.getName().equals(EParameterFieldType.HMAP_PATH.getName());
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
@@ -706,6 +731,9 @@ public abstract class AbstractNode implements INode {
|
||||
|
||||
@Override
|
||||
public List<? extends IElementParameter> getElementParametersWithChildrens() {
|
||||
if (this.elementParameters == null) {
|
||||
return new ArrayList<IElementParameter>();
|
||||
}
|
||||
List<IElementParameter> fullListParam = new ArrayList<IElementParameter>(this.elementParameters);
|
||||
|
||||
for (IElementParameter curParam : elementParameters) {
|
||||
@@ -1138,4 +1166,58 @@ public abstract class AbstractNode implements INode {
|
||||
public void setRefNodes(List<INode> refNodes) {
|
||||
this.refNodes = refNodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for mapOnlyAfterReduce.
|
||||
*
|
||||
* @return the mapOnlyAfterReduce
|
||||
*/
|
||||
public boolean isMapOnlyAfterReduce() {
|
||||
return this.mapOnlyAfterReduce;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the mapOnlyAfterReduce.
|
||||
*
|
||||
* @param mapOnlyAfterReduce the mapOnlyAfterReduce to set
|
||||
*/
|
||||
public void setMapOnlyAfterReduce(boolean mapOnlyAfterReduce) {
|
||||
this.mapOnlyAfterReduce = mapOnlyAfterReduce;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for isRefNode.
|
||||
*
|
||||
* @return the isRefNode
|
||||
*/
|
||||
public boolean isRefNode() {
|
||||
return this.isRefNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the isRefNode.
|
||||
*
|
||||
* @param isRefNode the isRefNode to set
|
||||
*/
|
||||
public void setRefNode(boolean isRefNode) {
|
||||
this.isRefNode = isRefNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for parallelIterator.
|
||||
*
|
||||
* @return the parallelIterator
|
||||
*/
|
||||
public String getParallelIterator() {
|
||||
return parallelIterator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the parallelIterator.
|
||||
*
|
||||
* @param parallelIterator the parallelIterator to set
|
||||
*/
|
||||
public void setParallelIterator(String parallelIterator) {
|
||||
this.parallelIterator = parallelIterator;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,69 +36,41 @@ public abstract class AbstractJobParameterInRepositoryRelationshipHandler extend
|
||||
protected Set<Relation> collect(Map<String, ElementParameterType> parametersMap, Map<?, ?> options) {
|
||||
Set<Relation> relationSet = new HashSet<Relation>();
|
||||
|
||||
ElementParameterType repositoryTypeParam = getParameterTypeByNames(parametersMap, getRepositoryTypeName(),
|
||||
getRepositoryTypeNameN());
|
||||
if (repositoryTypeParam != null && IN_REPOSITORY.equals(repositoryTypeParam.getValue())) {
|
||||
ElementParameterType repositoryTypeValueParam = getParameterTypeByNames(parametersMap, getRepositoryTypeValueName(),
|
||||
getRepositoryTypeValueNameN());
|
||||
if (repositoryTypeValueParam != null) {
|
||||
String repositoryIdOrValue = repositoryTypeValueParam.getValue();
|
||||
if (StringUtils.isNotEmpty(repositoryIdOrValue)) {
|
||||
Relation addedRelation = new Relation();
|
||||
addedRelation.setId(repositoryIdOrValue);
|
||||
addedRelation.setType(getRepositoryRelationType());
|
||||
addedRelation.setVersion(RelationshipItemBuilder.LATEST_VERSION);
|
||||
relationSet.add(addedRelation);
|
||||
for (ElementParameterType paramType : parametersMap.values()) {
|
||||
if (paramType.getName().endsWith(":" + getRepositoryTypeName())) { //$NON-NLS-1$
|
||||
String name = paramType.getName().split(":")[0]; //$NON-NLS-1$
|
||||
ElementParameterType repositoryTypeParam = parametersMap.get(name + ":" //$NON-NLS-1$
|
||||
+ getRepositoryTypeName());
|
||||
if (repositoryTypeParam != null && IN_REPOSITORY.equals(repositoryTypeParam.getValue())) {
|
||||
ElementParameterType repositoryTypeValueParam = parametersMap.get(name + ":" //$NON-NLS-1$
|
||||
+ getRepositoryTypeValueName());
|
||||
if (repositoryTypeValueParam != null) {
|
||||
String repositoryIdOrValue = repositoryTypeValueParam.getValue();
|
||||
if (StringUtils.isNotEmpty(repositoryIdOrValue)) {
|
||||
Relation addedRelation = new Relation();
|
||||
addedRelation.setId(repositoryIdOrValue);
|
||||
addedRelation.setType(getRepositoryRelationType());
|
||||
addedRelation.setVersion(RelationshipItemBuilder.LATEST_VERSION);
|
||||
relationSet.add(addedRelation);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return relationSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to find the name1 of parameter type, if not found, will try the list of nameN.
|
||||
*/
|
||||
protected ElementParameterType getParameterTypeByNames(Map<String, ElementParameterType> parametersMap, String name1,
|
||||
String... nameN) {
|
||||
if (parametersMap == null || parametersMap.isEmpty() || name1 == null) {
|
||||
return null;
|
||||
}
|
||||
ElementParameterType paramType = parametersMap.get(name1);
|
||||
if (paramType == null && nameN != null && nameN.length > 0) {
|
||||
for (String name : nameN) {
|
||||
paramType = parametersMap.get(name);
|
||||
if (paramType != null) { // found
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return paramType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Something like PROPERTY:PROPERTY_TYPE
|
||||
* Something like PROPERTY_TYPE
|
||||
*/
|
||||
protected abstract String getRepositoryTypeName();
|
||||
|
||||
/**
|
||||
* Something like PROPERTY:REPOSITORY_PROPERTY_TYPE
|
||||
*/
|
||||
protected abstract String getRepositoryTypeValueName();
|
||||
|
||||
/**
|
||||
* Something like PROPERTY_TYPE
|
||||
*/
|
||||
protected String[] getRepositoryTypeNameN() {
|
||||
return new String[0]; // default, no Name N
|
||||
}
|
||||
|
||||
/**
|
||||
* Something like REPOSITORY_PROPERTY_TYPE
|
||||
*/
|
||||
protected String[] getRepositoryTypeValueNameN() {
|
||||
return new String[0];// default, no Name N
|
||||
}
|
||||
protected abstract String getRepositoryTypeValueName();
|
||||
|
||||
/**
|
||||
* get the type of relation type
|
||||
|
||||
@@ -107,4 +107,10 @@ public class Relation implements Cloneable {
|
||||
protected Object clone() throws CloneNotSupportedException {
|
||||
return super.clone();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Relation [type=" + type + ", id=" + id + ", version=" + version
|
||||
+ "]";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,6 +145,31 @@ public class RelationshipItemBuilder {
|
||||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for every linked items who use the selected id, no matter the version.
|
||||
* Usefull when want to delete an item since it will delete every versions.
|
||||
*
|
||||
* @param itemId
|
||||
* @param version
|
||||
* @param relationType
|
||||
* @return
|
||||
*/
|
||||
public List<Relation> getItemsHaveRelationWith(String itemId) {
|
||||
if (!loaded) {
|
||||
loadRelations();
|
||||
}
|
||||
Set<Relation> relations = new HashSet<Relation>();
|
||||
Set<Relation> itemsRelations = getItemsHaveRelationWith(currentProjectItemsRelations, itemId);
|
||||
if (itemsRelations != null) {
|
||||
relations.addAll(itemsRelations);
|
||||
}
|
||||
itemsRelations = getItemsHaveRelationWith(referencesItemsRelations, itemId);
|
||||
if (itemsRelations != null) {
|
||||
relations.addAll(itemsRelations);
|
||||
}
|
||||
return new ArrayList<Relation>(relations);
|
||||
}
|
||||
|
||||
public List<Relation> getItemsRelatedTo(String itemId, String version, String relationType) {
|
||||
if (!loaded) {
|
||||
loadRelations();
|
||||
@@ -160,6 +185,36 @@ public class RelationshipItemBuilder {
|
||||
}
|
||||
return new ArrayList<Relation>(relations);
|
||||
}
|
||||
|
||||
private Set<Relation> getItemsHaveRelationWith(Map<Relation, Set<Relation>> itemsRelations, String itemId) {
|
||||
|
||||
Set<Relation> relations = new HashSet<Relation>();
|
||||
|
||||
for (Relation baseItem : itemsRelations.keySet()) {
|
||||
for (Relation relatedItem : itemsRelations.get(baseItem)) {
|
||||
String id = relatedItem.getId();
|
||||
if (id != null) {
|
||||
Relation tmpRelatedItem = null;
|
||||
if (id.indexOf(" - ") != -1) { //$NON-NLS-1$
|
||||
try {
|
||||
tmpRelatedItem = (Relation) relatedItem.clone();
|
||||
tmpRelatedItem.setId(id.split(" - ")[0]); //$NON-NLS-1$
|
||||
} catch (CloneNotSupportedException e) {
|
||||
log.error(e);
|
||||
}
|
||||
} else {
|
||||
tmpRelatedItem = relatedItem;
|
||||
}
|
||||
if (tmpRelatedItem != null && itemId.equals(id)) {
|
||||
relations.add(baseItem);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return relations;
|
||||
}
|
||||
|
||||
private Set<Relation> getItemsRelatedTo(Map<Relation, Set<Relation>> itemsRelations, String itemId, String version,
|
||||
String relationType) {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package org.talend.core.model.repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jface.viewers.ILabelProvider;
|
||||
import org.eclipse.jface.viewers.ViewerFilter;
|
||||
import org.talend.core.model.process.IElement;
|
||||
import org.talend.repository.model.IRepositoryNode;
|
||||
import org.talend.repository.model.RepositoryNode;
|
||||
import org.talend.repository.model.nodes.IProjectRepositoryNode;
|
||||
|
||||
/**
|
||||
* created by ycbai on 2013-3-4 Detailled comment
|
||||
@@ -17,12 +17,12 @@ public interface IRepositoryTypeProcessor {
|
||||
|
||||
public boolean isSelectionValid(RepositoryNode node);
|
||||
|
||||
public IRepositoryNode getInputRoot(IProjectRepositoryNode projectRepoNode);
|
||||
|
||||
public ViewerFilter makeFilter();
|
||||
|
||||
public String getDialogTitle();
|
||||
|
||||
public ILabelProvider getLabelProvider(IElement elem);
|
||||
|
||||
}
|
||||
public List<ERepositoryObjectType> getShowRootTypes();
|
||||
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.core.repository.model;
|
||||
package org.talend.core.model.repository;
|
||||
|
||||
import org.talend.core.model.metadata.builder.connection.AbstractMetadataObject;
|
||||
import org.talend.core.model.properties.Property;
|
||||
@@ -96,6 +96,8 @@ public class RepositoryViewObject implements IRepositoryViewObject {
|
||||
|
||||
private String path;
|
||||
|
||||
private String displayName;
|
||||
|
||||
private ERepositoryStatus repositoryStatus;
|
||||
|
||||
private ERepositoryStatus informationStatus;
|
||||
@@ -118,7 +120,8 @@ public class RepositoryViewObject implements IRepositoryViewObject {
|
||||
this.creationDate = property.getCreationDate();
|
||||
this.description = property.getDescription();
|
||||
this.modificationDate = property.getModificationDate();
|
||||
this.label = property.getDisplayName();
|
||||
this.label = property.getLabel();
|
||||
this.displayName = property.getDisplayName();
|
||||
this.purpose = property.getPurpose();
|
||||
this.statusCode = property.getStatusCode();
|
||||
this.version = property.getVersion();
|
||||
@@ -251,6 +254,10 @@ public class RepositoryViewObject implements IRepositoryViewObject {
|
||||
|
||||
@Override
|
||||
public String getLabel() {
|
||||
return this.displayName;
|
||||
}
|
||||
|
||||
public String getTechnicalLabel() {
|
||||
return this.label;
|
||||
}
|
||||
|
||||
@@ -297,7 +304,8 @@ public class RepositoryViewObject implements IRepositoryViewObject {
|
||||
this.creationDate = property.getCreationDate();
|
||||
this.description = property.getDescription();
|
||||
this.modificationDate = property.getModificationDate();
|
||||
this.label = property.getDisplayName();
|
||||
this.label = property.getLabel();
|
||||
this.displayName = property.getDisplayName();
|
||||
this.purpose = property.getPurpose();
|
||||
this.statusCode = property.getStatusCode();
|
||||
this.version = property.getVersion();
|
||||
|
||||
@@ -325,7 +325,9 @@ public abstract class RepositoryUpdateManager {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
openNoModificationDialog();
|
||||
if (show) {
|
||||
openNoModificationDialog();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1166,7 +1168,7 @@ public abstract class RepositoryUpdateManager {
|
||||
}
|
||||
|
||||
};
|
||||
return repositoryUpdateManager.doWork(true, false);
|
||||
return repositoryUpdateManager.doWork(show, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -90,11 +90,14 @@ public abstract class AbstractRepositoryNodeUpdateManagerProvider extends Abstra
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<UpdateResult> retrieveUpdateResults(IProgressMonitor monitor, Object node) {
|
||||
if (node != null && node instanceof IRepositoryNode) {
|
||||
IRepositoryNode repNode = (IRepositoryNode) node;
|
||||
IRepositoryViewObject object = repNode.getObject();
|
||||
return retrieveUpdateResults(monitor, object);
|
||||
protected List<UpdateResult> retrieveUpdateResults(IProgressMonitor monitor, IStructuredSelection selection) {
|
||||
if (selection != null) {
|
||||
Object node = selection.getFirstElement();
|
||||
if (node != null && node instanceof IRepositoryNode) {
|
||||
IRepositoryNode repNode = (IRepositoryNode) node;
|
||||
IRepositoryViewObject object = repNode.getObject();
|
||||
return retrieveUpdateResults(monitor, object);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -25,10 +25,8 @@ import org.eclipse.jface.viewers.TreeViewer;
|
||||
import org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.core.model.update.IUpdateItemType;
|
||||
import org.talend.core.model.update.RepositoryUpdateManager;
|
||||
import org.talend.core.model.update.UpdateResult;
|
||||
import org.talend.core.model.update.UpdatesConstants;
|
||||
import org.talend.core.prefs.ITalendCorePrefConstants;
|
||||
import org.talend.core.runtime.CoreRuntimePlugin;
|
||||
import org.talend.designer.core.IDesignerCoreService;
|
||||
import org.talend.repository.model.IProxyRepositoryFactory;
|
||||
@@ -69,12 +67,11 @@ public abstract class AbstractRepositoryUpdateManagerProvider implements IReposi
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.talend.core.model.update.extension.IRepositoryUpdateManagerProvider#updateForRepository(java.lang.Object,
|
||||
* boolean)
|
||||
* org.talend.core.model.update.extension.IRepositoryUpdateManagerProvider#updateForRepository(IStructuredSelection)
|
||||
*/
|
||||
@Override
|
||||
public boolean updateForRepository(Object node, boolean needConfirm) {
|
||||
if (!needPropagate(needConfirm)) {
|
||||
public boolean updateForRepository(IStructuredSelection selection) {
|
||||
if (!needPropagate(selection)) {
|
||||
return false;
|
||||
}
|
||||
/*
|
||||
@@ -83,7 +80,7 @@ public abstract class AbstractRepositoryUpdateManagerProvider implements IReposi
|
||||
*/
|
||||
|
||||
// retrieve Results
|
||||
List<UpdateResult> updateResults = retrieveUpdateResults(node);
|
||||
List<UpdateResult> updateResults = retrieveUpdateResults(selection);
|
||||
|
||||
// valid results
|
||||
List<UpdateResult> validResults = validResults(updateResults);
|
||||
@@ -92,8 +89,6 @@ public abstract class AbstractRepositoryUpdateManagerProvider implements IReposi
|
||||
if (doUpdate(validResults)) {
|
||||
return true;
|
||||
}
|
||||
// nothing to update
|
||||
RepositoryUpdateManager.openNoModificationDialog();
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -101,31 +96,20 @@ public abstract class AbstractRepositoryUpdateManagerProvider implements IReposi
|
||||
*
|
||||
* DOC ggu Comment method "needPropagate".
|
||||
*
|
||||
* @param continued
|
||||
* @return
|
||||
*/
|
||||
protected boolean needPropagate(boolean needConfirm) {
|
||||
if (needForcePropagation()) {
|
||||
@Override
|
||||
public boolean needPropagate(IStructuredSelection selection) {
|
||||
if (needForcePropagation(selection)) {
|
||||
return true;
|
||||
}
|
||||
if (needConfirm) {
|
||||
IDesignerCoreService designerCoreService = CoreRuntimePlugin.getInstance().getDesignerCoreService();
|
||||
boolean deactive = designerCoreService != null ? Boolean.parseBoolean(designerCoreService
|
||||
.getPreferenceStore(ITalendCorePrefConstants.DEACTIVE_REPOSITORY_UPDATE)) : true;
|
||||
if (deactive) {// disable to do update
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean propagated = RepositoryUpdateManager.openPropagationDialog();
|
||||
if (propagated) { // update
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// by default, will propagate always.
|
||||
return true;
|
||||
}
|
||||
|
||||
protected boolean needForcePropagation() {
|
||||
@Override
|
||||
public boolean needForcePropagation(IStructuredSelection selection) {
|
||||
return false; // diable to force propagating by default
|
||||
}
|
||||
|
||||
@@ -136,15 +120,15 @@ public abstract class AbstractRepositoryUpdateManagerProvider implements IReposi
|
||||
* @param node
|
||||
* @return
|
||||
*/
|
||||
protected List<UpdateResult> retrieveUpdateResults(final Object node) {
|
||||
protected List<UpdateResult> retrieveUpdateResults(final IStructuredSelection selection) {
|
||||
final List<UpdateResult> results = new ArrayList<UpdateResult>();
|
||||
boolean cancelable = !needForcePropagation();
|
||||
boolean cancelable = !needForcePropagation(selection);
|
||||
|
||||
IRunnableWithProgress runnable = new IRunnableWithProgress() {
|
||||
|
||||
@Override
|
||||
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
|
||||
List<UpdateResult> returnResult = retrieveUpdateResults(monitor, node);
|
||||
List<UpdateResult> returnResult = retrieveUpdateResults(monitor, selection);
|
||||
if (returnResult != null) {
|
||||
results.addAll(returnResult);
|
||||
}
|
||||
@@ -175,10 +159,10 @@ public abstract class AbstractRepositoryUpdateManagerProvider implements IReposi
|
||||
*
|
||||
* retrieve the result for current node.
|
||||
*
|
||||
* @param node
|
||||
* @param selection
|
||||
* @return
|
||||
*/
|
||||
protected abstract List<UpdateResult> retrieveUpdateResults(IProgressMonitor monitor, Object node);
|
||||
protected abstract List<UpdateResult> retrieveUpdateResults(IProgressMonitor monitor, IStructuredSelection selection);
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -32,15 +32,33 @@ public interface IRepositoryUpdateManagerProvider extends IUpdateManagerProvider
|
||||
*/
|
||||
boolean validateAction(TreeViewer viewer, IStructuredSelection selection);
|
||||
|
||||
/**
|
||||
*
|
||||
* DOC ggu Comment method "needPropagate".
|
||||
*
|
||||
* @param selection
|
||||
* @return
|
||||
*/
|
||||
boolean needPropagate(IStructuredSelection selection);
|
||||
|
||||
/**
|
||||
*
|
||||
* DOC ggu Comment method "needForcePropagation".
|
||||
*
|
||||
* @param selection
|
||||
* @return if true, will force propagate to update manager.
|
||||
*/
|
||||
boolean needForcePropagation(IStructuredSelection selection);
|
||||
|
||||
/**
|
||||
*
|
||||
* DOC ggu Comment method "updateForRepository".
|
||||
*
|
||||
* Work for DetecteViewImpactAction.
|
||||
*
|
||||
* @param node
|
||||
* @param needConfirm true, will display the confirm dialog to continue to propagate or not.
|
||||
* @param selection
|
||||
* @return true, update successfully
|
||||
*/
|
||||
boolean updateForRepository(Object node, boolean needConfirm);
|
||||
boolean updateForRepository(IStructuredSelection selection);
|
||||
|
||||
}
|
||||
|
||||
@@ -20,9 +20,25 @@ import java.util.Set;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.viewers.TreeViewer;
|
||||
import org.talend.core.model.metadata.builder.connection.AbstractMetadataObject;
|
||||
import org.talend.core.model.metadata.builder.connection.Connection;
|
||||
import org.talend.core.model.metadata.builder.connection.DatabaseConnection;
|
||||
import org.talend.core.model.metadata.builder.connection.MetadataTable;
|
||||
import org.talend.core.model.metadata.builder.connection.Query;
|
||||
import org.talend.core.model.metadata.builder.connection.SAPFunctionUnit;
|
||||
import org.talend.core.model.process.IProcess;
|
||||
import org.talend.core.model.properties.ConnectionItem;
|
||||
import org.talend.core.model.properties.ContextItem;
|
||||
import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.ISubRepositoryObject;
|
||||
import org.talend.core.model.update.IUpdateItemType;
|
||||
import org.talend.core.model.update.RepositoryUpdateManager;
|
||||
import org.talend.core.model.update.UpdateResult;
|
||||
import org.talend.core.prefs.ITalendCorePrefConstants;
|
||||
import org.talend.core.runtime.CoreRuntimePlugin;
|
||||
import org.talend.designer.core.IDesignerCoreService;
|
||||
import org.talend.repository.model.RepositoryNode;
|
||||
|
||||
/**
|
||||
* DOC ggu class global comment. Detailled comment
|
||||
@@ -156,7 +172,9 @@ public enum UpdateManagerProviderDetector {
|
||||
if (result != null) {
|
||||
IProcessUpdateManagerProvider[] processProviders = reader.getProcessProviders();
|
||||
for (IProcessUpdateManagerProvider provider : processProviders) {
|
||||
updated = updated || provider.doUpdate(monitor, result);
|
||||
if (provider.doUpdate(monitor, result)) {
|
||||
updated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return updated;
|
||||
@@ -225,13 +243,92 @@ public enum UpdateManagerProviderDetector {
|
||||
* @param node
|
||||
* @return
|
||||
*/
|
||||
public boolean updateForRepository(Object node, boolean needConfirm) {
|
||||
boolean updated = false;
|
||||
public boolean updateForRepository(IStructuredSelection selection, boolean needConfirm) {
|
||||
boolean forcePropagation = false;
|
||||
IRepositoryUpdateManagerProvider[] repositoryProviders = reader.getRepositoryProviders();
|
||||
for (IRepositoryUpdateManagerProvider provider : repositoryProviders) {
|
||||
if (provider.needForcePropagation(selection)) {
|
||||
forcePropagation = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!forcePropagation && needConfirm) {
|
||||
IDesignerCoreService designerCoreService = CoreRuntimePlugin.getInstance().getDesignerCoreService();
|
||||
boolean deactive = designerCoreService != null ? Boolean.parseBoolean(designerCoreService
|
||||
.getPreferenceStore(ITalendCorePrefConstants.DEACTIVE_REPOSITORY_UPDATE)) : true;
|
||||
if (deactive) {// disable to do update
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean propagated = RepositoryUpdateManager.openPropagationDialog();
|
||||
if (!propagated) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
boolean updated = false;
|
||||
for (IRepositoryUpdateManagerProvider provider : repositoryProviders) {
|
||||
// if one upate successfully, will return true.
|
||||
updated = updated || provider.updateForRepository(node, needConfirm);
|
||||
if (provider.updateForRepository(selection)) {
|
||||
updated = true;
|
||||
}
|
||||
}
|
||||
// Old Updates
|
||||
if (doOldUpdates(selection)) {
|
||||
updated = true;
|
||||
}
|
||||
if (!updated) {
|
||||
// nothing to update
|
||||
RepositoryUpdateManager.openNoModificationDialog();
|
||||
}
|
||||
return updated;
|
||||
}
|
||||
|
||||
private boolean doOldUpdates(IStructuredSelection selection) {
|
||||
Object firstElement = selection.getFirstElement();
|
||||
if (firstElement == null || !(firstElement instanceof RepositoryNode)) {
|
||||
return false;
|
||||
}
|
||||
RepositoryNode node = (RepositoryNode) firstElement;
|
||||
if (node.getObject() instanceof ISubRepositoryObject) {
|
||||
ISubRepositoryObject subObject = (ISubRepositoryObject) node.getObject();
|
||||
if (subObject != null) {
|
||||
// schema
|
||||
AbstractMetadataObject metadataObject = subObject.getAbstractMetadataObject();
|
||||
if (metadataObject instanceof MetadataTable) {
|
||||
return RepositoryUpdateManager.updateSchema((MetadataTable) metadataObject, node, false, false);
|
||||
} else
|
||||
// query
|
||||
if (metadataObject instanceof Query) {
|
||||
return RepositoryUpdateManager.updateQuery((Query) metadataObject, node, false, false);
|
||||
} else
|
||||
// sap function
|
||||
if (metadataObject instanceof SAPFunctionUnit) {
|
||||
return RepositoryUpdateManager.updateSAPFunction((SAPFunctionUnit) metadataObject, false, false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
IRepositoryViewObject object = node.getObject();
|
||||
if (object != null) {
|
||||
Item item = object.getProperty().getItem();
|
||||
if (item != null) {
|
||||
// context
|
||||
if (item instanceof ContextItem) {
|
||||
return RepositoryUpdateManager.updateContext((ContextItem) item, false, false);
|
||||
} else
|
||||
// connection
|
||||
if (item instanceof ConnectionItem) {
|
||||
Connection connection = ((ConnectionItem) item).getConnection();
|
||||
if (connection instanceof DatabaseConnection) {
|
||||
return RepositoryUpdateManager.updateDBConnection((ConnectionItem) item, false, false);
|
||||
} else {
|
||||
return RepositoryUpdateManager.updateFileConnection((ConnectionItem) item, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.util.Set;
|
||||
|
||||
import org.talend.core.model.components.IComponent;
|
||||
import org.talend.core.model.metadata.IMetadataTable;
|
||||
import org.talend.core.model.process.AbstractNode;
|
||||
import org.talend.core.model.process.EConnectionType;
|
||||
import org.talend.core.model.process.EParameterFieldType;
|
||||
import org.talend.core.model.process.ElementParameterParser;
|
||||
@@ -688,14 +689,34 @@ public class NodeUtil {
|
||||
*/
|
||||
public static INode getNodeByUniqueName(final IProcess process, String uniqueName) {
|
||||
|
||||
return getNodeByUniqueName(process,uniqueName,false);
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC jzhao
|
||||
* <p>
|
||||
* function:get the node(maybe include virtual node) from generating nodes by unique name. aim:to get the property value from any node.
|
||||
* </p>
|
||||
* Notice: It is used to get property values from the pointed node we can also get the virtual node.
|
||||
*
|
||||
* @param process: a job process
|
||||
* @param uniqueName:the unique name of the pointed node.
|
||||
* @param isReturnVirtualNode: specify whether return the virtual node.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static INode getNodeByUniqueName(final IProcess process, String uniqueName ,boolean isReturnVirtualNode) {
|
||||
|
||||
List<INode> nodes = (List<INode>) process.getGeneratingNodes();
|
||||
INode return_node = null;
|
||||
for (INode current_node : nodes) {
|
||||
if(isReturnVirtualNode && current_node.isVirtualGenerateNode()){
|
||||
current_node = getVirtualNode(current_node);
|
||||
}
|
||||
if (uniqueName.equals(current_node.getUniqueName())) {
|
||||
return_node = current_node;
|
||||
return current_node;
|
||||
}
|
||||
}
|
||||
return return_node;
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -718,7 +739,7 @@ public class NodeUtil {
|
||||
for (INode tnode : listDepartitioner) {
|
||||
if (tnode.getUniqueName().equals(departitionerName)) { // find the tDepartitioner corresponding to
|
||||
// tRecollector
|
||||
INode startNode = tnode.getDesignSubjobStartNode(); // find the tCollector
|
||||
INode startNode = getSubProcessStartNode(tnode); // find the tCollector
|
||||
List<? extends IConnection> inConns = startNode.getIncomingConnections(EConnectionType.STARTS);
|
||||
if (inConns != null && inConns.size() > 0) {
|
||||
if (inConns.get(0).getSource() == node) {
|
||||
@@ -875,7 +896,7 @@ public class NodeUtil {
|
||||
}
|
||||
// System.out.println("leftQuote="+leftQuotes + ", rightQuote="+rightQuotes);
|
||||
if (leftQuotes < rightQuotes) {
|
||||
result += original.substring(leftQuotes, rightQuotes + 1).replace("\r", "\\r").replace("\n", "\\n");
|
||||
result += original.substring(leftQuotes, rightQuotes + 1).replace("\r", "").replace("\n", "\\n");
|
||||
}
|
||||
|
||||
leftQuotes = original.indexOf("\"", rightQuotes + 1);
|
||||
@@ -890,4 +911,66 @@ public class NodeUtil {
|
||||
result += original.substring(leftPrev);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean containsMultiThreadComponent(IProcess process) {
|
||||
List<? extends INode> multiThreadComponentList = process.getNodesOfType("tWriteXMLFieldOut");
|
||||
if(multiThreadComponentList != null && multiThreadComponentList.size() > 0){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean subBranchContainsParallelIterate(INode node) {
|
||||
for (IConnection connection : node.getIncomingConnections()) {
|
||||
if(connection==null || !connection.isActivate()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!(connection.getLineStyle().hasConnectionCategory(IConnectionCategory.MAIN | IConnectionCategory.USE_ITERATE))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(connection.getLineStyle().hasConnectionCategory(IConnectionCategory.USE_ITERATE)) {
|
||||
if (Boolean.TRUE.toString().equals(ElementParameterParser.getValue(connection, "__ENABLE_PARALLEL__"))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return subBranchContainsParallelIterate(connection.getSource());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* add it for TDI-28503
|
||||
*
|
||||
* @param departitioner node in collector subprocess
|
||||
* @return collector node as the start node
|
||||
*/
|
||||
public static INode getSubProcessStartNode(INode currentNode) {
|
||||
int nb = 0;
|
||||
for (IConnection connection : currentNode.getIncomingConnections()) {
|
||||
if (connection.isActivate()) {
|
||||
nb++;
|
||||
}
|
||||
}
|
||||
if (nb == 0) {
|
||||
return currentNode;
|
||||
}
|
||||
IConnection connec;
|
||||
|
||||
for (int j = 0; j < currentNode.getIncomingConnections().size(); j++) {
|
||||
connec = currentNode.getIncomingConnections().get(j);
|
||||
if (((AbstractNode) connec.getSource()).isOnMainMergeBranch()) {
|
||||
if (connec.getLineStyle() == EConnectionType.STARTS) {
|
||||
return currentNode;
|
||||
} else if (connec.getLineStyle() != EConnectionType.FLOW_REF) {
|
||||
return getSubProcessStartNode(connec.getSource());
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,19 +12,25 @@
|
||||
// ============================================================================
|
||||
package org.talend.core.model.utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import org.apache.oro.text.regex.MalformedPatternException;
|
||||
import org.apache.oro.text.regex.Pattern;
|
||||
import org.apache.oro.text.regex.PatternCompiler;
|
||||
import org.apache.oro.text.regex.PatternMatcher;
|
||||
import org.apache.oro.text.regex.Perl5Compiler;
|
||||
import org.apache.oro.text.regex.Perl5Matcher;
|
||||
import org.apache.oro.text.regex.Perl5Substitution;
|
||||
import org.apache.oro.text.regex.Substitution;
|
||||
import org.apache.oro.text.regex.Util;
|
||||
import org.eclipse.emf.common.util.EList;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.talend.core.model.context.UpdateContextVariablesHelper;
|
||||
import org.talend.core.model.process.EParameterFieldType;
|
||||
import org.talend.core.model.process.IElementParameter;
|
||||
@@ -45,15 +51,16 @@ public final class ParameterValueUtil {
|
||||
if (param == null || oldName == null || newName == null) {
|
||||
return;
|
||||
}
|
||||
boolean flag = true;
|
||||
if (param.getFieldType() == EParameterFieldType.MEMO_SQL) {
|
||||
flag = false;
|
||||
}
|
||||
// boolean flag = true;
|
||||
// if (param.getFieldType() == EParameterFieldType.MEMO_SQL) {
|
||||
// flag = false;
|
||||
// }
|
||||
if (param.getValue() instanceof String) { // for TEXT / MEMO etc..
|
||||
String value = (String) param.getValue();
|
||||
if (value.contains(oldName)) {
|
||||
// param.setValue(value.replaceAll(oldName, newName));
|
||||
String newValue = renameValues(value, oldName, newName, flag);
|
||||
// String newValue = renameValues(value, oldName, newName, flag);
|
||||
String newValue = splitQueryData(oldName, newName, value);
|
||||
if (!value.equals(newValue)) {
|
||||
param.setValue(newValue);
|
||||
}
|
||||
@@ -70,7 +77,8 @@ public final class ParameterValueUtil {
|
||||
if (value.contains(oldName)) {
|
||||
// line.put(key, value.replaceAll(oldName,
|
||||
// newName));
|
||||
String newValue = renameValues(value, oldName, newName, flag);
|
||||
// String newValue = renameValues(value, oldName, newName, flag);
|
||||
String newValue = splitQueryData(oldName, newName, value);
|
||||
if (!value.equals(newValue)) {
|
||||
line.put(key, newValue);
|
||||
}
|
||||
@@ -101,6 +109,7 @@ public final class ParameterValueUtil {
|
||||
// replace
|
||||
String returnValue = "";
|
||||
if (value.contains(TalendQuoteUtils.getQuoteChar()) && !flag) {
|
||||
// returnValue = splitQueryData(matcher, pattern, substitution, value, Util.SUBSTITUTE_ALL);
|
||||
returnValue = splitQueryData(oldName, newName, value);
|
||||
} else {
|
||||
returnValue = Util.substitute(matcher, pattern, substitution, value, Util.SUBSTITUTE_ALL);
|
||||
@@ -112,21 +121,386 @@ public final class ParameterValueUtil {
|
||||
|
||||
}
|
||||
|
||||
// function before TDI-29092 modify,this function seems only rename variables in context,I put this funciton back
|
||||
// incase any problem with the new function and we can refer the old one to check the problem.
|
||||
public static String splitQueryData(PatternMatcher matcher, Pattern pattern, Substitution sub, String value, int numSubs) {
|
||||
String[] split = value.split("\"");
|
||||
int i = 0;
|
||||
String replace = "";
|
||||
for (String s : split) {
|
||||
if (i % 2 == 0) {
|
||||
replace = s;
|
||||
if (i != 0) {
|
||||
if (matcher.contains(value, pattern)) {
|
||||
replace = split[i].toString();
|
||||
split[i] = Util.substitute(matcher, pattern, sub, replace, numSubs);
|
||||
}
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
String returnValue = "";
|
||||
for (int t = 1; t < split.length; t++) {
|
||||
if (t % 2 == 0) {
|
||||
returnValue += split[t];
|
||||
} else {
|
||||
returnValue += "\"" + split[t] + "\"";
|
||||
}
|
||||
}
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
// for bug 12594 split "; for bug 29092(it has JUnits)
|
||||
public static String splitQueryData(String oldName, String newName, String value) {
|
||||
// example:"drop table "+context.oracle_schema+".\"TDI_26803\""
|
||||
// >>>>>>>>_△_(const)__ _____△_(varible)_______ __△_(const)___
|
||||
String regex = "\"\"|\".*?([^\\\\]\")";
|
||||
// >>>>>>>>_*_(const)__ _____*_(varible)_______ __*_(const)___
|
||||
|
||||
/**
|
||||
* <b>NOTE</b>: This [inputString] variable only used to debug, should not use it in product
|
||||
*/
|
||||
inputString = value;
|
||||
|
||||
final int length = value.length();
|
||||
// quotaStrings which stores the start and end point for all const strings in the value
|
||||
LinkedHashMap<Integer, Integer> quotaStrings = new LinkedHashMap<Integer, Integer>();
|
||||
// List<Point> functionNameAreas = new ArrayList<Point>();
|
||||
List<FunctionInfo> functions = new ArrayList<FunctionInfo>();
|
||||
|
||||
// get and store all start and end point of const strings
|
||||
int start = -1;
|
||||
int end = -2;
|
||||
char ch;
|
||||
for (int i = 0; i < length; i++) {
|
||||
ch = value.charAt(i);
|
||||
if (ch == '\"') {
|
||||
// in case of cases :
|
||||
// case 1 : [ "select * from " + context.table + " where value = \"context.table\"" ]
|
||||
// case 2 : [ "select * from " + context.table + " where value = \"\\" + context.table +
|
||||
// "\\context.table\"" ]
|
||||
if (isEscapeSequence(value, i)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// [0 <= start] >> in case the first const String position compute error
|
||||
if (0 <= start && end < start) {
|
||||
end = i;
|
||||
quotaStrings.put(start, end);
|
||||
} else {
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
// in case the value has not complete quota
|
||||
// exapmle > "select a,context.b from " + context.b + "where value = context.b
|
||||
|
||||
// **but** maybe more impossible truth is that
|
||||
// they write this(context.b) just want to use it as a varible...
|
||||
// so maybe should not set the string behind the quota as a const by default..
|
||||
|
||||
// ---*--- the following code is set the string behind the quota as a const
|
||||
|
||||
// if (0 <= start && end < start) {
|
||||
// end = length - 1;
|
||||
// quotaStrings.put(start, end);
|
||||
// }
|
||||
}
|
||||
|
||||
// find the varible string, do replace, then concat them
|
||||
StringBuffer strBuffer = new StringBuffer();
|
||||
String subString = null;
|
||||
int vStart = 0;
|
||||
int vEnd = 0;
|
||||
int methodMaxIndex = -1;
|
||||
vStart = 0;
|
||||
vEnd = 0;
|
||||
start = 0;
|
||||
end = 0;
|
||||
for (Entry<Integer, Integer> entry : quotaStrings.entrySet()) {
|
||||
start = entry.getKey();
|
||||
end = entry.getValue() + 1;
|
||||
vEnd = start;
|
||||
if (vStart != start) {
|
||||
subString = value.substring(vStart, vEnd);
|
||||
calcMethodArea(subString, value, vStart, functions);
|
||||
}
|
||||
vStart = end;
|
||||
}
|
||||
vStart = 0;
|
||||
vEnd = 0;
|
||||
start = 0;
|
||||
end = 0;
|
||||
for (Entry<Integer, Integer> entry : quotaStrings.entrySet()) {
|
||||
start = entry.getKey();
|
||||
end = entry.getValue() + 1;
|
||||
vEnd = start;
|
||||
if (vStart == start) {
|
||||
// const string follow with const string, maybe won't happen...
|
||||
// get the const string
|
||||
subString = value.substring(start, end);
|
||||
if (start < methodMaxIndex) {
|
||||
subString = subString.replaceAll(oldName, newName);
|
||||
}
|
||||
} else {
|
||||
// get the varible string, do replace, then append it
|
||||
subString = value.substring(vStart, vEnd);
|
||||
// calcMaxIndex = calcMethodArea(subString, value, vStart, functions, methodMaxIndex);
|
||||
|
||||
if (methodMaxIndex < start) {
|
||||
methodMaxIndex = FunctionInfo.getMaxIndexForCurrentParentFunction(start, functions);
|
||||
}
|
||||
|
||||
String replacedString = doVaribleReplace(oldName, newName, value, functions, vStart, vEnd);
|
||||
strBuffer.append(replacedString);
|
||||
|
||||
// get the const string
|
||||
// deal with: context.getProperty("test") + "test"
|
||||
subString = value.substring(start, end);
|
||||
if (start < methodMaxIndex) {
|
||||
FunctionInfo function = FunctionInfo.getParentFunctionFromList(start, end, functions);
|
||||
Point funcNameArea = function.getNameArea();
|
||||
String functionName = value.substring(funcNameArea.x, funcNameArea.y);
|
||||
if (functionName.matches("^globalMap\\..+")) { //$NON-NLS-1$
|
||||
subString = subString.replaceAll(oldName, newName);
|
||||
} else {
|
||||
if (subString.equals("\"" + oldName + "\"")) { //$NON-NLS-1$ //$NON-NLS-2$
|
||||
subString = "\"" + newName + "\""; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// append the const string
|
||||
strBuffer.append(subString);
|
||||
// update the varible string start point
|
||||
vStart = end;
|
||||
}
|
||||
|
||||
// in case the last string of the value is a varible string
|
||||
// then get it, and do replace, finally append it.
|
||||
if (vStart < length) {
|
||||
vEnd = length;
|
||||
String replacedString = doVaribleReplace(oldName, newName, value, functions, vStart, vEnd);
|
||||
strBuffer.append(replacedString);
|
||||
}
|
||||
|
||||
return strBuffer.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* <b>NOTE</b>: This variable only used to debug, should not use it in product
|
||||
*/
|
||||
private static String inputString = ""; //$NON-NLS-1$
|
||||
|
||||
private static class FunctionInfo {
|
||||
|
||||
private Point nameArea;
|
||||
|
||||
private Point paramArea;
|
||||
|
||||
private List<FunctionInfo> subFunctions = new ArrayList<FunctionInfo>();
|
||||
|
||||
public FunctionInfo(Point _nameArea) {
|
||||
nameArea = _nameArea;
|
||||
}
|
||||
|
||||
public Point getNameArea() {
|
||||
return this.nameArea;
|
||||
}
|
||||
|
||||
public void setParamArea(Point paramArea) {
|
||||
this.paramArea = paramArea;
|
||||
}
|
||||
|
||||
public Point getParamArea() {
|
||||
return this.paramArea;
|
||||
}
|
||||
|
||||
public int getFuncAreaMinIndex() {
|
||||
return nameArea.x;
|
||||
}
|
||||
|
||||
public int getFuncAreaMaxIndex() {
|
||||
return paramArea.y;
|
||||
}
|
||||
|
||||
public FunctionInfo getParentFunction(int x, int y) {
|
||||
FunctionInfo parentFunction = null;
|
||||
|
||||
for (FunctionInfo funcInfo : subFunctions) {
|
||||
int paramX = funcInfo.paramArea.x;
|
||||
int paramY = funcInfo.paramArea.y;
|
||||
if (paramX <= x && y <= paramY) {
|
||||
if (!funcInfo.subFunctions.isEmpty()) {
|
||||
FunctionInfo retFuncInfo = funcInfo.getParentFunction(x, y);
|
||||
if (retFuncInfo != null) {
|
||||
return retFuncInfo;
|
||||
}
|
||||
}
|
||||
return funcInfo;
|
||||
}
|
||||
}
|
||||
int paramX = this.paramArea.x;
|
||||
int paramY = this.paramArea.y;
|
||||
if (paramX <= x && y <= paramY) {
|
||||
parentFunction = this;
|
||||
}
|
||||
|
||||
return parentFunction;
|
||||
}
|
||||
|
||||
public void addSubFunction(FunctionInfo subFunc) {
|
||||
this.subFunctions.add(subFunc);
|
||||
}
|
||||
|
||||
public List<FunctionInfo> getSubFunctions() {
|
||||
return this.subFunctions;
|
||||
}
|
||||
|
||||
public static void addFunctionToList(FunctionInfo funcInfo, List<FunctionInfo> functionList) {
|
||||
if (functionList != null) {
|
||||
for (FunctionInfo iFuncInfo : functionList) {
|
||||
FunctionInfo parentFuncInfo = iFuncInfo.getParentFunction(funcInfo.getFuncAreaMinIndex(),
|
||||
funcInfo.getFuncAreaMaxIndex());
|
||||
if (parentFuncInfo != null) {
|
||||
parentFuncInfo.addSubFunction(funcInfo);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// if can not found, add it to the functionList dirrectly
|
||||
functionList.add(funcInfo);
|
||||
}
|
||||
}
|
||||
|
||||
public static FunctionInfo getParentFunctionFromList(int x, int y, List<FunctionInfo> functionList) {
|
||||
if (functionList != null) {
|
||||
for (FunctionInfo funcInfo : functionList) {
|
||||
FunctionInfo parentFunction = funcInfo.getParentFunction(x, y);
|
||||
if (parentFunction != null) {
|
||||
return parentFunction;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int getMaxIndexForCurrentParentFunction(int index, List<FunctionInfo> functionList) {
|
||||
int maxIndex = -1;
|
||||
if (functionList != null) {
|
||||
for (FunctionInfo funcInfo : functionList) {
|
||||
Point paramArea = funcInfo.getParamArea();
|
||||
if (paramArea.x <= index && index <= paramArea.y) {
|
||||
return paramArea.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
return maxIndex;
|
||||
}
|
||||
|
||||
public static List<FunctionInfo> getFunctionsInSpecifiedAreaFromList(int x, int y, List<FunctionInfo> functionList) {
|
||||
List<FunctionInfo> findedList = new ArrayList<FunctionInfo>();
|
||||
for (FunctionInfo funcInfo : functionList) {
|
||||
Point nameArea = funcInfo.getNameArea();
|
||||
if (y < nameArea.y) {
|
||||
break;
|
||||
}
|
||||
if (x <= nameArea.x && nameArea.y <= y) {
|
||||
findedList.add(funcInfo);
|
||||
List<FunctionInfo> subFuncs = funcInfo.getSubFunctions();
|
||||
if (subFuncs != null && !subFuncs.isEmpty()) {
|
||||
List<FunctionInfo> findedListInSubFuncs = getFunctionsInSpecifiedAreaFromList(x, y, subFuncs);
|
||||
if (findedListInSubFuncs != null && !findedListInSubFuncs.isEmpty()) {
|
||||
findedList.addAll(findedListInSubFuncs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return findedList;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
if (getFuncAreaMaxIndex() < getFuncAreaMinIndex()) {
|
||||
return "not available"; //$NON-NLS-1$
|
||||
}
|
||||
return inputString.substring(getFuncAreaMinIndex(), getFuncAreaMaxIndex() + 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC cmeng Comment method "doVaribleReplace".
|
||||
*
|
||||
* @param oldName
|
||||
* @param newName
|
||||
* @param value
|
||||
* @param functionNameAreas
|
||||
* @param vStart
|
||||
* @param vEnd
|
||||
*/
|
||||
private static String doVaribleReplace(String oldName, String newName, String value, List<FunctionInfo> functions,
|
||||
int vStart, int vEnd) {
|
||||
if (value.trim().isEmpty()) {
|
||||
return value;
|
||||
}
|
||||
|
||||
StringBuffer replacedString = new StringBuffer();
|
||||
int replaceableStart = vStart;
|
||||
int replaceableEnd = vEnd;
|
||||
List<FunctionInfo> replaceableFunctions = FunctionInfo.getFunctionsInSpecifiedAreaFromList(vStart, vEnd, functions);
|
||||
for (FunctionInfo funcInfo : replaceableFunctions) {
|
||||
Point functionNameArea = funcInfo.getNameArea();
|
||||
if (vEnd <= functionNameArea.x) {
|
||||
break;
|
||||
}
|
||||
if (functionNameArea.y <= vStart) {
|
||||
continue;
|
||||
}
|
||||
if (replaceableStart < functionNameArea.x) {
|
||||
replaceableEnd = functionNameArea.x;
|
||||
String replaceableString = value.substring(replaceableStart, replaceableEnd);
|
||||
replacedString.append(doReplace(oldName, newName, replaceableString));
|
||||
replacedString.append(doReplace(oldName, newName, value.substring(functionNameArea.x, functionNameArea.y)));
|
||||
} else {
|
||||
replacedString.append(doReplace(oldName, newName, value.substring(functionNameArea.x, functionNameArea.y)));
|
||||
}
|
||||
replaceableStart = functionNameArea.y;
|
||||
}
|
||||
if (replaceableStart < vEnd) {
|
||||
String replaceableString = value.substring(replaceableStart, vEnd);
|
||||
replacedString.append(doReplace(oldName, newName, replaceableString));
|
||||
}
|
||||
return replacedString.toString();
|
||||
}
|
||||
|
||||
private static String doReplace(String oldName, String newName, String value) {
|
||||
if (value.trim().isEmpty()) {
|
||||
return value;
|
||||
}
|
||||
|
||||
String vOldName = oldName.replaceAll("\\.", "\\\\."); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
||||
// ((\b\w+\s*\.\s*)+schema(\s*\.\s*\w+)*)|((\b\w+\s*\.\s*)*schema(\s*\.\s*\w+)+)
|
||||
String regex = "((\\b\\w+\\s*\\.\\s*)+" + vOldName + "\\b)|(\\b" + vOldName + "\\s*\\()"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
// obtain all varibles
|
||||
String[] split = value.split(regex);
|
||||
Map<String, String> replacedStrings = new HashMap<String, String>();
|
||||
String returnValue = "";
|
||||
StringBuffer returnValue = new StringBuffer();
|
||||
// replace the variables & store both value of old and new
|
||||
for (String s : split) {
|
||||
if (s.contains(oldName)) {
|
||||
replacedStrings.put(s, s.replaceAll("\\b" + oldName + "\\b", newName));
|
||||
replacedStrings.put(s, s.replaceAll("\\b" + oldName + "\\b", newName)); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
} else {
|
||||
replacedStrings.put(s, s);
|
||||
}
|
||||
}
|
||||
if (split.length == 1) {
|
||||
returnValue.append(replacedStrings.get(split[0]));
|
||||
}
|
||||
// obtain consts & concat the consts with the variables
|
||||
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(regex);
|
||||
Matcher matcher = pattern.matcher(value);
|
||||
@@ -137,6 +511,10 @@ public final class ParameterValueUtil {
|
||||
int valueLength = value.length();
|
||||
String oldFill = null;
|
||||
String newFill = null;
|
||||
|
||||
String subRegEx = "^" + vOldName + "(\\s*\\.\\s*\\w+)+"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
java.util.regex.Pattern subPattern = java.util.regex.Pattern.compile(subRegEx);
|
||||
|
||||
while (true) {
|
||||
if (curPos == valueLength) {
|
||||
break;
|
||||
@@ -144,14 +522,20 @@ public final class ParameterValueUtil {
|
||||
if (curPos < x) {
|
||||
oldFill = value.substring(curPos, x);
|
||||
if ((newFill = replacedStrings.get(oldFill)) != null) {
|
||||
returnValue += newFill;
|
||||
returnValue.append(newFill);
|
||||
} else {
|
||||
returnValue += oldFill;
|
||||
returnValue.append(oldFill);
|
||||
}
|
||||
curPos = x;
|
||||
continue;
|
||||
}
|
||||
returnValue += matcher.group();
|
||||
String matchedString = matcher.group();
|
||||
Matcher subMatcher = subPattern.matcher(matchedString);
|
||||
if (subMatcher.find()) {
|
||||
returnValue.append(matchedString.replaceFirst(vOldName, newName));
|
||||
} else {
|
||||
returnValue.append(matchedString);
|
||||
}
|
||||
curPos = y;
|
||||
if (!matcher.find()) {
|
||||
x = valueLength;
|
||||
@@ -161,7 +545,76 @@ public final class ParameterValueUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
return returnValue;
|
||||
return returnValue.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC cmeng Comment method "isEscapeSequence".
|
||||
*
|
||||
* @param value
|
||||
* @param i
|
||||
* @return
|
||||
*/
|
||||
private static boolean isEscapeSequence(String value, int i) {
|
||||
boolean isEscapeSequence = false;
|
||||
for (int index = i; 0 < index; index--) {
|
||||
if (value.charAt(index - 1) == '\\') {
|
||||
isEscapeSequence = !isEscapeSequence;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return isEscapeSequence;
|
||||
}
|
||||
|
||||
private static int calcMethodArea(String varibleString, String wholeString, int beginIndex, List<FunctionInfo> functions) {
|
||||
// globalMap.get(...)
|
||||
// String regex = "\\b\\S*\\s*\\.\\s*\\S*\\s*\\(\\z"; //$NON-NLS-1$
|
||||
// maybe get(...) also is target
|
||||
String regex = "\\b[\\w\\.]*?\\s*\\("; //$NON-NLS-1$
|
||||
|
||||
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(regex);
|
||||
Matcher matcher = pattern.matcher(varibleString);
|
||||
int i = 0;
|
||||
int currentMaxIndex = i;
|
||||
while (matcher.find()) {
|
||||
boolean isInQuota = false;
|
||||
int parenthesisNum = 0;
|
||||
int matchedStart = matcher.start();
|
||||
int matchedEnd = matcher.end();
|
||||
Point functionNameArea = new Point(beginIndex + matchedStart, beginIndex + matchedEnd);
|
||||
FunctionInfo funcInfo = new FunctionInfo(functionNameArea);
|
||||
|
||||
Point functionParamArea = new Point(-1, -1);
|
||||
funcInfo.setParamArea(functionParamArea);
|
||||
|
||||
i = beginIndex + matchedEnd;
|
||||
functionParamArea.x = i;
|
||||
|
||||
for (; i < wholeString.length(); i++) {
|
||||
char ch = wholeString.charAt(i);
|
||||
if (ch == '\"' && !isEscapeSequence(wholeString, i)) {
|
||||
isInQuota = !isInQuota;
|
||||
}
|
||||
if (isInQuota) {
|
||||
continue;
|
||||
}
|
||||
if (ch == '(') {
|
||||
parenthesisNum++;
|
||||
} else if (ch == ')') {
|
||||
parenthesisNum--;
|
||||
}
|
||||
if (parenthesisNum < 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
functionParamArea.y = i;
|
||||
FunctionInfo.addFunctionToList(funcInfo, functions);
|
||||
if (currentMaxIndex < i) {
|
||||
currentMaxIndex = i;
|
||||
}
|
||||
}
|
||||
return currentMaxIndex;
|
||||
}
|
||||
|
||||
public static boolean isUseData(final IElementParameter param, final String name) {
|
||||
|
||||
@@ -155,4 +155,5 @@ public interface ITalendCorePrefConstants {
|
||||
|
||||
public static final String CoreUIPlugin_ID = "org.talend.core.ui"; //$NON-NLS-1$
|
||||
|
||||
public static final String TOP_INSTALL_DONE = "top.install.done"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
@@ -385,6 +385,8 @@ repository.concept=Concept
|
||||
repository.metadataSAPConnections=SAP Connections
|
||||
repository.metadataSAPConnections.alias=SAP
|
||||
repository.SAPFunction=SAP Function
|
||||
repository.SAPIDoc=SAP IDoc
|
||||
repository.SAPTable=SAP Table
|
||||
repository.metadataSQLPatterns=SQL Templates
|
||||
repository.metadataSQLPatterns.alias=SQLTemplates
|
||||
repository.metadataFileDelimited=File delimited
|
||||
@@ -449,6 +451,7 @@ repository.systemIndicators.textStatistics=Text Statistics
|
||||
repository.tdqExchange=Exchange
|
||||
repository.systemIndicators.phoneNumberStatistics=Phone Number Statistics
|
||||
repository.systemIndicators.fraudDetection=Fraud Detection
|
||||
repository.metadataSalesforceModule=SalesforceModule
|
||||
EUpdateItemType.Property=Property
|
||||
EUpdateItemType.MapReduce=Map Reduce
|
||||
EUpdateItemType.Schema=Schema
|
||||
@@ -592,4 +595,9 @@ Parameter.Comment=comment \:
|
||||
Parameter.Name=Parameter name
|
||||
Parameter.Type=type \:
|
||||
Parameter.Value=value \:
|
||||
GenerateSelectSQLAction.NewQuery=new Query {0}
|
||||
GenerateSelectSQLAction.NewQuery=new Query {0}
|
||||
ProgressMonitorDialogWithCancel.executeMessage.default=Executing...
|
||||
ProgressMonitorDialogWithCancel.waitingFinishMessage.default=Can not interrupt the Check Connection action normally,\n
|
||||
ProgressMonitorDialogWithCancel.executeTimeout=Execute time out, Studio has tried to interrupt this checking action at background.
|
||||
ProgressMonitorDialogWithCancel.CheckingConnectionJob.waitingFinish=waiting {0} finish...
|
||||
ProgressMonitorDialogWithCancel.CheckingConnectionJob.emptyWaitingfinish=waiting to finish...
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.core.service;
|
||||
|
||||
import org.talend.core.IService;
|
||||
import org.talend.core.model.metadata.IMetadataTable;
|
||||
import org.talend.core.model.process.IConnection;
|
||||
|
||||
/**
|
||||
* created by talend on Dec 17, 2014 Detailled comment
|
||||
*
|
||||
*/
|
||||
public interface IDQComponentService extends IService {
|
||||
|
||||
/**
|
||||
*
|
||||
* Handle component chaged
|
||||
*
|
||||
* @param oldConnection
|
||||
* @param newMetadataTable
|
||||
*/
|
||||
void externalComponentChange(IConnection oldConnection, IMetadataTable newMetadataTable);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.core.service;
|
||||
|
||||
import org.talend.core.IProviderService;
|
||||
import org.talend.core.model.process.INode;
|
||||
|
||||
/**
|
||||
* created by ldong on Jan 13, 2015 Detailled comment
|
||||
*
|
||||
*/
|
||||
public interface IDbProviderService extends IProviderService {
|
||||
|
||||
public boolean isRedShiftNode(INode node);
|
||||
}
|
||||
@@ -59,7 +59,7 @@ public class RepositoryImageProvider {
|
||||
return ECoreImage.METADATA_SAPCONNECTION_ICON;
|
||||
} else if (type == ERepositoryObjectType.SQLPATTERNS) {
|
||||
return ECoreImage.METADATA_SQLPATTERN_ICON;
|
||||
} else if (type == ERepositoryObjectType.METADATA_CON_TABLE) {
|
||||
} else if (type == ERepositoryObjectType.METADATA_CON_TABLE || type == ERepositoryObjectType.METADATA_SAP_IDOC) {
|
||||
return ECoreImage.METADATA_TABLE_ICON;
|
||||
} else if (type == ERepositoryObjectType.METADATA_CON_COLUMN) {
|
||||
return ECoreImage.METADATA_COLUMN_ICON;
|
||||
|
||||
@@ -110,6 +110,8 @@ public interface IDesignerCoreService extends IService {
|
||||
public boolean isTalendEditor(IEditorPart activeEditor);
|
||||
|
||||
public INode getRefrenceNode(String componentName);
|
||||
|
||||
public INode getRefrenceNode(String componentName, String paletteType);
|
||||
|
||||
public boolean executeUpdatesManager(List<UpdateResult> results, boolean onlySimpleShow);
|
||||
|
||||
|
||||
@@ -190,9 +190,12 @@ public class ExpressionPersistance {
|
||||
}
|
||||
}
|
||||
}
|
||||
this.contents.clear();
|
||||
this.contents.add(emfExpression);
|
||||
resource.getContents().clear();
|
||||
resource.getContents().addAll(this.contents);
|
||||
} else {
|
||||
resource.getContents().clear();
|
||||
resource.getContents().add(emfExpression);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,10 +14,10 @@ package org.talend.repository.documentation;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -75,12 +75,8 @@ public class ExportFileResource {
|
||||
* @param resources
|
||||
*/
|
||||
public void addResources(String relativePath, List<URL> resources) {
|
||||
Set<URL> storeList = map.get(relativePath);
|
||||
if (storeList == null) {
|
||||
storeList = new HashSet<URL>(resources);
|
||||
map.put(relativePath, storeList);
|
||||
} else {
|
||||
storeList.addAll(resources);
|
||||
for (URL resource : resources) {
|
||||
addResource(relativePath, resource);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +92,19 @@ public class ExportFileResource {
|
||||
storeList = new HashSet<URL>();
|
||||
map.put(relativePath, storeList);
|
||||
}
|
||||
storeList.add(resource);
|
||||
storeList.add(getFormalResourceURL(resource));
|
||||
}
|
||||
|
||||
private URL getFormalResourceURL(URL originalURL) {
|
||||
URL url = originalURL;
|
||||
try {
|
||||
String decodeStr = URLDecoder.decode(url.toString(), "UTF-8"); //$NON-NLS-1$
|
||||
url = new URL(decodeStr);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace(); // only for debug.
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
public void removeResources(String relativePath, URL resource) {
|
||||
@@ -144,8 +152,8 @@ public class ExportFileResource {
|
||||
|
||||
if (file.isDirectory()) {
|
||||
File[] children = file.listFiles();
|
||||
for (int i = 0; i < children.length; i++) {
|
||||
count += countChildrenOf(children[i].getPath());
|
||||
for (File child : children) {
|
||||
count += countChildrenOf(child.getPath());
|
||||
}
|
||||
}
|
||||
return count;
|
||||
@@ -175,11 +183,11 @@ public class ExportFileResource {
|
||||
public int getFilesCount() throws CoreException {
|
||||
Set<String> paths = getRelativePathList();
|
||||
int result = 0;
|
||||
for (Iterator iter = paths.iterator(); iter.hasNext();) {
|
||||
String path = (String) iter.next();
|
||||
Set<URL> resource = getResourcesByRelativePath(path);
|
||||
for (Iterator iterator = resource.iterator(); iterator.hasNext();) {
|
||||
URL url = (URL) iterator.next();
|
||||
for (Object relPath : paths) {
|
||||
String path = (String) relPath;
|
||||
Set<URL> resources = getResourcesByRelativePath(path);
|
||||
for (Object resource : resources) {
|
||||
URL url = (URL) resource;
|
||||
result += countChildrenOf(url.getPath());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ public class RepositoryConstants {
|
||||
|
||||
public static final String TEMP_DIRECTORY = "temp"; //$NON-NLS-1$
|
||||
|
||||
public static final String SETTING_DIRECTORY = ".settings"; //$NON-NLS-1$
|
||||
|
||||
public static final String IMG_DIRECTORY = "images"; //$NON-NLS-1$
|
||||
|
||||
public static final String IMG_DIRECTORY_OF_JOB_OUTLINE = "images/job_outlines"; //$NON-NLS-1$
|
||||
|
||||
@@ -27,7 +27,9 @@ import org.eclipse.jface.viewers.TreeViewer;
|
||||
import org.talend.commons.exception.PersistenceException;
|
||||
import org.talend.commons.ui.gmf.util.DisplayUtils;
|
||||
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.PluginChecker;
|
||||
import org.talend.core.hadoop.IHadoopClusterService;
|
||||
import org.talend.core.model.general.Project;
|
||||
import org.talend.core.model.properties.ConnectionItem;
|
||||
import org.talend.core.model.properties.FolderItem;
|
||||
@@ -58,6 +60,14 @@ public class RepositoryNodeUtilities {
|
||||
|
||||
private final static String[] METADATA_LABELS = new String[] {};
|
||||
|
||||
private static IHadoopClusterService hadoopClusterService = null;
|
||||
static {
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IHadoopClusterService.class)) {
|
||||
hadoopClusterService = (IHadoopClusterService) GlobalServiceRegister.getDefault().getService(
|
||||
IHadoopClusterService.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static IPath getPath(RepositoryNode node) {
|
||||
if (node == null) {
|
||||
return null;
|
||||
@@ -320,6 +330,12 @@ public class RepositoryNodeUtilities {
|
||||
RepositoryNode node = (RepositoryNode) childNode;
|
||||
if (isRepositoryFolder(node) || node.getType() == ENodeType.REFERENCED_PROJECT) {
|
||||
folderChild.add(node);
|
||||
} else if (isHadoopClusterNode(node)) {
|
||||
if (node.getId().equals(curNode.getId()) && node.getObjectType() == curNode.getRepositoryObjectType()) {
|
||||
return node;
|
||||
} else {
|
||||
folderChild.add(node);
|
||||
}
|
||||
} else if (node.getId().equals(curNode.getId()) && node.getObjectType() == curNode.getRepositoryObjectType()) {
|
||||
return node;
|
||||
}
|
||||
@@ -336,6 +352,10 @@ public class RepositoryNodeUtilities {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean isHadoopClusterNode(IRepositoryNode node) {
|
||||
return hadoopClusterService != null && hadoopClusterService.isHadoopClusterNode(node);
|
||||
}
|
||||
|
||||
public static void expandNode(IRepositoryView view, RepositoryNode curNode, Set<RepositoryNode> nodes) {
|
||||
getRepositoryCheckedNode((IRepositoryNode) view.getRoot(), curNode.getObject(), view, true, nodes);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,286 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.repository.ui.dialog;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.FutureTask;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.core.runtime.jobs.Job;
|
||||
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
|
||||
import org.eclipse.jface.operation.IRunnableWithProgress;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.talend.core.runtime.i18n.Messages;
|
||||
|
||||
/**
|
||||
* created by cmeng on Nov 21, 2014 Detailled comment
|
||||
*
|
||||
*/
|
||||
public abstract class AProgressMonitorDialogWithCancel<T> extends ProgressMonitorDialog {
|
||||
|
||||
public static final int ENDLESS_WAIT_TIME = -1;
|
||||
|
||||
public static final int DEFAULT_WAIT_TIME = 60;
|
||||
|
||||
private ARunnableWithProgressCancel<T> runnableWithCancel;
|
||||
|
||||
private boolean isUserCancelled = false;
|
||||
|
||||
/**
|
||||
* DOC cmeng ProgressMonitorDialogWithCancel constructor comment.
|
||||
*
|
||||
* @param parent
|
||||
*/
|
||||
public AProgressMonitorDialogWithCancel(Shell parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
abstract protected T runWithCancel(IProgressMonitor monitor) throws Throwable;
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) throws InvocationTargetException,
|
||||
InterruptedException {
|
||||
throw new InvocationTargetException(new Throwable("Can not use this method, you should use another run method")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void run() throws InvocationTargetException, InterruptedException {
|
||||
run(null, null, true, DEFAULT_WAIT_TIME);
|
||||
}
|
||||
|
||||
public void run(String executeMessage, String waitingFinishMessage, boolean needWaitingProgressJob)
|
||||
throws InvocationTargetException, InterruptedException {
|
||||
run(executeMessage, waitingFinishMessage, needWaitingProgressJob, DEFAULT_WAIT_TIME);
|
||||
}
|
||||
|
||||
public void run(String executeMessage, String waitingFinishMessage, boolean needWaitingProgressJob, int timeout)
|
||||
throws InvocationTargetException, InterruptedException {
|
||||
runnableWithCancel = new ARunnableWithProgressCancel<T>() {
|
||||
|
||||
@Override
|
||||
protected T runnableWithCancel(IProgressMonitor monitor) throws Throwable {
|
||||
return runWithCancel(monitor);
|
||||
}
|
||||
};
|
||||
if (executeMessage != null) {
|
||||
runnableWithCancel.setExecuteMessage(executeMessage);
|
||||
}
|
||||
if (waitingFinishMessage != null) {
|
||||
runnableWithCancel.setWaitingFinishMessage(waitingFinishMessage);
|
||||
}
|
||||
runnableWithCancel.setNeedWaitingProgressJob(needWaitingProgressJob);
|
||||
runnableWithCancel.setTimeout(timeout);
|
||||
super.run(true, true, runnableWithCancel);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void cancelPressed() {
|
||||
isUserCancelled = true;
|
||||
if (runnableWithCancel != null) {
|
||||
runnableWithCancel.kill();
|
||||
}
|
||||
super.cancelPressed();
|
||||
}
|
||||
|
||||
public boolean isUserCanncelled() {
|
||||
return isUserCancelled;
|
||||
}
|
||||
|
||||
public T getExecuteResult() {
|
||||
if (runnableWithCancel != null) {
|
||||
return runnableWithCancel.getExecuteResult();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public Throwable getExecuteException() {
|
||||
if (runnableWithCancel != null) {
|
||||
return runnableWithCancel.getExecuteException();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static abstract class ARunnableWithProgressCancel<T> implements IRunnableWithProgress {
|
||||
|
||||
protected FutureTask<T> futureTask;
|
||||
|
||||
protected Thread executeThread;
|
||||
|
||||
protected ThreadGroup threadGroup;
|
||||
|
||||
protected T executeResult;
|
||||
|
||||
protected Throwable executeException;
|
||||
|
||||
protected String executeMessage = Messages.getString("ProgressMonitorDialogWithCancel.executeMessage.default"); //$NON-NLS-1$
|
||||
|
||||
protected String waitingFinishMessage = Messages
|
||||
.getString("ProgressMonitorDialogWithCancel.waitingFinishMessage.default"); //$NON-NLS-1$
|
||||
|
||||
protected int timeout = 30;
|
||||
|
||||
volatile boolean kill = false;
|
||||
|
||||
boolean needWaitingProgressJob = true;
|
||||
|
||||
public ARunnableWithProgressCancel() {
|
||||
}
|
||||
|
||||
abstract protected T runnableWithCancel(IProgressMonitor monitor) throws Throwable;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
|
||||
*/
|
||||
@Override
|
||||
public final void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
|
||||
futureTask = new FutureTask<T>(new Callable<T>() {
|
||||
|
||||
@Override
|
||||
public T call() throws Exception {
|
||||
T result = null;
|
||||
try {
|
||||
result = runnableWithCancel(monitor);
|
||||
} catch (Throwable e) {
|
||||
executeException = e;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
});
|
||||
int iTimeout;
|
||||
boolean canGain = true;
|
||||
if (ENDLESS_WAIT_TIME == timeout || timeout <= 0) {
|
||||
iTimeout = 1;
|
||||
canGain = false;
|
||||
monitor.beginTask(executeMessage, IProgressMonitor.UNKNOWN);
|
||||
} else {
|
||||
iTimeout = timeout * 2;
|
||||
monitor.beginTask(executeMessage, iTimeout);
|
||||
}
|
||||
threadGroup = new ThreadGroup("ARunnableWithProgressCancel"); //$NON-NLS-1$
|
||||
executeThread = new Thread(threadGroup, futureTask);
|
||||
executeThread.start();
|
||||
for (int i = 0; i < iTimeout; i = canGain ? i + 1 : i) {
|
||||
try {
|
||||
if (kill) {
|
||||
break;
|
||||
}
|
||||
monitor.worked(1);
|
||||
executeResult = futureTask.get(500, TimeUnit.MILLISECONDS);
|
||||
break;
|
||||
} catch (TimeoutException timeoutException) {
|
||||
continue;
|
||||
} catch (Throwable e) {
|
||||
executeException = e;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!kill && executeException == null && executeResult == null) {
|
||||
executeException = new TimeoutException(Messages.getString("ProgressMonitorDialogWithCancel.executeTimeout")); //$NON-NLS-1$
|
||||
kill();
|
||||
}
|
||||
monitor.done();
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC cmeng Comment method "addJob".
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
private void addJob() {
|
||||
if (!needWaitingProgressJob) {
|
||||
return;
|
||||
}
|
||||
StackTraceElement stElement = null;
|
||||
StackTraceElement stackTraceElements[] = executeThread.getStackTrace();
|
||||
if (stackTraceElements != null && 0 < stackTraceElements.length) {
|
||||
stElement = stackTraceElements[0];
|
||||
}
|
||||
String currentMethod;
|
||||
String title = ""; //$NON-NLS-1$
|
||||
if (stElement != null) {
|
||||
currentMethod = stElement.getClassName() + "." + stElement.getMethodName(); //$NON-NLS-1$
|
||||
title = waitingFinishMessage
|
||||
+ Messages
|
||||
.getString(
|
||||
"ProgressMonitorDialogWithCancel.CheckingConnectionJob.waitingFinish", new Object[] { currentMethod }); //$NON-NLS-1$
|
||||
} else {
|
||||
title = waitingFinishMessage
|
||||
+ Messages.getString("ProgressMonitorDialogWithCancel.CheckingConnectionJob.emptyWaitingfinish"); //$NON-NLS-1$
|
||||
}
|
||||
CheckingConnectionJob<T> checkingConnectionJob = new CheckingConnectionJob<T>(title, futureTask);
|
||||
checkingConnectionJob.setUser(false);
|
||||
checkingConnectionJob.setPriority(Job.DECORATE);
|
||||
checkingConnectionJob.schedule();
|
||||
}
|
||||
|
||||
public void setNeedWaitingProgressJob(boolean need) {
|
||||
needWaitingProgressJob = need;
|
||||
}
|
||||
|
||||
public void setExecuteMessage(String exeMsg) {
|
||||
executeMessage = exeMsg;
|
||||
}
|
||||
|
||||
public void setWaitingFinishMessage(String waitingMsg) {
|
||||
waitingFinishMessage = waitingMsg;
|
||||
}
|
||||
|
||||
public T getExecuteResult() {
|
||||
return executeResult;
|
||||
}
|
||||
|
||||
public Throwable getExecuteException() {
|
||||
return executeException;
|
||||
}
|
||||
|
||||
public void setTimeout(int _timeout) {
|
||||
timeout = _timeout;
|
||||
}
|
||||
|
||||
public void kill() {
|
||||
threadGroup.interrupt();
|
||||
kill = true;
|
||||
addJob();
|
||||
}
|
||||
}
|
||||
|
||||
private static class CheckingConnectionJob<T> extends Job {
|
||||
|
||||
protected FutureTask<T> futureTask;
|
||||
|
||||
public CheckingConnectionJob(String name, FutureTask<T> _futureTask) {
|
||||
super(name);
|
||||
this.futureTask = _futureTask;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IStatus run(IProgressMonitor monitor) {
|
||||
try {
|
||||
futureTask.get();
|
||||
} catch (Throwable e) {
|
||||
// nothing need to do since all will be done in ARunnableWithProgressCancel
|
||||
}
|
||||
return Status.OK_STATUS;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -165,6 +165,7 @@ MetadataTableEditorView.DefaultTitle=Default
|
||||
MetadataTableEditorView.KeyTitle=Key
|
||||
MetadataTableEditorView.LengthTitle=Length
|
||||
MetadataTableEditorView.NullableTitle=Nullable
|
||||
MetadataTableEditorView.OriginalLengthTitle=OriginalLength
|
||||
MetadataTableEditorView.PatternTitle=Date Pattern (Ctrl+Space available)
|
||||
MetadataTableEditorView.PrecisionTitle=Precision
|
||||
MetadataTableEditorView.TypleTitle=Type
|
||||
@@ -564,8 +565,8 @@ NodeReturnProposal.Type=Type: {3}\n
|
||||
NodeReturnProposal.Availability=Availability: {4}\n
|
||||
NodeReturnProposal.VariableName=Variable Name: {5}\n
|
||||
ContextParameterProposal.NoCommentAvaiable=No Comment Available
|
||||
ContextParameterProposal.Description=Description: {0}\n\n
|
||||
ContextParameterProposal.ContextVariable=Context Variable: {1}\n
|
||||
ContextParameterProposal.Type=Type: {2}\n
|
||||
ContextParameterProposal.VariableName=Variable Name: {3}\n
|
||||
ContextParameterProposal.Description=Description: {0}
|
||||
ContextParameterProposal.ContextVariable=Context Variable: {1}
|
||||
ContextParameterProposal.Type=Type: {2}
|
||||
ContextParameterProposal.VariableName=Variable Name: {3}
|
||||
ArchiveFileExportOperationFullPath.cannotCreateDir=unable to create directory '{0}'
|
||||
@@ -27,6 +27,7 @@ import org.eclipse.jface.resource.JFaceResources;
|
||||
import org.eclipse.jface.viewers.CheckboxTreeViewer;
|
||||
import org.eclipse.jface.viewers.IContentProvider;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.ViewerFilter;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.accessibility.AccessibleAdapter;
|
||||
import org.eclipse.swt.accessibility.AccessibleEvent;
|
||||
@@ -69,6 +70,8 @@ public class FilteredCheckboxTree extends Composite {
|
||||
*/
|
||||
protected Text filterText;
|
||||
|
||||
protected ModifyListener filterTextModifyListener;
|
||||
|
||||
/**
|
||||
* The control representing the clear button for the filter text entry. This value may be <code>null</code> if no
|
||||
* such button exists, or if the controls have not yet been created.
|
||||
@@ -199,7 +202,7 @@ public class FilteredCheckboxTree extends Composite {
|
||||
showFilterControls = PlatformUI.getPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.SHOW_FILTERED_TEXTS);
|
||||
createControl(parent, treeStyle);
|
||||
createRefreshJob();
|
||||
setInitialText(WorkbenchMessages.FilteredTree_FilterMessage);
|
||||
|
||||
setFont(parent.getFont());
|
||||
}
|
||||
|
||||
@@ -284,7 +287,6 @@ public class FilteredCheckboxTree extends Composite {
|
||||
if (treeViewer instanceof NotifyingTreeViewer) {
|
||||
patternFilter.setUseCache(true);
|
||||
}
|
||||
treeViewer.addFilter(patternFilter);
|
||||
return treeViewer.getControl();
|
||||
}
|
||||
|
||||
@@ -363,7 +365,6 @@ public class FilteredCheckboxTree extends Composite {
|
||||
// }
|
||||
// }
|
||||
treeViewer.refresh(true);
|
||||
|
||||
if (text.length() > 0 && !initial) {
|
||||
/*
|
||||
* Expand elements one at a time. After each is expanded, check to see if the filter text has
|
||||
@@ -453,6 +454,7 @@ public class FilteredCheckboxTree extends Composite {
|
||||
*/
|
||||
protected void createFilterText(Composite parent) {
|
||||
filterText = doCreateFilterText(parent);
|
||||
setInitialText(WorkbenchMessages.FilteredTree_FilterMessage);
|
||||
filterText.getAccessible().addAccessibleListener(new AccessibleAdapter() {
|
||||
|
||||
/*
|
||||
@@ -545,7 +547,7 @@ public class FilteredCheckboxTree extends Composite {
|
||||
}
|
||||
});
|
||||
|
||||
filterText.addModifyListener(new ModifyListener() {
|
||||
filterTextModifyListener = new ModifyListener() {
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
@@ -556,7 +558,8 @@ public class FilteredCheckboxTree extends Composite {
|
||||
public void modifyText(ModifyEvent e) {
|
||||
textChanged();
|
||||
}
|
||||
});
|
||||
};
|
||||
filterText.addModifyListener(filterTextModifyListener);
|
||||
|
||||
GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
|
||||
// if the text widget supported cancel then it will have it's own
|
||||
@@ -594,6 +597,19 @@ public class FilteredCheckboxTree extends Composite {
|
||||
calculateCheckedLeafNodes();
|
||||
// narrowingDown = previousFilterText==null || getFilterString().startsWith(previousFilterText);
|
||||
previousFilterText = getFilterString();
|
||||
|
||||
boolean hasPatternFilter = false;
|
||||
for (ViewerFilter filter : treeViewer.getFilters()) {
|
||||
if (filter == patternFilter) {
|
||||
hasPatternFilter = true;
|
||||
}
|
||||
}
|
||||
// add pattern filter to be the last filter
|
||||
if (!hasPatternFilter) {
|
||||
patternFilter.setOtherFilters(treeViewer.getFilters());
|
||||
treeViewer.addFilter(patternFilter);
|
||||
}
|
||||
|
||||
// cancel currently running job first, to prevent unnecessary redraw
|
||||
refreshJob.cancel();
|
||||
refreshJob.schedule(200);
|
||||
@@ -700,6 +716,7 @@ public class FilteredCheckboxTree extends Composite {
|
||||
}
|
||||
};
|
||||
|
||||
// clearTextAction.setToolTipText(WorkbenchMessages.FilteredTree_ClearToolTip);
|
||||
clearTextAction.setToolTipText(WorkbenchMessages.FilteredTree_ClearToolTip);
|
||||
clearTextAction.setImageDescriptor(JFaceResources.getImageRegistry().getDescriptor(CLEAR_ICON));
|
||||
clearTextAction.setDisabledImageDescriptor(JFaceResources.getImageRegistry().getDescriptor(DCLEAR_ICON));
|
||||
@@ -774,8 +791,13 @@ public class FilteredCheckboxTree extends Composite {
|
||||
*/
|
||||
public void setInitialText(String text) {
|
||||
initialText = text;
|
||||
if (filterTextModifyListener != null) {
|
||||
filterText.removeModifyListener(filterTextModifyListener);
|
||||
}
|
||||
setFilterText(initialText);
|
||||
textChanged();
|
||||
if (filterTextModifyListener != null) {
|
||||
filterText.addModifyListener(filterTextModifyListener);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,6 +28,13 @@ import org.eclipse.ui.internal.misc.StringMatcher;
|
||||
*/
|
||||
public class PatternFilter extends ViewerFilter {
|
||||
|
||||
private ViewerFilter[] otherFilters;
|
||||
|
||||
/**
|
||||
* Cache of element filtered by other filters
|
||||
*/
|
||||
private Map<Object, Object[]> filteredByOthersCache = new HashMap<Object, Object[]>();
|
||||
|
||||
/*
|
||||
* Cache of filtered elements in the tree
|
||||
*/
|
||||
@@ -69,6 +76,10 @@ public class PatternFilter extends ViewerFilter {
|
||||
return elements;
|
||||
}
|
||||
|
||||
if (elements.length == 0) {
|
||||
return elements;
|
||||
}
|
||||
|
||||
if (!useCache) {
|
||||
return super.filter(viewer, parent, elements);
|
||||
}
|
||||
@@ -240,7 +251,17 @@ public class PatternFilter extends ViewerFilter {
|
||||
* @return true if the given element has children that matches the filter text
|
||||
*/
|
||||
protected boolean isParentMatch(Viewer viewer, Object element) {
|
||||
Object[] children = ((ITreeContentProvider) ((AbstractTreeViewer) viewer).getContentProvider()).getChildren(element);
|
||||
Object[] children = filteredByOthersCache.get(element);
|
||||
if (children == null) {
|
||||
// fix for TDI-31520 , no need to check child elements already filtered by others
|
||||
children = ((ITreeContentProvider) ((AbstractTreeViewer) viewer).getContentProvider()).getChildren(element);
|
||||
if (otherFilters != null) {
|
||||
for (ViewerFilter filter : otherFilters) {
|
||||
children = filter.filter(viewer, element, children);
|
||||
}
|
||||
}
|
||||
filteredByOthersCache.put(element, children);
|
||||
}
|
||||
|
||||
if ((children != null) && (children.length > 0)) {
|
||||
return isAnyVisible(viewer, element, children);
|
||||
@@ -302,4 +323,13 @@ public class PatternFilter extends ViewerFilter {
|
||||
void setUseCache(boolean useCache) {
|
||||
this.useCache = useCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the otherFilters.
|
||||
*
|
||||
* @param otherFilters the otherFilters to set
|
||||
*/
|
||||
public void setOtherFilters(ViewerFilter[] otherFilters) {
|
||||
this.otherFilters = otherFilters;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@ import org.talend.core.runtime.i18n.Messages;
|
||||
import org.talend.core.ui.CoreUIPlugin;
|
||||
import org.talend.core.ui.metadata.editor.AbstractMetadataTableEditorView;
|
||||
import org.talend.core.ui.metadata.editor.MetadataTableEditorView;
|
||||
import org.talend.core.utils.MetaDataDialogUtil;
|
||||
import org.talend.core.utils.TalendQuoteUtils;
|
||||
import org.talend.designer.core.IDesignerCoreService;
|
||||
|
||||
@@ -195,7 +196,7 @@ public class MetadataDialog extends Dialog {
|
||||
isEBCDIC = node.getComponent().getName().contains("EBCDIC");
|
||||
if (node.getComponent().isSupportDbType() || node.getComponent().getOriginalFamilyName().startsWith(DATABASE_LABEL)
|
||||
|| eltComponent || isEBCDIC) {
|
||||
dbComponent = true && !isEBCDIC;
|
||||
dbComponent = !isEBCDIC;
|
||||
for (IElementParameter currentParam : node.getElementParameters()) {
|
||||
if (currentParam.getFieldType().equals(EParameterFieldType.MAPPING_TYPE)) {
|
||||
metaView.setCurrentDbms((String) currentParam.getValue());
|
||||
@@ -286,6 +287,14 @@ public class MetadataDialog extends Dialog {
|
||||
fieldList.add("Signed"); //$NON-NLS-1$
|
||||
metaView.setAdditionalFields(fieldList);
|
||||
}
|
||||
|
||||
showColumnsOfCustomComponents(node, metaView);
|
||||
}
|
||||
|
||||
private static void showColumnsOfCustomComponents(INode node, MetadataTableEditorView metaView) {
|
||||
if (isRedShiftNode(node)) {
|
||||
metaView.setShowPrecisionColumn(false);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isRepository(INode node, IMetadataTable currentTable) {
|
||||
@@ -756,4 +765,7 @@ public class MetadataDialog extends Dialog {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isRedShiftNode(INode node) {
|
||||
return MetaDataDialogUtil.isRedShiftNode(node);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +121,8 @@ public abstract class AbstractMetadataTableEditorView<B> extends AbstractDataTab
|
||||
|
||||
private boolean showPatternColumn = true;
|
||||
|
||||
private boolean showPrecisionColumn = true;
|
||||
|
||||
protected String dbmsId;
|
||||
|
||||
private List<String> additionalFields;
|
||||
@@ -284,7 +286,9 @@ public abstract class AbstractMetadataTableEditorView<B> extends AbstractDataTab
|
||||
configureAdditionalFieldColumns(tableViewerCreator);
|
||||
// //////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
configurePrecisionColumn(tableViewerCreator);
|
||||
if (showPrecisionColumn) {
|
||||
configurePrecisionColumn(tableViewerCreator);
|
||||
}
|
||||
|
||||
// //////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -1074,4 +1078,8 @@ public abstract class AbstractMetadataTableEditorView<B> extends AbstractDataTab
|
||||
public boolean isRepository() {
|
||||
return this.isRepository;
|
||||
}
|
||||
|
||||
public void setShowPrecisionColumn(boolean showPrecisionColumn) {
|
||||
this.showPrecisionColumn = showPrecisionColumn;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,17 +76,23 @@ public class ContextParameterProposal implements IContentProposal {
|
||||
} else {
|
||||
desc = Messages.getString("ContextParameterProposal.NoCommentAvaiable"); //$NON-NLS-1$
|
||||
}
|
||||
// TDI-30683:fix the NPE pb and another description match pb(need move "\n" from message.propreties to code).
|
||||
MessageFormat format = new MessageFormat(getDescriptionMessagePattern());
|
||||
if (contextParameter.getContext() != null) {
|
||||
Object[] replaceArgs = new Object[] { desc, contextParameter.getContext().getName(), contextParameter.getType(),
|
||||
contextParameter.getName() };
|
||||
return format.format(replaceArgs);
|
||||
}
|
||||
return desc;
|
||||
|
||||
String message = Messages.getString("ContextParameterProposal.Description"); //$NON-NLS-1$
|
||||
message += Messages.getString("ContextParameterProposal.ContextVariable"); //$NON-NLS-1$
|
||||
message += Messages.getString("ContextParameterProposal.Type"); //$NON-NLS-1$
|
||||
message += Messages.getString("ContextParameterProposal.VariableName"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
MessageFormat format = new MessageFormat(message);
|
||||
// Object[] args = new Object[] { desc, contextParameter.getType(), getContent() };
|
||||
Object[] args = new Object[] { desc, contextParameter.getContext().getName(), contextParameter.getType(),
|
||||
contextParameter.getName() };
|
||||
return format.format(args);
|
||||
private String getDescriptionMessagePattern() {
|
||||
String message = Messages.getString("ContextParameterProposal.Description") + "\n\n"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
message += Messages.getString("ContextParameterProposal.ContextVariable") + "\n\n"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
message += Messages.getString("ContextParameterProposal.Type") + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
message += Messages.getString("ContextParameterProposal.VariableName") + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
return message;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.core.utils;
|
||||
|
||||
import org.talend.core.model.metadata.IDatabaseConstant;
|
||||
import org.talend.core.model.process.EParameterFieldType;
|
||||
import org.talend.core.model.process.IElementParameter;
|
||||
import org.talend.core.model.process.INode;
|
||||
|
||||
/**
|
||||
* created by ldong on Jan 16, 2015 Detailled comment
|
||||
*
|
||||
*/
|
||||
public class MetaDataDialogUtil {
|
||||
|
||||
public static final String PROPERTY = "PROPERTY"; //$NON-NLS-1$
|
||||
|
||||
public static boolean isRedShiftNode(INode node) {
|
||||
if (node != null) {
|
||||
IElementParameter param = node.getElementParameter(PROPERTY);
|
||||
if (param != null && param.getFieldType() == EParameterFieldType.PROPERTY_TYPE
|
||||
&& IDatabaseConstant.REDSHIFT.equals(param.getRepositoryValue())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -224,8 +224,9 @@ public class ExternalNodeComponentHandler extends AbstractComponentHandler {
|
||||
// value = checkString(type.getListItemsDisplayName()[index]);
|
||||
// }
|
||||
|
||||
else if (elemparameter.getRepositoryValue() != null
|
||||
&& elemparameter.getRepositoryValue().contains("PASSWORD") //$NON-NLS-1$
|
||||
else if ((elemparameter.getRepositoryValue() != null
|
||||
&& elemparameter.getRepositoryValue().toUpperCase().contains("PASSWORD") //$NON-NLS-1$
|
||||
|| elemparameter.getFieldType() == EParameterFieldType.PASSWORD)
|
||||
&& ProjectManager.getInstance().getCurrentProject().getEmfProject().isHidePassword()
|
||||
&& !ContextParameterUtils.containContextVariables((String) elemparameter.getValue())) {
|
||||
value = "******"; //$NON-NLS-1$
|
||||
|
||||
@@ -175,8 +175,9 @@ public class InternalNodeComponentHandler extends AbstractComponentHandler {
|
||||
// int index = type.getIndexOfItemFromList(type.getDisplayName());
|
||||
// value = checkString(type.getListItemsDisplayName()[index]);
|
||||
// }
|
||||
else if (elemparameter.getRepositoryValue() != null
|
||||
&& elemparameter.getRepositoryValue().contains("PASSWORD") //$NON-NLS-1$
|
||||
else if ((elemparameter.getRepositoryValue() != null
|
||||
&& elemparameter.getRepositoryValue().toUpperCase().contains("PASSWORD") //$NON-NLS-1$
|
||||
|| elemparameter.getFieldType() == EParameterFieldType.PASSWORD)
|
||||
&& ProjectManager.getInstance().getCurrentProject().getEmfProject().isHidePassword()
|
||||
&& !ContextParameterUtils.containContextVariables((String) elemparameter.getValue())) {
|
||||
value = "******"; //$NON-NLS-1$
|
||||
|
||||
@@ -289,11 +289,14 @@ public class TalendTextUtils {
|
||||
// added by hyWang(bug 6637),to see if the column name need to be add queotes
|
||||
// check the field name.
|
||||
|
||||
String temp = removeQuotes(fieldName);
|
||||
Pattern pattern = Pattern.compile("\\w+"); //$NON-NLS-1$
|
||||
Matcher matcher = pattern.matcher(temp);
|
||||
|
||||
// for bug 11938
|
||||
// to see if the table name or column name was start with number
|
||||
String temp = removeQuotes(fieldName);
|
||||
Pattern pattern = Pattern.compile("^[a-zA-Z_]*$"); //$NON-NLS-1$
|
||||
Matcher matcher = pattern.matcher(temp);
|
||||
Pattern pattern2 = Pattern.compile("^[0-9]+[_0-9a-zA-Z]*$"); //$NON-NLS-1$
|
||||
Matcher matcher2 = pattern2.matcher(temp);
|
||||
|
||||
// for bug 12092
|
||||
boolean isSqlKeyword = KeywordsValidator.isSqlKeyword(temp, name.getProduct());
|
||||
@@ -301,7 +304,7 @@ public class TalendTextUtils {
|
||||
boolean isH2 = EDatabaseTypeName.H2 == name;
|
||||
|
||||
// if the database type is IBMDB2 and the field name contain lowercase character, should add quotes
|
||||
if (((!matcher.matches() || isSqlKeyword) && !isH2 && EDatabaseTypeName.SAS != name)
|
||||
if (((!matcher.matches() || matcher2.matches() || isSqlKeyword) && !isH2 && EDatabaseTypeName.SAS != name)
|
||||
|| isIBMDB2ContainLowerCase(dbType, fieldName)) {
|
||||
isCheck = true; // contain other char
|
||||
}
|
||||
|
||||
@@ -105,6 +105,8 @@ public class ProcessorUtilities {
|
||||
|
||||
private static Map<String, Integer> lastGeneratedWithStatsOrTrace = new HashMap<String, Integer>();
|
||||
|
||||
private static Date exportTimeStamp;// time stamp create when exporting a job and reset when export ends.
|
||||
|
||||
private static final int GENERATED_WITH_STATS = 1;
|
||||
|
||||
private static final int GENERATED_WITH_TRACES = 2;
|
||||
@@ -144,6 +146,11 @@ public class ProcessorUtilities {
|
||||
codeLocation = exportCodeLocation;
|
||||
libraryPath = exportLibraryPath;
|
||||
exportConfig = true;
|
||||
exportTimeStamp = new Date();
|
||||
}
|
||||
|
||||
public static Date getExportTimestamp() {
|
||||
return exportTimeStamp;
|
||||
}
|
||||
|
||||
public static boolean isExportConfig() {
|
||||
@@ -155,6 +162,7 @@ public class ProcessorUtilities {
|
||||
codeLocation = null;
|
||||
libraryPath = null;
|
||||
exportConfig = false;
|
||||
exportTimeStamp = null;
|
||||
}
|
||||
|
||||
public static String getInterpreter() {
|
||||
|
||||
@@ -157,8 +157,7 @@ public class ATreeNode {
|
||||
*/
|
||||
public void addChild(Object[] children) {
|
||||
for (Object element : children) {
|
||||
this.children.add(element);
|
||||
((ATreeNode) element).setNodeParent(this);
|
||||
addChild(element);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -271,6 +271,7 @@ public class XSDPopulationUtil2 {
|
||||
} else {
|
||||
boolean namespaceFoundInParent = false;
|
||||
ATreeNode node = parentNode;
|
||||
Set<ATreeNode> checkedNodes = new HashSet<ATreeNode>();
|
||||
do {
|
||||
for (Object child : node.getChildren()) {
|
||||
if (child instanceof ATreeNode) {
|
||||
@@ -281,8 +282,9 @@ public class XSDPopulationUtil2 {
|
||||
}
|
||||
}
|
||||
}
|
||||
checkedNodes.add(node);
|
||||
node = node.getParent();
|
||||
} while (node != null && !namespaceFoundInParent);
|
||||
} while (node != null && !namespaceFoundInParent && !checkedNodes.contains(node));
|
||||
if (!namespaceFoundInParent) {
|
||||
ATreeNode namespaceNode = new ATreeNode();
|
||||
namespaceNode.setDataType(""); //$NON-NLS-1$
|
||||
@@ -303,22 +305,12 @@ public class XSDPopulationUtil2 {
|
||||
parentNode.addChild(partNode);
|
||||
boolean resolvedAsComplex = false;
|
||||
if (typeDef instanceof XSDComplexTypeDefinition) {
|
||||
if (!currentPath.contains("/" + elementName + "/")) {
|
||||
XSDTypeDefinition xsdTypeDefinition = typeDef;
|
||||
String path = currentPath + elementName + "/";
|
||||
// XSDTypeDefinition xsdTypeDefinition = xsdElementDeclarationParticle.getTypeDefinition();
|
||||
// if (xsdTypeDefinition == null) {
|
||||
// XSDComplexTypeDefinition generalType = xsdSchema
|
||||
// .resolveComplexTypeDefinitionURI(xsdElementDeclarationParticle.getURI());
|
||||
// if (generalType.getContainer() != null) {
|
||||
// xsdTypeDefinition = generalType;
|
||||
// }
|
||||
// }
|
||||
XSDTypeDefinition xsdTypeDefinition = typeDef;
|
||||
if (xsdTypeDefinition != null && xsdTypeDefinition.getName() != null) {
|
||||
partNode.setDataType(xsdTypeDefinition.getQName());
|
||||
}
|
||||
addComplexTypeDetails(xsdSchema, partNode, xsdTypeDefinition, prefix, namespace, path);
|
||||
}
|
||||
resolvedAsComplex = true;
|
||||
} else if (typeDef.getTargetNamespace() != null) {
|
||||
resolvedAsComplex = true;
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,13 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-api-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-bindings-xml-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-core-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-frontend-jaxrs-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-transports-http-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/neethi-3.0.1.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/javax.ws.rs-api-2.0-m10.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry exported="true" kind="lib" path="lib/javax.ws.rs-api-2.0-m10.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/neethi-3.0.1.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-api-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-bindings-xml-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-core-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-frontend-jaxrs-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-transports-http-2.7.7.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/stax2-api-3.1.1.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/woodstox-core-asl-4.2.0.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
||||
@@ -4,866 +4,132 @@ Bundle-Name: Cxf
|
||||
Bundle-SymbolicName: org.talend.libraries.apache.cxf;singleton:=true
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-ClassPath: .,
|
||||
lib/javax.ws.rs-api-2.0-m10.jar,
|
||||
Bundle-ClassPath: lib/javax.ws.rs-api-2.0-m10.jar,
|
||||
lib/neethi-3.0.1.jar,
|
||||
lib/cxf-api-2.7.7.jar,
|
||||
lib/cxf-rt-bindings-xml-2.7.7.jar,
|
||||
lib/cxf-rt-core-2.7.7.jar,
|
||||
lib/cxf-rt-frontend-jaxrs-2.7.7.jar,
|
||||
lib/cxf-rt-transports-http-2.7.7.jar,
|
||||
lib/stax-api-1.0.1.jar,
|
||||
lib/stax2-api-3.1.1.jar,
|
||||
lib/woodstox-core-asl-4.2.0.jar
|
||||
Export-Package: javax.ws.rs;version="2.0.0.m10",
|
||||
javax.ws.rs.client;version="2.0.0.m10",
|
||||
javax.ws.rs.container;version="2.0.0.m10",
|
||||
javax.ws.rs.core;version="2.0.0.m10",
|
||||
javax.ws.rs.ext;version="2.0.0.m10",
|
||||
org.apache.cxf;uses:="org.apache.cxf.common.i18n,org.apache.cxf.interceptor",
|
||||
lib/woodstox-core-asl-4.2.0.jar,
|
||||
.
|
||||
Export-Package: javax.ws.rs,
|
||||
javax.ws.rs.client,
|
||||
javax.ws.rs.container,
|
||||
javax.ws.rs.core,
|
||||
javax.ws.rs.ext,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.annotations,
|
||||
org.apache.cxf.attachment;
|
||||
uses:="javax.activation,
|
||||
new new org.apache.cxf.attachment,
|
||||
javax.mail.internet,
|
||||
org.apache.cxf.io,
|
||||
org.apache.cxf.message,
|
||||
new org.apache.cxf.attachment",
|
||||
org.apache.cxf.binding;
|
||||
uses:="javax.wsdl.extensions,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.interceptor,
|
||||
javax.wsdl",
|
||||
org.apache.cxf.binding.xml;
|
||||
uses:="org.apache.cxf,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.common.i18n,
|
||||
org.apache.cxf.tools.validator,
|
||||
org.apache.cxf.binding,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.binding.xml.interceptor;uses:="org.apache.cxf.message,org.apache.cxf.interceptor",
|
||||
org.apache.cxf.binding.xml.wsdl11;uses:="org.apache.cxf.wsdl,javax.wsdl.extensions,org.apache.cxf",
|
||||
org.apache.cxf.bindings.xformat;uses:="org.apache.cxf.wsdl,javax.xml.bind,javax.xml.namespace",
|
||||
org.apache.cxf.bus;
|
||||
uses:="org.apache.cxf.configuration,
|
||||
org.apache.cxf,
|
||||
javax.management,
|
||||
org.apache.cxf.management,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.bus.blueprint;
|
||||
uses:="org.apache.aries.blueprint,
|
||||
org.apache.cxf.configuration,
|
||||
org.osgi.service.blueprint.reflect,
|
||||
org.apache.cxf.bus.extension,
|
||||
org.apache.cxf.configuration.blueprint,
|
||||
org.osgi.framework,
|
||||
org.osgi.service.blueprint.container,
|
||||
org.apache.aries.blueprint.mutable,
|
||||
org.w3c.dom",
|
||||
org.apache.cxf.bus.extension;
|
||||
uses:="org.apache.cxf.configuration,
|
||||
org.apache.cxf.bus,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.resource,
|
||||
org.apache.cxf.common.i18n",
|
||||
org.apache.cxf.bus.managers;
|
||||
uses:="org.apache.cxf,
|
||||
org.apache.cxf.ws.addressing,
|
||||
javax.management,
|
||||
org.apache.cxf.configuration.spring,
|
||||
org.apache.cxf.binding,
|
||||
org.apache.cxf.management,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.phase,
|
||||
org.apache.cxf.headers,
|
||||
org.apache.cxf.workqueue,
|
||||
org.apache.cxf.configuration,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.buslifecycle,
|
||||
org.apache.cxf.extension",
|
||||
org.apache.cxf.bus.osgi;
|
||||
uses:="org.apache.cxf.workqueue,
|
||||
org.apache.cxf.configuration,
|
||||
org.apache.cxf,
|
||||
org.osgi.util.tracker,
|
||||
org.apache.cxf.bus.extension,
|
||||
org.osgi.framework,
|
||||
org.osgi.service.cm,
|
||||
org.apache.cxf.buslifecycle",
|
||||
org.apache.cxf.bus.resource;uses:="org.apache.cxf,org.apache.cxf.resource,org.apache.cxf.extension",
|
||||
org.apache.cxf.bus.spring;
|
||||
uses:="org.springframework.context.support,
|
||||
org.springframework.beans.factory.config,
|
||||
org.apache.cxf.resource,
|
||||
org.apache.cxf.configuration.spring,
|
||||
org.xml.sax,
|
||||
org.springframework.beans.factory.support,
|
||||
org.springframework.core,
|
||||
org.apache.cxf.configuration,
|
||||
org.springframework.beans.factory,
|
||||
org.apache.cxf.interceptor,
|
||||
org.apache.cxf.bus.extension,
|
||||
org.apache.cxf,
|
||||
org.springframework.core.io,
|
||||
org.springframework.context,
|
||||
org.springframework.beans.factory.xml,
|
||||
javax.xml.parsers,
|
||||
org.springframework.core.io.support,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.bus,
|
||||
org.apache.cxf.buslifecycle",
|
||||
org.apache.cxf.buslifecycle;uses:="org.apache.cxf",
|
||||
org.apache.cxf.catalog;
|
||||
uses:="org.apache.ws.commons.schema.resolver,
|
||||
javax.wsdl.xml,
|
||||
org.apache.cxf,
|
||||
org.apache.xml.resolver.tools,
|
||||
org.apache.xml.resolver,
|
||||
org.xml.sax",
|
||||
org.apache.cxf.common;uses:="javax.xml.namespace",
|
||||
org.apache.cxf.attachment,
|
||||
org.apache.cxf.binding,
|
||||
org.apache.cxf.binding.xml,
|
||||
org.apache.cxf.binding.xml.interceptor,
|
||||
org.apache.cxf.binding.xml.wsdl11,
|
||||
org.apache.cxf.bindings.xformat,
|
||||
org.apache.cxf.bus,
|
||||
org.apache.cxf.bus.blueprint,
|
||||
org.apache.cxf.bus.extension,
|
||||
org.apache.cxf.bus.managers,
|
||||
org.apache.cxf.bus.osgi,
|
||||
org.apache.cxf.bus.resource,
|
||||
org.apache.cxf.bus.spring,
|
||||
org.apache.cxf.buslifecycle,
|
||||
org.apache.cxf.catalog,
|
||||
org.apache.cxf.common,
|
||||
org.apache.cxf.common.annotation,
|
||||
org.apache.cxf.common.classloader;uses:="javax.xml.namespace",
|
||||
org.apache.cxf.common.commands;uses:="org.apache.cxf.common.i18n",
|
||||
org.apache.cxf.common.classloader,
|
||||
org.apache.cxf.common.commands,
|
||||
org.apache.cxf.common.i18n,
|
||||
org.apache.cxf.common.injection;uses:="javax.annotation,org.apache.cxf.resource,org.apache.cxf.common.annotation",
|
||||
org.apache.cxf.common.jaxb;
|
||||
uses:="new org.apache.cxf.common.jaxb,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace,
|
||||
org.xml.sax,
|
||||
javax.xml.bind.attachment,
|
||||
javax.xml.stream,
|
||||
javax.xml.transform,
|
||||
com.sun.xml.bind.marshaller,
|
||||
javax.xml.transform.stream,
|
||||
javax.xml.bind",
|
||||
org.apache.cxf.common.logging;uses:="org.apache.log4j",
|
||||
org.apache.cxf.common.security;uses:="org.apache.cxf.security",
|
||||
org.apache.cxf.common.util;
|
||||
uses:="net.sf.cglib.proxy,
|
||||
javax.tools,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.common.i18n",
|
||||
org.apache.cxf.common.xmlschema;
|
||||
uses:="org.apache.ws.commons.schema,
|
||||
org.apache.ws.commons.schema.resolver,
|
||||
org.apache.ws.commons.schema.extensions,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace,
|
||||
org.w3c.dom.ls,
|
||||
org.apache.ws.commons.schema.utils,
|
||||
org.apache.cxf.common.i18n",
|
||||
org.apache.cxf.configuration;uses:="org.apache.cxf.common.i18n",
|
||||
org.apache.cxf.configuration.blueprint;
|
||||
uses:="org.apache.aries.blueprint,
|
||||
org.osgi.service.blueprint.reflect,
|
||||
org.osgi.service.blueprint.container,
|
||||
org.apache.aries.blueprint.mutable,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace",
|
||||
org.apache.cxf.configuration.jsse;uses:="org.apache.cxf.configuration.security,javax.net.ssl",
|
||||
org.apache.cxf.configuration.security;uses:="javax.xml.bind",
|
||||
org.apache.cxf.configuration.spring;
|
||||
uses:="org.springframework.context,
|
||||
org.springframework.beans.factory.xml,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace,
|
||||
org.springframework.beans.factory.wiring,
|
||||
org.springframework.beans.factory.support,
|
||||
org.apache.cxf.configuration,
|
||||
javax.xml.bind,
|
||||
org.springframework.beans.factory,
|
||||
org.apache.cxf.extension",
|
||||
org.apache.cxf.continuations;uses:="org.apache.cxf.message",
|
||||
org.apache.cxf.databinding;
|
||||
uses:="org.apache.ws.commons.schema,
|
||||
org.apache.cxf.common.xmlschema,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
javax.xml.validation,
|
||||
org.apache.cxf.service.model,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace",
|
||||
org.apache.cxf.databinding.source;
|
||||
uses:="org.apache.cxf.staxutils,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.databinding,
|
||||
javax.xml.transform.dom,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace,
|
||||
javax.activation,
|
||||
javax.xml.stream,
|
||||
javax.xml.validation",
|
||||
org.apache.cxf.databinding.source.mime;
|
||||
uses:="org.apache.ws.commons.schema,
|
||||
org.apache.ws.commons.schema.extensions,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace",
|
||||
org.apache.cxf.databinding.stax;
|
||||
uses:="org.apache.cxf.feature,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.databinding,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace,
|
||||
javax.xml.stream,
|
||||
javax.xml.validation,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.endpoint;
|
||||
uses:="org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.ws.addressing,
|
||||
org.apache.cxf.databinding,
|
||||
org.apache.cxf.service.model,
|
||||
javax.management,
|
||||
org.apache.cxf.management,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.binding,
|
||||
org.apache.cxf.phase,
|
||||
javax.xml.namespace,
|
||||
new org.apache.cxf.endpoint,
|
||||
org.apache.cxf.configuration,
|
||||
org.apache.cxf.common.i18n,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.common.injection,
|
||||
org.apache.cxf.common.jaxb,
|
||||
org.apache.cxf.common.logging,
|
||||
org.apache.cxf.common.security,
|
||||
org.apache.cxf.common.util,
|
||||
org.apache.cxf.common.xmlschema,
|
||||
org.apache.cxf.configuration,
|
||||
org.apache.cxf.configuration.blueprint,
|
||||
org.apache.cxf.configuration.jsse,
|
||||
org.apache.cxf.configuration.security,
|
||||
org.apache.cxf.configuration.spring,
|
||||
org.apache.cxf.continuations,
|
||||
org.apache.cxf.databinding,
|
||||
org.apache.cxf.databinding.source,
|
||||
org.apache.cxf.databinding.source.mime,
|
||||
org.apache.cxf.databinding.stax,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.extension,
|
||||
org.apache.cxf.feature;
|
||||
uses:="org.apache.cxf.annotations,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.feature.transform;
|
||||
uses:="org.apache.cxf.staxutils,
|
||||
org.apache.cxf.feature,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.io,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.phase,
|
||||
javax.xml.stream,
|
||||
javax.xml.transform,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.feature.validation;
|
||||
uses:="org.apache.cxf.annotations,
|
||||
org.apache.cxf.feature,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.endpoint",
|
||||
org.apache.cxf.headers;uses:="org.apache.cxf.databinding,org.apache.cxf.interceptor,javax.xml.namespace",
|
||||
org.apache.cxf.helpers;
|
||||
uses:="org.apache.cxf.annotations,
|
||||
javax.xml.parsers,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.message,
|
||||
javax.wsdl,
|
||||
org.xml.sax,
|
||||
javax.xml.namespace,
|
||||
javax.xml.transform,
|
||||
javax.xml.transform.stream",
|
||||
org.apache.cxf.interceptor;
|
||||
uses:="org.apache.cxf.staxutils,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.io,
|
||||
org.apache.cxf.databinding,
|
||||
org.apache.cxf.service.model,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.phase,
|
||||
org.apache.cxf.service.invoker,
|
||||
javax.xml.stream,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.common.i18n,
|
||||
org.apache.cxf.endpoint",
|
||||
org.apache.cxf.interceptor.security;
|
||||
uses:="javax.security.auth.callback,
|
||||
javax.security.auth.login,
|
||||
org.apache.cxf.security,
|
||||
org.apache.cxf.service.model,
|
||||
javax.security.auth,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.phase,
|
||||
org.apache.cxf.common.security",
|
||||
org.apache.cxf.interceptor.transform;uses:="javax.xml.stream,org.apache.cxf.message,org.apache.cxf.phase",
|
||||
org.apache.cxf.internal;uses:="org.apache.aries.blueprint,org.osgi.service.blueprint.reflect,org.w3c.dom",
|
||||
org.apache.cxf.io;
|
||||
uses:="javax.xml.stream,
|
||||
org.apache.cxf.helpers,
|
||||
org.apache.cxf.service.model,
|
||||
javax.crypto",
|
||||
org.apache.cxf.jaxrs;
|
||||
uses:="org.apache.cxf.service.factory,
|
||||
org.apache.cxf.jaxrs.ext,
|
||||
org.apache.cxf.jaxrs.provider,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.databinding,
|
||||
org.apache.cxf.binding,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.service.invoker,
|
||||
org.apache.cxf.jaxrs.lifecycle,
|
||||
org.apache.cxf.configuration,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.interceptor,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.blueprint;
|
||||
uses:="org.apache.aries.blueprint,
|
||||
org.apache.cxf.jaxrs.lifecycle,
|
||||
org.osgi.service.blueprint.reflect,
|
||||
org.apache.cxf.configuration.blueprint,
|
||||
org.osgi.service.blueprint.container,
|
||||
org.apache.aries.blueprint.mutable,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.message",
|
||||
org.apache.cxf.jaxrs.client;
|
||||
uses:="org.apache.cxf.transport.http,
|
||||
javax.ws.rs,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.jaxrs.ext.form,
|
||||
org.apache.cxf.jaxrs,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.phase,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
javax.ws.rs.client,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.interceptor,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.client.spec;
|
||||
uses:="org.apache.cxf.jaxrs.impl,
|
||||
javax.ws.rs.client,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.interceptor,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.ext;
|
||||
uses:="javax.servlet,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
javax.ws.rs.ext,
|
||||
org.apache.cxf.message,
|
||||
javax.servlet.http,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.ext.form;uses:="javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.ext.multipart;
|
||||
uses:="javax.activation,
|
||||
javax.ws.rs.ext,
|
||||
org.apache.cxf.message,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.feature,
|
||||
org.apache.cxf.feature.transform,
|
||||
org.apache.cxf.feature.validation,
|
||||
org.apache.cxf.headers,
|
||||
org.apache.cxf.helpers,
|
||||
org.apache.cxf.interceptor,
|
||||
org.apache.cxf.interceptor.security,
|
||||
org.apache.cxf.interceptor.transform,
|
||||
org.apache.cxf.internal,
|
||||
org.apache.cxf.io,
|
||||
org.apache.cxf.jaxrs,
|
||||
org.apache.cxf.jaxrs.blueprint,
|
||||
org.apache.cxf.jaxrs.client,
|
||||
org.apache.cxf.jaxrs.client.spec,
|
||||
org.apache.cxf.jaxrs.ext,
|
||||
org.apache.cxf.jaxrs.ext.form,
|
||||
org.apache.cxf.jaxrs.ext.multipart,
|
||||
org.apache.cxf.jaxrs.ext.xml,
|
||||
org.apache.cxf.jaxrs.impl;
|
||||
uses:="javax.ws.rs,
|
||||
javax.ws.rs.container,
|
||||
javax.ws.rs.ext,
|
||||
org.apache.cxf.message,
|
||||
javax.servlet,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
org.apache.cxf.continuations,
|
||||
javax.servlet.http,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.impl.tl;
|
||||
uses:="org.apache.cxf.jaxrs.ext,
|
||||
javax.ws.rs.ext,
|
||||
javax.servlet,
|
||||
javax.servlet.descriptor,
|
||||
javax.ws.rs.core,
|
||||
javax.servlet.http",
|
||||
org.apache.cxf.jaxrs.interceptor;uses:="org.apache.cxf.message,org.apache.cxf.phase,org.apache.cxf.interceptor",
|
||||
org.apache.cxf.jaxrs.lifecycle;uses:="org.apache.cxf.message",
|
||||
org.apache.cxf.jaxrs.model;
|
||||
uses:="org.apache.cxf.jaxrs.impl.tl,
|
||||
javax.ws.rs,
|
||||
org.apache.cxf.jaxrs.lifecycle,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.message,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.model.wadl;
|
||||
uses:="org.apache.cxf.jaxrs.ext,
|
||||
org.apache.cxf.message,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.common.jaxb,
|
||||
org.apache.cxf.common.xmlschema,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
javax.xml.bind,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.provider;
|
||||
uses:="org.apache.cxf.staxutils,
|
||||
org.apache.cxf.jaxrs.ext,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace,
|
||||
javax.servlet,
|
||||
javax.xml.stream,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
javax.ws.rs.core,
|
||||
org.apache.cxf.jaxrs.client,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
javax.xml.bind.annotation.adapters,
|
||||
org.apache.cxf.databinding,
|
||||
org.apache.cxf.jaxrs.impl,
|
||||
javax.ws.rs.ext,
|
||||
javax.activation,
|
||||
javax.xml.bind.attachment,
|
||||
javax.xml.transform,
|
||||
org.apache.cxf.jaxrs.utils.schemas,
|
||||
javax.xml.validation,
|
||||
javax.xml.bind,
|
||||
javax.servlet.http",
|
||||
org.apache.cxf.jaxrs.security;
|
||||
uses:="javax.security.auth.callback,
|
||||
org.apache.cxf.jaxrs.ext,
|
||||
org.apache.cxf.interceptor.security,
|
||||
javax.security.auth.login,
|
||||
javax.security.auth,
|
||||
org.ietf.jgss,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.phase,
|
||||
org.apache.cxf.configuration.security,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
org.apache.cxf.transport.http.auth,
|
||||
org.apache.cxf.common.security,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.servlet;uses:="javax.servlet,org.apache.cxf.transport.servlet,org.apache.cxf.jaxrs",
|
||||
org.apache.cxf.jaxrs.spring;
|
||||
uses:="org.apache.cxf.jaxrs.client,
|
||||
org.springframework.beans.factory.support,
|
||||
org.apache.cxf.jaxrs.lifecycle,
|
||||
org.springframework.context,
|
||||
org.springframework.beans.factory.xml,
|
||||
org.apache.cxf.configuration.spring,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.jaxrs,
|
||||
org.w3c.dom",
|
||||
org.apache.cxf.jaxrs.utils;
|
||||
uses:="org.apache.cxf.jaxrs.impl.tl,
|
||||
javax.ws.rs,
|
||||
org.apache.cxf.jaxrs.provider,
|
||||
org.apache.cxf.jaxrs.ext.multipart,
|
||||
org.apache.cxf,
|
||||
javax.xml.bind.annotation.adapters,
|
||||
javax.ws.rs.ext,
|
||||
org.apache.cxf.jaxrs,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.jaxrs.ext.form,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
javax.xml.bind,
|
||||
javax.servlet.http,
|
||||
javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.utils.multipart;uses:="org.apache.cxf.jaxrs.ext,org.apache.cxf.jaxrs.ext.multipart,javax.ws.rs.core",
|
||||
org.apache.cxf.jaxrs.utils.schemas;
|
||||
uses:="org.w3c.dom.ls,
|
||||
org.apache.cxf.catalog,
|
||||
org.apache.cxf,
|
||||
javax.xml.validation",
|
||||
org.apache.cxf.logging;uses:="org.apache.cxf.message",
|
||||
org.apache.cxf.management;uses:="javax.management",
|
||||
org.apache.cxf.jaxrs.impl,
|
||||
org.apache.cxf.jaxrs.impl.tl,
|
||||
org.apache.cxf.jaxrs.interceptor,
|
||||
org.apache.cxf.jaxrs.lifecycle,
|
||||
org.apache.cxf.jaxrs.model,
|
||||
org.apache.cxf.jaxrs.model.wadl,
|
||||
org.apache.cxf.jaxrs.provider,
|
||||
org.apache.cxf.jaxrs.security,
|
||||
org.apache.cxf.jaxrs.servlet,
|
||||
org.apache.cxf.jaxrs.spring,
|
||||
org.apache.cxf.jaxrs.utils,
|
||||
org.apache.cxf.jaxrs.utils.multipart,
|
||||
org.apache.cxf.jaxrs.utils.schemas,
|
||||
org.apache.cxf.logging,
|
||||
org.apache.cxf.management,
|
||||
org.apache.cxf.management.annotation,
|
||||
org.apache.cxf.message;
|
||||
uses:="javax.activation,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.binding,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.phase;uses:="org.apache.cxf.transport,org.apache.cxf.message,org.apache.cxf.interceptor",
|
||||
org.apache.cxf.policy;
|
||||
uses:="org.apache.cxf.service.model,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace",
|
||||
org.apache.cxf.resource;uses:="org.xml.sax",
|
||||
org.apache.cxf.security;uses:="javax.security.auth",
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.phase,
|
||||
org.apache.cxf.policy,
|
||||
org.apache.cxf.resource,
|
||||
org.apache.cxf.security,
|
||||
org.apache.cxf.security.claims.authorization,
|
||||
org.apache.cxf.security.transport;uses:="javax.net.ssl",
|
||||
org.apache.cxf.service;
|
||||
uses:="org.apache.cxf.service.invoker,
|
||||
org.apache.cxf.configuration,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.databinding,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.interceptor,
|
||||
javax.xml.namespace",
|
||||
org.apache.cxf.service.factory;
|
||||
uses:="org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.databinding,
|
||||
org.apache.cxf.service.model,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.service.invoker,
|
||||
org.apache.cxf.common.i18n,
|
||||
org.apache.cxf.endpoint",
|
||||
org.apache.cxf.service.invoker;
|
||||
uses:="org.springframework.context,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.service.model;
|
||||
uses:="org.apache.ws.commons.schema,
|
||||
org.apache.cxf.common.xmlschema,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.ws.addressing,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace",
|
||||
org.apache.cxf.staxutils;
|
||||
uses:="javax.xml.stream,
|
||||
org.xml.sax.ext,
|
||||
javax.xml.transform,
|
||||
javax.xml.parsers,
|
||||
javax.xml.transform.sax,
|
||||
javax.xml.stream.events,
|
||||
org.w3c.dom,
|
||||
org.xml.sax,
|
||||
javax.xml.namespace",
|
||||
org.apache.cxf.staxutils.transform;uses:="javax.xml.stream,org.apache.cxf.staxutils,javax.xml.namespace",
|
||||
org.apache.cxf.test;
|
||||
uses:="org.springframework.context.support,
|
||||
org.apache.cxf,
|
||||
org.springframework.context,
|
||||
org.springframework.beans.factory.xml,
|
||||
org.junit,
|
||||
org.apache.cxf.message,
|
||||
org.w3c.dom,
|
||||
javax.wsdl,
|
||||
javax.xml.namespace,
|
||||
javax.xml.xpath,
|
||||
javax.xml.stream,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.endpoint",
|
||||
org.apache.cxf.transport;
|
||||
uses:="org.apache.cxf,
|
||||
org.apache.cxf.ws.addressing,
|
||||
org.apache.cxf.resource,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.binding,
|
||||
org.apache.cxf.phase,
|
||||
org.xml.sax,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.configuration,
|
||||
org.apache.cxf.endpoint",
|
||||
org.apache.cxf.transport.common.gzip;
|
||||
uses:="org.apache.cxf.feature,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.io,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.interceptor,
|
||||
org.apache.cxf.phase",
|
||||
org.apache.cxf.transport.http;
|
||||
uses:="org.apache.cxf.wsdl,
|
||||
org.apache.cxf.ws.addressing,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.transport.https,
|
||||
javax.servlet,
|
||||
org.apache.cxf.configuration,
|
||||
org.apache.cxf.transports.http.configuration,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.configuration.jsse,
|
||||
org.apache.cxf.io,
|
||||
org.apache.cxf.security,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.configuration.security,
|
||||
org.apache.cxf.wsdl11,
|
||||
org.apache.cxf.transport.http.auth,
|
||||
org.apache.cxf.continuations,
|
||||
javax.servlet.http",
|
||||
org.apache.cxf.transport.http.auth;
|
||||
uses:="javax.security.auth.callback,
|
||||
org.apache.cxf.configuration.security,
|
||||
javax.security.auth.login,
|
||||
org.apache.cxf.message",
|
||||
org.apache.cxf.transport.http.blueprint;
|
||||
uses:="org.apache.aries.blueprint,
|
||||
org.osgi.service.blueprint.reflect,
|
||||
org.apache.cxf.configuration.blueprint,
|
||||
org.apache.aries.blueprint.mutable,
|
||||
org.w3c.dom",
|
||||
org.apache.cxf.transport.http.osgi;
|
||||
uses:="org.apache.cxf.transport.http,
|
||||
org.osgi.util.tracker,
|
||||
org.osgi.framework,
|
||||
org.osgi.service.cm",
|
||||
org.apache.cxf.transport.http.policy;uses:="org.apache.cxf.ws.policy,org.apache.neethi,org.apache.cxf.ws.policy.builder.jaxb",
|
||||
org.apache.cxf.transport.http.policy.impl;
|
||||
uses:="org.apache.cxf.policy,
|
||||
org.apache.cxf.transports.http.configuration,
|
||||
org.apache.cxf.message,
|
||||
javax.xml.namespace",
|
||||
org.apache.cxf.transport.http.spring;
|
||||
uses:="org.springframework.beans.factory.support,
|
||||
org.springframework.beans.factory.xml,
|
||||
org.apache.cxf.configuration.spring,
|
||||
org.w3c.dom",
|
||||
org.apache.cxf.transport.https;
|
||||
uses:="org.apache.cxf.transport.http,
|
||||
org.apache.cxf.feature,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.configuration.jsse,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.phase,
|
||||
org.apache.cxf.configuration.security,
|
||||
org.apache.cxf.common.util,
|
||||
javax.net.ssl,
|
||||
org.apache.cxf.endpoint,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.transport.servlet;
|
||||
uses:="org.apache.cxf.transport.http,
|
||||
org.springframework.context.support,
|
||||
org.apache.cxf,
|
||||
org.springframework.context,
|
||||
org.apache.cxf.transports.http,
|
||||
org.apache.cxf.resource,
|
||||
org.apache.cxf.service.model,
|
||||
org.springframework.context.event,
|
||||
javax.servlet,
|
||||
org.apache.cxf.transport,
|
||||
javax.servlet.http",
|
||||
org.apache.cxf.transport.servlet.servicelist;
|
||||
uses:="javax.servlet,
|
||||
org.apache.cxf.transport.http,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.transport,
|
||||
javax.servlet.http",
|
||||
org.apache.cxf.transports.http;uses:="org.apache.cxf.service.model",
|
||||
org.apache.cxf.transports.http.configuration;uses:="org.apache.cxf.wsdl,javax.xml.bind",
|
||||
org.apache.cxf.transports.http.internal;uses:="org.apache.cxf,org.apache.cxf.transports.http",
|
||||
org.apache.cxf.security.transport,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.service.factory,
|
||||
org.apache.cxf.service.invoker,
|
||||
org.apache.cxf.service.model,
|
||||
org.apache.cxf.staxutils,
|
||||
org.apache.cxf.staxutils.transform,
|
||||
org.apache.cxf.test,
|
||||
org.apache.cxf.transport,
|
||||
org.apache.cxf.transport.common.gzip,
|
||||
org.apache.cxf.transport.http,
|
||||
org.apache.cxf.transport.http.auth,
|
||||
org.apache.cxf.transport.http.blueprint,
|
||||
org.apache.cxf.transport.http.osgi,
|
||||
org.apache.cxf.transport.http.policy,
|
||||
org.apache.cxf.transport.http.policy.impl,
|
||||
org.apache.cxf.transport.http.spring,
|
||||
org.apache.cxf.transport.https,
|
||||
org.apache.cxf.transport.servlet,
|
||||
org.apache.cxf.transport.servlet.servicelist,
|
||||
org.apache.cxf.transports.http,
|
||||
org.apache.cxf.transports.http.configuration,
|
||||
org.apache.cxf.transports.http.internal,
|
||||
org.apache.cxf.version,
|
||||
org.apache.cxf.workqueue,
|
||||
org.apache.cxf.ws.addressing;
|
||||
uses:="org.apache.cxf.ws.addressing.v200403,
|
||||
org.apache.cxf.ws.addressing.v200408,
|
||||
org.apache.cxf.feature,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service.model,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.message,
|
||||
org.apache.cxf.phase,
|
||||
javax.xml.namespace,
|
||||
org.apache.cxf.transport,
|
||||
javax.xml.bind,
|
||||
new org.apache.cxf.ws.addressing,
|
||||
org.apache.cxf.interceptor",
|
||||
org.apache.cxf.ws.addressing.v200403;uses:="javax.xml.bind,javax.xml.namespace",
|
||||
org.apache.cxf.ws.addressing.v200408;uses:="javax.xml.bind,javax.xml.namespace",
|
||||
org.apache.cxf.ws.addressing.wsdl;uses:="org.apache.cxf.wsdl,javax.xml.bind,javax.xml.namespace",
|
||||
org.apache.cxf.wsdl;
|
||||
uses:="javax.wsdl.factory,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.ws.addressing,
|
||||
org.apache.cxf.service.model,
|
||||
org.w3c.dom,
|
||||
javax.xml.namespace,
|
||||
javax.wsdl,
|
||||
javax.xml.stream,
|
||||
javax.xml.stream.util,
|
||||
javax.xml.transform,
|
||||
javax.wsdl.extensions,
|
||||
javax.xml.validation,
|
||||
org.apache.cxf.common.i18n,
|
||||
javax.xml.bind",
|
||||
org.apache.cxf.wsdl.http;uses:="org.apache.cxf.wsdl,javax.xml.bind",
|
||||
org.apache.cxf.wsdl11;
|
||||
uses:="org.apache.cxf.wsdl,
|
||||
javax.wsdl.factory,
|
||||
org.apache.cxf.service.factory,
|
||||
javax.wsdl.extensions.soap,
|
||||
org.apache.cxf,
|
||||
org.apache.cxf.service,
|
||||
org.apache.cxf.service.model,
|
||||
org.w3c.dom,
|
||||
org.apache.cxf.binding,
|
||||
org.xml.sax,
|
||||
javax.xml.namespace,
|
||||
javax.wsdl,
|
||||
org.apache.cxf.common.xmlschema,
|
||||
javax.wsdl.xml,
|
||||
javax.wsdl.extensions,
|
||||
org.apache.cxf.common.i18n"
|
||||
Import-Package: bsh;resolution:=optional,com.ibm.wsdl.util.xml;resolut
|
||||
ion:=optional,com.jamonapi;resolution:=optional,com.sun.msv.grammar;r
|
||||
esolution:=optional,com.sun.msv.grammar.trex;resolution:=optional,com
|
||||
.sun.msv.grammar.xmlschema;resolution:=optional,com.sun.msv.reader;re
|
||||
solution:=optional,com.sun.msv.reader.trex.ng;resolution:=optional,co
|
||||
m.sun.msv.reader.util;resolution:=optional,com.sun.msv.reader.xmlsche
|
||||
ma;resolution:=optional,com.sun.msv.util;resolution:=optional,com.sun
|
||||
.msv.verifier;resolution:=optional,com.sun.msv.verifier.regexp;resolu
|
||||
tion:=optional,com.sun.msv.verifier.regexp.xmlschema;resolution:=opti
|
||||
onal,com.sun.net.httpserver;resolution:=optional,com.sun.tools.xjc.re
|
||||
ader.internalizer;resolution:=optional,com.sun.xml.fastinfoset.sax;re
|
||||
solution:=optional,com.sun.xml.fastinfoset.stax;resolution:=optional,
|
||||
edu.emory.mathcs.backport.java.util.concurrent;resolution:=optional,g
|
||||
roovy.lang;resolution:=optional,javax.activation;resolution:=optional
|
||||
,javax.annotation;resolution:=optional,javax.crypto;resolution:=optio
|
||||
nal,javax.crypto.spec;resolution:=optional,javax.ejb;resolution:=opti
|
||||
onal,javax.el;resolution:=optional,javax.imageio;resolution:=optional
|
||||
,javax.imageio.stream;resolution:=optional,javax.inject;resolution:=o
|
||||
ptional,javax.interceptor;resolution:=optional,javax.jms;resolution:=
|
||||
optional,javax.jws;resolution:=optional,javax.jws.soap;resolution:=op
|
||||
tional,javax.management;resolution:=optional,javax.management.modelmb
|
||||
ean;resolution:=optional,javax.management.openmbean;resolution:=optio
|
||||
nal,javax.management.remote;resolution:=optional,javax.naming;resolut
|
||||
ion:=optional,javax.net;resolution:=optional,javax.net.ssl;resolution
|
||||
:=optional,javax.persistence.spi;resolution:=optional,javax.rmi;resol
|
||||
ution:=optional,javax.security.auth;resolution:=optional,javax.securi
|
||||
ty.auth.callback;resolution:=optional,javax.security.auth.kerberos;re
|
||||
solution:=optional,javax.security.auth.login;resolution:=optional,jav
|
||||
ax.security.auth.x500;resolution:=optional,javax.security.cert;resolu
|
||||
tion:=optional,javax.sql;resolution:=optional,javax.tools;resolution:
|
||||
=optional,javax.transaction;resolution:=optional,javax.transaction.xa
|
||||
;resolution:=optional,javax.validation;resolution:=optional,javax.val
|
||||
idation.bootstrap;resolution:=optional,javax.validation.metadata;reso
|
||||
lution:=optional,javax.validation.spi;resolution:=optional,javax.wsdl
|
||||
;resolution:=optional,javax.wsdl.extensions;resolution:=optional,java
|
||||
x.wsdl.extensions.http;resolution:=optional,javax.wsdl.extensions.mim
|
||||
e;resolution:=optional,javax.wsdl.extensions.schema;resolution:=optio
|
||||
nal,javax.wsdl.extensions.soap;resolution:=optional,javax.wsdl.extens
|
||||
ions.soap12;resolution:=optional,javax.wsdl.factory;resolution:=optio
|
||||
nal,javax.wsdl.xml;resolution:=optional,javax.xml.bind;resolution:=op
|
||||
tional,javax.xml.bind.annotation;resolution:=optional,javax.xml.bind.
|
||||
annotation.adapters;resolution:=optional,javax.xml.bind.attachment;re
|
||||
solution:=optional,javax.xml.bind.helpers;resolution:=optional,javax.
|
||||
xml.bind.util;resolution:=optional,javax.xml.datatype;resolution:=opt
|
||||
ional,javax.xml.namespace;resolution:=optional,javax.xml.parsers;reso
|
||||
lution:=optional,javax.xml.soap;resolution:=optional,javax.xml.stream
|
||||
;resolution:=optional,javax.xml.stream.events;resolution:=optional,ja
|
||||
vax.xml.stream.util;resolution:=optional,javax.xml.transform;resoluti
|
||||
on:=optional,javax.xml.transform.dom;resolution:=optional,javax.xml.t
|
||||
ransform.sax;resolution:=optional,javax.xml.transform.stax;resolution
|
||||
:=optional,javax.xml.transform.stream;resolution:=optional,javax.xml.
|
||||
validation;resolution:=optional,javax.xml.ws;resolution:=optional,jav
|
||||
ax.xml.ws.handler;resolution:=optional,javax.xml.ws.handler.soap;reso
|
||||
lution:=optional,javax.xml.ws.http;resolution:=optional,javax.xml.ws.
|
||||
soap;resolution:=optional,javax.xml.ws.spi;resolution:=optional,javax
|
||||
.xml.ws.spi.http;resolution:=optional,javax.xml.ws.wsaddressing;resol
|
||||
ution:=optional,javax.xml.xpath;resolution:=optional,jline;resolution
|
||||
:=optional,junit.framework;resolution:=optional,net.jcip.annotations;
|
||||
resolution:=optional,net.sf.cglib.asm;resolution:=optional,net.sf.cgl
|
||||
ib.core;resolution:=optional,net.sf.cglib.proxy;resolution:=optional,
|
||||
net.sf.cglib.transform.impl;resolution:=optional,org.apache.abdera;re
|
||||
solution:=optional,org.apache.abdera.factory;resolution:=optional,org
|
||||
.apache.abdera.model;resolution:=optional,org.apache.abdera.parser;re
|
||||
solution:=optional,org.apache.abdera.writer;resolution:=optional,org.
|
||||
apache.aries.blueprint;resolution:=optional,org.apache.aries.blueprin
|
||||
t.mutable;resolution:=optional,org.apache.axiom.om;resolution:=option
|
||||
al,org.apache.commons.httpclient;resolution:=optional,org.apache.comm
|
||||
ons.httpclient.auth;resolution:=optional,org.apache.commons.httpclien
|
||||
t.methods;resolution:=optional,org.apache.commons.httpclient.params;r
|
||||
esolution:=optional,org.apache.commons.httpclient.protocol;resolution
|
||||
:=optional,org.apache.commons.httpclient.util;resolution:=optional,or
|
||||
g.apache.commons.jxpath;resolution:=optional,org.apache.commons.lang;
|
||||
resolution:=optional;version="[2.6,3)",org.apache.commons.lang.builde
|
||||
r;resolution:=optional;version="[2.6,3)",org.apache.commons.logging;r
|
||||
esolution:=optional,org.apache.commons.pool;resolution:=optional,org.
|
||||
apache.commons.pool.impl;resolution:=optional,org.apache.commons.ssl;
|
||||
resolution:=optional,org.apache.cxf;resolution:=optional;version="[2.
|
||||
7,3)",org.apache.cxf.aegis;resolution:=optional,org.apache.cxf.aegis.
|
||||
type;resolution:=optional,org.apache.cxf.binding;resolution:=optional
|
||||
;version="[2.7,3)",org.apache.cxf.binding.soap.model;resolution:=opti
|
||||
onal;version="[2.7,3)",org.apache.cxf.buslifecycle;resolution:=option
|
||||
al;version="[2.7,3)",org.apache.cxf.clustering;resolution:=optional;v
|
||||
ersion="[2.7,3)",org.apache.cxf.configuration.security;resolution:=op
|
||||
tional;version="[2.7,3)",org.apache.cxf.endpoint;resolution:=optional
|
||||
;version="[2.7,3)",org.apache.cxf.extension;resolution:=optional;vers
|
||||
ion="[2.7,3)",org.apache.cxf.feature;resolution:=optional;version="[2
|
||||
.7,3)",org.apache.cxf.headers;resolution:=optional;version="[2.7,3)",
|
||||
org.apache.cxf.helpers;resolution:=optional;version="[2.7,3)",org.apa
|
||||
che.cxf.io;resolution:=optional;version="[2.7,3)",org.apache.cxf.jaxr
|
||||
s.client;resolution:=optional;version="[2.7,3)",org.apache.cxf.messag
|
||||
e;resolution:=optional;version="[2.7,3)",org.apache.cxf.phase;resolut
|
||||
ion:=optional;version="[2.7,3)",org.apache.cxf.security;resolution:=o
|
||||
ptional;version="[2.7,3)",org.apache.cxf.service;resolution:=optional
|
||||
;version="[2.7,3)",org.apache.cxf.tools.common;resolution:=optional,o
|
||||
rg.apache.cxf.tools.validator;resolution:=optional,org.apache.cxf.tra
|
||||
nsport;resolution:=optional;version="[2.7,3)",org.apache.cxf.ws.addre
|
||||
ssing;resolution:=optional;version="[2.7,3)",org.apache.cxf.ws.addres
|
||||
sing.impl;resolution:=optional;version="[2.7,3)",org.apache.cxf.ws.ad
|
||||
dressing.soap;resolution:=optional;version="[2.7,3)",org.apache.cxf.w
|
||||
s.mex;resolution:=optional,org.apache.cxf.ws.mex.model._2004_09;resol
|
||||
ution:=optional,org.apache.geronimo.osgi.registry.api;resolution:=opt
|
||||
ional,org.apache.log4j;resolution:=optional;version="[1.2,2)",org.apa
|
||||
che.log4j.jmx;resolution:=optional;version="[1.2,2)",org.apache.log4j
|
||||
.spi;resolution:=optional;version="[1.2,2)",org.apache.log4j.xml;reso
|
||||
lution:=optional;version="[1.2,2)",org.apache.mina.core.buffer;resolu
|
||||
tion:=optional,org.apache.mina.core.filterchain;resolution:=optional,
|
||||
org.apache.mina.core.future;resolution:=optional,org.apache.mina.core
|
||||
.service;resolution:=optional,org.apache.mina.core.session;resolution
|
||||
:=optional,org.apache.mina.filter.codec;resolution:=optional,org.apac
|
||||
he.mina.filter.logging;resolution:=optional,org.apache.mina.transport
|
||||
.socket.nio;resolution:=optional,org.apache.velocity;resolution:=opti
|
||||
onal,org.apache.velocity.app;resolution:=optional,org.apache.velocity
|
||||
.context;resolution:=optional,org.apache.xml.dtm;resolution:=optional
|
||||
,org.apache.xml.resolver;resolution:=optional,org.apache.xml.resolver
|
||||
.helpers;resolution:=optional,org.apache.xml.resolver.tools;resolutio
|
||||
n:=optional,org.apache.xml.utils;resolution:=optional,org.apache.xmlb
|
||||
eans;resolution:=optional,org.apache.xpath;resolution:=optional,org.a
|
||||
pache.xpath.compiler;resolution:=optional,org.apache.xpath.functions;
|
||||
resolution:=optional,org.apache.xpath.objects;resolution:=optional,or
|
||||
g.aspectj.bridge;resolution:=optional,org.aspectj.lang;resolution:=op
|
||||
tional,org.aspectj.lang.annotation;resolution:=optional,org.aspectj.l
|
||||
ang.reflect;resolution:=optional,org.aspectj.runtime.internal;resolut
|
||||
ion:=optional,org.aspectj.util;resolution:=optional,org.aspectj.weave
|
||||
r;resolution:=optional,org.aspectj.weaver.ast;resolution:=optional,or
|
||||
g.aspectj.weaver.bcel;resolution:=optional,org.aspectj.weaver.interna
|
||||
l.tools;resolution:=optional,org.aspectj.weaver.loadtime;resolution:=
|
||||
optional,org.aspectj.weaver.patterns;resolution:=optional,org.aspectj
|
||||
.weaver.reflect;resolution:=optional,org.aspectj.weaver.tools;resolut
|
||||
ion:=optional,org.bouncycastle.asn1;resolution:=optional,org.bouncyca
|
||||
stle.asn1.x509;resolution:=optional,org.bouncycastle.util.encoders;re
|
||||
solution:=optional,org.bouncycastle.x509.extension;resolution:=option
|
||||
al,org.codehaus.groovy.control;resolution:=optional,org.dom4j;resolut
|
||||
ion:=optional,org.dom4j.io;resolution:=optional,org.eclipse.jetty.jmx
|
||||
;resolution:=optional,org.hibernate;resolution:=optional,org.hibernat
|
||||
e.cache;resolution:=optional,org.hibernate.cache.access;resolution:=o
|
||||
ptional,org.hibernate.cfg;resolution:=optional,org.hibernate.impl;res
|
||||
olution:=optional,org.hibernate.stat;resolution:=optional,org.hiberna
|
||||
te.transaction;resolution:=optional,org.hibernate.validator.messagein
|
||||
terpolation;resolution:=optional,org.hibernate.validator.resourceload
|
||||
ing;resolution:=optional,org.ietf.jgss;resolution:=optional,org.jruby
|
||||
;resolution:=optional,org.jruby.ast;resolution:=optional,org.jruby.ex
|
||||
ceptions;resolution:=optional,org.jruby.javasupport;resolution:=optio
|
||||
nal,org.jruby.runtime;resolution:=optional,org.jruby.runtime.builtin;
|
||||
resolution:=optional,org.junit;resolution:=optional,org.jvnet.fastinf
|
||||
oset;resolution:=optional,org.jvnet.staxex;resolution:=optional,org.m
|
||||
ortbay.log;resolution:=optional,org.mortbay.util.ajax;resolution:=opt
|
||||
ional,org.omg.CORBA;resolution:=optional,org.osgi.framework;resolutio
|
||||
n:=optional,org.osgi.service.blueprint.container;resolution:=optional
|
||||
,org.osgi.service.blueprint.reflect;resolution:=optional,org.osgi.ser
|
||||
vice.cm;resolution:=optional,org.osgi.service.log;resolution:=optiona
|
||||
l,org.osgi.util.tracker;resolution:=optional,org.owasp.esapi;resoluti
|
||||
on:=optional,org.relaxng.datatype;resolution:=optional,org.springfram
|
||||
ework.instrument;resolution:=optional,org.springframework.web.context
|
||||
;resolution:=optional,org.springframework.web.context.support;resolut
|
||||
ion:=optional,org.springframework.web.servlet;resolution:=optional,or
|
||||
g.springframework.web.servlet.handler;resolution:=optional,org.spring
|
||||
framework.web.servlet.mvc;resolution:=optional,org.w3c.dom;resolution
|
||||
:=optional,org.w3c.dom.bootstrap;resolution:=optional,org.w3c.dom.ls;
|
||||
resolution:=optional,org.xml.sax;resolution:=optional,org.xml.sax.ext
|
||||
;resolution:=optional,org.xml.sax.helpers;resolution:=optional,sun.mi
|
||||
sc;resolution:=optional
|
||||
Require-Bundle: javax.wsdl;bundle-version="1.6.2"
|
||||
org.apache.cxf.ws.addressing,
|
||||
org.apache.cxf.ws.addressing.v200403,
|
||||
org.apache.cxf.ws.addressing.v200408,
|
||||
org.apache.cxf.ws.addressing.wsdl,
|
||||
org.apache.cxf.wsdl,
|
||||
org.apache.cxf.wsdl.http,
|
||||
org.apache.cxf.wsdl11
|
||||
Require-Bundle: javax.wsdl;bundle-version="1.6.2",
|
||||
org.apache.log4j
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user