package net.techreadiness.plugin.action.org;
import java.util.List;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import net.techreadiness.persistence.domain.ContactDO;
import net.techreadiness.service.common.DataGrid;
import net.techreadiness.service.object.Contact;
import net.techreadiness.service.object.mapping.MappingService;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
@Scope("prototype")
@Transactional(readOnly = true)
public class ContactByReadyOrgItemProviderImpl implements ContactByReadyOrgItemProvider {
@PersistenceContext
protected EntityManager em;
@Inject
private MappingService mappingService;
private Long orgId;
@Override
public List<Contact> getPage(DataGrid<Contact> grid) {
TypedQuery<ContactDO> query = getQuery();
return mappingService.mapFromDOList(query.getResultList());
}
@Override
public int getTotalNumberOfItems(DataGrid<Contact> grid) {
return getQuery().getResultList().size();
}
@Override
public void setOrgId(Long orgId) {
this.orgId = orgId;
}
private TypedQuery<ContactDO> getQuery() {
StringBuilder sb = new StringBuilder();
sb.append("select c ");
sb.append("from ContactDO c ");
sb.append("where c.org.orgId = :orgId ");
TypedQuery<ContactDO> query = em.createQuery(sb.toString(), ContactDO.class);
query.setParameter("orgId", orgId);
return query;
}
}