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

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

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

import java.util.HashMap;
import java.util.Map;

import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import it.amattioli.dominate.Entity;
import it.amattioli.dominate.specifications.Assembler;
import it.amattioli.dominate.specifications.ComparisonType;
import it.amattioli.dominate.specifications.StringSpecification;

public class CriteriaStringSpecification> extends StringSpecification {
	private static final Map MATCH_MODES = new HashMap() {{
		put(ComparisonType.EXACT,MatchMode.EXACT);
		put(ComparisonType.STARTS,MatchMode.START);
		put(ComparisonType.CONTAINS,MatchMode.ANYWHERE);
	}};

	public CriteriaStringSpecification() {
		
	}
	
	public CriteriaStringSpecification(String propertyName) {
		super(propertyName);
	}

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

	@Override
	public boolean itselfSupportsAssembler(Assembler assembler) {
		return assembler instanceof CriteriaAssembler;
	}
	
	private void addCriteria(CriteriaAssembler assembler) {
        if (wasSet()) {
        	assembler.addCriterion(Restrictions.ilike(getPropertyName(), getValue(), getMatchMode(getComparisonType())));
        }
    }
	
	private MatchMode getMatchMode(ComparisonType type) {
		return MATCH_MODES.get(type);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy