Modifier and Type | Class and Description |
---|---|
class |
AbstractCartService<P extends Product,S,R,U extends User>
Basic implementation for
CartService uses SESSION. |
class |
CartProductTransformService<P extends Product,CI extends CartItem>
|
interface |
CartService<P extends Product,SESSION,REQUEST,USER>
|
class |
CartUpdateStockChangeListener<P extends Product>
A Listener that can be plugged into
CartService ; that ensures SaleStrategy locks products selected by a user for the CartService.CART_TYPE_SHOPPING
so that other users may not purchase the same product that is in the shoppers cart. |
Modifier and Type | Class and Description |
---|---|
class |
ServletCartService<P extends Product,S extends javax.servlet.http.HttpSession,U extends IGenericEcomUser>
Servlet implementation for
CartService
Since this implements ChangeGenerator ; it will also generate Events of TypeOn Any change - Object[]{String cartType, Cart , sessionId as String, (optional) CartService method name}
On Any operation UPDATE/INSERT/REMOVE - Object[]{String cartType, Cart existingCart, Cart cartForOperation, sessionId as String, String operationName}
|
class |
WicketCartService<P extends Product,S extends EComSession<U>,U extends IGenericEcomUser>
Default implementation for
CartService uses EComSession (needs Apache Wicket)
Since this implements ChangeGenerator ; it will also generate Events of TypeOn Any change - Object[]{String cartType, Cart , sessionId as String, (optional) CartService method name}
On Any operation UPDATE/INSERT/REMOVE - Object[]{String cartType, Cart existingCart, Cart cartForOperation, sessionId as String, String operationName}
|
Modifier and Type | Class and Description |
---|---|
class |
BastardProductFilter<P extends Product>
During ETL it is possible that a USER may apply an UPDATE instead on an INSERT on some records
This can technically lead to a product not updating or deriving parent info if parent info is not updated during Updates and gives rise to Bastard Products (ones without any parents) The default implementation of this Filter simply rejects any such records to ensure they don't get into the system. |
class |
ExcelRowToEcomProductTransformer<P extends Product>
|
class |
ExistingProductLookup<T extends Product>
Check to see if a
Product already exists, and if so load it based on various other settings provided by this class. |
class |
FileToProductLookup<P extends Product>
|
class |
FileToProductsTransformer<P extends Product>
Allow to update an existing Entitie(s) i.e.
|
class |
ModeAwareProductPersistTransformer<P extends Product>
Persist a Product/Product(s) and return the Persisted Entity
|
class |
ProductNameTransformer<T extends Product>
Product Name has some restrictions like being unique etc, it cannot be always what is supplied raw; so it is combines with the
Product.getProductCode()
to ensure it is unique. |
class |
ProductPersistTransformer<P extends Product>
Persist a Product/Product(s) and return the Persisted Entity
|
Modifier and Type | Class and Description |
---|---|
class |
OrderItem<P extends Product>
Maintains details about an Order Item
|
Modifier and Type | Method and Description |
---|---|
protected void |
OrderItemProductChangeListener.beforeDelProduct(Product product) |
protected void |
OrderItemProductChangeListener.beforeDelProductSubHierarchy(Product category) |
Modifier and Type | Method and Description |
---|---|
<P extends Product> |
OrderProcessHelper.deriveOrder(Map<P,Number> productQuantityMap,
IGenericEcomUser user,
String currency,
Class<org.apache.wicket.Page> pageClass,
O existingOrderObject,
String orderId,
Map itemProperties,
boolean persist,
org.apache.commons.collections.Transformer transformer,
org.apache.wicket.RequestCycle requestCycle,
org.apache.wicket.Response response)
Derive an order object
THIS METHOD IS A HELPER, IT WILL NOT FILL ALL DETAILS LIKE PROMOTIONS, OrderItem specific additional properties etc. |
<P extends Product> |
OrderProcessHelper.deriveOrder(Map<P,Number> productQuantityMap,
IGenericEcomUser user,
String currency,
Class<org.apache.wicket.Page> pageClass,
O existingOrderObject,
String orderId,
Map itemProperties,
org.apache.wicket.RequestCycle requestCycle,
org.apache.wicket.Response response)
Derive a persistent created or create a persistent order
THIS METHOD IS A HELPER, IT WILL NOT FILL ALL DETAILS LIKE PROMOTIONS, OrderItem specific additional properties etc. |
Modifier and Type | Class and Description |
---|---|
class |
OrderViaEmail<P extends Product>
Payment Method : Order via Email (not really a payment method, allows users to Send a auto-populated email with their order and user details)
Uses a Publisher to publish an email using the following default DataMap that is provided to the Publisher.addContext(Map)
user - IGenericEcomUser
productQuantityMap - Map<P, count as Integer>
shippingAddress - user.getAddress(Type.SHIPPING)
billingAddress - user.getAddress(Type.BILLING)
Note: You may modify OrderViaEmail.emailOrderpublisher after its populated by overriding OrderViaEmail.updatePublisher() |
Modifier and Type | Method and Description |
---|---|
Product |
Product.clone() |
Modifier and Type | Class and Description |
---|---|
class |
FinalPriceFieldGenerator<P extends Product>
|
class |
SizeDimensionFieldGenerator<P extends Product>
Size is a complex entity. |
class |
SizeFieldGenerator<P extends Product>
Size is a complex entity. |
Modifier and Type | Class and Description |
---|---|
class |
AbstractChargeStrategy<P extends Product,U extends User>
Default Strategy implementation for all
ChargeStrategy |
class |
AbstractStrategy<P extends Product,U extends User>
Default Strategy implementation for any
Strategy |
interface |
ChargeStrategy<P extends Product,U extends User>
Using rules calculate charge for Categories of products or Products; these rules/algorithms/scripts maybe for tax, shipping, tax+shipping etc.
|
interface |
CumulativeChargeStrategy<P extends Product,U extends User>
Using rules to calculate data where the result may requires Cumulative analysis of all Products and not just on a per product
|
class |
DefaultDiscountStrategy<P extends Product,U extends User>
Calculate Any Discounts on Order; default impl there is no discount (all methods return null)
When discount is applied, then Amount.getDiscount() should be a positive value, and the same amount should be negative in Amount.getTotal()
so that Amount.add(Amount) of discount value results in proper calculation. |
class |
DefaultLockStrategy<P extends Product,U extends IGenericEcomUser>
A default implementation for
LockStrategy
WARNING : This implementation is suited for a Single VM type installation, not for a multi-node architecture. |
class |
DefaultOrderStrategy<P extends Product,U extends IGenericEcomUser,O extends Order<I>,I extends OrderItem>
Allow amalgamation of other strategies to a List of Products that constitute an Order
and produce a Persistent Order
|
class |
DefaultPackagingStrategy<P extends Product,U extends User>
Calculate Packaging cost; default impl expects packagingData attribute/field to contain the value as a number
Costs per unit are simple multiplied by Quantity |
class |
DefaultPromotionStrategy<P extends Product,U extends IGenericEcomUser>
PromotionStrategy for this applicationThis default impl assumes a context of Object[0] = email, Object[1] = couponCode |
class |
DefaultSaleStrategy<P extends Product,U extends User>
By Default simple process the data coming and spit it back out.
|
class |
DefaultShippingStrategy<P extends Product,U extends User>
Calculate Tax; default impl expects shippingData to contain the value as a number
Costs per unit are simple multiplied by Quantity |
class |
DefaultSubOrderStrategy<P extends Product,U extends IGenericEcomUser,O extends SubOrder<O,I>,I extends OrderItem>
Extension to
DefaultOrderStrategy to support additional SubOrder specific common cases. |
class |
DefaultTaxStrategy<P extends Product,U extends User>
Calculate Tax; default impl expects taxData attribute/field to contain the value as % of basePrice
Costs per unit are simple multiplied by Quantity Default tax calculation = (Total Amount * tax%) / 100 |
interface |
LockStrategy<P extends Product,U extends User>
A Support strategy on how concurrent purchases will be handled using
LockStrategy.Lock
SaleStrategy and OrderStrategy would be typical consumers of this Strategy; as opposed to other Strategies
that find direct business use cases. |
interface |
OrderStrategy<P extends Product,U extends IGenericEcomUser,O extends Order<? extends I>,I extends OrderItem>
Strategy for Order |
interface |
PromotionStrategy<P extends Product,U extends User>
What are the possible payment options for an
Order
Note: Because Promotions are linked to users being eligible, this Strategies methods may throw ValidationException that should be explicitly handled. |
interface |
SaleStrategy<P extends Product,U extends User>
Strategies to sell/price a product etc based on User Details and Product
|
interface |
TaxStrategy<P extends Product,U extends User>
Tax Strategy
|
Modifier and Type | Class and Description |
---|---|
class |
StrategiesService<P extends Product,U extends IGenericEcomUser,CONTEXT>
THIS CLASS IS WICKET DEPENDENT AS IT INTERNALLY USES A WICKET
EComSession
Web Service Layer for accessing Strategies over a users Session (Guest or Logged in)
This can be used to compute things like Packaging costs, Tax, Shipping costs etc. |
Copyright © 2018. All rights reserved.