mardi 20 février 2007

une classe qui simule une persistance

pour tester une application, l'étape initiale obligatoire est de lancer un serveur de base de données, de créer une connexion et d'utiliser ensuite un outil de mapping (hibernate ou autre) pour récupérer et mettre à jour des enregistrements.

hier, j'ai craqué devant ce travail (!) et je me suis créé une petit classe qui simulate la persistance sur un objet. les données sont stockées dans une HasMap en statique, cela permet de lire, mettre à jour, supprimer et ajouter des enregistrements à cette liste, comme si on était connecté à une base de données.

voici le code de cette classe

public class UserDAO {
// this hashmap simulate a db table
private static Map users = new HashMap();

// id
private static int cpt_id = 1;

// an instance of the class
private static UserDAO instance;

private UserDAO() {
// initialize the table with a record
User user = new User();
user.setId(cpt_id);
user.setCode("AAAAA");
user.setFirstname("olivier");
user.setLastname("lemoigne");
user.setBirthday(new GregorianCalendar(1967, 10, 31).getTime());
users.put(new Integer(cpt_id), user);
}

public static UserDAO getInstance() {
if (null == instance) {
instance = new UserDAO();
}
return instance;
}
public static List findAll() {
List results = new ArrayList();

//loop through the map
for(Map.Entry entry: users.entrySet())
results.add(entry.getValue());
return results;
}
public static int create(User user){
user.setId(++cpt_id);
users.put(new Integer(user.getId()), user);
return user.getId();
}
public static void update(User user){
users.put(new Integer(user.getId()), user);
}

public static void delete(int id){
users.remove(new Integer(id));
}

public static User findById(int id){
return users.get(new Integer(id));
}
}