[jboss-user] [JBoss Seam] - Re: Trinidad SelectManyShuttle with seam ?

gjeudy do-not-reply at jboss.com
Mon Feb 4 16:37:44 EST 2008


Yes I figured later you can use both trinidad and richfaces.

I switched to rich:listShuttle component which did not require me any extra coding, I just kept using the same backing bean. The rich:listShuttle works as expected, I had to add the seam entity converter in converter attribute though, converter="#{org.jboss.seam.ui.entityConverter}"

Below is the backing bean code in case you still want to look at it.

package a.b.c;
  | 
  | import java.text.ParseException;
  | import java.util.Calendar;
  | import java.util.Date;
  | import java.util.List;
  | 
  | import javax.ejb.Remove;
  | import javax.ejb.Stateful;
  | import javax.persistence.EntityManager;
  | import javax.persistence.PersistenceContext;
  | 
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Destroy;
  | import org.jboss.seam.annotations.Factory;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Logger;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Out;
  | import org.jboss.seam.annotations.Scope;
  | import org.jboss.seam.core.FacesMessages;
  | import org.jboss.seam.log.Log;
  | 
  | import a.b.c.d.RefReleasePackage;
  | import a.b.c.d.e.RefReleasePackageItemImpl;
  | import a.b.c.d.ReferenceDomain;
  | import a.b.c.d.e.RefDomainSearchActionLocal;
  | import a.b.c.d.ReleasePackageService;
  | import a.b.c.d.CommonUtils;
  | import a.b.c.d.RDMConstants;
  | 
  | @Stateful
  | @Name("refDomainSearch")
  | @Scope(ScopeType.SESSION)
  | public class RefDomainSearchActionBean implements RefDomainSearchActionLocal {
  | 
  | 	@PersistenceContext(unitName = RDMConstants.RDM_PERSISTENCE_UNIT_NAME)
  | 	private EntityManager em;
  | 
  | 	@Logger
  | 	private Log log;
  | 	
  | 	private String searchString;
  | 	private int pageSize;
  | 	private int page;
  | 	
  | 	private List<ReferenceDomain> refDomains;
  | 
  | 	private List<ReferenceDomain> selectedRefDomains;
  | 	
  | 	
  | 	@In(required = true, create=true)
  | 	@Out(required = true, scope = ScopeType.SESSION)
  | 	private ReleasePackageService releasePackageService;
  | 	
  | 	@In(required = false)
  | 	@Out(required = false)
  | 	private RefReleasePackage relPkg;
  | 	
  | 	public void find() {
  | 		page = 0;
  | 		queryRefDomains();
  | 	}
  | 
  | 	public void nextPage() {
  | 		page++;
  | 		queryRefDomains();
  | 	}
  | 
  | 	public boolean isNextPageAvailable() {
  | 		return refDomains != null && refDomains.size() == pageSize;
  | 	}
  | 
  | 	/**
  | 	 * TODO Could write this HQL using Criteria programming model instead. 
  | 	 * Then you get compile time validation of the query.
  | 	 */
  | 	@SuppressWarnings("unchecked")
  | 	public void queryRefDomains() {
  | 		 
  | 		// TODO optimize the fetching takes around 25 secs today.
  | 		refDomains = em.createQuery(
  | 						"select rd from ReferenceDomainImpl rd " +
  | 						"where lower(rd.domainName) like #{pattern} or lower(rd.domainDescription) like #{pattern} " +
  | 						"or exists ( from ReferenceDomainInstanceImpl rdi " +
  | 									"where rdi.referenceDomain.id = rd.id " +
  | 									"and " +
  | 										"(lower(rdi.codeValue) like #{pattern} " +
  | 										"or lower(rdi.shortDescription) like #{pattern} " +
  | 										"or lower(rdi.description) like #{pattern}))" +
  | 										"order by rd.domainName")
  | 				.setMaxResults(pageSize).setFirstResult(page * pageSize).getResultList();
  | 	}
  | 
  | 	public int getPageSize() {
  | 		return pageSize;
  | 	}
  | 
  | 	public void setPageSize(int pageSize) {
  | 		this.pageSize = pageSize;
  | 	}
  | 
  | 	@Factory(value = "pattern", scope = ScopeType.EVENT)
  | 	public String getSearchPattern() {
  | 		return searchString == null ? "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
  | 	}
  | 
  | 	public String getSearchString() {
  | 		return searchString;
  | 	}
  | 
  | 	public void setSearchString(String searchString) {
  | 		this.searchString = searchString;
  | 	}
  | 
  | 	
  | 	public List<ReferenceDomain> getRefDomains() {
  | 		return refDomains;
  | 	}
  | 
  | 	public List<ReferenceDomain> getSelectedRefDomains() {
  | 		return selectedRefDomains;
  | 	}
  | 	
  | 	public void setSelectedRefDomains(List<ReferenceDomain> selectedRefDomains) {
  | 		this.selectedRefDomains = selectedRefDomains;
  | 	}
  | 	
  | 	/**
  | 	 * TODO remove from bean, just added for tests.
  | 	 * @return
  | 	 */
  | 	public String updatePackageItems() {
  | 		log.info("Inside ReleasePackageAction.updatePackageItems");
  | 
  | 		Date toDate = null;
  | 		try {
  | 			toDate = CommonUtils.getSQLDateFromString(RDMConstants.DEFAULT_VALID_TO_DT);
  | 		} catch (ParseException pe) {
  | 			throw new RuntimeException(pe);
  | 		}
  | 		
  | 		for (ReferenceDomain refDomain : selectedRefDomains) {
  | 			RefReleasePackageItemImpl item = new RefReleasePackageItemImpl(refDomain, relPkg, Calendar.getInstance().getTime(), toDate);
  | 			
  | 			relPkg.addRefReleasePackageItem(item);
  | 		}
  | 		selectedRefDomains.clear();
  | 		relPkg = releasePackageService.updateReleasePackage(relPkg);
  | 		FacesMessages.instance().add("Release Package: #{relPkg.releasePackageNm} is successfully updated");
  | 		return "/editPackageItems.seam";
  | 	}
  | 	
  | 	@Destroy
  | 	@Remove
  | 	public void destroy() {
  | 	}
  | }

Thanks,
-Guillaume

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4126355#4126355

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4126355



More information about the jboss-user mailing list