package com.lyndir.omicron.webapp.data.service.impl.jpa;
import com.google.common.collect.Iterables;
import com.google.inject.Inject;
import com.lyndir.lhunath.opal.jpa.Persist;
import com.lyndir.omicron.webapp.data.EmailAddress;
import com.lyndir.omicron.webapp.data.service.EmailAddressDAO;
import com.lyndir.omicron.webapp.data.service.EmailAddressUnavailableException;
import javax.persistence.EntityManager;
/**
* @author lhunath
*/
public class EmailAddressDAOImpl implements EmailAddressDAO {
private final EntityManager db;
@Inject
public EmailAddressDAOImpl(final Persist persist) {
db = persist.getEntityManager();
}
@Override
public EmailAddress newAddress(final String address)
throws EmailAddressUnavailableException {
EmailAddress emailAddress = Iterables.getFirst(
db.createQuery( "SELECT e FROM LLEmailAddress e WHERE e.address = :address", EmailAddress.class ) //
.setParameter( "address", address ) //
.getResultList(), null );
if (emailAddress != null)
throw new EmailAddressUnavailableException( address );
emailAddress = new EmailAddress( address );
db.persist( emailAddress );
return emailAddress;
}
}