Package org.apache.ojb.odmg

Source Code of org.apache.ojb.odmg.DMapTest

package org.apache.ojb.odmg;


import java.util.Iterator;

import junit.framework.TestCase;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerException;
import org.apache.ojb.broker.TestHelper;
import org.apache.ojb.broker.metadata.FieldDescriptor;
import org.apache.ojb.odmg.shared.Article;
import org.odmg.DList;
import org.odmg.DMap;
import org.odmg.Database;
import org.odmg.Implementation;
import org.odmg.Transaction;

/** Demo Application that shows basic concepts for Applications using the OJB ODMG
* implementation as an transactional object server.
*/
public class DMapTest extends TestCase
{
    public static void main(String[] args)
    {
        String[] arr = {CLASS.getName()};
        junit.textui.TestRunner.main(arr);
    }

    private static Class CLASS = DMapTest.class;
    private String databaseName;

    /**
     * Insert the method's description here.
     * Creation date: (24.12.2000 00:33:40)
     */
    public DMapTest(String name)
    {
        super(name);
    }

    protected Article createArticle(Implementation odmg) throws Exception
    {

        Article a = new Article();
        PersistenceBroker broker = ((HasBroker) odmg.currentTransaction()).getBroker();
        FieldDescriptor fld = broker.getClassDescriptor(Article.class).getFieldDescriptorByName("articleId");
        Integer val = (Integer) broker.serviceSequenceManager().getUniqueValue(fld);

        a.setArticleId(val.intValue());
        a.setArticleName("New Funny Article " + a.getArticleId());
        a.setStock(234);
        a.setProductGroupId(7);

        return a;
    }

    protected void printDList(DList list)
    {
        Iterator iter = list.iterator();
        while (iter.hasNext())
        {
            Article a = (Article) iter.next();
            //System.out.print(a.getArticleId() + ", ");
        }
        //System.out.println();
    }

    /**
     * Insert the method's description here.
     * Creation date: (06.12.2000 21:58:53)
     */
    public void setUp()
    {
        databaseName = TestHelper.DEF_DATABASE_NAME;
    }

    /**
     * Insert the method's description here.
     * Creation date: (06.12.2000 21:59:14)
     */
    public void tearDown()
    {
        try
        {
//            OJB.getInstance().currentTransaction().abort();
//            OJB.getInstance().getDatabase(null).close();
            databaseName = null;


        }
        catch (Throwable t)
        {
        }
    }

    public void testAdding() throws Exception
    {
        // get facade instance
        Implementation odmg = OJB.getInstance();
        Database db = odmg.newDatabase();
        //open database
        db.open(databaseName, Database.OPEN_READ_WRITE);


        Transaction tx = odmg.newTransaction();
        tx.begin();
        DMap map = odmg.newDMap();
        PersistenceBroker broker = ((HasBroker) tx).getBroker();
        String name = null;
        try
        {
            // name = "the_dmap_" + (broker.getUniqueId(DMapImpl.class, "id") - 1);
            name = "the_dmap_" + System.currentTimeMillis();
        }
        catch (PersistenceBrokerException e)
        {
        }
        db.bind(map, name);
        Article key1 = createArticle(odmg);
        Article val1 = createArticle(odmg);
        Article key2 = createArticle(odmg);
        Article val2 = createArticle(odmg);

        map.put(key1, val1);
        map.put(key2, val2);
        tx.commit();


        tx = odmg.newTransaction();
        tx.begin();

        broker = ((HasBroker) tx).getBroker();
        broker.clearCache();

        DMap mapA = (DMap) db.lookup(name);
        Article val1A = (Article) mapA.get(key1);
        assertEquals(val1.getArticleId(), val1A.getArticleId());
        Article val2A = (Article) mapA.get(key2);
        assertEquals(val2.getArticleId(), val2A.getArticleId());
        tx.commit();
    }


}
TOP

Related Classes of org.apache.ojb.odmg.DMapTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.