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

net.sf.esfinge.querybuilder.jpa1.JPAQueryRepresentation Maven / Gradle / Ivy

Go to download

The Esfinge QueryBuilder JPA1 is the persistence framework for Esfinge QueryBuilder using JPA1.

The newest version!
package net.sf.esfinge.querybuilder.jpa1;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.apache.el.lang.EvaluationContext;

import net.sf.esfinge.querybuilder.methodparser.QueryRepresentation;
import net.sf.esfinge.querybuilder.utils.ELUtils;

public class JPAQueryRepresentation implements QueryRepresentation{
	
	private String jpaQuery;
	private boolean dynamic;
	private Map fixParameters;
	
	public JPAQueryRepresentation(String jpaQuery, boolean dynamic,
			Map fixParameters) {
		this.jpaQuery = jpaQuery;
		this.dynamic = dynamic;
		this.fixParameters = fixParameters;
	}

	@Override
	public boolean isDynamic() {
		return dynamic;
	}

	@Override
	public Object getQuery() {
		return jpaQuery;
	}

	@Override
	public Object getQuery(Map params) {
		Map funcMap = new HashMap();
		for(Method m : ELFunctions.class.getMethods()){
			funcMap.put(m.getName(),m);
		}
		Map propMap = new HashMap();
		propMap.put("map", params);
		for(String key : params.keySet()){
			propMap.put(key, params.get(key));
		}
		
		EvaluationContext ctx = ELUtils.buildEvaluationContext(funcMap, propMap);
		
		return ELUtils.evaluateExpression(ctx, getQuery().toString());
	}

	@Override
	public Set getFixParameters() {
		return fixParameters.keySet();
	}

	@Override
	public Object getFixParameterValue(String param) {
		return fixParameters.get(param);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy