Class PriceDataImportBatchHandler
- java.lang.Object
-
- com.broadleafcommerce.common.dataimport.AbstractImportBatchHandler
-
- com.broadleafcommerce.pricing.dataimport.PriceDataImportBatchHandler
-
- All Implemented Interfaces:
com.broadleafcommerce.common.dataimport.ImportBatchHandler
@DataRouteByKey("pricing") public class PriceDataImportBatchHandler extends com.broadleafcommerce.common.dataimport.AbstractImportBatchHandler- Author:
- Vitalii Voronkov (vvoronkov)
-
-
Constructor Summary
Constructors Constructor Description PriceDataImportBatchHandler(PriceDataConverter priceDataConverter, PriceDataService<PriceData> priceDataService, PriceListService<PriceList> priceListService, com.broadleafcommerce.common.extension.TypeFactory pricingFactory, com.broadleafcommerce.data.tracking.core.web.ContextRequestHydrator hydrator)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected com.broadleafcommerce.common.dataimport.util.PersistenceRequest<PriceData>buildPersistenceRequest(String requestedPriceDataTargetKey, org.apache.commons.lang3.tuple.Pair<PriceData,com.broadleafcommerce.common.dataimport.messaging.BatchRecord> requestedPriceDataAndBatchRecord, Map<String,PriceData> existingPriceDataByTargetKey)Determines id, operation type and builds thePersistenceRequestfor thePriceData.protected List<com.broadleafcommerce.common.dataimport.util.PersistenceRequest<PriceData>>buildPersistenceRequests(String priceListId, Map<String,org.apache.commons.lang3.tuple.Pair<PriceData,com.broadleafcommerce.common.dataimport.messaging.BatchRecord>> requestedPriceDataByTargetKey, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Builds the list ofPersistenceRequestfor thePriceData.booleancanHandle(com.broadleafcommerce.common.dataimport.messaging.BatchRequest batch)protected Map<String,org.apache.commons.lang3.tuple.Pair<PriceData,com.broadleafcommerce.common.dataimport.messaging.BatchRecord>>convertBatchRecords(com.broadleafcommerce.common.dataimport.messaging.BatchRequest batch, List<com.broadleafcommerce.common.dataimport.messaging.BatchCompletionRecord> erroredCompletions, String priceListId)Converts all of the batch records in the batch request to price data.protected Optional<PriceData>convertToPriceData(com.broadleafcommerce.common.dataimport.messaging.BatchRecord priceDataRecord, List<com.broadleafcommerce.common.dataimport.messaging.BatchCompletionRecord> allCompletions)StringgetDataRouteKey()protected Map<String,PriceData>getExistingPriceDataByTargetKey(List<com.broadleafcommerce.pricing.client.domain.PriceableTargetRef> priceableTargetRefs, String priceListId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)protected com.broadleafcommerce.common.dataimport.util.IdResolvergetIdResolver()protected static String[]getIMPORT_TYPES()protected com.broadleafcommerce.common.dataimport.util.OperationResolvergetOperationResolver()protected static StringgetPRICE_DATA_IMPORTED_ERROR()protected PriceDataConvertergetPriceDataConverter()protected PriceDataService<PriceData>getPriceDataService()PriceListService<PriceList>getPriceListService()com.broadleafcommerce.common.extension.TypeFactorygetPricingFactory()protected static StringgetTARGET_ID()protected static StringgetTARGET_TYPE()protected StringgetTargetKey(com.broadleafcommerce.pricing.client.domain.PriceableTargetRef target)protected StringgetTargetKey(String targetType, String targetId, String targetVendorRef)protected StringgetTargetKey(Map<String,String> row, String vendorRef)com.broadleafcommerce.common.dataimport.messaging.BatchCompletionhandle(com.broadleafcommerce.common.dataimport.messaging.BatchRequest batch)protected voidpersistPersistenceRequests(com.broadleafcommerce.common.dataimport.messaging.BatchRequest batch, List<com.broadleafcommerce.common.dataimport.util.PersistenceRequest<PriceData>> priceDataRequests, List<com.broadleafcommerce.common.dataimport.messaging.BatchCompletionRecord> allCompletions)Perform a persist of the parsed out domain specified asPersistenceRequests and adds persistence result toallCompletionsprotected voidsetIdResolver(com.broadleafcommerce.common.dataimport.util.IdResolver idResolver)protected voidsetOperationResolver(com.broadleafcommerce.common.dataimport.util.OperationResolver operationResolver)-
Methods inherited from class com.broadleafcommerce.common.dataimport.AbstractImportBatchHandler
addFailedConversionCompletions, buildAndAddCompletionRecords, buildContextInfo, buildCreateContextInfo, buildNonValidationErrorCompletions, buildReadContextInfo, buildSuccessfulCompletionsForRequest, buildUpdateContextInfo, buildValidationErrorCompletions, failRecordAndDependentsEarly, generateAndAddCompletions, generateAndAddCompletions, generateAndAddValidationErrorCompletions, getCompletionError, getFormattedEmbeddedValidationErrorString, getFormattedValidationErrorString, getHydrator, persist, persist, removeAndReturnFieldErrorsUnderPath
-
-
-
-
Constructor Detail
-
PriceDataImportBatchHandler
public PriceDataImportBatchHandler(PriceDataConverter priceDataConverter, PriceDataService<PriceData> priceDataService, PriceListService<PriceList> priceListService, com.broadleafcommerce.common.extension.TypeFactory pricingFactory, com.broadleafcommerce.data.tracking.core.web.ContextRequestHydrator hydrator)
-
-
Method Detail
-
handle
public com.broadleafcommerce.common.dataimport.messaging.BatchCompletion handle(com.broadleafcommerce.common.dataimport.messaging.BatchRequest batch)
-
convertBatchRecords
protected Map<String,org.apache.commons.lang3.tuple.Pair<PriceData,com.broadleafcommerce.common.dataimport.messaging.BatchRecord>> convertBatchRecords(com.broadleafcommerce.common.dataimport.messaging.BatchRequest batch, List<com.broadleafcommerce.common.dataimport.messaging.BatchCompletionRecord> erroredCompletions, String priceListId)
Converts all of the batch records in the batch request to price data.If conversion fails for a record, a
BatchCompletionRecordwill be created for it and added toerroredCompletions, and it will not appear in the converted result.If multiple batch records are attempting to import the same price data, all but the first will be considered errored. A
BatchCompletionRecordwill be created for the duplicates and added toerroredCompletions, and they will not appear in the converted result.- Parameters:
batch- the original record batcherroredCompletions- the list to which any errored completion records should be addedpriceListId- the id of the parent price list- Returns:
- a map of the converted
PriceDataand originalBatchRecordpairs grouped by target key value
-
persistPersistenceRequests
protected void persistPersistenceRequests(com.broadleafcommerce.common.dataimport.messaging.BatchRequest batch, List<com.broadleafcommerce.common.dataimport.util.PersistenceRequest<PriceData>> priceDataRequests, List<com.broadleafcommerce.common.dataimport.messaging.BatchCompletionRecord> allCompletions)Perform a persist of the parsed out domain specified asPersistenceRequests and adds persistence result toallCompletions- Parameters:
batch- the original record batchpriceDataRequests- a list of the price data persistence requestsallCompletions- the list to which the completion records should be added
-
getDataRouteKey
public String getDataRouteKey()
-
getTargetKey
protected String getTargetKey(com.broadleafcommerce.pricing.client.domain.PriceableTargetRef target)
-
getTargetKey
protected String getTargetKey(String targetType, String targetId, @Nullable String targetVendorRef)
-
convertToPriceData
protected Optional<PriceData> convertToPriceData(com.broadleafcommerce.common.dataimport.messaging.BatchRecord priceDataRecord, List<com.broadleafcommerce.common.dataimport.messaging.BatchCompletionRecord> allCompletions)
-
buildPersistenceRequests
protected List<com.broadleafcommerce.common.dataimport.util.PersistenceRequest<PriceData>> buildPersistenceRequests(String priceListId, Map<String,org.apache.commons.lang3.tuple.Pair<PriceData,com.broadleafcommerce.common.dataimport.messaging.BatchRecord>> requestedPriceDataByTargetKey, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Builds the list ofPersistenceRequestfor thePriceData.This method will query the data-store for existing price data to determine whether each item should be an update or a create.
-
buildPersistenceRequest
protected com.broadleafcommerce.common.dataimport.util.PersistenceRequest<PriceData> buildPersistenceRequest(String requestedPriceDataTargetKey, org.apache.commons.lang3.tuple.Pair<PriceData,com.broadleafcommerce.common.dataimport.messaging.BatchRecord> requestedPriceDataAndBatchRecord, Map<String,PriceData> existingPriceDataByTargetKey)
Determines id, operation type and builds thePersistenceRequestfor thePriceData.- Parameters:
requestedPriceDataTargetKey- the target key of the requested price datarequestedPriceDataAndBatchRecord- the pair of requestedPriceDataandBatchRecordexistingPriceDataByTargetKey- a map ofPriceDatathat already exist in the data store, with the target key as the map key- Returns:
- the
PersistenceRequestfor thePriceData
-
getExistingPriceDataByTargetKey
protected Map<String,PriceData> getExistingPriceDataByTargetKey(List<com.broadleafcommerce.pricing.client.domain.PriceableTargetRef> priceableTargetRefs, String priceListId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
-
canHandle
public boolean canHandle(com.broadleafcommerce.common.dataimport.messaging.BatchRequest batch)
-
getIMPORT_TYPES
protected static String[] getIMPORT_TYPES()
-
getTARGET_TYPE
protected static String getTARGET_TYPE()
-
getTARGET_ID
protected static String getTARGET_ID()
-
getPRICE_DATA_IMPORTED_ERROR
protected static String getPRICE_DATA_IMPORTED_ERROR()
-
getPriceDataConverter
protected PriceDataConverter getPriceDataConverter()
-
getPriceDataService
protected PriceDataService<PriceData> getPriceDataService()
-
getPriceListService
public PriceListService<PriceList> getPriceListService()
-
getPricingFactory
public com.broadleafcommerce.common.extension.TypeFactory getPricingFactory()
-
getIdResolver
protected com.broadleafcommerce.common.dataimport.util.IdResolver getIdResolver()
-
setIdResolver
protected void setIdResolver(com.broadleafcommerce.common.dataimport.util.IdResolver idResolver)
-
getOperationResolver
protected com.broadleafcommerce.common.dataimport.util.OperationResolver getOperationResolver()
-
setOperationResolver
protected void setOperationResolver(com.broadleafcommerce.common.dataimport.util.OperationResolver operationResolver)
-
-