package net.atos.java.example.boodschappen.persistence.impl;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import net.atos.java.example.boodschappen.model.Gebruiker;
import net.atos.java.example.boodschappen.persistence.GebruikerRepository;
import net.atos.java.example.boodschappen.persistence.model.PersistentGebruiker;
import net.atos.java.example.boodschappen.server.persistence.PersistenceHelper;
/**
* Implementeert een gebruiker repository.
*
* @author Pal Hargitai
*/
public class GebruikerJdoRepository extends
AbstractJdoRepository<String, Gebruiker, PersistentGebruiker> implements
GebruikerRepository {
/** Default constructor. */
public GebruikerJdoRepository() {
super(PersistentGebruiker.class);
}
/** {@inheritDoc} */
@Override
protected PersistentGebruiker convertToPersistent(Gebruiker entity,
PersistenceManager pm) {
return new PersistentGebruiker.Builder().gebruiker(entity).build();
}
/** {@inheritDoc} */
@Override
protected Gebruiker convertToDomain(PersistentGebruiker entity,
PersistenceManager pm) {
return new Gebruiker.Builder().pk(entity.getPk())
.naam(entity.getNaam()).email(entity.getEmail())
.id(entity.getId()).build();
}
/** {@inheritDoc} */
@Override
public Gebruiker vindGebruikerPerUserId(String userId) {
PersistenceManager pm = PersistenceHelper.getPersistenceManager();
Gebruiker gebruiker;
try {
Query query = pm.newQuery(PersistentGebruiker.class);
query.setFilter("id == idParam");
query.declareParameters("String idParam");
@SuppressWarnings("unchecked")
List<PersistentGebruiker> results = (List<PersistentGebruiker>) query
.execute(userId);
if (results.isEmpty()) {
gebruiker = null;
} else {
gebruiker = convertToDomain(results.get(0), pm);
}
} finally {
pm.close();
}
return gebruiker;
}
}