Improved PersistenceManager with new methods to handle incoming entities
This commit is contained in:
parent
d0cf1c73f2
commit
34e1b610ac
@ -109,6 +109,61 @@ public class PersistenceManager {
|
|||||||
entityManager.getTransaction().commit();
|
entityManager.getTransaction().commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a {@link User} in the database.
|
||||||
|
*
|
||||||
|
* @param user the {@link User} to delete
|
||||||
|
* @since Envoy Server Standalone v0.1-alpha
|
||||||
|
*/
|
||||||
|
public void deleteUser(User user) {
|
||||||
|
entityManager.getTransaction().begin();
|
||||||
|
entityManager.remove(user);
|
||||||
|
entityManager.getTransaction().commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a {@link Message} in the database.
|
||||||
|
*
|
||||||
|
* @param message the {@link Message} to delete
|
||||||
|
* @since Envoy Server Standalone v0.1-alpha
|
||||||
|
*/
|
||||||
|
public void deleteMessage(Message message) {
|
||||||
|
entityManager.getTransaction().begin();
|
||||||
|
entityManager.remove(message);
|
||||||
|
entityManager.getTransaction().commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param action the action that should be applied for this entity. Case does
|
||||||
|
* <b>not</b> matter.<br>
|
||||||
|
* Currently supported values are:<br>
|
||||||
|
* -"add"/"persist" to add an object to the database<br>
|
||||||
|
* -"update"/"merge" to update this object in the database<br>
|
||||||
|
* -"delete"/"remove" to delete this object in the database
|
||||||
|
* @param entity the object to apply the action to
|
||||||
|
* @since Envoy Server Standalone v0.1-alpha
|
||||||
|
*/
|
||||||
|
public void applyAction(String action, Object entity) {
|
||||||
|
entityManager.getTransaction().begin();
|
||||||
|
switch (action.trim().toLowerCase()) {
|
||||||
|
case "add":
|
||||||
|
case "persist":
|
||||||
|
entityManager.persist(entity);
|
||||||
|
break;
|
||||||
|
case "update":
|
||||||
|
case "merge":
|
||||||
|
entityManager.merge(entity);
|
||||||
|
break;
|
||||||
|
case "delete":
|
||||||
|
case "remove":
|
||||||
|
entityManager.remove(entity);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalStateException("Unknown action: " + action + " was selected to be executed in the database");
|
||||||
|
}
|
||||||
|
entityManager.getTransaction().commit();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches for a {@link User} with a specific id.
|
* Searches for a {@link User} with a specific id.
|
||||||
*
|
*
|
||||||
@ -173,7 +228,11 @@ public class PersistenceManager {
|
|||||||
* @param status the new status of that user
|
* @param status the new status of that user
|
||||||
* @since Envoy Server Standalone v0.1-alpha
|
* @since Envoy Server Standalone v0.1-alpha
|
||||||
*/
|
*/
|
||||||
public void updateUserStatusInDatabase(User user, UserStatus status) {
|
public void updateUserStatus(User user, UserStatus status) {
|
||||||
|
if (user.getStatus().equals(status)) {
|
||||||
|
System.out.println("Received an UserStatus for User" + user.getId() + "to update that this user already has");
|
||||||
|
return;
|
||||||
|
}
|
||||||
user.setStatus(status);
|
user.setStatus(status);
|
||||||
persistenceManager.updateUser(user);
|
persistenceManager.updateUser(user);
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class UserStatusChangeProcessor implements ObjectProcessor<UserStatusChan
|
|||||||
PersistenceManager perMan = PersistenceManager.getPersistenceManager();
|
PersistenceManager perMan = PersistenceManager.getPersistenceManager();
|
||||||
envoy.server.data.User user = perMan.getUserById(evt.getId());
|
envoy.server.data.User user = perMan.getUserById(evt.getId());
|
||||||
// handling for newly logged in clients
|
// handling for newly logged in clients
|
||||||
perMan.updateUserStatusInDatabase(user, evt.get());
|
perMan.updateUserStatus(user, evt.get());
|
||||||
|
|
||||||
// handling for contacts that are already online
|
// handling for contacts that are already online
|
||||||
notifyContacts(evt, user, writeProxy);
|
notifyContacts(evt, user, writeProxy);
|
||||||
|
Reference in New Issue
Block a user