diff --git a/.gitignore b/.gitignore index eaf774122c..ec609c9ea6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,11 @@ /.project /.classpath /1 -/derby.log \ No newline at end of file +/derby.log + +# IntelliJ Idea +.idea/ +out/ +*.ipr +*.iws +*.iml \ No newline at end of file diff --git a/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java b/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java index c07216692e..6f54d09769 100644 --- a/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java +++ b/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java @@ -17,8 +17,10 @@ package com.alibaba.druid.filter.config; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.InputStream; import java.net.URL; +import java.net.UnknownHostException; import java.security.PublicKey; import java.sql.SQLException; import java.util.Properties; @@ -231,22 +233,29 @@ public class ConfigFilter extends FilterAdapter { InputStream inStream = null; try { boolean xml = false; - if (filePath.startsWith("http://") || filePath.startsWith("https://") || filePath.startsWith("file://")) { + if (filePath.startsWith("http://") || filePath.startsWith("https://") || filePath.startsWith("file://")) { URL url = new URL(filePath); - inStream = url.openStream(); + try { + inStream = url.openStream(); + xml = url.getPath().endsWith(".xml"); + } catch (UnknownHostException e) { + // 处理本地的文件,格式:file://C:\Users\UserName\AppData\Local\Temp\MyTest6192238555052741793919301884303 + if(url.getHost().length() == 1 && filePath.startsWith("file://")) { + filePath = filePath.substring("file://".length()); + inStream = getFileAsStream(filePath); + xml = filePath.endsWith(".xml"); + } else { + throw new UnknownHostException(e.getMessage()); + } + } - xml = url.getPath().endsWith(".xml"); } else if (filePath.startsWith("classpath:")) { String resourcePath = filePath.substring("classpath:".length()); inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath); + // 在classpath下应该也可以配置xml文件吧? + xml = resourcePath.endsWith(".xml"); } else { - File file = new File(filePath); - if (file.exists()) { - inStream = new FileInputStream(file); - } else { - inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath); - } - + inStream = getFileAsStream(filePath); xml = filePath.endsWith(".xml"); } @@ -269,4 +278,15 @@ public class ConfigFilter extends FilterAdapter { JdbcUtils.close(inStream); } } + + private InputStream getFileAsStream(String filePath) throws FileNotFoundException { + InputStream inStream = null; + File file = new File(filePath); + if (file.exists()) { + inStream = new FileInputStream(file); + } else { + inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath); + } + return inStream; + } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index fe2c6bbafd..9a09c1bf88 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -192,10 +192,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS return; } - if (x.getParent() != null) { - print(";"); - } else { - println(";"); + if(isPrettyFormat()) { + if (x.getParent() != null) { + print(";"); + } else { + println(";"); + } } } } @@ -445,14 +447,14 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS print("CONNECT BY "); - if (x.isPrior()) { - print("PRIOR "); - } - if (x.isNoCycle()) { print("NOCYCLE "); } + if (x.isPrior()) { + print("PRIOR "); + } + x.getConnectBy().accept(this); return false;