Example usage for org.apache.commons.beanutils DynaBean getDynaClass

List of usage examples for org.apache.commons.beanutils DynaBean getDynaClass

Introduction

In this page you can find the example usage for org.apache.commons.beanutils DynaBean getDynaClass.

Prototype

public DynaClass getDynaClass();

Source Link

Document

Return the DynaClass instance that describes the set of properties available for this DynaBean.

Usage

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());
}