* Toutes les classes qui mappent une table doivent étendre ProtectedData
* Chaque méthode setter de ces classes doit commencer par :
public void setXxx(....) {
if (!isEditable())
throwDataUneditableException();
...
}
(On lance une exception si l'objet est en mode "read-only")
* Utilisation :
Message m = new Message("hey", "cool", new Date().getTime() / 1000, 1, 2);
m.setContent("great"); // OK, l'objet n'est pas protégé (il n'a pas été enregistré dans les CAO/DAO)
DataAccess.create(m);
m.setContent("super"); // Erreur, lance une exception car l'objet a été enregistré dans les CAO/DAO et est passé en mode read-only)
DataAccess.getEditable(m); // Renvoie une copie éditable de m
m.setContent("woohoo"); // OK, l'objet est éditable
DataAccess.update(m);
m.setContent("yay"); // Erreur, l'objet a été enregistré et n'est pas éditable
DataAccess.delete(m);
m.setContent("woot"); // OK, l'objet n'est plus enregistré dans les CAO/DAO
De même :
Message m = DataAccess.getMessageById(10);
m.setContent("yo"); // Erreur, l'objet est en mode read-only
List<Message> msg = DataAccess.getMessagesByPlayer(1);
msg.get(0).setContent("yay"); // Idem