// Last edited on 2014-12-17 02:32:34 by stolfilocal package quack; public interface Message { // Uma instância de {Message} é uma mensagem enviada dentro do sistema {Quack}. // Pode ser uma /mensagem original/ ou uma /repostagem/ de outra mensagem. // Uma mensagem original possui um texto; uma repostagem, no lugar do texto, // possui um apontador para a mensagem repostada (que pode ser outra repostagem, // e assim repetidamente). // O parâmetro {dbIndex} é o identificador numérico da mensagem no banco de dados // persistente. Deve ser único entre todas as mensagens já enviadas. public Message initialize(User user, String body, long dbIndex, long postedTime); // Inicializa uma nova instância {this} de {Message} como uma // mensagem original com os atributos {body} (texto da mensagem) // e {user} (autor). A datahora de postagem será registrada como {postedTime}. // Devolve a instância inicializada, ou {null} em caso de erro. public Message initialize(User user, Message parent, long dbIndex, long postedTime); // Inicializa uma nova instância {this} como sendo a // repostagem da mensagem {parent}, repostada por {user}. // A datahora de repostagem será registrada como {postedTime}; // note que é distinta da data de postagem de {parent}. // Devolve a instância inicializada, ou {null} em caso de erro. public String getBody(); // Retorna o texto da mensagem original associada {this}. Se {this} for uma repostagem, // este método é aplicado à mensagem repostada, recursivamente. public Message getParent(); // Se {this} é uma repostagem, retorna a mensagem repostada (que pode ser outra repostagem), // senão retorna {null}. public User getPoster(); // Retorna o usuário responsável pela publicação da mensagem {this} // (o autor, se for original, ou o usuário que repostou, // se for repostagem). public long getPostedTime(); // Retorna a datahora de publicação da mensagem {this} (a datahora de repostagem, // se for o caso) public long getDbIndex(); // Retorna o índice da mensagem {this} no banco de dados persistente. }