Interface Communication Login Credentials

This commit is contained in:
DieGurke 2020-01-21 17:51:50 +01:00
parent 1e00930d4b
commit ec315f870d
4 changed files with 21 additions and 22 deletions

View File

@ -2,6 +2,7 @@ package envoy.server.data;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@ -33,9 +34,6 @@ import envoy.server.database.PersistenceManager;
{ @NamedQuery(
query = "SELECT m FROM Message m WHERE m.recipient =:recipient AND m.status = envoy.data.Message$MessageStatus.SENT",
name = "getUnreadMessages"
), @NamedQuery(
query = "SELECT m FROM Message m WHERE m.sender =:sender AND m.status = :status",
name = "find read messages"// TODO do we need this namedQuery?
), @NamedQuery(query = "SELECT m FROM Message m WHERE m.id = :messageId", name = "getMessageById") }
)
public class Message {
@ -43,10 +41,10 @@ public class Message {
@Id
private long id;
@ManyToOne
@ManyToOne(cascade = { CascadeType.PERSIST })
private User sender;
@ManyToOne
@ManyToOne(cascade = { CascadeType.PERSIST })
private User recipient;
@Temporal(TemporalType.TIMESTAMP)

View File

@ -49,8 +49,7 @@ public class User {
private Date lastSeen;
private envoy.data.User.UserStatus status;
// TODO: Fix Error
@OneToMany(targetEntity = User.class, cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "contacts")
@OneToMany(targetEntity = User.class, cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, orphanRemoval = true)
private List<User> contacts;
/**

View File

@ -43,7 +43,12 @@ public class PersistenceManager {
* @param User the {@link User} to add to the database
* @since Envoy Server Standalone v0.1-alpha
*/
public void addUser(User User) { entityManager.persist(User); }
public void addUser(User User) {
entityManager.getTransaction().begin();
entityManager.persist(User);
entityManager.flush();
entityManager.getTransaction().commit();
}
/**
* Adds a {@link Message} to the database.

View File

@ -38,21 +38,18 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential
System.out.println(String.format("Received login credentials %s from socket ID %d", input, socketId));
// Create user
User user = null;
envoy.server.data.User user = new envoy.server.data.User();
if (input.isRegistration()) {
envoy.server.data.User dbUser = new envoy.server.data.User();
dbUser.setName(input.getName());
dbUser.setLastSeen(new Date());
dbUser.setStatus(User.UserStatus.ONLINE);
dbUser.setPasswordHash(input.getPasswordHash());
persistenceManager.addUser(dbUser);
user = dbUser.toCommonUser();
user.setName(input.getName());
user.setLastSeen(new Date());
user.setStatus(User.UserStatus.ONLINE);
user.setPasswordHash(input.getPasswordHash());
persistenceManager.addUser(user);
}else {
// TODO: Implement error when user does not exist
envoy.server.data.User requestedUser = persistenceManager.getUserByName(input.getName());
if (input.getPasswordHash() == requestedUser.getPasswordHash()) {
user = requestedUser.toCommonUser();
if (input.getPasswordHash() == user.getPasswordHash()) {
user = persistenceManager.getUserByName(input.getName());
} else {
// TODO: Wrong Password Response
}
@ -61,7 +58,7 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential
// Create contacts
List<User> users = PersistenceManager.getPersistenceManager()
.getContacts(new envoy.server.data.User(user))
.getContacts(user)
.stream()
.map(envoy.server.data.User::toCommonUser)
.collect(Collectors.toList());
@ -69,11 +66,11 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential
// Complete handshake
System.out.println("Sending user...");
writeProxy.write(socketId, user);
writeProxy.write(socketId, user.toCommonUser());
System.out.println("Sending contacts...");
writeProxy.write(socketId, contacts);
System.out.println("Acquiring pending messages for the client...");
List<Message> pendingMessages = PersistenceManager.getPersistenceManager().getUnreadMessages(new envoy.server.data.User(user));
List<Message> pendingMessages = PersistenceManager.getPersistenceManager().getUnreadMessages(user);
for (Message msg : pendingMessages) {
System.out.println("Sending message " + msg.toString());
writeProxy.write(socketId, msg);