package qa.qcri.aidr.analysis.facade;
import java.util.List;
import java.util.Map;
import javax.ejb.Local;
import javax.persistence.EntityManager;
import org.hibernate.Session;
import qa.qcri.aidr.analysis.entity.TagData;
import qa.qcri.aidr.analysis.entity.TagDataPK;
import qa.qcri.aidr.common.values.ReturnCode;
/**
* Interface for operations on the tag_data table
*/
@Local
public interface TagDataStatisticsResourceFacade {
public EntityManager getEntityManager();
public int setEntityManager(EntityManager em);
public Session getCurrentSession();
public ReturnCode writeData(TagData tagData);
public List<TagData> getDataByCrisis(String crisisCode);
public TagData getSingleDataByPK(TagDataPK tagDataPK);
public List<TagData> getDataByCrisisAttributeLabel(String crisisCode, String attributeCode, String labelCode);
public List<TagData> getDataByCrisisAttributeLabelGranularity(String crisisCode, String attributeCode, String labelCode, Long granularity);
public List<TagData> getDataByGranularityInTimeWindow(String crisisCode, String attributeCode, String labelCode, Long timestamp, Long granularity);
public List<TagData> getDataAfterTimestamp(String crisisCode, String attributeCode, String labelCode, Long timestamp);
public List<TagData> getDataAfterTimestampGranularity(String crisisCode, String attributeCode, String labelCode,
Long timestamp, Long granularity);
public List<TagData> getDataBeforeTimestamp(String crisisCode, String attributeCode, String labelCode, Long timestamp);
public List<TagData> getDataBeforeTimestampGranularity(String crisisCode, String attributeCode, String labelCode,
Long timestamp, Long granularity);
public List<TagData> getDataInInterval(String crisisCode, String attributeCode, String labelCode,
Long timestamp1, Long timestamp2);
public List<TagData> getDataInIntervalWithGranularity(String crisisCode, String attributeCode, String labelCode,
Long timestamp1, Long timestamp2, Long granularity);
public List<String> getAttributesForCrisis(String crisisCode);
public List<TagData> getDataByCrisisGranularity(String crisisCode, Long timestamp, Long granularity);
public Map<String, Long> getTagCountByCrisisGranularity(String crisisCode, Long timestamp);
public List<Long> getGranularitiesForCrisis(String crisisCode);
}