API Business Services - Base wheres

Implement a class extending the class com.noheto.restapi.APIBaseWhereBusinessServiceAdapter to add some where clause chunks to a query executed by an action.

Note that you have the alternative of prepared where services. It is possible to designate a context mapping of API-specific prepared where services, to have API-specific where bases.

See https://crossmedia.atlassian.net/wiki/spaces/WD/pages/10947772

Methods

  • getPreparedWhere(Context context): global base where

  • getPreparedWhere(Context context, String id): this method is to associate base where clause to a base where id.

Context

The context provides some informations useful for the specific development of the base where.

  • getRequest(): returns the http request wrapper, allowing to find parameters, headers, etc

  • getSurfer(): returns the current surfer

  • getLocale(): returns the current invocation locale

  • getServiceId(): returns the service if (see class com.noheto.restapi.ServiceId)

  • getConfigId(): returns the configuration id

  • getObjectName(): returns the object name

  • getMethod(): returns the HTTP method name (resolved, including in case of method overriding)

Base where ID

This ID refers to a base where fragment identifier. It’s a feature used only by legacy service :

  • You create IDs of base where fragment (by example PUBLISHED to mean “pstatus = 6”

  • In the view configuration, you specify what IDs are needed

  • When invoking the service, the adapter is invoked with these IDs. For each ones, the method must return the fragment. The service will combine every fragments and other base wheres to get one final base where.

The method getPreparedWhere(Context)

This method is always invoked. Test the context to decide if you need to provide a prepared where in return or not (return null in that case).

The getConfigId() in the context refers to the name of resource and getObjectName() the name of the corresponding DB object.

Example:

public class ExampleBaseWhere extends APIBaseWhereBusinessServiceAdapter { @Override public PreparedWhere getPreparedWhere(Context context) { switch(context.getServiceId()) { case ServiceId.DAM_ASSET: return buildAssetPreparedWhere(context); // the code of this method is not provided default: if ( context.getServiceId().startsWith("profil/") || context.getServiceId().startsWith("massimport/") ) { return super.getPreparedWhere(context); // no base where } else if ( context.getServiceId().endsWith("/read") ) { return PreparedWhere.load("pactivated=1 and pstatus=2"); } else if ( context.getServiceId().endsWith("/create") || context.getServiceId().endsWith("/update") || context.getServiceId().endsWith("/create_or_update") ) { return super.getPreparedWhere(context); // no base where } else { return buildPreparedWhere(context); // the code of this method is not provided } } /*if ( ServiceId.DAM_ASSET.equals(context.getServiceId()) ) { return PreparedWhere.load("pactivated=1 and pstatus=2"); }*/ } // ... }