package db.table; import java.util.List; import java.util.Optional; import db.Table; import db.annotation.DbTable; import entity.Ecole; @DbTable(name = "Ecole", entity = Ecole.class) public class EcoleTable extends Table { private static EcoleTable instance; private static VilleTable vt = VilleTable.getInstance(); private static NiveauTable nt = NiveauTable.getInstance(); private EcoleTable() { // Private constructor for singleton } @Override public Ecole getById(long id) { return link(super.getById(id)); } @Override public List getByField(String fieldname, Object value) { return link(super.getByField(fieldname, value)); } @Override public List getWhere(List where, List params) { return link(super.getWhere(where, params)); } @Override public List getAll() { return link(super.getAll()); } @Override public void save(Ecole obj) { vt.save(obj.ville); nt.save(obj.niveau); obj.villeId = obj.ville.id; obj.niveauId = obj.niveau.id; super.save(obj); } private Ecole link(Ecole obj) { if(obj == null) { return null; } obj.ville = vt.getById(obj.villeId); obj.niveau = nt.getById(obj.niveauId); return obj; } private List link(List list) { if(list.isEmpty()) { return list; } list.forEach(elt -> link(elt)); return list; } public static EcoleTable getInstance() { if(instance == null) { instance = new EcoleTable(); } return instance; } }