2016-12-19 5 views
-2

У меня вопрос, я реализую приложение, и я хочу, чтобы мой метод getMessages пользователя класса, возвращаю мне Список всех непрочитанных сообщений пользователя.метод реализации getMessages java

Когда пользователь прочитал сообщение, он будет отмечен как прочитанный с использованием метода чтения класса Message.

класс

ПОЛЬЗОВАТЕЛЬ, как это

import java.util.ArrayList; 
import java.util.List; 

public class User implements CompetitionListener { 
private Platform platform; 
private String username; 
private String password; 
private String fullName; 
private List<Message> inbox; 
private List<Message> outbox; 
private List<Submission> submissions; 

public User (Platform platform, String username, String password, String fullName) { 
    /** 
    * PR1 Ex 2.1: User constructor needed for user registration 
    */ 
    this.platform = platform; 
    this.username = username; 
    this.password = password; 
    this.fullName = fullName; 
    this.inbox = new ArrayList<Message>(); 
    this.outbox = new ArrayList<Message>(); 
    this.submissions = new ArrayList<Submission>(); 
} 

public User (User obj) { 
    /** 
    * PR1 Ex 2.3: Implementation of the copy constructor 
    */ 
    this.platform = obj.platform; 
    this.username = obj.username; 
    this.password = obj.password; 
    this.fullName = obj.fullName; 
    this.inbox = obj.inbox; 
    this.outbox = obj.outbox; 
    this.submissions = obj.submissions; 
} 

public Boolean checkPassword(String password) { 
    /** 
    * PR1 Ex 2.2: Implementation of checkPassword, required by login 
    */ 
    return this.password.equals(password);   
} 

public Organizer asOrganizer() { 
    /** 
    * PR1 Ex 2.3: Create a new object for the Organizer Role 
    */ 
    return new Organizer(this); 
} 

public Participant asParticipant() { 
    /** 
    * PR1 Ex 2.3: Create a new object for the Participant Role 
    */ 
    return new Participant(this); 
} 

public String getUserName() { 
    /** 
    * PR1 Ex 2.1: Required by method findUser 
    */ 
    return this.username; 
} 

public String getFullName() { 
    /** 
    * PR1 Ex 2.1: Required by test 
    */ 
    return this.fullName; 
} 

public String toString() {   
StringBuilder sb = new StringBuilder(); 
sb.append(getFullName()).append("<").append(getUserName()).append(">");  
    return sb.toString(); 
    } 

public boolean equals(Object obj) { 
    /** 
    * PR1 Ex 2.2: Required by test 
    */ 
    if(obj==null) { 
     return false; 
    }   
    if (obj instanceof User) { 
     User user = (User) obj; 
     if (!this.username.equals(user.username) || !this.password.equals(user.password) || !this.fullName.equals(user.fullName)) { 
      return false; 
     }   
     // Additional checks can be added 
    } else { 
     return false; 
    } 

    return true; 
    } 

public List<Message> getMessages() {   
    return null; 
    } 

public Message sendMessage(String to, String subject, String message) throws CompetitionException 
{ 

User receiver = platform.findUser(to); 
if (to == null) { 
    throw new CompetitionException(CompetitionException.RECIPIENT_NOT_FOUND); 
} 
else if(receiver == null) { 
    throw new CompetitionException(CompetitionException.RECIPIENT_NOT_FOUND); //Aquí debes lanza el tipo de excepción apropiado de tu lógica de negocio 
} 
Message m = new Message(this, this, subject, message); 
return m; 
} 

public List<Competition> myCompetitions() { 
    return null; 
} 

класс сообщения

import java.text.DateFormat; 
import java.util.Date; 
import java.text.SimpleDateFormat; 

public class Message { 

private String subject; 
private String message; 
private MessageStatus status; 
private Date createdAt; 
private User to; 
private User from; 

public Message (User from, User to, String subject, String message) { 
    this.to = to; 
    this.from = from; 
    this.subject = subject; 
    this.message = message; 
    this.createdAt = new Date(); 
} 

public String getSubject() { 
    return subject; 
} 


public void setSubject(String subject) { 
    this.subject = subject; 
} 

