Package com.tll.server.rpc.listing

Source Code of com.tll.server.rpc.listing.AbstractListingSearchTranslator

/**
* The Logic Lab

* @author jpk
* @since Jun 25, 2009
*/
package com.tll.server.rpc.listing;

import java.util.List;

import com.tll.common.search.IListingSearch;
import com.tll.common.search.INamedQuerySearch;
import com.tll.criteria.Criteria;
import com.tll.criteria.IQueryParam;
import com.tll.criteria.ISelectNamedQueryDef;
import com.tll.model.IEntity;

/**
* AbstractListingSearchTranslator
* @author jpk
*/
public abstract class AbstractListingSearchTranslator implements IListingSearchTranslator {

  @Override
  public final Criteria<? extends IEntity> translateListingSearchCriteria(ListingContext context,
      IListingSearch listingSearch) throws IllegalArgumentException {
    if(listingSearch instanceof INamedQuerySearch) {
      // named query search
      final INamedQuerySearch nqs = (INamedQuerySearch) listingSearch;
      final ISelectNamedQueryDef queryDef = context.getNamedQueryResolver().resolveNamedQuery(nqs.getQueryName());
      if(queryDef == null) {
        throw new IllegalArgumentException("Unable to resolve named query: " + nqs.getQueryName());
      }
      return translateNamedQuerySearch(queryDef, nqs.getQueryParams());
    }
    // non-named query search
    return translateNonNamedQuery(context, listingSearch);
  }

  /**
   * Translates a named query client search.
   * @param queryDef
   * @param params
   * @return A new server-side {@link Criteria} instance
   */
  protected Criteria<? extends IEntity> translateNamedQuerySearch(ISelectNamedQueryDef queryDef, List<IQueryParam> params) {
    // default behavior
    return new Criteria<IEntity>(queryDef, params);
  }

  /**
   * Translates a non-named query search criteria instance.
   * @param context
   * @param listingSearch
   * @return A new server-side {@link Criteria} instance
   */
  protected abstract Criteria<? extends IEntity> translateNonNamedQuery(ListingContext context,
      IListingSearch listingSearch);
}
TOP

Related Classes of com.tll.server.rpc.listing.AbstractListingSearchTranslator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.