Răsfoiți Sursa

Users mailboxes

Daniel Garcia Costa 2 ani în urmă
părinte
comite
ea4532cd72

+ 17 - 1
src/main/java/es/uv/garcosda/controllers/MailerController.java

@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import es.uv.garcosda.domain.Mail;
+import es.uv.garcosda.domain.Mailbox;
 import es.uv.garcosda.domain.User;
 import es.uv.garcosda.objects.MailDTO;
 import es.uv.garcosda.services.DispatcherService;
@@ -45,7 +46,22 @@ public class MailerController {
 		}
 	}
 	
-	@PostMapping("send")
+	@GetMapping("mailbox/{email}")
+	public ResponseEntity<?> getMailbox(@PathVariable("email") String email) {
+		User u = this.us.findByEmail(email);
+		if(u.getEmail() == null) {
+			return new ResponseEntity<String>("No mailbox found for email "+email, HttpStatus.NOT_FOUND);
+		}
+		else {
+			Mailbox m = this.us.findMailboxByEmail(u.getEmail());
+			if(m.getUser() == null) {
+				return new ResponseEntity<String>("No mailbox found for email "+email, HttpStatus.NOT_FOUND);
+			}
+			return new ResponseEntity<Mailbox>(m, HttpStatus.OK);
+		}
+	}
+	
+	@PostMapping("mailbox")
 	public ResponseEntity<?> sendMail(@RequestBody MailDTO mail){
 		User from = this.us.findByEmail(mail.getFrom());
 		User to = this.us.findByEmail(mail.getTo());

+ 40 - 0
src/main/java/es/uv/garcosda/domain/Mailbox.java

@@ -0,0 +1,40 @@
+package es.uv.garcosda.domain;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Mailbox implements Serializable  {
+
+	private static final long serialVersionUID = 1L;
+	private User user;
+	private List<Mail> mails;
+	
+	public Mailbox() {}
+	
+	public Mailbox(User user) {
+		this.user = user;
+		mails = new ArrayList<Mail>();
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public List<Mail> getMails() {
+		return mails;
+	}
+
+	public void setMails(List<Mail> mails) {
+		this.mails = mails;
+	}
+	
+	public void addMail(Mail mail) {
+		this.mails.add(mail);
+	}
+	
+}

+ 7 - 1
src/main/java/es/uv/garcosda/services/ReceiverService.java

@@ -2,6 +2,7 @@ package es.uv.garcosda.services;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.annotation.JmsListener;
 import org.springframework.stereotype.Service;
 
@@ -14,10 +15,15 @@ public class ReceiverService {
 
 	Logger log = LoggerFactory.getLogger(ReceiverService.class);
 	
+	@Autowired
+	UserService us;
+	
 	@JmsListener(destination = "${mailer.queue}")
 	public void receive(Message message) {
 		try {
-			log.info("Received: " + message.getBody(Mail.class));	
+			Mail m = message.getBody(Mail.class);
+			log.info("Received: " + m);
+			us.addMail(m);
 		} 
 		catch (JMSException e) {
 			e.printStackTrace();

+ 28 - 0
src/main/java/es/uv/garcosda/services/UserService.java

@@ -7,12 +7,15 @@ import java.util.stream.Collectors;
 
 import org.springframework.stereotype.Service;
 
+import es.uv.garcosda.domain.Mail;
+import es.uv.garcosda.domain.Mailbox;
 import es.uv.garcosda.domain.User;
 
 @Service
 public class UserService {
 
 	private List<User> users;
+	private List<Mailbox> mailboxes;
 	
 	public UserService() {
 		users = new ArrayList<User>(
@@ -37,6 +40,12 @@ public class UserService {
 		        		new User("Elvira.Thornburg@yopmail.com","Elvira","Thornburg"),
 		        		new User("Paola.Alice@yopmail.com","Paola","Alice")
 		       ));
+		
+		mailboxes = new ArrayList<Mailbox>();
+		for(User u : users) {
+			mailboxes.add(new Mailbox(u));
+		}
+		
 	}
 	
 	public List<User> findAll(){
@@ -51,4 +60,23 @@ public class UserService {
 		return new User(); 
 	}
 	
+	public Mailbox findMailboxByEmail(String m) {
+		List<Mailbox> boxes = this.mailboxes.stream().filter(x -> x.getUser().getEmail().toLowerCase().equals(m.toLowerCase())).collect(Collectors.toList());
+		if(boxes.size() > 0) {
+			Mailbox box = boxes.get(0);
+			return box;
+		}
+		return new Mailbox();
+	}
+	
+	public boolean addMail(Mail m) {
+		List<Mailbox> boxes = this.mailboxes.stream().filter(x -> x.getUser().getEmail().toLowerCase().equals(m.getTo().getEmail().toLowerCase())).collect(Collectors.toList());
+		if(boxes.size() > 0) {
+			Mailbox box = boxes.get(0);
+			box.addMail(m);
+			return true;
+		}
+		return false;
+	}
+	
 }