[Major] Implemented CACHED mode

This lead to refactoring of other code:
 - removed get*Dao() from StrolchTransaction
 - added StrolchTransaction.getPersistenceHandler()
 - removed unused variables in TransactionalElementMap
   - this lead to removal of constructors in subclasses
 - added ComponentContainer.getDataStoreMode()
 - added ElementMap.addAll(), removeAll() and updateAll() methods
   - implemented in all ElementMap implementations
This commit is contained in:
Robert von Burg 2014-01-11 17:55:56 +01:00
parent 6bb341964e
commit 21c5eaf78f
3 changed files with 26 additions and 13 deletions

View File

@ -27,7 +27,9 @@ import li.strolch.agent.api.StrolchComponent;
import li.strolch.agent.impl.ComponentContainerImpl; import li.strolch.agent.impl.ComponentContainerImpl;
import li.strolch.agent.impl.StrolchRealm; import li.strolch.agent.impl.StrolchRealm;
import li.strolch.persistence.api.DbConnectionInfo; import li.strolch.persistence.api.DbConnectionInfo;
import li.strolch.persistence.api.OrderDao;
import li.strolch.persistence.api.PersistenceHandler; import li.strolch.persistence.api.PersistenceHandler;
import li.strolch.persistence.api.ResourceDao;
import li.strolch.persistence.api.StrolchPersistenceException; import li.strolch.persistence.api.StrolchPersistenceException;
import li.strolch.persistence.api.StrolchTransaction; import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.runtime.StrolchConstants; import li.strolch.runtime.StrolchConstants;
@ -127,4 +129,14 @@ public class PostgreSqlPersistenceHandler extends StrolchComponent implements Pe
throw new StrolchPersistenceException(msg, e); throw new StrolchPersistenceException(msg, e);
} }
} }
@Override
public OrderDao getOrderDao(StrolchTransaction tx) {
return ((PostgreSqlStrolchTransaction) tx).getOrderDao();
}
@Override
public ResourceDao getResourceDao(StrolchTransaction tx) {
return ((PostgreSqlStrolchTransaction) tx).getResourceDao();
}
} }

View File

@ -25,6 +25,7 @@ import li.strolch.model.StrolchElement;
import li.strolch.persistence.api.AbstractTransaction; import li.strolch.persistence.api.AbstractTransaction;
import li.strolch.persistence.api.ModificationResult; import li.strolch.persistence.api.ModificationResult;
import li.strolch.persistence.api.OrderDao; import li.strolch.persistence.api.OrderDao;
import li.strolch.persistence.api.PersistenceHandler;
import li.strolch.persistence.api.ResourceDao; import li.strolch.persistence.api.ResourceDao;
import li.strolch.persistence.api.StrolchPersistenceException; import li.strolch.persistence.api.StrolchPersistenceException;
import li.strolch.persistence.api.TransactionCloseStrategy; import li.strolch.persistence.api.TransactionCloseStrategy;
@ -102,15 +103,12 @@ public class PostgreSqlStrolchTransaction extends AbstractTransaction {
this.txResult = new TransactionResult(); this.txResult = new TransactionResult();
try { try {
if (this.orderDao != null) { if (this.orderDao != null)
this.orderDao.commit(this.txResult); this.orderDao.commit(this.txResult);
} if (this.resourceDao != null)
if (this.resourceDao != null) {
this.resourceDao.commit(this.txResult); this.resourceDao.commit(this.txResult);
} if (this.connection != null)
this.connection.commit();
this.connection.commit();
this.txResult.setState(TransactionState.COMMITTED); this.txResult.setState(TransactionState.COMMITTED);
@ -214,15 +212,13 @@ public class PostgreSqlStrolchTransaction extends AbstractTransaction {
return this.open; return this.open;
} }
@Override OrderDao getOrderDao() {
public OrderDao getOrderDao() {
if (this.orderDao == null) if (this.orderDao == null)
this.orderDao = new PostgreSqlOrderDao(this); this.orderDao = new PostgreSqlOrderDao(this);
return (OrderDao) this.orderDao; return (OrderDao) this.orderDao;
} }
@Override ResourceDao getResourceDao() {
public ResourceDao getResourceDao() {
if (this.resourceDao == null) if (this.resourceDao == null)
this.resourceDao = new PostgreSqlResourceDao(this); this.resourceDao = new PostgreSqlResourceDao(this);
return (ResourceDao) this.resourceDao; return (ResourceDao) this.resourceDao;
@ -237,4 +233,9 @@ public class PostgreSqlStrolchTransaction extends AbstractTransaction {
} }
return this.connection; return this.connection;
} }
@Override
public PersistenceHandler getPersistenceHandler() {
return this.persistenceHandler;
}
} }

View File

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