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
	 DieGurke
					DieGurke