001 package org.trails.component.search;
002
003 import org.apache.tapestry.BaseComponent;
004 import org.apache.tapestry.IMarkupWriter;
005 import org.apache.tapestry.IRequestCycle;
006 import org.apache.tapestry.annotations.InjectObject;
007 import org.apache.tapestry.annotations.Parameter;
008 import org.hibernate.criterion.DetachedCriteria;
009 import org.hibernate.criterion.Restrictions;
010 import org.trails.descriptor.IPropertyDescriptor;
011 import org.trails.validation.ValidatorTranslatorService;
012
013 public abstract class SimpleSearchField extends BaseComponent
014 {
015
016 @Parameter
017 public abstract Object getValue();
018
019 public abstract void setValue(Object Value);
020
021 @Parameter(required = false, defaultValue = "page.criteria")
022 public abstract DetachedCriteria getCriteria();
023
024 public abstract void setCriteria(DetachedCriteria Criteria);
025
026 @Parameter(required = true)
027 public abstract IPropertyDescriptor getPropertyDescriptor();
028
029 public abstract void setPropertyDescriptor(IPropertyDescriptor PropertyDescriptor);
030
031 @InjectObject("service:trails.core.ValidatorTranslatorService")
032 public abstract ValidatorTranslatorService getValidatorTranslatorService();
033
034 public void buildCriterion()
035 {
036 if (getValue() != null)
037 {
038 getCriteria().add(Restrictions.eq(getPropertyDescriptor().getName(), getValue()));
039 }
040 }
041
042 @Override
043 protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
044 {
045 // TODO Auto-generated method stub
046 super.renderComponent(writer, cycle);
047 if (cycle.isRewinding())
048 {
049 buildCriterion();
050 }
051 }
052
053
054 }