📄 jdbcproperties.java
字号:
append("its place."); GUIUtilities.displayErrorMessage(sb.toString()); if (file != null && file.exists()) { file.renameTo(new File(confPath + "jdbcdrivers.xml.old")); } recreateDefinitionsFile(from, to); loadDrivers(); } finally { if (in != null) { try { in.close(); } catch (IOException e) {} } } } else { // copy the default file recreateDefinitionsFile(from, to); // reload the drivers loadDrivers(); } } private static void recreateDefinitionsFile(String from, String to) { try { FileUtils.copyResource(from, to); } catch (IOException ioExc) { GUIUtilities.displayErrorMessage( "An error occurred recreating the driver definitions."); } } private static int idCount = 1; static class XMLDriverHandler extends DefaultHandler { private DatabaseDriver dd = new DatabaseDriver(); private CharArrayWriter contents = new CharArrayWriter(); public XMLDriverHandler() {} public void startElement(String nameSpaceURI, String localName, String qName, Attributes attrs) { contents.reset(); } public void endElement(String nameSpaceURI, String localName, String qName) { if (dd == null) { dd = new DatabaseDriver(); } if (localName.equals("id")) { dd.setId(Long.parseLong(contents.toString())); } else if (localName.equals("name")) { dd.setName(contents.toString()); } else if (localName.equals("description")) { dd.setDescription(contents.toString()); } else if (localName.equals("type")) { dd.setDatabaseType(Integer.parseInt(contents.toString())); } else if (localName.equals("path")) { dd.setPath(contents.toString()); } else if (localName.equals("classname")) { dd.setClassName(contents.toString()); // check the default id is set against the ODBC driver if ("sun.jdbc.odbc.JdbcOdbcDriver".equals(dd.getClassName()) && dd.getId() != DEFAULT_ODBC_ID) { dd.setId(DEFAULT_ODBC_ID); resaveDrivers = true; } } else if (localName.equals("url")) { // replace the old format of [server] etc with the new String url = contents.toString(); if (url.contains("[server]")) { resaveDrivers = true; url = url.replaceAll("\\[server\\]", ConnectionDataSource.HOST); } /* if (url.contains("[port]")) { resaveDrivers = true; url = url.replaceAll("\\[port\\]", ConnectionDataSource.PORT); } if (url.contains("[source]")) { resaveDrivers = true; url = url.replaceAll("\\[source\\]", ConnectionDataSource.SOURCE); }*/ dd.setURL(url); } else if (localName.equals("databasedrivers")) { if (dd.getId() == 0) { resaveDrivers = true; dd.setId(System.currentTimeMillis() + idCount); idCount++; } drivers.add(dd); dd = null; } } public void characters(char[] data, int start, int length) { contents.write(data, start, length); } public void ignorableWhitespace(char[] data, int start, int length) { characters(data, start, length); } public void error(SAXParseException spe) throws SAXException { throw new SAXException(spe.getMessage()); } } // XMLHandler static class DriverParser implements XMLReader { private String nsu = ""; private Attributes atts = new AttributesImpl(); private static String rootElement = "jdbcdrivers"; private static String DATABASE_DRIVERS = "databasedrivers"; private static String NAME = "name"; private static String DESCRIPTION = "description"; private static String TYPE = "type"; private static String PATH = "path"; private static String CLASS_NAME = "classname"; private static String URL = "url"; private static String ID = "id"; private ContentHandler handler; private static char[] newLine = {'\n'}; private static String indent_1 = "\n "; private static String indent_2 = "\n "; public DriverParser() {} public void parse(InputSource input) throws SAXException, IOException { if (!(input instanceof DriverInputSource)) throw new SAXException("Parser can only accept a DriverInputSource"); parse((DriverInputSource)input); } public void parse(DriverInputSource input) throws IOException, SAXException { try { if (handler == null) { throw new SAXException("No content handler"); } DatabaseDriver[] dd = input.getDrivers(); handler.startDocument(); handler.startElement(nsu, rootElement, rootElement, atts); handler.ignorableWhitespace(newLine, 0, 1); String marker = null; for (int i = 0; i < dd.length; i++) { handler.ignorableWhitespace(indent_1.toCharArray(), 0, indent_1.length()); handler.startElement(nsu, DATABASE_DRIVERS, DATABASE_DRIVERS, atts); if (dd[i].getId() == 0) { dd[i].setId(System.currentTimeMillis() + idCount); idCount++; } writeXML(ID, Long.toString(dd[i].getId()), indent_2); writeXML(NAME, dd[i].getName(), indent_2); writeXML(DESCRIPTION, dd[i].getDescription(), indent_2); writeXML(TYPE, Integer.toString(dd[i].getType()), indent_2); writeXML(PATH, dd[i].getPath(), indent_2); writeXML(CLASS_NAME, dd[i].getClassName(), indent_2); writeXML(URL, dd[i].getURL(), indent_2); handler.ignorableWhitespace(indent_1.toCharArray(), 0, indent_1.length()); handler.endElement(nsu, DATABASE_DRIVERS, DATABASE_DRIVERS); handler.ignorableWhitespace(newLine, 0, 1); } handler.ignorableWhitespace(newLine, 0, 1); handler.endElement(nsu, rootElement, rootElement); handler.endDocument(); } catch (Exception e) { e.printStackTrace(); } } private void writeXML(String name, String line, String space) throws SAXException { if (line == null) { line = Constants.EMPTY; } int textLength = line.length(); handler.ignorableWhitespace(space.toCharArray(), 0, space.length()); handler.startElement(nsu, name, name, atts); handler.characters(line.toCharArray(), 0, textLength); handler.endElement(nsu, name, name); } public void setContentHandler(ContentHandler handler) { this.handler = handler; } public ContentHandler getContentHandler() { return this.handler; } public void setErrorHandler(ErrorHandler handler) {} public ErrorHandler getErrorHandler() { return null; } public void parse(String systemId) throws IOException, SAXException { } public DTDHandler getDTDHandler() { return null; } public EntityResolver getEntityResolver() { return null; } public void setEntityResolver(EntityResolver resolver) {} public void setDTDHandler(DTDHandler handler) {} public Object getProperty(String name) { return null; } public void setProperty(String name, java.lang.Object value) {} public void setFeature(String name, boolean value) {} public boolean getFeature(String name) { return false; } } // class DriverParser static class DriverInputSource extends InputSource { private DatabaseDriver[] dda; public DriverInputSource(DatabaseDriver[] dd) { dda = dd; } public DatabaseDriver[] getDrivers() { return dda; } } // class DriverInputSource }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -