Java, ORMLite und irgendwie der ganze Kack.

Click to reveal.. (May contain traces of Java)

Wer hat nen besseren Vorschlag für diese Query hier:
Code:
if (filter.getSeminar() == null && filter.getShowAny() == false) {
    // Little hack: We don't show anything, so we don't need to query at all
    return new ArrayList<>();
}
QueryBuilder<Entry, Integer> qb = this.entries.queryBuilder();
Where entryWhere = qb.where();

// Little hack: Generate first expression as "true" so we don't have to check if we need 'and's
entryWhere.or(entryWhere.eq("id", 5), entryWhere.not().eq("id", 5));

QueryBuilder<Seminar, Integer> seminarQb = this.seminars.queryBuilder();
seminarQb.selectColumns("id");
Where seminarWhere = seminarQb.where();
if (filter.getSeminar() == null) {
    int filterNum = 0;
    if (filter.getShowCoopPrograms()) {
        seminarWhere.eq("type", Seminar.Type.COOPPROGRAM);
        filterNum++;
    }
    if (filter.getShowInternships()) {
        seminarWhere.eq("type", Seminar.Type.INTERNSHIPS);
        filterNum++;
    }
    if (filter.getShowSeminars()) {
        seminarWhere.eq("type", Seminar.Type.SEMINAR);
        filterNum++;
    }
    seminarWhere.or(filterNum);

    entryWhere.and();
    entryWhere.in("seminar_id", seminarQb);
}

if (filter.getSeminar() != null) {
    entryWhere.and();
    entryWhere.eq("seminar_id", filter.getSeminar());
}
if (filter.getStudent() != null) {
    entryWhere.and();
    entryWhere.eq("student_id", filter.getStudent());
}

return this.entries.query(qb.prepare());



Visit my site: www.masterq32.de