public class CustomerFilterOrderTargetBase extends MarketingCampaignElementTaskCmdImpl
Modifier and Type | Class and Description |
---|---|
protected class | CustomerFilterOrderTargetBase.OrderInfoArray
This class is used to place temporary data that can be passed between all the campaign elements when evaluating an e-Marketing Spot.
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String | ALL
Constant to specify that all must match (all, and)
|
static java.lang.String | ANY
Constant to specify that one or more can match (any, or)
|
static java.lang.String | CLASSNAME
The name of this class.
|
static java.lang.String | COPYRIGHT
IBM copyright notice field.
|
protected static java.lang.Double | DOUBLE_ONE
Constant to represent the value of "one" as a Double.
|
protected static java.lang.String | ELEMENT_DATE_VALUE_1
Constant to specify the date1 parameter in the element data.
|
protected static java.lang.String | ELEMENT_DAYS_VALUE
Constant to specify the days parameter in the element data.
|
protected static java.lang.Integer | INTEGER_ONE
Constant to represent the value of "one" as an Integer.
|
protected static int | ORDER_AMOUNT_TOTAL
Constant to specify the index into the order information array of the order amount.
|
protected static int | ORDER_INFO_ARRAY
Constant to specify the index into the order information array of the order details.
|
protected static int | ORDER_NUMBER
Constant to specify the index into the order information array of the quantity.
|
protected static java.lang.String | PARAM_AMOUNT_CURRENCY
Constant to specify the amountCurrency parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_AMOUNT_OPERATOR_1
Constant to specify the amountOperator1 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_AMOUNT_OPERATOR_2
Constant to specify the amountOperator2 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_AMOUNT_VALUE_1
Constant to specify the amountValue1 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_AMOUNT_VALUE_2
Constant to specify the amountValue2 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_ANY_OR_ALL
Constant to specify the anyOrAll parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_CATEGORY_ID_LIST
Constant to specify the categoryIdList parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_CATENTRY_ID_LIST
Constant to specify the catentryIdList parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_CONTAINS_OPERATOR
Constant to specify the containsOperator parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_DATE_OPERATOR_1
Constant to specify the dateOperator1 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_DATE_OPERATOR_2
Constant to specify the dateOperator2 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_DATE_VALUE_1
Constant to specify the dateValue1 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_DATE_VALUE_2
Constant to specify the dateValue2 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_DAYS_OPERATOR
Constant to specify the daysOperator parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_DAYS_VALUE
Constant to specify the daysValue parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_QUANTITY_OPERATOR_1
Constant to specify the quantityOperator1 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_QUANTITY_OPERATOR_2
Constant to specify the quantityOperator2 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_QUANTITY_VALUE_1
Constant to specify the quantityValue1 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_QUANTITY_VALUE_2
Constant to specify the quantityValue2 parameter in the task command input parameters.
|
protected static java.lang.String | PARAM_TYPE
Constant to specify the type parameter in the task command input parameters.
|
static java.lang.String | TYPE_PURCHASE_HISTORY
Constant to specify to evaluate the purchase history
|
static java.lang.String | TYPE_SHOPCART
Constant to specify to evaluate the shopping cart
|
Constructor and Description |
---|
CustomerFilterOrderTargetBase()
This method is the default constructor.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Long[] | getMemberIdsForOrderQuery(java.lang.String type)
This method returns the member IDs to use with any order queries.
|
java.util.List | getOrder(java.lang.String type, java.util.List order, java.lang.String currency, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2)
This method returns the total value of the user's order, and the quantity (unique order items for shopping cart, number of orders for purchase history) that are within the specified dates.
|
java.util.List | getOrderCategory(java.lang.String type, java.util.List order, java.lang.String categoryId, java.lang.String currency, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2)
This method returns the total value of the user's order, and the quantity, associated with the items contained within the specified category, that are within the specified dates.
|
OrderInfo[] | getOrderData(java.lang.String type, java.lang.Integer storeId, java.lang.Long[] memberIds, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2, boolean getItems)
This method returns the OrderInfo objects that represent a customer's order or orders.
|
java.util.List | getOrderProduct(java.lang.String type, java.util.List order, java.lang.String catentryId, java.util.List childCatentries, java.lang.String currency, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2)
This method returns the total value of the user's order, and the quantity, associated with the specified product or item, that are within the specified dates.
|
java.lang.String | getTemporarySharedDataCacheKey(java.lang.String type, java.lang.Integer storeId, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2)
This method creates a cache key used to store temporary data that can be passed between all the campaign elements when evaluating an e-Marketing Spot.
|
void | validateParameters(java.util.Map elementParameters, java.util.List validationErrors)
This method validates the numeric data for the element.
|
public static final java.lang.String COPYRIGHT
public static final java.lang.String CLASSNAME
public static final java.lang.String TYPE_SHOPCART
public static final java.lang.String TYPE_PURCHASE_HISTORY
public static final java.lang.String ANY
public static final java.lang.String ALL
protected static final int ORDER_AMOUNT_TOTAL
protected static final int ORDER_NUMBER
protected static final int ORDER_INFO_ARRAY
protected static final java.lang.String PARAM_TYPE
protected static final java.lang.String PARAM_ANY_OR_ALL
protected static final java.lang.String PARAM_CONTAINS_OPERATOR
protected static final java.lang.String PARAM_DAYS_OPERATOR
protected static final java.lang.String PARAM_DAYS_VALUE
protected static final java.lang.String PARAM_DATE_OPERATOR_1
protected static final java.lang.String PARAM_DATE_VALUE_1
protected static final java.lang.String PARAM_DATE_OPERATOR_2
protected static final java.lang.String PARAM_DATE_VALUE_2
protected static final java.lang.String PARAM_AMOUNT_OPERATOR_1
protected static final java.lang.String PARAM_AMOUNT_VALUE_1
protected static final java.lang.String PARAM_AMOUNT_OPERATOR_2
protected static final java.lang.String PARAM_AMOUNT_VALUE_2
protected static final java.lang.String PARAM_AMOUNT_CURRENCY
protected static final java.lang.String PARAM_QUANTITY_OPERATOR_1
protected static final java.lang.String PARAM_QUANTITY_VALUE_1
protected static final java.lang.String PARAM_QUANTITY_OPERATOR_2
protected static final java.lang.String PARAM_QUANTITY_VALUE_2
protected static final java.lang.String PARAM_CATENTRY_ID_LIST
protected static final java.lang.String PARAM_CATEGORY_ID_LIST
protected static final java.lang.String ELEMENT_DAYS_VALUE
protected static final java.lang.String ELEMENT_DATE_VALUE_1
protected static final java.lang.Double DOUBLE_ONE
protected static final java.lang.Integer INTEGER_ONE
public CustomerFilterOrderTargetBase()
public java.lang.Long[] getMemberIdsForOrderQuery(java.lang.String type)
private static final String TYPE_INTEREST_ITEM_LIST = "ii"; Long [] memberIds = null; if (TYPE_INTEREST_ITEM_LIST.equals(type)) { // only use the current user for the interest item list target Long memberId = getMemberId(true); if (memberId != null) { memberIds = new Long[] { memberId }; } } else { memberIds = super.getMemberIdsForOrderQuery(type); }
public OrderInfo[] getOrderData(java.lang.String type, java.lang.Integer storeId, java.lang.Long[] memberIds, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2, boolean getItems) throws java.lang.Exception
insert into dmeletemplate (dmeletemplate_id, dmelementtype_id, name, implxml) values (2000, 2, 'interestItemListCategoryContents', '<FlowElementImplementation type="Interest Item List Category Contents"> <Implementation invocationType="TaskCommand"> <Class name="com.ibm.mycompany.commands.elements.InterestItemListCategoryTargetTaskCmd"> <Argument name="type" value="ii"/> <Argument name="anyOrAll" value="MARKETING_anyOrAll"/> <Argument name="containsOperator" value="MARKETING_containsOperator"/> <Argument name="categoryIdList" value="MARKETING_categoryIdList"/> <Argument name="daysOperator" value="MARKETING_daysOperator"/> <Argument name="daysValue" value="MARKETING_days"/> <Argument name="dateOperator1" value="MARKETING_beforeAfterOnDate"/> <Argument name="dateValue1" value="MARKETING_date1"/> <Argument name="dateOperator2" value="MARKETING_beforeDate"/> <Argument name="dateValue2" value="MARKETING_date2"/> <Argument name="amountOperator1" value="MARKETING_amountOperator1"/> <Argument name="amountValue1" value="MARKETING_amountValue1"/> <Argument name="amountOperator2" value="MARKETING_amountOperator2"/> <Argument name="amountValue2" value="MARKETING_amountValue2"/> <Argument name="amountCurrency" value="MARKETING_amountCurrency"/> <Argument name="quantityOperator1" value="MARKETING_quantityOperator1"/> <Argument name="quantityValue1" value="MARKETING_quantityValue1"/> <Argument name="quantityOperator2" value="MARKETING_quantityOperator2"/> <Argument name="quantityValue2" value="MARKETING_quantityValue2"/> </Class> </Implementation> </FlowElementImplementation>'); private static final String TYPE_INTEREST_ITEM_LIST = "ii"; OrderInfo [] orderInfoList = null; if (TYPE_INTEREST_ITEM_LIST.equals(type)) { java.sql.Connection connection = com.ibm.commerce.scheduler.SchedulerDataAccessObject.getDataSourceConnection(); PreparedStatement interestItemSelectStmt = null; ResultSet interestItemSelectRs = null; try { // assume no storepath, only find interest item list in the current store final String INTEREST_ITEM_LIST_QUERY = "SELECT iitem.CATENTRY_ID, iitem.QUANTITY, iitem.LASTUPDATE FROM iitem iitem WHERE iitem.MEMBER_ID = ? and iitem.STOREENT_ID = ?"; StringBuffer strQuery = new StringBuffer(INTEREST_ITEM_LIST_QUERY); strQuery.append(ConditionUtil.getDateClause(" AND iitem.LASTUPDATE ", daysOperator, daysValue, dateOperator1, dateValue1, dateOperator2, dateValue2)); interestItemSelectStmt = connection.prepareStatement(strQuery.toString()); int index = 1; interestItemSelectStmt.setLong(index++, memberIds[0].longValue()); interestItemSelectStmt.setLong(index++, storeId.intValue()); interestItemSelectStmt = ConditionUtil.getOrderStatementDateParameters(interestItemSelectStmt, index, daysOperator, daysValue, dateOperator1, dateValue1, dateOperator2, dateValue2); interestItemSelectRs = interestItemSelectStmt.executeQuery(); if (interestItemSelectRs != null) { ArrayList tempResult = new ArrayList(1); while (interestItemSelectRs.next()) { OrderInfo orderItem = new OrderInfo(); int i = 1; orderItem.setCatentryId(interestItemSelectRs.getLong(i++)); orderItem.setQuantity(new Double(interestItemSelectRs.getDouble(i++))); if (ConditionUtil.OPERATOR_EQUAL_TO.equals(dateOperator1)) { if (ConditionUtil.checkEqualDate(dateValue1, interestItemSelectRs.getTimestamp(i++))) { tempResult.add(orderItem); } } else { tempResult.add(orderItem); } } orderInfoList = new OrderInfo[tempResult.size()]; orderInfoList = (OrderInfo[]) tempResult.toArray(orderInfoList); } } finally { // ... close interestItemSelectRs, interestItemSelectStmt, connection } } else { orderInfoList = super.getOrderData(type, storeId, memberIds, daysOperator, daysValue, dateOperator1, dateValue1, dateOperator2, dateValue2, getItems); } return orderInfoList;
public java.lang.String getTemporarySharedDataCacheKey(java.lang.String type, java.lang.Integer storeId, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2)
public java.util.List getOrder(java.lang.String type, java.util.List order, java.lang.String currency, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2)
public java.util.List getOrderProduct(java.lang.String type, java.util.List order, java.lang.String catentryId, java.util.List childCatentries, java.lang.String currency, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2)
public java.util.List getOrderCategory(java.lang.String type, java.util.List order, java.lang.String categoryId, java.lang.String currency, java.lang.String daysOperator, java.lang.String daysValue, java.lang.String dateOperator1, java.lang.String dateValue1, java.lang.String dateOperator2, java.lang.String dateValue2)
public void validateParameters(java.util.Map elementParameters, java.util.List validationErrors)