public class SkuCustomPersistenceHandler extends CustomPersistenceHandlerAdapter
Modifier and Type | Field and Description |
---|---|
protected CatalogService |
catalogService |
static String |
CONSOLIDATED_PRODUCT_OPTIONS_DELIMETER |
static String |
CONSOLIDATED_PRODUCT_OPTIONS_FIELD_NAME
This represents the field that all of the product option values will be stored in.
|
static String |
PRODUCT_OPTION_FIELD_PREFIX |
Constructor and Description |
---|
SkuCustomPersistenceHandler() |
Modifier and Type | Method and Description |
---|---|
Entity |
add(PersistencePackage persistencePackage,
DynamicEntityDao dynamicEntityDao,
RecordHelper helper) |
void |
applyAdditionalFetchCriteria(com.anasoft.os.daofusion.criteria.PersistentEntityCriteria queryCriteria,
com.anasoft.os.daofusion.cto.client.CriteriaTransferObject cto,
PersistencePackage persistencePackage)
Available override point for subclasses if they would like to add additional criteria via the queryCritiera.
|
static void |
applyProductOptionValueCriteria(com.anasoft.os.daofusion.criteria.PersistentEntityCriteria queryCriteria,
com.anasoft.os.daofusion.cto.client.CriteriaTransferObject cto,
PersistencePackage persistencePackage,
String skuPropertyPrefix) |
protected void |
associateProductOptionValuesToSku(Entity entity,
Sku adminInstance,
DynamicEntityDao dynamicEntityDao)
This initially removes all of the product option values that are currently related to the Sku and then re-associates
the
PrdouctOptionValue s |
protected Boolean |
canHandle(PersistencePackage persistencePackage,
OperationType operationType)
Since this is the default for all Skus, it's possible that we are providing custom criteria for this
Sku lookup.
|
Boolean |
canHandleAdd(PersistencePackage persistencePackage) |
Boolean |
canHandleFetch(PersistencePackage persistencePackage) |
Boolean |
canHandleInspect(PersistencePackage persistencePackage) |
Boolean |
canHandleUpdate(PersistencePackage persistencePackage) |
static FieldMetadata |
createConsolidatedOptionField(Class<?> inheritedFromType)
Creates the metadata necessary for displaying all of the product option values in a single field.
|
static FieldMetadata |
createIndividualOptionField(ProductOption option,
int order)
Creates an individual property for the specified product option.
|
DynamicResultSet |
fetch(PersistencePackage persistencePackage,
com.anasoft.os.daofusion.cto.client.CriteriaTransferObject cto,
DynamicEntityDao dynamicEntityDao,
RecordHelper helper) |
static Property |
getConsolidatedOptionProperty(List<ProductOptionValue> values)
Returns a
Property filled out with a delimited list of the values that are passed in. |
protected List<Property> |
getProductOptionProperties(Entity entity) |
static org.hibernate.Criteria |
getSkuCriteria(com.anasoft.os.daofusion.criteria.PersistentEntityCriteria criteria,
Class entityClass,
DynamicEntityDao deDao,
String skuPropertyPrefix)
Returns the Hibernate criteria with the proper table aliases based on the PersistentEntityCriteria representation.
|
static String |
getStringValueFromGetter(String propertyName,
Sku sku,
RecordHelper helper)
Under the covers this uses PropertyUtils to call the getter of the property name for the given Sku, then undergoes
conversion according to the formatters from helper.
|
DynamicResultSet |
inspect(PersistencePackage persistencePackage,
DynamicEntityDao dynamicEntityDao,
InspectHelper helper)
Build out the extra fields for the product options
|
Entity |
update(PersistencePackage persistencePackage,
DynamicEntityDao dynamicEntityDao,
RecordHelper helper) |
protected Entity |
validateUniqueProductOptionValueCombination(Product product,
List<Property> productOptionProperties,
Sku currentSku)
Ensures that the given list of
ProductOptionValue IDs is unique for the given Product |
canHandleRemove, remove, willHandleSecurity
public static String PRODUCT_OPTION_FIELD_PREFIX
public static String CONSOLIDATED_PRODUCT_OPTIONS_FIELD_NAME
public static String CONSOLIDATED_PRODUCT_OPTIONS_DELIMETER
protected CatalogService catalogService
public Boolean canHandleInspect(PersistencePackage persistencePackage)
canHandleInspect
in interface CustomPersistenceHandler
canHandleInspect
in class CustomPersistenceHandlerAdapter
public Boolean canHandleFetch(PersistencePackage persistencePackage)
canHandleFetch
in interface CustomPersistenceHandler
canHandleFetch
in class CustomPersistenceHandlerAdapter
public Boolean canHandleAdd(PersistencePackage persistencePackage)
canHandleAdd
in interface CustomPersistenceHandler
canHandleAdd
in class CustomPersistenceHandlerAdapter
public Boolean canHandleUpdate(PersistencePackage persistencePackage)
canHandleUpdate
in interface CustomPersistenceHandler
canHandleUpdate
in class CustomPersistenceHandlerAdapter
protected Boolean canHandle(PersistencePackage persistencePackage, OperationType operationType)
public DynamicResultSet inspect(PersistencePackage persistencePackage, DynamicEntityDao dynamicEntityDao, InspectHelper helper) throws ServiceException
inspect
in interface CustomPersistenceHandler
inspect
in class CustomPersistenceHandlerAdapter
ServiceException
public static FieldMetadata createConsolidatedOptionField(Class<?> inheritedFromType)
inheritedFromType
- which type this should appear on. This would normally be SkuImpl.class, but if you want to
display this field with a different entity then this should be that entitypublic static Property getConsolidatedOptionProperty(List<ProductOptionValue> values)
Property
filled out with a delimited list of the values that are passed in. This should be
invoked on a fetch and the returned property should be added to the fetched Entity
dto.values
- #createConsolidatedOptionField(Class)};
public static FieldMetadata createIndividualOptionField(ProductOption option, int order)
Creates an individual property for the specified product option. This should set up an enum field whose values will be the option values for this option. This is useful when you would like to display each product option in as its own field in a grid so that you can further filter by product option values.
In order for these fields to be utilized property on the fetch, in the GWT frontend you must use the
SkuBasicClientEntityModule
for your datasource.
option
- order
- public DynamicResultSet fetch(PersistencePackage persistencePackage, com.anasoft.os.daofusion.cto.client.CriteriaTransferObject cto, DynamicEntityDao dynamicEntityDao, RecordHelper helper) throws ServiceException
fetch
in interface CustomPersistenceHandler
fetch
in class CustomPersistenceHandlerAdapter
ServiceException
public static org.hibernate.Criteria getSkuCriteria(com.anasoft.os.daofusion.criteria.PersistentEntityCriteria criteria, Class entityClass, DynamicEntityDao deDao, String skuPropertyPrefix)
public static String getStringValueFromGetter(String propertyName, Sku sku, RecordHelper helper) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
propertyName
- - name of the property in relation to sku. Thus, if you are attempting to bring back the
sku name, the propertyName should just be 'name' rather than 'sku.name'.sku
- the Sku instance to get the value fromhelper
- a RecordHelper to help convert decimals and dates to their string equivalentsNoSuchMethodException
InvocationTargetException
IllegalAccessException
public static void applyProductOptionValueCriteria(com.anasoft.os.daofusion.criteria.PersistentEntityCriteria queryCriteria, com.anasoft.os.daofusion.cto.client.CriteriaTransferObject cto, PersistencePackage persistencePackage, String skuPropertyPrefix)
public void applyAdditionalFetchCriteria(com.anasoft.os.daofusion.criteria.PersistentEntityCriteria queryCriteria, com.anasoft.os.daofusion.cto.client.CriteriaTransferObject cto, PersistencePackage persistencePackage)
Available override point for subclasses if they would like to add additional criteria via the queryCritiera. At the point that this method has been called, criteria from the frontend has already been applied, thus allowing you to override from there as well.
Subclasses that choose to override this should also call this super method so that correct filter criteria can be applied for product option values
public Entity add(PersistencePackage persistencePackage, DynamicEntityDao dynamicEntityDao, RecordHelper helper) throws ServiceException
add
in interface CustomPersistenceHandler
add
in class CustomPersistenceHandlerAdapter
ServiceException
public Entity update(PersistencePackage persistencePackage, DynamicEntityDao dynamicEntityDao, RecordHelper helper) throws ServiceException
update
in interface CustomPersistenceHandler
update
in class CustomPersistenceHandlerAdapter
ServiceException
protected void associateProductOptionValuesToSku(Entity entity, Sku adminInstance, DynamicEntityDao dynamicEntityDao)
PrdouctOptionValue
sentity
- adminInstance
- protected Entity validateUniqueProductOptionValueCombination(Product product, List<Property> productOptionProperties, Sku currentSku)
ProductOptionValue
IDs is unique for the given Product
product
- productOptionValueIds
- currentSku
- - for update operations, this is the current Sku that is being updated; should be excluded from
attempting validationCopyright © 2013. All rights reserved.