Interface Communication Login Credentials
This commit is contained in:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -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.
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user