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

com.wesleyhome.dao.processor.method.FindAllQueryMethodGenerator Maven / Gradle / Ivy

/*
 * @(#)FindAllQueryMethodGenerator.java
 * 
 * (C) Copyright 2014 by Travelers
 * All Rights Reserved.
 * 
 * This software is the confidential and proprietary information
 * of the Travelers Corporation. ("Confidential Information").
 * Redistribution of the source code or binary form is not permitted
 * without prior authorization from Travelers.
 */
package com.wesleyhome.dao.processor.method;

import java.util.List;
import javax.lang.model.element.Element;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import com.sun.codemodel.JBlock;
import com.sun.codemodel.JClass;
import com.sun.codemodel.JCodeModel;
import com.sun.codemodel.JDefinedClass;
import com.sun.codemodel.JExpr;
import com.sun.codemodel.JFieldVar;
import com.sun.codemodel.JInvocation;
import com.sun.codemodel.JMethod;
import com.sun.codemodel.JMod;
import com.sun.codemodel.JVar;
import com.wesleyhome.dao.processor.EntityInformationMap;
import com.wesleyhome.dao.processor.model.EntityInfo;
import com.wesleyhome.dao.processor.model.MappingType;

/**
 * The FindAllQueryMethodGenerator class is a
 * 
 * @author
 * @since
 */
public class FindAllQueryMethodGenerator extends BaseQueryMethodGenerator {

	/* (non-Javadoc)
	 * @see com.travelers.smart.dao.generator.processor.method.BaseQueryMethodGenerator#createQueryMethod(com.sun.codemodel.JCodeModel, com.sun.codemodel.JClass, com.sun.codemodel.JDefinedClass, javax.lang.model.element.Element, com.travelers.smart.dao.generator.processor.model.EntityInfo)
	 */
	@Override
	protected JMethod createQueryMethod(final JCodeModel model, final JClass entityJClass, final JDefinedClass _class,
		final Element fieldElement, final EntityInfo entityInfo, final EntityInformationMap entityInfoMap, MappingType mappingType) {
		JClass returnClass = model.ref(List.class).narrow(entityJClass);
		String methodName = "findAll";
		int queryMethodModifiers = _class.isInterface() ? JMod.NONE : JMod.PUBLIC;
		return _class.method(queryMethodModifiers, returnClass, methodName);
	}

	/* (non-Javadoc)
	 * @see com.travelers.smart.dao.generator.processor.method.BaseQueryMethodGenerator#createMethodBody(com.sun.codemodel.JMethod, com.sun.codemodel.JClass, com.sun.codemodel.JCodeModel, javax.lang.model.element.Element, com.sun.codemodel.JFieldVar, com.travelers.smart.dao.generator.processor.model.EntityInfo)
	 */
	@Override
	protected void createMethodBody(final JMethod method, final JClass entityJClass, final JCodeModel model, final Element fieldElement,
		final JFieldVar entityManagerField, final EntityInfo entityInfo, final EntityInformationMap entityInfoMap, MappingType mappingType) {
		method.annotate(Override.class);
		JBlock body = method.body();
		JClass cbClass = model.ref(CriteriaBuilder.class);
		JInvocation invoke = JExpr._this().invoke("getCriteriaBuilder");
		JVar criteriaBuilderVar = body.decl(cbClass, "cb", invoke);
		JInvocation criteriaQueryInvoke = criteriaBuilderVar.invoke("createQuery");
		criteriaQueryInvoke.arg(entityJClass.staticRef("class"));
		JClass criteriaQueryRef = model.ref(CriteriaQuery.class);
		JClass cqNarrow = criteriaQueryRef.narrow(entityJClass);
		JVar cqVar = body.decl(cqNarrow, "cq", criteriaQueryInvoke);
		JInvocation fromInvoke = cqVar.invoke("from");
		fromInvoke.arg(entityJClass.staticRef("class"));
		body.add(fromInvoke);
		JInvocation getResultListInvoke = JExpr.invoke("getResultList").arg(cqVar);
		body._return(getResultListInvoke);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy