/*
* Created by IntelliJ IDEA.
* User: Matt
* Date: May 19, 2002
* Time: 3:43:36 PM
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package org.apache.ojb.odmg;
import java.util.List;
import junit.framework.TestCase;
import org.apache.ojb.broker.ManageableCollection;
import org.apache.ojb.broker.TestHelper;
import org.apache.ojb.odmg.shared.Article;
import org.odmg.Database;
import org.odmg.Implementation;
import org.odmg.OQLQuery;
import org.odmg.Transaction;
public class ProjectionAttributeTest extends TestCase
{
private static Class CLASS = ProjectionAttributeTest.class;
private String databaseName;
private int COUNT = 10;
public static void main(String[] args)
{
String[] arr = {CLASS.getName()};
junit.textui.TestRunner.main(arr);
}
/**
* 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()
{
databaseName = null;
}
public ProjectionAttributeTest(String name)
{
super(name);
}
private void createData(Database db, Implementation odmg)
throws Exception
{
// Implementation odmg = OJB.getInstance();
Transaction tx = odmg.newTransaction();
// db.open(databaseName, Database.OPEN_READ_WRITE);
tx.begin();
for (int i = 0; i < COUNT; i++)
{
org.apache.ojb.broker.Person aPerson = new org.apache.ojb.broker.Person();
aPerson.setId(i);
aPerson.setFirstname("firstname" + i);
aPerson.setLastname("lastname" + i);
db.makePersistent(aPerson);
}
tx.commit();
}
/**
* test getting all (make sure basic operation is still functional)
*/
public void testGetProjectionAttribute() throws Exception
{
Implementation odmg = OJB.getInstance();
Database db = odmg.newDatabase();
db.open(databaseName, Database.OPEN_READ_WRITE);
try
{
createData(db, odmg);
// 3. Get a list of some articles
Transaction tx = odmg.newTransaction();
tx.begin();
OQLQuery query = odmg.newOQLQuery();
String sql = "select aPerson.firstname, aPerson.lastname from " + org.apache.ojb.broker.Person.class.getName();
query.create(sql);
ManageableCollection result = (ManageableCollection) query.execute();
// Iterator over the restricted articles objects
java.util.Iterator it = result.ojbIterator();
int i = 0;
while (it.hasNext())
{
Object[] res = (Object[]) it.next();
String firstname = (String) res[0];
String lastname = (String) res[1];
i++;
}
if (i < COUNT)
fail("Should have found at least " + COUNT + " items");
OQLQuery query1 = odmg.newOQLQuery();
query1.create("select distinct anArticle.productGroup.groupId from " + Article.class.getName());
List result1 = (List) query1.execute();
for (it = result1.iterator(); it.hasNext(); )
{
it.next();
}
tx.commit();
}
catch (Throwable t)
{
t.printStackTrace(System.out);
fail("testGetAllUnrestricted: " + t.getMessage());
}
}
}