View Javadoc
1 package com.bonevich.erj.xml; 2 3 import com.bonevich.erj.app.Application; 4 import com.bonevich.erj.db.SupportedDatabase; 5 6 import org.apache.commons.digester.AbstractObjectCreationFactory; 7 import org.apache.commons.digester.Digester; 8 import org.xml.sax.Attributes; 9 10 import java.io.InputStream; 11 import java.net.URL; 12 13 public class DatabaseSupportDigester 14 { 15 ////////////////////////////////////////////////////////// 16 // Constants 17 private static final String NAME_STR = "name"; 18 private static final String ID_STR = "id"; 19 private static final String DISPLAY_STR = "display"; 20 21 private static final String SYSTEM_ID = "com/bonevich/erj/xml/dtd/dbsupport.dtd"; 22 private static final String PUBLIC_ID = "-//Jeffrey Bonevich//DTD ERJ Data Support 1.0//EN"; 23 24 ////////////////////////////////////////////////////////// 25 // Attributes 26 private Application _application; 27 private Digester _digester; 28 //private String _dtdFile = ResourceUtilities.getResourceAsURL(SYSTEM_ID).toString(); 29 30 ////////////////////////////////////////////////////////// 31 // Constructors 32 public DatabaseSupportDigester(Application app) 33 { 34 _application = app; 35 init(); 36 } 37 38 private void init() 39 { 40 _digester = new Digester(); 41 //_digester.register(PUBLIC_ID, _dtdFile); 42 _digester.setValidating(false); 43 _digester.push(_application); 44 45 _digester.addObjectCreate("erj-database-support/database", SupportedDatabase.class); 46 _digester.addSetNext("erj-database-support/database", "addSupportedDatabase"); 47 _digester.addCallMethod("erj-database-support/database/name", "setName", 0); 48 _digester.addCallMethod("erj-database-support/database/display-name", "setDisplayName", 0); 49 _digester.addCallMethod("erj-database-support/database/vendor-name", "setVendorName", 0); 50 _digester.addCallMethod("erj-database-support/database/ddl-generator", "setDdlGeneratorClass", 0); 51 52 _digester.addCallMethod("erj-database-support/database/login-fields/login-field", "addLoginField", 3); 53 _digester.addCallParam("erj-database-support/database/login-fields/login-field/name", 0); 54 _digester.addCallParam("erj-database-support/database/login-fields/login-field/display-name", 1); 55 _digester.addCallParam("erj-database-support/database/login-fields/login-field/tool-tip", 2); 56 57 _digester.addFactoryCreate( 58 "erj-database-support/database/options/option-group", 59 new AbstractObjectCreationFactory() 60 { 61 public Object createObject(Attributes attributes) 62 { 63 SupportedDatabase db = (SupportedDatabase) getDigester().peek(); 64 return db.createOptionGroup(attributes.getValue(ID_STR), attributes.getValue(DISPLAY_STR)); 65 } 66 } 67 ); 68 _digester.addCallMethod("erj-database-support/database/options/option-group/option", "addOption", 2); 69 _digester.addCallParam("erj-database-support/database/options/option-group/option", 0, ID_STR); 70 _digester.addCallParam("erj-database-support/database/options/option-group/option", 1, DISPLAY_STR); 71 } 72 73 public void digest(String filepath) 74 { 75 System.out.println("======================================================"); 76 System.out.println("== READING DATABASE SUPPORT: " + filepath); 77 System.out.println(); 78 79 InputStream in = null; 80 try 81 { 82 URL url = null; 83 ClassLoader cl = this.getClass().getClassLoader(); 84 if (cl != null) { 85 url = cl.getResource(filepath); 86 } 87 else 88 { 89 url = ClassLoader.getSystemResource(filepath); 90 } 91 92 in = url.openStream(); 93 _digester.parse(in); 94 } 95 catch(Exception e) 96 { 97 e.printStackTrace(); 98 throw new RuntimeException("Unable to initialize support database info", e); 99 } 100 finally 101 { 102 try { in.close(); } catch (Exception e) {} 103 } 104 } 105 106 } /* end class ProjectProperitesDigester */

This page was automatically generated by Maven