Interface Communication Login Credentials
This commit is contained in:
		| @@ -2,6 +2,7 @@ package envoy.server.data; | |||||||
|  |  | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
|  | import javax.persistence.CascadeType; | ||||||
| import javax.persistence.Entity; | import javax.persistence.Entity; | ||||||
| import javax.persistence.Id; | import javax.persistence.Id; | ||||||
| import javax.persistence.ManyToOne; | import javax.persistence.ManyToOne; | ||||||
| @@ -33,9 +34,6 @@ import envoy.server.database.PersistenceManager; | |||||||
| 	{ @NamedQuery( | 	{ @NamedQuery( | ||||||
| 		query = "SELECT m FROM Message m WHERE m.recipient =:recipient AND m.status = envoy.data.Message$MessageStatus.SENT", | 		query = "SELECT m FROM Message m WHERE m.recipient =:recipient AND m.status = envoy.data.Message$MessageStatus.SENT", | ||||||
| 		name = "getUnreadMessages" | 		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") } | 	), @NamedQuery(query = "SELECT m FROM Message m WHERE m.id = :messageId", name = "getMessageById") } | ||||||
| ) | ) | ||||||
| public class Message { | public class Message { | ||||||
| @@ -43,10 +41,10 @@ public class Message { | |||||||
| 	@Id | 	@Id | ||||||
| 	private long id; | 	private long id; | ||||||
|  |  | ||||||
| 	@ManyToOne | 	@ManyToOne(cascade = { CascadeType.PERSIST }) | ||||||
| 	private User sender; | 	private User sender; | ||||||
|  |  | ||||||
| 	@ManyToOne | 	@ManyToOne(cascade = { CascadeType.PERSIST }) | ||||||
| 	private User recipient; | 	private User recipient; | ||||||
|  |  | ||||||
| 	@Temporal(TemporalType.TIMESTAMP) | 	@Temporal(TemporalType.TIMESTAMP) | ||||||
|   | |||||||
| @@ -49,8 +49,7 @@ public class User { | |||||||
| 	private Date						lastSeen; | 	private Date						lastSeen; | ||||||
| 	private envoy.data.User.UserStatus	status; | 	private envoy.data.User.UserStatus	status; | ||||||
|  |  | ||||||
| 	// TODO: Fix Error | 	@OneToMany(targetEntity = User.class, cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, orphanRemoval = true) | ||||||
| 	@OneToMany(targetEntity = User.class, cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "contacts") |  | ||||||
| 	private List<User> contacts; | 	private List<User> contacts; | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
|   | |||||||
| @@ -43,7 +43,12 @@ public class PersistenceManager { | |||||||
| 	 * @param User the {@link User} to add to the database | 	 * @param User the {@link User} to add to the database | ||||||
| 	 * @since Envoy Server Standalone v0.1-alpha | 	 * @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. | 	 * 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)); | 		System.out.println(String.format("Received login credentials %s from socket ID %d", input, socketId)); | ||||||
|  |  | ||||||
| 		// Create user | 		// Create user | ||||||
| 		User user = null; | 		envoy.server.data.User user = new envoy.server.data.User(); | ||||||
|  |  | ||||||
| 		if (input.isRegistration()) { | 		if (input.isRegistration()) { | ||||||
| 			envoy.server.data.User dbUser = new envoy.server.data.User(); | 			user.setName(input.getName()); | ||||||
| 			dbUser.setName(input.getName()); | 			user.setLastSeen(new Date()); | ||||||
| 			dbUser.setLastSeen(new Date()); | 			user.setStatus(User.UserStatus.ONLINE); | ||||||
| 			dbUser.setStatus(User.UserStatus.ONLINE); | 			user.setPasswordHash(input.getPasswordHash()); | ||||||
| 			dbUser.setPasswordHash(input.getPasswordHash()); | 			persistenceManager.addUser(user); | ||||||
| 			persistenceManager.addUser(dbUser); |  | ||||||
| 			user = dbUser.toCommonUser(); |  | ||||||
| 		}else { | 		}else { | ||||||
| 			// TODO: Implement error when user does not exist | 			// TODO: Implement error when user does not exist | ||||||
| 			envoy.server.data.User requestedUser = persistenceManager.getUserByName(input.getName()); | 			if (input.getPasswordHash() == user.getPasswordHash()) { | ||||||
| 			if (input.getPasswordHash() == requestedUser.getPasswordHash()) { | 				user = persistenceManager.getUserByName(input.getName()); | ||||||
| 				user = requestedUser.toCommonUser(); |  | ||||||
| 			} else { | 			} else { | ||||||
| 				// TODO: Wrong Password Response | 				// TODO: Wrong Password Response | ||||||
| 			} | 			} | ||||||
| @@ -61,7 +58,7 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential | |||||||
|  |  | ||||||
| 		// Create contacts | 		// Create contacts | ||||||
| 		List<User>	users		= PersistenceManager.getPersistenceManager() | 		List<User>	users		= PersistenceManager.getPersistenceManager() | ||||||
| 			.getContacts(new envoy.server.data.User(user)) | 			.getContacts(user) | ||||||
| 			.stream() | 			.stream() | ||||||
| 			.map(envoy.server.data.User::toCommonUser) | 			.map(envoy.server.data.User::toCommonUser) | ||||||
| 			.collect(Collectors.toList()); | 			.collect(Collectors.toList()); | ||||||
| @@ -69,11 +66,11 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential | |||||||
|  |  | ||||||
| 		// Complete handshake | 		// Complete handshake | ||||||
| 		System.out.println("Sending user..."); | 		System.out.println("Sending user..."); | ||||||
| 		writeProxy.write(socketId, user); | 		writeProxy.write(socketId, user.toCommonUser()); | ||||||
| 		System.out.println("Sending contacts..."); | 		System.out.println("Sending contacts..."); | ||||||
| 		writeProxy.write(socketId, contacts); | 		writeProxy.write(socketId, contacts); | ||||||
| 		System.out.println("Acquiring pending messages for the client..."); | 		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) { | 		for (Message msg : pendingMessages) { | ||||||
| 			System.out.println("Sending message " + msg.toString()); | 			System.out.println("Sending message " + msg.toString()); | ||||||
| 			writeProxy.write(socketId, msg); | 			writeProxy.write(socketId, msg); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 DieGurke
					DieGurke