View Javadoc
1 /* 2 * Created on 2003-5-22 23:22:49 3 * 4 * To change the template for this generated file go to 5 * Window>Preferences>Java>Code Generation>Code and Comments 6 */ 7 package com.cyclops.dbdigger.schema.torque; 8 import java.net.URL; 9 import java.util.ArrayList; 10 import java.util.Iterator; 11 import java.util.List; 12 13 import org.apache.avalon.framework.activity.Initializable; 14 import org.apache.avalon.framework.configuration.Configurable; 15 import org.apache.avalon.framework.configuration.Configuration; 16 import org.apache.commons.digester.Digester; 17 import org.apache.commons.logging.Log; 18 import org.apache.commons.logging.LogFactory; 19 20 import com.cyclops.dbdigger.schema.DefaultDatabase; 21 import com.cyclops.dbdigger.schema.DefaultSchema; 22 import com.cyclops.dbdigger.schema.Schema; 23 import com.cyclops.dbdigger.util.ResourceScanner; 24 /*** 25 * 26 * @author <a href="mailto:joeblack.guo@vtradex.com">joel guo</a> 27 * @since 2003-5-22 23:22:49 28 */ 29 public class TorqueSchema 30 extends DefaultSchema 31 implements Initializable, Configurable, Schema { 32 private static final URL[] EMPTY_URL_ARRAY = new URL[0]; 33 private Log logger = LogFactory.getLog(getClass()); 34 private List schemaResources = new ArrayList(); 35 /*** Method addDatabase() 36 * @param td TorqueDatabase object 37 */ 38 private void addDatabase(TorqueDatabase td) { 39 DefaultDatabase dd = (DefaultDatabase) getDatabase(td.getName()); 40 if (dd == null) { 41 dd = new DefaultDatabase(); 42 dd.setName(td.getName()); 43 dd.setDescription(td.getDescription()); 44 addDatabase(dd); 45 } 46 td.addToDatabase(dd); 47 } 48 /*** Method addSchemaResource() in class DatabaseRepository 49 * @param resource URL as schema resource to add 50 */ 51 public void addSchemaResource(URL resource) { 52 schemaResources.add(resource); 53 } 54 /*** Override method configure() of super class 55 * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration) 56 */ 57 public void configure(Configuration conf) { 58 URL[] schemas = ResourceScanner.scan(conf.getChild("resources")); 59 for (int i = 0; i < schemas.length; i++) { 60 URL schema = schemas[i]; 61 addSchemaResource(schema); 62 } 63 } 64 /*** Method getShemaResources() in class DatabaseRepository 65 * @return All schema resources in this schema 66 */ 67 public URL[] getShemaResources() { 68 return (URL[]) schemaResources.toArray(EMPTY_URL_ARRAY); 69 } 70 /*** Override method initialize() of super class 71 * @see org.apache.avalon.framework.activity.Initializable#initialize() 72 */ 73 public void initialize() { 74 Digester digester = new Digester(); 75 digester.addObjectCreate("database", TorqueDatabase.class); 76 digester.addSetProperties("database"); 77 digester.addObjectCreate("database/table", TorqueTable.class); 78 digester.addSetProperties("database/table"); 79 digester.addSetNext("database/table", "addTable"); 80 digester.addObjectCreate("database/table/column", TorqueColumn.class); 81 digester.addSetProperties("database/table/column"); 82 digester.addSetNext("database/table/column", "addColumn"); 83 for (Iterator i = schemaResources.iterator(); i.hasNext();) { 84 URL schemaResource = (URL) i.next(); 85 digester.clear(); 86 try { 87 TorqueDatabase td = 88 (TorqueDatabase) digester.parse( 89 schemaResource.openStream()); 90 addDatabase(td); 91 } catch (Exception e) { 92 logger.error( 93 "can't parse database schema " + schemaResource, 94 e); 95 } 96 } 97 } 98 }

This page was automatically generated by Maven