/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package qa.qcri.aidr.predictui.facade.imp;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.apache.log4j.Logger;
import qa.qcri.aidr.common.exception.PropertyNotSetException;
import qa.qcri.aidr.common.wrapper.CollectionBriefInfo;
import qa.qcri.aidr.dbmanager.entities.misc.Collection;
import qa.qcri.aidr.dbmanager.entities.misc.Users;
import qa.qcri.aidr.predictui.facade.CollectionResourceFacade;
/**
*
* @author Imran
*/
@Stateless
public class CollectionResourceImp implements CollectionResourceFacade {
private final Logger logger = Logger.getLogger(CollectionResourceImp.class);
@PersistenceContext(unitName = "qa.qcri.aidr.collectorManager-PU")
private EntityManager em;
@EJB
private qa.qcri.aidr.dbmanager.ejb.remote.facade.CollectionResourceFacade collectionResourceFacade;
@Override
public List<Collection> getAllRunningCollectionsByUserID(int userID) {
List<Collection> collections = new ArrayList<Collection>();
Query q = em.createNativeQuery("SELECT id, code, name, owner_id "
+ " FROM collection"
+ " WHERE owner_id = :user_id AND status = 0");
q.setParameter("user_id", + userID );
try {
List<Object[]> queryRes = q.getResultList();
Collection collection;
for (Object[] row : queryRes) {
collection = new Collection();
collection.setCrisisId(( (BigInteger)row[0]).longValue());
collection.setCode((String) row[1]);
collection.setName((String) row[2]);
Users user = new Users();
user.setId(((BigInteger)row[3]).longValue());
collection.setOwner(user);
collections.add(collection);
}
return collections;
} catch (NoResultException e) {
logger.warn("No result.");
return null;
}
}
@Override
public List<CollectionBriefInfo> getCrisisForNominalAttributeById(
Integer attributeID, Integer crisisType, String langFilters,
Long collectionId) {
List<CollectionBriefInfo> collections = new ArrayList<>();
try {
collections = collectionResourceFacade
.getCrisisForNominalAttributeById(attributeID, crisisType,
langFilters, collectionId);
} catch (PropertyNotSetException pe) {
logger.error("Error in fetching crises list for attribute Id : "
+ attributeID + " having crisis type :" + crisisType
+ " and language filters " + langFilters, pe);
}
return collections;
}
}