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

org.trails.component.search.SearchForm Maven / Gradle / Ivy

package org.trails.component.search;

import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.annotations.InjectObject;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.components.Block;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.event.PageEvent;
import org.apache.hivemind.util.PropertyUtils;
import org.hibernate.criterion.DetachedCriteria;
import org.trails.component.ClassDescriptorComponent;
import org.trails.descriptor.BlockFinder;
import org.trails.descriptor.IClassDescriptor;
import org.trails.descriptor.IPropertyDescriptor;
import org.trails.page.HibernateListPage;
import org.trails.page.PageResolver;
import org.trails.page.TrailsPage.PageType;

public abstract class SearchForm extends ClassDescriptorComponent implements PageBeginRenderListener
{

	@InjectObject("service:trails.core.PageResolver")
	public abstract PageResolver getPageResolver();

	@InjectObject("spring:searchBlockFinder")
	public abstract BlockFinder getBlockFinder();

	@Parameter(name = "classDescriptor", required = false, defaultValue = "ognl:page.classDescriptor")
	public abstract IClassDescriptor getClassDescriptor();

	public abstract void setClassDescriptor(IClassDescriptor ClassDescriptor);

	public abstract IPropertyDescriptor getPropertyDescriptor();

	public abstract void setPropertyDescriptor(IPropertyDescriptor PropertyDescriptor);

	public abstract DetachedCriteria getCriteria();

	public abstract void setCriteria(DetachedCriteria Criteria);

	public void search(IRequestCycle cycle)
	{
		HibernateListPage listPage = (HibernateListPage) getPageResolver().resolvePage(cycle,
			getClassDescriptor().getType(),
			PageType.List);
		listPage.setCriteria(getCriteria());
		cycle.activate(listPage);
	}

	public Block getBlock()
	{
		Block searchBlock = getBlockFinder().findBlock(getPage().getRequestCycle(), getPropertyDescriptor());
		PropertyUtils.write(searchBlock.getPage(), "criteria", getCriteria());
		return searchBlock;
	}

	public void pageBeginRender(PageEvent event)
	{
		setCriteria(DetachedCriteria.forClass(getClassDescriptor().getType()));
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy