Administer > Manage instances > WCS instance > Business Object thresholds


Sample Business Object thresholds programming patterns

The following are a few examples on how to access the configuration files, perform the unbounded condition check, and how to throw an exception in an event of a violation.


Access threshold property

String compId = "com.ibm.commerce.storelocator";
 ComponentConfiguration config = ComponentConfigurationRegistry.instance().getComponentConfiguration(compId);
 String mapWidth = config.getValueByConfigGroupingNameAndPropertyName("map", "mapWidth");

The above example illustrates a simple comparison against the threshold.


Check against threshold

/**
 * Returns whether the threshold in the given context has been exceeded.
 * The default behaviour passes if there is no threshold.  Subclasses should
 * override this to provide additional checking using additional
 * information.
 *
 * @return  True if the threshold was exceeded, false otherwise.
*/
public boolean isThresholdAcceptable() 
{
    final String METHODNAME = "isThresholdAcceptable";
    ECTrace.entry(ECTraceIdentifiers.COMPONENT_ORDER, CLASSNAME, METHODNAME); 
    boolean passed = threshold == null || threshold.compareTo(BigDecimal.ZERO)
< 0; 

    if (ECTrace.traceEnabled(ECTraceIdentifiers.COMPONENT_ORDER)) 
    {
        ECTrace.exit(ECTraceIdentifiers.COMPONENT_ORDER, CLASSNAME, METHODNAME, Boolean.valueOf(passed));     
    }

    return passed; 
}

The following section is another example of how to work with the default page size and maximum page size. The behavior is shown in the following pseudo code:

// enter a point in the code where we need to paginate

maxItems = getObject.getMaxItems()
if (maxItems == null) 
{
    maxItems = getDefaultPageSize()
}

maximumPageSize = getMaximumPageSize()
if (maximumPageSize != null && (maxItems == null || maxItems > maximumPageSize)) 
{
    maxItems = maximumPageSize
}

if (maxItems == null || maxItems
< 0) 
{
    maxItems = 0
}

// use the startNumber and maxItems to choose the items in the page to return

In addition, considering the following cases where values are not defined:

  1. defaultPageSize exists and maxPageSize exists

    1. if defaultPageSize == maxPageSize – the page size will be bounded to the maxPageSize whether pagination parameters are set or not.

    2. if defaultPageSize < maxPageSize – if no parameters are set, defaultPageSize will be used, otherwise the parameters will be bounded by maxPageSize.

    3. if defaultPageSize > maxPageSize – the page size will be bounded to the maxPageSize whether pagination parameters are set or not.

  2. defaultPageSize exists but maxPageSize does not exist – the page size will be bounded by defaultPageSize only if there are no pagination parameters set.

  3. defaultPageSize does not exist, but maxPageSize exists – the page size will be bounded to maxPageSize whether pagination parameters are set or not.

  4. defaultPageSize does not exist and maxPageSize does not exist – no bound on the page size will be enforced.


Handle exception

Object[] params = new Object[] {getThreshold(), getNumAdded(), getNumCurrent()}; 
throw new ECApplicationException(getUserErrorMessage(), CLASSNAME, "throwDefaultException", params);


Log violation

/**
 * Logs a message to the administrator about the threshold being exceeded.
 * This method should be called when it is known that a threshold has been
 * exceeded.
 *
 * @param logger
 *          The logger to use to notify the administrator.  Cannot be null.
 * @param methodName
 *          The name of the method which is calling this.  Cannot be null
 *          or empty.
*/
public void log(Logger logger, String methodName) 
{
    if (LoggingHelper.isTraceEnabled(logger)) 
    {
    
        Object[] params = new Object[] {getThreshold(), getNumAdded(), getNumCurrent (), getUserID(), getStoreID(), getOrderID()}; 
        logger.logp(Level.WARNING, logger.getName(), methodName, getAdminErrorMessage().getMessageKey(), params);     
    }
}


Related concepts

Business Object thresholds


Related tasks

Set allowable ranges for Business Objects

Related reference

Data service layer (DSL) considerations when setting allowable ranges for Business Objects


+

Search Tips   |   Advanced Search