[Major] moved OrderDao and ResourceDao factory methods to transaction

It makes using transaction feel easier.
This commit is contained in:
Robert von Burg 2013-12-24 00:36:26 +01:00
parent bf8e41d70e
commit 941b52a511
5 changed files with 30 additions and 35 deletions

View File

@ -24,10 +24,8 @@ import java.util.HashMap;
import java.util.Map;
import li.strolch.persistence.api.DbConnectionInfo;
import li.strolch.persistence.api.OrderDao;
import li.strolch.persistence.api.ResourceDao;
import li.strolch.persistence.api.StrolchPersistenceException;
import li.strolch.persistence.api.PersistenceHandler;
import li.strolch.persistence.api.StrolchPersistenceException;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.runtime.StrolchConstants;
import li.strolch.runtime.agent.ComponentContainerImpl;
@ -110,18 +108,6 @@ public class PostgreSqlPersistenceHandler extends StrolchComponent implements Pe
return tx;
}
@Override
public OrderDao getOrderDao(StrolchTransaction tx) {
PostgreSqlStrolchTransaction sqlTx = (PostgreSqlStrolchTransaction) tx;
return sqlTx.getOrderDao(sqlTx);
}
@Override
public ResourceDao getResourceDao(StrolchTransaction tx) {
PostgreSqlStrolchTransaction sqlTx = (PostgreSqlStrolchTransaction) tx;
return sqlTx.getResourceDao(sqlTx);
}
Connection getConnection(String realm) {
DbConnectionInfo dbInfo = this.connetionInfoMap.get(realm);
if (dbInfo == null) {

View File

@ -182,15 +182,17 @@ public class PostgreSqlStrolchTransaction implements StrolchTransaction {
return this.open;
}
OrderDao getOrderDao(PostgreSqlStrolchTransaction tx) {
@Override
public OrderDao getOrderDao() {
if (this.orderDao == null)
this.orderDao = new PostgreSqlOrderDao(tx);
this.orderDao = new PostgreSqlOrderDao(this);
return (OrderDao) this.orderDao;
}
ResourceDao getResourceDao(PostgreSqlStrolchTransaction tx) {
@Override
public ResourceDao getResourceDao() {
if (this.resourceDao == null)
this.resourceDao = new PostgreSqlResourceDao(tx);
this.resourceDao = new PostgreSqlResourceDao(this);
return (ResourceDao) this.resourceDao;
}

View File

@ -82,13 +82,13 @@ public class ObserverUpdateTest extends AbstractDaoImplTest {
// create order
Order newOrder = createOrder("MyTestOrder", "Test Name", "TestType", new Date(), State.CREATED); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).save(newOrder);
tx.getOrderDao().save(newOrder);
}
// create resource
Resource newResource = createResource("MyTestResource", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).save(newResource);
tx.getResourceDao().save(newResource);
}
assertEquals(2, observer.results.size());

View File

@ -34,13 +34,20 @@ public class PostgreSqlOrderDaoTest extends AbstractDaoImplTest {
private static final String NAME = "Test Order"; //$NON-NLS-1$
private static final String TYPE = "ToStock"; //$NON-NLS-1$
@Test
public void shouldStartContainer() {
try (StrolchTransaction tx = getPersistenceHandler().openTx()) {
tx.getOrderDao().queryKeySet();
}
}
@Test
public void shouldCreateOrder() {
// create
Order newOrder = createOrder("MyTestOrder", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).save(newOrder);
tx.getOrderDao().save(newOrder);
}
}
@ -50,13 +57,13 @@ public class PostgreSqlOrderDaoTest extends AbstractDaoImplTest {
// create
Order newOrder = createOrder(ID, NAME, TYPE);
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).save(newOrder);
tx.getOrderDao().save(newOrder);
}
// read
Order readOrder = null;
try (StrolchTransaction tx = persistenceHandler.openTx();) {
readOrder = persistenceHandler.getOrderDao(tx).queryBy(TYPE, ID);
readOrder = tx.getOrderDao().queryBy(TYPE, ID);
}
assertNotNull("Should read Order with id " + ID, readOrder); //$NON-NLS-1$
@ -65,13 +72,13 @@ public class PostgreSqlOrderDaoTest extends AbstractDaoImplTest {
String newStringValue = "Giddiya!"; //$NON-NLS-1$
sParam.setValue(newStringValue);
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).update(readOrder);
tx.getOrderDao().update(readOrder);
}
// read updated
Order updatedOrder = null;
try (StrolchTransaction tx = persistenceHandler.openTx();) {
updatedOrder = persistenceHandler.getOrderDao(tx).queryBy(TYPE, ID);
updatedOrder = tx.getOrderDao().queryBy(TYPE, ID);
}
assertNotNull("Should read Order with id " + ID, updatedOrder); //$NON-NLS-1$
assertFalse("Objects can't be the same reference after re-reading!", readOrder == updatedOrder); //$NON-NLS-1$
@ -80,12 +87,12 @@ public class PostgreSqlOrderDaoTest extends AbstractDaoImplTest {
// delete
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).remove(readOrder);
tx.getOrderDao().remove(readOrder);
}
// fail to re-read
try (StrolchTransaction tx = persistenceHandler.openTx();) {
Order order = persistenceHandler.getOrderDao(tx).queryBy(TYPE, ID);
Order order = tx.getOrderDao().queryBy(TYPE, ID);
assertNull("Should no read Order with id " + ID, order); //$NON-NLS-1$
}
}

View File

@ -40,7 +40,7 @@ public class PostgreSqlResourceDaoTest extends AbstractDaoImplTest {
// create
Resource newResource = createResource("MyTestResource", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).save(newResource);
tx.getResourceDao().save(newResource);
}
}
@ -50,13 +50,13 @@ public class PostgreSqlResourceDaoTest extends AbstractDaoImplTest {
// create
Resource newResource = createResource(ID, NAME, TYPE);
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).save(newResource);
tx.getResourceDao().save(newResource);
}
// read
Resource readResource = null;
try (StrolchTransaction tx = persistenceHandler.openTx();) {
readResource = persistenceHandler.getResourceDao(tx).queryBy(TYPE, ID);
readResource = tx.getResourceDao().queryBy(TYPE, ID);
}
assertNotNull("Should read Resource with id " + ID, readResource); //$NON-NLS-1$
@ -65,13 +65,13 @@ public class PostgreSqlResourceDaoTest extends AbstractDaoImplTest {
String newStringValue = "Giddiya!"; //$NON-NLS-1$
sParam.setValue(newStringValue);
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).update(readResource);
tx.getResourceDao().update(readResource);
}
// read updated
Resource updatedResource = null;
try (StrolchTransaction tx = persistenceHandler.openTx();) {
updatedResource = persistenceHandler.getResourceDao(tx).queryBy(TYPE, ID);
updatedResource = tx.getResourceDao().queryBy(TYPE, ID);
}
assertNotNull("Should read Resource with id " + ID, updatedResource); //$NON-NLS-1$
assertFalse("Objects can't be the same reference after re-reading!", readResource == updatedResource); //$NON-NLS-1$
@ -80,12 +80,12 @@ public class PostgreSqlResourceDaoTest extends AbstractDaoImplTest {
// delete
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).remove(readResource);
tx.getResourceDao().remove(readResource);
}
// fail to re-read
try (StrolchTransaction tx = persistenceHandler.openTx();) {
Resource resource = persistenceHandler.getResourceDao(tx).queryBy(TYPE, ID);
Resource resource = tx.getResourceDao().queryBy(TYPE, ID);
assertNull("Should no read Resource with id " + ID, resource); //$NON-NLS-1$
}
}