package gr.ntua.ivml.athena.db;
import java.util.List;
import gr.ntua.ivml.athena.persistent.DataUpload;
import gr.ntua.ivml.athena.persistent.Thesaurus;
import gr.ntua.ivml.athena.persistent.ThesaurusAssignment;
import gr.ntua.ivml.athena.persistent.XpathHolder;
public class ThesaurusAssignmentDAO extends DAO<ThesaurusAssignment, Long> {
public List<ThesaurusAssignment> getByThesaurus(Thesaurus t) {
return getSession().createQuery("from ThesaurusAssignment where thesaurus=:thesaurus")
.setEntity("thesaurus", t)
.list();
}
public List<ThesaurusAssignment> getByThesaurusAndDataUpload(Thesaurus t, DataUpload du) {
return getSession().createQuery("from ThesaurusAssignment where thesaurus=:thesaurus and dataUpload=:du")
.setEntity("thesaurus", t)
.setEntity("du", du)
.list();
}
/**
* Checks if there's an assign for the specified xpath and thesaurus that have been applied on mapping specified
* by the data upload.
* @param xpath the xpath to check if is assigned to a thesaurus
* @param t the thesaurus
* @param du the mapping
* @return true if exists, false if not
*/
public boolean existsAssignment(XpathHolder xpath, Thesaurus t, DataUpload du) {
List<ThesaurusAssignment> list = getSession().createQuery("from ThesaurusAssignment where thesaurus=:thesaurus and dataUpload=:du and xpath=:xpath")
.setEntity("thesaurus", t)
.setEntity("du", du)
.setEntity("xpath", xpath)
.list();
if((list == null) || (list.size() == 0))
return false;
return true;
}
public boolean delete(Long id) {
ThesaurusAssignment ta = findById(id, false);
if(ta == null)
return false;
getSession().delete(ta);
return true;
}
}