All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.amattioli.dominate.hibernate.specifications.CriteriaExclusionListSpecification Maven / Gradle / Ivy

The newest version!
package it.amattioli.dominate.hibernate.specifications;

import java.util.ArrayList;
import java.util.Collection;

import org.hibernate.criterion.Restrictions;

import it.amattioli.dominate.Entity;
import it.amattioli.dominate.specifications.Assembler;
import it.amattioli.dominate.specifications.ExclusionListSpecification;

public class CriteriaExclusionListSpecification> extends ExclusionListSpecification {

	public CriteriaExclusionListSpecification() {
		
	}
	
	@Override
	public void itselfAssembleQuery(Assembler assembler) {
		addCriteria((CriteriaAssembler) assembler);
	}

	public boolean itselfSupportsAssembler(Assembler assembler) {
		return assembler instanceof CriteriaAssembler;
	}
	
	private Collection getIdExclusionList() {
		Collection result = new ArrayList();
		for (Entity curr: getExclusionList()) {
			result.add(curr.getId());
		}
		return result;
	}
	
	private void addCriteria(CriteriaAssembler assembler) {
        if (wasSet()) {
        	assembler.addCriterion(Restrictions.not(Restrictions.in("id", getIdExclusionList())));
        }
    }

}