@ -51,9 +51,10 @@ public class JDBCDefPane extends JPanel {
public static final String DRIVER_TYPE = "driver_type" ;
public static final String USER_NAME = "user_name" ;
private static final String OTHER_DB = "Others" ;
private static final Pattern ORACLE_URL = Pattern . compile ( "^jdbc:oracle:thin:@[/]*([0-9a-zA-Z_\\.]+)(:([0-9]+|port))?([:/](.*))?.*" , Pattern . CASE_INSENSITIVE ) ;
private static final Pattern GENERAL_URL = Pattern . compile ( "^jdbc:(mysql|sqlserver|db2|derby|postgresql|inceptor|inceptor2|hive2)://([0-9a-zA-Z_\\.]+)(:([0-9]+|port))?((/|;DatabaseName=)(.*))?.*" , Pattern . CASE_INSENSITIVE ) ;
private static final Pattern ORACLE_URL = Pattern . compile ( "^jdbc:oracle:thin:@[/]*([- 0-9a-zA-Z_\\.]+)(:([0-9]+|port))?([:/](.*))?.*" , Pattern . CASE_INSENSITIVE ) ;
private static final Pattern GENERAL_URL = Pattern . compile ( "^jdbc:(mysql|sqlserver|db2|derby|postgresql|inceptor|inceptor2|hive2)://([- 0-9a-zA-Z_\\.]+)(:([0-9]+|port))?((/|;DatabaseName=)(.*))?.*" , Pattern . CASE_INSENSITIVE ) ;
private static final Pattern PORT = Pattern . compile ( "^0$|^[1-9][\\d]*[\\d]*$" ) ;
private static final Pattern CHAR_NEED_ESCAPE = Pattern . compile ( "[?|$^*\\\\\\[\\](){}.+]" ) ;
// 编码转换.
private String originalCharSet = null ;
private static Map < String , DriverURLName [ ] > jdbcMap = new HashMap < String , DriverURLName [ ] > ( ) ;
@ -389,6 +390,9 @@ public class JDBCDefPane extends JPanel {
InputMethodListener portInputMethodListener = new InputMethodListener ( ) {
@Override
public void inputMethodTextChanged ( InputMethodEvent event ) {
if ( null = = event . getText ( ) ) {
return ;
}
char ch = event . getText ( ) . current ( ) ;
if ( ! ( ch > = '0' & & ch < = '9' ) ) {
event . consume ( ) ;
@ -484,13 +488,13 @@ public class JDBCDefPane extends JPanel {
KeyListener portKeyListener = new KeyAdapter ( ) {
@Override
public void keyReleased ( KeyEvent e ) {
String port = portTextField . getText ( ) . trim ( ) ;
String port = portTextField . getText ( ) ;
if ( isPortValid ( port ) ) {
updateURL ( ) ;
} else {
portTextField . setText ( port . replaceAll ( e . getKeyChar ( ) + "" , "" ) ) ;
portTextField . setText ( port . replaceAll ( getCharNeedReplace ( e . getKeyChar ( ) ) , "" ) ) ;
if ( ! isPortValid ( portTextField . getText ( ) ) ) {
portTextField . setText ( "" ) ;
portTextField . setText ( StringUtils . EMPTY ) ;
updateURL ( ) ;
}
}
@ -501,6 +505,15 @@ public class JDBCDefPane extends JPanel {
return PORT . matcher ( port ) . find ( ) ;
}
private String getCharNeedReplace ( char c ) {
String charNeedReplace = c + "" ;
Matcher matcher = CHAR_NEED_ESCAPE . matcher ( charNeedReplace ) ;
if ( matcher . find ( ) ) {
charNeedReplace = "\\" + charNeedReplace ;
}
return charNeedReplace ;
}
DocumentListener updateURLListener = new DocumentListener ( ) {
@Override