@Component(value="blSkuCustomPersistenceHandler") public class SkuCustomPersistenceHandler extends CustomPersistenceHandlerAdapter
| Modifier and Type | Field and Description |
|---|---|
protected PersistenceModule |
adornedPersistenceModule |
protected int |
cacheEntityMetaDataTtl |
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.
|
protected javax.persistence.EntityManager |
em |
protected SkuCustomPersistenceHandlerExtensionManager |
extensionManager |
protected long |
lastCacheFlushTime |
protected static Map<String,Map<String,FieldMetadata>> |
METADATA_CACHE |
static String |
PRODUCT_OPTION_FIELD_PREFIX |
protected boolean |
useSku |
DEFAULT_ORDER| Constructor and Description |
|---|
SkuCustomPersistenceHandler() |
| Modifier and Type | Method and Description |
|---|---|
Entity |
add(PersistencePackage persistencePackage,
DynamicEntityDao dynamicEntityDao,
RecordHelper helper) |
void |
applyAdditionalFetchCriteria(List<FilterMapping> filterMappings,
CriteriaTransferObject cto,
PersistencePackage persistencePackage)
Available override point for subclasses if they would like to add additional criteria via the queryCritiera.
|
void |
applyProductOptionValueCriteria(List<FilterMapping> filterMappings,
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
ProductOptionValues |
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)
Is this persistence handler capable of dealing with an add request from the admin
|
Boolean |
canHandleFetch(PersistencePackage persistencePackage)
Is this persistence handler capable of dealing with an fetch request from the admin
|
Boolean |
canHandleInspect(PersistencePackage persistencePackage)
Is this persistence handler capable of dealing with an inspect request from the admin
|
Boolean |
canHandleUpdate(PersistencePackage persistencePackage)
Is this persistence handler capable of dealing with an update request from the admin
|
FieldMetadata |
createConsolidatedOptionField(Class<?> inheritedFromType)
Creates the metadata necessary for displaying all of the product option values in a single field.
|
FieldMetadata |
createIndividualOptionField(ProductOption option,
int order)
Creates an individual property for the specified product option.
|
DynamicResultSet |
fetch(PersistencePackage persistencePackage,
CriteriaTransferObject cto,
DynamicEntityDao dynamicEntityDao,
RecordHelper helper) |
protected void |
filterOutProductMetadata(Map<String,FieldMetadata> map) |
Property |
getBlankConsolidatedOptionProperty() |
Property |
getConsolidatedOptionProperty(Collection<ProductOptionValue> values)
Returns a
Property filled out with a delimited list of the values that are passed in. |
protected String[] |
getPolymorphicClasses(Class<?> clazz) |
protected List<Property> |
getProductOptionProperties(Entity entity) |
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 boolean |
useCache() |
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, getMetadata, getOrder, getResultSet, remove, willHandleSecuritypublic static String PRODUCT_OPTION_FIELD_PREFIX
@Value(value="${solr.index.use.sku}")
protected boolean useSku
@Value(value="${cache.entity.dao.metadata.ttl}")
protected int cacheEntityMetaDataTtl
protected long lastCacheFlushTime
protected static final Map<String,Map<String,FieldMetadata>> METADATA_CACHE
protected PersistenceModule adornedPersistenceModule
protected SkuCustomPersistenceHandlerExtensionManager extensionManager
public static String CONSOLIDATED_PRODUCT_OPTIONS_FIELD_NAME
public static String CONSOLIDATED_PRODUCT_OPTIONS_DELIMETER
protected CatalogService catalogService
protected javax.persistence.EntityManager em
public Boolean canHandleInspect(PersistencePackage persistencePackage)
CustomPersistenceHandlercanHandleInspect in interface CustomPersistenceHandlercanHandleInspect in class CustomPersistenceHandlerAdapterpersistencePackage - details about the inspect operationpublic Boolean canHandleFetch(PersistencePackage persistencePackage)
CustomPersistenceHandlercanHandleFetch in interface CustomPersistenceHandlercanHandleFetch in class CustomPersistenceHandlerAdapterpersistencePackage - details about the fetch operationpublic Boolean canHandleAdd(PersistencePackage persistencePackage)
CustomPersistenceHandlercanHandleAdd in interface CustomPersistenceHandlercanHandleAdd in class CustomPersistenceHandlerAdapterpersistencePackage - details about the add operationpublic Boolean canHandleUpdate(PersistencePackage persistencePackage)
CustomPersistenceHandlercanHandleUpdate in interface CustomPersistenceHandlercanHandleUpdate in class CustomPersistenceHandlerAdapterpersistencePackage - details about the update operationprotected boolean useCache()
protected Boolean canHandle(PersistencePackage persistencePackage, OperationType operationType)
public DynamicResultSet inspect(PersistencePackage persistencePackage, DynamicEntityDao dynamicEntityDao, InspectHelper helper) throws ServiceException
inspect in interface CustomPersistenceHandlerinspect in class CustomPersistenceHandlerAdapterServiceExceptionprotected void filterOutProductMetadata(Map<String,FieldMetadata> map)
public 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 Property getConsolidatedOptionProperty(Collection<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 Property getBlankConsolidatedOptionProperty()
Property corresponding to the CONSOLIDATED_PRODUCT_OPTIONS_FIELD_NAMEpublic 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 for your datasource.
option - order - public DynamicResultSet fetch(PersistencePackage persistencePackage, CriteriaTransferObject cto, DynamicEntityDao dynamicEntityDao, RecordHelper helper) throws ServiceException
fetch in interface CustomPersistenceHandlerfetch in class CustomPersistenceHandlerAdapterServiceExceptionpublic void applyProductOptionValueCriteria(List<FilterMapping> filterMappings, CriteriaTransferObject cto, PersistencePackage persistencePackage, String skuPropertyPrefix)
public void applyAdditionalFetchCriteria(List<FilterMapping> filterMappings, 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 CustomPersistenceHandleradd in class CustomPersistenceHandlerAdapterServiceExceptionpublic Entity update(PersistencePackage persistencePackage, DynamicEntityDao dynamicEntityDao, RecordHelper helper) throws ServiceException
update in interface CustomPersistenceHandlerupdate in class CustomPersistenceHandlerAdapterServiceExceptionprotected void associateProductOptionValuesToSku(Entity entity, Sku adminInstance, DynamicEntityDao dynamicEntityDao)
ProductOptionValuesentity - adminInstance - protected Entity validateUniqueProductOptionValueCombination(Product product, List<Property> productOptionProperties, Sku currentSku)
ProductOptionValue IDs is unique for the given Product.
If sku browsing is enabled, then it is assumed that a single combination of ProductOptionValue IDs
is not unique and more than one Sku could have the exact same combination of ProductOptionValue IDs.
In this case, the following validation is skipped.product - productOptionValueIds - currentSku - - for update operations, this is the current Sku that is being updated; should be excluded from
attempting validationCopyright © 2017. All rights reserved.