package org.akaza.openclinica.dao.hibernate;
import org.akaza.openclinica.domain.datamap.AuditLogEvent;
import org.hibernate.Filter;
import org.hibernate.internal.FilterImpl;
public class AuditLogEventDao extends AbstractDomainDao<AuditLogEvent> {
@Override
public Class<AuditLogEvent> domainClass() {
return AuditLogEvent.class;
}
@SuppressWarnings("unchecked")
public <T> T findByParam(AuditLogEvent auditLogEvent, String anotherAuditTable){
getSessionFactory().getStatistics().logSummary();
String query = "from " + getDomainClassName();
String buildQuery = "";
if(auditLogEvent.getEntityId()!=null && auditLogEvent.getAuditTable()!=null && anotherAuditTable==null)
{ buildQuery+= "do.entityId =:entity_id ";
buildQuery+= " and do.auditTable =:audit_table order by do.auditId ";
}
else if(auditLogEvent.getEntityId()!=null && auditLogEvent.getAuditTable()!=null && anotherAuditTable!=null)
{
buildQuery+= "do.entityId =:entity_id ";
buildQuery+= " and ( do.auditTable =:audit_table or do.auditTable =:anotherAuditTable) order by do.auditId ";
}
if(!buildQuery.isEmpty())
query = "from " + getDomainClassName() + " do where "+buildQuery;
else
query = "from " + getDomainClassName() ;
org.hibernate.Query q = getCurrentSession().createQuery(query);
if(auditLogEvent.getEntityId()!=null && auditLogEvent.getAuditTable()!=null && anotherAuditTable==null)
{ q.setInteger("entity_id", auditLogEvent.getEntityId());
q.setString("audit_table", auditLogEvent.getAuditTable());
}
else if(auditLogEvent.getEntityId()!=null && auditLogEvent.getAuditTable()!=null && anotherAuditTable!=null)
{
q.setInteger("entity_id", auditLogEvent.getEntityId());
q.setString("audit_table", auditLogEvent.getAuditTable());
q.setString("anotherAuditTable", anotherAuditTable);
}
return (T) q.list();
}
}