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