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 →Porting of JMaPacman: format patch |
||
| 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);''' |
|||
try { |
|||
- 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) { |
|||
- |
- } catch (SQLException e2) { |
||
- |
- //logger.error("Rollback failed: ", 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(); |
|||
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); |
|||
- |
- Transaction trans = database.getTransaction(); |
||
+ transactionPool. |
+ '''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); |
|||
- |
- 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); |
|||
} |
|||
} |
|||