List of usage examples for org.apache.commons.beanutils DynaBean getDynaClass
public DynaClass getDynaClass();
DynaClass
instance that describes the set of properties available for this DynaBean. From source file:org.apache.ddlutils.io.DatabaseDataDiffIO.java
/** * Writes the beans contained in the given iterator. * /*from w w w .j av a 2s. c o m*/ * @param beans The beans iterator */ public void writeNewRows(Iterator beans, Table table, Set keys, String outPath) throws DataWriterException { DataWriter writer = null; while (beans.hasNext()) { DynaBean bean = (DynaBean) beans.next(); if (bean instanceof SqlDynaBean) { Identity id = buildIdentityFromPKs(table, bean); if (keys == null || !keys.contains(id)) { if (writer == null) { writer = getConfiguredDataWriter(outPath + table.getName() + ".xml", null); writer.writeDocumentStart(); } writer.write((SqlDynaBean) bean); } } else { _log.warn("Cannot write normal dyna beans (type: " + bean.getDynaClass().getName() + ")"); } } if (writer != null) writer.writeDocumentEnd(); }
From source file:org.apache.ddlutils.io.DataToDatabaseSink.java
/** * Updates the values of the columns constituting the indicated foreign key with the values * of the given identity.//from w w w.j a va2s .co m * * @param bean The bean whose columns shall be updated * @param fkName The name of the foreign key * @param identity The target identity */ private void updateFKColumns(DynaBean bean, String fkName, Identity identity) { Table sourceTable = ((SqlDynaClass) bean.getDynaClass()).getTable(); Table targetTable = identity.getTable(); ForeignKey fk = null; for (int idx = 0; idx < sourceTable.getForeignKeyCount(); idx++) { ForeignKey curFk = sourceTable.getForeignKey(idx); if (curFk.getForeignTableName().equalsIgnoreCase(targetTable.getName())) { if (fkName.equals(getFKName(sourceTable, curFk))) { fk = curFk; break; } } } if (fk != null) { for (int idx = 0; idx < fk.getReferenceCount(); idx++) { Reference curRef = fk.getReference(idx); Column sourceColumn = curRef.getLocalColumn(); Column targetColumn = curRef.getForeignColumn(); bean.set(sourceColumn.getName(), identity.getColumnValue(targetColumn.getName())); } } }
From source file:org.apache.ddlutils.io.DataWriter.java
/** * Writes the beans contained in the given iterator. * //w w w. j a v a 2 s. c om * @param beans The beans iterator */ public void write(Iterator beans) throws DataWriterException { while (beans.hasNext()) { DynaBean bean = (DynaBean) beans.next(); if (bean instanceof SqlDynaBean) { write((SqlDynaBean) bean); } else { _log.warn("Cannot write normal dyna beans (type: " + bean.getDynaClass().getName() + ")"); } } }
From source file:org.apache.ddlutils.io.DynaSqlCreateRule.java
/** * {@inheritDoc}//from w w w . j a v a2s .c om */ public void end(String namespace, String name) throws Exception { DynaBean top = (DynaBean) digester.pop(); if (digester.getLogger().isDebugEnabled()) { digester.getLogger() .debug("[DynaSqlCreateRule]{" + digester.getMatch() + "} Pop " + top.getDynaClass().getName()); } _receiver.addBean(top); }
From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java
/** * Tests reading the data from XML.//from w ww. j a v a 2 s. c o m */ public void testRead() throws Exception { Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='bookstore'>\n" + " <table name='author'>\n" + " <column name='author_id' type='INTEGER' primaryKey='true' required='true'/>\n" + " <column name='name' type='VARCHAR' size='50' required='true'/>\n" + " <column name='organisation' type='VARCHAR' size='50' required='false'/>\n" + " </table>\n" + " <table name='book'>\n" + " <column name='book_id' type='INTEGER' required='true' primaryKey='true' autoIncrement='true'/>\n" + " <column name='isbn' type='VARCHAR' size='15' required='true'/>\n" + " <column name='author_id' type='INTEGER' required='true'/>\n" + " <column name='title' type='VARCHAR' size='255' default='N/A' required='true'/>\n" + " <column name='issue_date' type='DATE' required='false'/>\n" + " <foreign-key foreignTable='author'>\n" + " <reference local='author_id' foreign='author_id'/>\n" + " </foreign-key>\n" + " <index name='book_isbn'>\n" + " <index-column name='isbn'/>\n" + " </index>\n" + " </table>\n" + "</database>"); List beans = readBeans(model, "<data>\n" + " <author author_id='1' name='Ernest Hemingway'/>\n" + " <author author_id='2' name='William Shakespeare'/>\n" + " <book book_id='1' author_id='1'>\n" + " <isbn>0684830493</isbn>\n" + " <title>Old Man And The Sea</title>\n" + " <issue_date>1952</issue_date>\n" + " </book>\n" + " <book book_id='2' author_id='2'>\n" + " <isbn>0198321465</isbn>\n" + " <title>Macbeth</title>\n" + " <issue_date>1606</issue_date>\n" + " </book>\n" + " <book book_id='3' author_id='2'>\n" + " <isbn>0140707026</isbn>\n" + " <title>A Midsummer Night's Dream</title>\n" + " <issue_date>1595</issue_date>\n" + " </book>\n" + "</data>"); assertEquals(5, beans.size()); DynaBean obj1 = (DynaBean) beans.get(0); DynaBean obj2 = (DynaBean) beans.get(1); DynaBean obj3 = (DynaBean) beans.get(2); DynaBean obj4 = (DynaBean) beans.get(3); DynaBean obj5 = (DynaBean) beans.get(4); assertEquals("author", obj1.getDynaClass().getName()); assertEquals("1", obj1.get("author_id").toString()); assertEquals("Ernest Hemingway", obj1.get("name").toString()); assertEquals("author", obj2.getDynaClass().getName()); assertEquals("2", obj2.get("author_id").toString()); assertEquals("William Shakespeare", obj2.get("name").toString()); assertEquals("book", obj3.getDynaClass().getName()); assertEquals("1", obj3.get("book_id").toString()); assertEquals("1", obj3.get("author_id").toString()); assertEquals("0684830493", obj3.get("isbn").toString()); assertEquals("Old Man And The Sea", obj3.get("title").toString()); assertEquals("1952-01-01", obj3.get("issue_date").toString()); // parsed as a java.sql.Date assertEquals("book", obj4.getDynaClass().getName()); assertEquals("2", obj4.get("book_id").toString()); assertEquals("2", obj4.get("author_id").toString()); assertEquals("0198321465", obj4.get("isbn").toString()); assertEquals("Macbeth", obj4.get("title").toString()); assertEquals("1606-01-01", obj4.get("issue_date").toString()); // parsed as a java.sql.Date assertEquals("book", obj5.getDynaClass().getName()); assertEquals("3", obj5.get("book_id").toString()); assertEquals("2", obj5.get("author_id").toString()); assertEquals("0140707026", obj5.get("isbn").toString()); assertEquals("A Midsummer Night's Dream", obj5.get("title").toString()); assertEquals("1595-01-01", obj5.get("issue_date").toString()); // parsed as a java.sql.Date }
From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java
/** * Tests reading the data from a file via the {#link {@link DataReader#read(String)} method. *//* w w w. ja va2s .c o m*/ public void testReadFromFile1() throws Exception { Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + " <table name='test'>\n" + " <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n" + " <column name='value' type='VARCHAR' size='50' required='true'/>\n" + " </table>\n" + "</database>"); String testDataXml = "<data>\n" + " <test id='1' value='foo'/>\n" + "</data>"; File tmpFile = File.createTempFile("data", ".xml"); try { Writer writer = new BufferedWriter(new FileWriter(tmpFile)); writer.write(testDataXml); writer.close(); ArrayList beans = new ArrayList(); DataReader dataReader = new DataReader(); dataReader.setModel(model); dataReader.setSink(new TestDataSink(beans)); dataReader.read(tmpFile.getAbsolutePath()); assertEquals(1, beans.size()); DynaBean obj = (DynaBean) beans.get(0); assertEquals("test", obj.getDynaClass().getName()); assertEquals("1", obj.get("id").toString()); assertEquals("foo", obj.get("value").toString()); } finally { tmpFile.delete(); } }
From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java
/** * Tests reading the data from a file via the {#link {@link DataReader#read(File)} method. */// ww w. jav a 2s . co m public void testReadFromFile2() throws Exception { Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + " <table name='test'>\n" + " <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n" + " <column name='value' type='VARCHAR' size='50' required='true'/>\n" + " </table>\n" + "</database>"); String testDataXml = "<data>\n" + " <test id='1' value='foo'/>\n" + "</data>"; File tmpFile = File.createTempFile("data", ".xml"); try { Writer writer = new BufferedWriter(new FileWriter(tmpFile)); writer.write(testDataXml); writer.close(); ArrayList beans = new ArrayList(); DataReader dataReader = new DataReader(); dataReader.setModel(model); dataReader.setSink(new TestDataSink(beans)); dataReader.read(tmpFile); assertEquals(1, beans.size()); DynaBean obj = (DynaBean) beans.get(0); assertEquals("test", obj.getDynaClass().getName()); assertEquals("1", obj.get("id").toString()); assertEquals("foo", obj.get("value").toString()); } finally { tmpFile.delete(); } }
From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java
/** * Tests reading the data from a file via the {#link {@link DataReader#read(java.io.InputStream)} method. *///www . ja va 2s .c o m public void testReadFromFile3() throws Exception { Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + " <table name='test'>\n" + " <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n" + " <column name='value' type='VARCHAR' size='50' required='true'/>\n" + " </table>\n" + "</database>"); String testDataXml = "<data>\n" + " <test id='1' value='foo'/>\n" + "</data>"; File tmpFile = File.createTempFile("data", ".xml"); try { Writer writer = new BufferedWriter(new FileWriter(tmpFile)); writer.write(testDataXml); writer.close(); ArrayList beans = new ArrayList(); DataReader dataReader = new DataReader(); dataReader.setModel(model); dataReader.setSink(new TestDataSink(beans)); dataReader.read(new FileInputStream(tmpFile)); assertEquals(1, beans.size()); DynaBean obj = (DynaBean) beans.get(0); assertEquals("test", obj.getDynaClass().getName()); assertEquals("1", obj.get("id").toString()); assertEquals("foo", obj.get("value").toString()); } finally { tmpFile.delete(); } }
From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java
/** * Tests sub elements for columns.//from www.j a v a 2s.co m */ public void testSubElements() throws Exception { Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + " <table name='test'>\n" + " <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n" + " <column name='value' type='VARCHAR' size='50' required='true'/>\n" + " </table>\n" + "</database>"); List beans = readBeans(model, "<data>\n" + " <test id='1'>\n" + " <value>foo</value>\n" + " </test>\n" + " <test id='2' value='foo'>\n" + " <value>bar</value>\n" + " </test>\n" + " <test id='3' value='baz'>\n" + " </test>\n" + "</data>"); assertEquals(3, beans.size()); DynaBean obj = (DynaBean) beans.get(0); assertEquals("test", obj.getDynaClass().getName()); assertEquals("1", obj.get("id").toString()); assertEquals("foo", obj.get("value").toString()); obj = (DynaBean) beans.get(1); assertEquals("test", obj.getDynaClass().getName()); assertEquals("2", obj.get("id").toString()); assertEquals("bar", obj.get("value").toString()); obj = (DynaBean) beans.get(2); assertEquals("test", obj.getDynaClass().getName()); assertEquals("3", obj.get("id").toString()); assertEquals("baz", obj.get("value").toString()); }
From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java
/** * Tests that the name of the root element does not matter. *//* w ww . j av a 2 s .co m*/ public void testRootElementNameDoesntMatter() throws Exception { Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + " <table name='test'>\n" + " <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n" + " <column name='value' type='VARCHAR' size='50' required='true'/>\n" + " </table>\n" + "</database>"); List beans = readBeans(model, "<someRandomName>\n" + " <test id='1' value='foo'/>\n" + "</someRandomName>"); assertEquals(1, beans.size()); DynaBean obj = (DynaBean) beans.get(0); assertEquals("test", obj.getDynaClass().getName()); assertEquals("1", obj.get("id").toString()); assertEquals("foo", obj.get("value").toString()); }