Refactoring Database Access in Marauroa: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>Hendrik Brummermann
added diff of JMaPacman
imported>Hendrik Brummermann
Line 81: Line 81:
The following diff shows all the changes that were required to port JMaPacman. I think it may help you to get a feeling on how to adjust your own code.
The following diff shows all the changes that were required to port JMaPacman. I think it may help you to get a feeling on how to adjust your own code.


public class MaPacmanRPRuleProcessor implements IRPRuleProcessor
<pre>
{
public class MaPacmanRPRuleProcessor implements IRPRuleProcessor
public AccountResult createAccount(String username, String password, String email) {
{
public AccountResult createAccount(String username, String password, String email) {
- IDatabase database = DatabaseFactory.getDatabase();
+ TransactionPool transactionPool = TransactionPool.get();
- Transaction trans = database.getTransaction();
+ DBTransaction trans = transactionPool.beginWork();
+ AccountDAO accountDAO = DAORegister.get().get(AccountDAO.class);
try {
- trans.begin();
- IDatabase database = DatabaseFactory.getDatabase();
- if (database.hasPlayer(trans, username)) {
+ '''TransactionPool transactionPool = TransactionPool.get();'''
+ if (accountDAO.hasPlayer(trans, username)) {
return new AccountResult(Result.FAILED_PLAYER_EXISTS, username);
}
- Transaction trans = database.getTransaction();
- database.addPlayer(trans, username, Hash.hash(password), email);
+ '''DBTransaction trans = transactionPool.beginWork();'''
+ accountDAO.addPlayer(trans, username, Hash.hash(password), email);
+ '''AccountDAO accountDAO = DAORegister.get().get(AccountDAO.class);'''
- trans.commit();
try {
+ transactionPool.commit(trans);
- trans.begin();
- if (database.hasPlayer(trans, username)) {
+ if ('''accountDAO'''.hasPlayer(trans, username)) {
return new AccountResult(Result.FAILED_PLAYER_EXISTS, username);
}
- database.addPlayer(trans, username, Hash.hash(password), email);
+ '''accountDAO'''.addPlayer(trans, username, Hash.hash(password), email);
- trans.commit();
+ '''transactionPool.commit(trans);'''
return new AccountResult(Result.OK_CREATED, username);
} catch (SQLException e1) {
- try {
return new AccountResult(Result.OK_CREATED, username);
- trans.rollback();
} catch (SQLException e1) {
- try {
- } catch (SQLException e2) {
- trans.rollback();
- //logger.error("Rollback failed: ", e2);
- } catch (SQLException e2) {
- System.out.println("Rollback failed: " + e2);
- }
- //logger.error("Rollback failed: ", e2);
+ '''transactionPool.rollback(trans);'''
- System.out.println("Rollback failed: " + e2);
- }
+ transactionPool.rollback(trans);
return new AccountResult(Result.FAILED_EXCEPTION, username);
}
}


public CharacterResult createCharacter(String username, String character, RPObject tmpl) {
- IDatabase database = DatabaseFactory.getDatabase();
- Transaction trans = database.getTransaction();
+ TransactionPool transactionPool = TransactionPool.get();
+ DBTransaction trans = transactionPool.beginWork();
+ CharacterDAO characterDAO = DAORegister.get().get(CharacterDAO.class);
try {
- trans.begin();
- if (database.hasCharacter(trans, username, character)) {
return new AccountResult(Result.FAILED_EXCEPTION, username);
}
+ if (characterDAO.hasCharacter(trans, username, character)) {
}
return new CharacterResult(Result.FAILED_PLAYER_EXISTS, character, tmpl);
}
@@ -196,18 +190,13 @@
public CharacterResult createCharacter(String username, String character, RPObject tmpl) {
object.put("y", 0);
object.put("dir", -1);
- IDatabase database = DatabaseFactory.getDatabase();
object.put("score", 0);
+ '''TransactionPool transactionPool = TransactionPool.get();'''
- database.addCharacter(trans, username, character, object);
+ characterDAO.addCharacter(trans, username, character, object);
- trans.commit();
- Transaction trans = database.getTransaction();
+ transactionPool.commit(trans);
+ '''DBTransaction trans = transactionPool.beginWork();'''
+ CharacterDAO characterDAO = DAORegister.get().get(CharacterDAO.class);
return new CharacterResult(Result.OK_CREATED, character, object);
} catch (Exception e1) {
try {
//logger.warn("SQL exception while trying to create a new character: ", e1);
- try {
- trans.begin();
- trans.rollback();
- if (database.hasCharacter(trans, username, character)) {
- } catch (SQLException e2) {
+ if ('''characterDAO'''.hasCharacter(trans, username, character)) {
- //logger.error("Rollback failed: ", e2);
return new CharacterResult(Result.FAILED_PLAYER_EXISTS, character, tmpl);
- System.out.println("Rollback failed: " + e2);
- }
}
+ transactionPool.rollback(trans);
@@ -196,18 +190,13 @@
return new CharacterResult(Result.FAILED_EXCEPTION, character, tmpl);
}
- database.addCharacter(trans, username, character, object);
}
+ '''characterDAO'''.addCharacter(trans, username, character, object);
</pre>
- trans.commit();
+ '''transactionPool.commit(trans);'''
return new CharacterResult(Result.OK_CREATED, character, object);
} catch (Exception e1) {
//logger.warn("SQL exception while trying to create a new character: ", e1);
- try {
- trans.rollback();
- } catch (SQLException e2) {
- //logger.error("Rollback failed: ", e2);
- System.out.println("Rollback failed: " + e2);
- }
+ '''transactionPool.rollback(trans);'''
return new CharacterResult(Result.FAILED_EXCEPTION, character, tmpl);
}
}