    public String getMessage() { 
    return message; 
} 


public void setMessage(String message) { 
    this.message = message; 
} 

public void read() { 

} 

public MessageStatus getStatus() {  
    status = MessageStatus.PENDING; 
    return this.status; 
} 
public void setStatus(MessageStatus r) { 
    this.status = r; 
} 

public Date getCreatedAt() { 
    return createdAt; 
} 

public String toString() {      
    StringBuilder sb = new StringBuilder(); 
    SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); 
    sb.append("{").append("date:").append("<").append(sdf.format(createdAt)).append(">,") 
     .append("from:").append("<").append(from).append(",").append("to:").append("<").append(to).append(",Subject:<").append(subject).append(">,status:<").append(getStatus()).append(">}");//append(price).append("}"); 

    return sb.toString(); 
} 

public boolean equals(Object obj) { 
    if(obj==null) { 
     return false; 
    }   
    if (obj instanceof Message) { 
     Message message = (Message) obj; 
     if (!this.from.equals(message.from) || !this.to.equals(message.to) || !this.status.equals(message.status)|| !this.message.equals(message.message)|| !this.subject.equals(message.subject)) 

     { 
      return false; 
     }   
     // Additional checks can be added 
    } else { 
     return false; 
    } 

    return true; 
} 


} 




public List<Message> getInbox() {   
    return this.inbox; 
} 

public List<Message> getOutbox() {   
    return this.outbox; 
}  

public Platform getPlatform() {   
    return this.platform; 
} 

public void onNewEvaluation() { 

} 
public void onCompetitionClosed() { 

} 

}

Я не знаю, как реализовать метод GetMessages класса USER и читаем класс сообщения.

+0

Это довольно расплывчато - что именно вы борющегося с? (кстати, ваш метод getStatus, вероятно, не должен устанавливать статус сообщения в ожидании) – UnholySheep

+0

Этот вопрос является неполным. Как вы храните сообщения? В базе данных? Как пользователи читают сообщения? Это какое-то веб-приложение? Какое-то родное приложение? Глядя на него из-за пределов коробки ... Я бы подумал, что вам нужно будет настроить обработчик событий, когда пользователь чтения нажимает на сообщение, чтобы открыть его. Затем зарегистрируйте его в каком-то хранилище (база данных, текстовый файл и т. Д.), Чтобы сообщение было прочитано и обновило состояние программы ... –

ответ

0

В вашем классе сообщений у вас должен быть флаг, который сохраняет информацию, если сообщение iis прочитано или нет. На основе этой проверки вы должны пройти список, чтобы узнать непрочитанные/прочитанные сообщения.

0
public List<Message> getMessages() { 
     List<Message> temp = null; 
     for(Message m:inbox) 
     { 
      if(m.getStatus.PENDING) 
      { 
       temp.add(m); 
      } 
     } 
    return temp; 
    } 

Там может быть какая-либо ошибка синтаксиса, потому что я не выполнил это, но логически это работает на ваш вопрос.

0

Если я четко понимаю, что вы спрашиваете, Вы хотите, чтобы метод getMessages возвращал список всех сообщений, которые пользователь не читал?

Если это так, вы можете создать флаг в классе Message, который будет помнить статус сообщения. Как это:

private boolean mReadFlag = false; //false - no, true - yes 

... 

//Will set the flag to read 
public void read() { 
    this.mReadFlag = true; 
} 

//Will return the read status 
public boolean isRead(){ 
    return this.mReadFlag; 
} 

Затем в User классе

public List<Message> getMessages() {  
    List<Message> messageList = new ArrayList<Message>(); 

    for(Message message : YOUR_MESSAGE_LIST){ 
     if(!message.isRead()){ 
      messageList.add(message); 
     } 
    } 

    return messageList; 
} 
Смежные вопросы