in ebaystore/src/main/java/org/apache/ofbiz/ebaystore/EbayStore.java [220:371]
public static Map<String, Object> exportCategoriesSelectedToEbayStore(DispatchContext dctx, Map<String,? extends Object> context) {
Locale locale = (Locale) context.get("locale");
Delegator delegator = dctx.getDelegator();
Map<String, Object> result = new HashMap<>();
SetStoreCategoriesRequestType req = null;
StoreCustomCategoryArrayType categoryArrayType = null;
List<GenericValue> catalogCategories = null;
if (UtilValidate.isEmpty(context.get("prodCatalogId")) || UtilValidate.isEmpty(context.get("productStoreId")) || UtilValidate.isEmpty(context.get("partyId"))) {
return ServiceUtil.returnError(UtilProperties.getMessage(RESOURCE, "EbayStoreSetCatalogIdAndProductStoreId", locale));
}
if (!EbayStoreHelper.validatePartyAndRoleType(delegator, context.get("partyId").toString())) {
return ServiceUtil.returnError(UtilProperties.getMessage(RESOURCE, "EbayStorePartyWithoutRoleEbayAccount", UtilMisc.toMap("partyId", context.get("partyId").toString()), locale));
}
try {
SetStoreCategoriesCall call = new SetStoreCategoriesCall(EbayStoreHelper.getApiContext((String) context.get("productStoreId"), locale, delegator));
catalogCategories = EntityQuery.use(delegator).from("ProdCatalogCategory").where("prodCatalogId", context.get("prodCatalogId").toString(), "prodCatalogCategoryTypeId", "PCCT_EBAY_ROOT").orderBy("sequenceNum ASC").queryList();
if (catalogCategories != null && !catalogCategories.isEmpty()) {
List<StoreCustomCategoryType> listAdd = new LinkedList<StoreCustomCategoryType>();
List<StoreCustomCategoryType> listEdit = new LinkedList<StoreCustomCategoryType>();
//start at level 0 of categories
for (GenericValue catalogCategory : catalogCategories) {
GenericValue productCategory = catalogCategory.getRelatedOne("ProductCategory", false);
if (productCategory != null) {
String ebayCategoryId = EbayStoreHelper.retriveEbayCategoryIdByPartyId(delegator,
productCategory.getString("productCategoryId"), context.get("partyId").toString());
StoreCustomCategoryType categoryType = new StoreCustomCategoryType();
if (ebayCategoryId == null) {
categoryType.setName(productCategory.getString("categoryName"));
listAdd.add(categoryType);
} else {
categoryType.setCategoryID(new Long(ebayCategoryId));
categoryType.setName(productCategory.getString("categoryName"));
listEdit.add(categoryType);
}
}
}
if (!listAdd.isEmpty()) {
req = new SetStoreCategoriesRequestType();
categoryArrayType = new StoreCustomCategoryArrayType();
categoryArrayType.setCustomCategory(toStoreCustomCategoryTypeArray(listAdd));
req.setStoreCategories(categoryArrayType);
result = excuteExportCategoryToEbayStore(call, req, StoreCategoryUpdateActionCodeType.ADD, delegator, context.get("partyId").toString(), catalogCategories, locale);
}
if (!listEdit.isEmpty()) {
req = new SetStoreCategoriesRequestType();
categoryArrayType = new StoreCustomCategoryArrayType();
categoryArrayType.setCustomCategory(toStoreCustomCategoryTypeArray(listEdit));
req.setStoreCategories(categoryArrayType);
result = excuteExportCategoryToEbayStore(call, req, StoreCategoryUpdateActionCodeType.RENAME, delegator, context.get("partyId").toString(), catalogCategories, locale);
}
//start at level 1 of categories
listAdd = new LinkedList<StoreCustomCategoryType>();
listEdit = new LinkedList<StoreCustomCategoryType>();
for (GenericValue catalogCategory : catalogCategories) {
GenericValue productCategory = catalogCategory.getRelatedOne("ProductCategory", false);
if (productCategory != null) {
String ebayParentCategoryId = EbayStoreHelper.retriveEbayCategoryIdByPartyId(delegator, productCategory.getString("productCategoryId"), context.get("partyId").toString());
if (ebayParentCategoryId != null) {
List<GenericValue> productCategoryRollupList = EntityQuery.use(delegator).from("ProductCategoryRollup").where("parentProductCategoryId", productCategory.getString("productCategoryId")).orderBy("sequenceNum ASC").queryList();
for (GenericValue productCategoryRollup : productCategoryRollupList) {
productCategory = EntityQuery.use(delegator).from("ProductCategory").where("productCategoryId", productCategoryRollup.getString("productCategoryId")).queryOne();
StoreCustomCategoryType childCategoryType = new StoreCustomCategoryType();
String ebayChildCategoryId = EbayStoreHelper.retriveEbayCategoryIdByPartyId(delegator, productCategory.getString("productCategoryId"), context.get("partyId").toString());
if (ebayChildCategoryId == null) {
childCategoryType.setName(productCategory.getString("categoryName"));
listAdd.add(childCategoryType);
} else {
childCategoryType.setCategoryID(new Long(ebayChildCategoryId));
childCategoryType.setName(productCategory.getString("categoryName"));
listEdit.add(childCategoryType);
}
}
}
if (!listAdd.isEmpty()) {
req = new SetStoreCategoriesRequestType();
categoryArrayType = new StoreCustomCategoryArrayType();
categoryArrayType.setCustomCategory(toStoreCustomCategoryTypeArray(listAdd));
req.setStoreCategories(categoryArrayType);
req.setDestinationParentCategoryID(new Long(ebayParentCategoryId));
result = excuteExportCategoryToEbayStore(call, req, StoreCategoryUpdateActionCodeType.ADD, delegator, context.get("partyId").toString(), catalogCategories, locale);
}
if (!listEdit.isEmpty()) {
req = new SetStoreCategoriesRequestType();
categoryArrayType = new StoreCustomCategoryArrayType();
categoryArrayType.setCustomCategory(toStoreCustomCategoryTypeArray(listEdit));
req.setStoreCategories(categoryArrayType);
req.setDestinationParentCategoryID(new Long(ebayParentCategoryId));
result = excuteExportCategoryToEbayStore(call, req, StoreCategoryUpdateActionCodeType.RENAME, delegator, context.get("partyId").toString(), catalogCategories, locale);
}
}
}
//start at level 2 of categories
listAdd = new LinkedList<StoreCustomCategoryType>();
listEdit = new LinkedList<StoreCustomCategoryType>();
for (GenericValue catalogCategory : catalogCategories) {
GenericValue productCategory = catalogCategory.getRelatedOne("ProductCategory", false);
if (productCategory != null) {
List<GenericValue> productParentCategoryRollupList = EntityQuery.use(delegator).from("ProductCategoryRollup").where("parentProductCategoryId", productCategory.getString("productCategoryId")).orderBy("sequenceNum ASC").queryList();
for (GenericValue productParentCategoryRollup : productParentCategoryRollupList) {
String ebayParentCategoryId = EbayStoreHelper.retriveEbayCategoryIdByPartyId(delegator, productParentCategoryRollup.getString("productCategoryId"), context.get("partyId").toString());
if (ebayParentCategoryId != null) {
List<GenericValue> productChildCategoryRollupList = EntityQuery.use(delegator).from("ProductCategoryRollup")
.where("parentProductCategoryId", productParentCategoryRollup.getString("productCategoryId"))
.orderBy("sequenceNum ASC").queryList();
for (GenericValue productChildCategoryRollup : productChildCategoryRollupList) {
productCategory = EntityQuery.use(delegator).from("ProductCategory").where("productCategoryId", productChildCategoryRollup.getString("productCategoryId")).queryOne();
StoreCustomCategoryType childCategoryType = new StoreCustomCategoryType();
String ebayChildCategoryId = EbayStoreHelper.retriveEbayCategoryIdByPartyId(delegator, productCategory.getString("productCategoryId"), context.get("partyId").toString());
if (ebayChildCategoryId == null) {
childCategoryType.setName(productCategory.getString("categoryName"));
listAdd.add(childCategoryType);
} else {
childCategoryType.setCategoryID(new Long(ebayChildCategoryId));
childCategoryType.setName(productCategory.getString("categoryName"));
listEdit.add(childCategoryType);
}
}
if (!listAdd.isEmpty()) {
req = new SetStoreCategoriesRequestType();
categoryArrayType = new StoreCustomCategoryArrayType();
categoryArrayType.setCustomCategory(toStoreCustomCategoryTypeArray(listAdd));
req.setStoreCategories(categoryArrayType);
req.setDestinationParentCategoryID(new Long(ebayParentCategoryId));
result = excuteExportCategoryToEbayStore(call, req, StoreCategoryUpdateActionCodeType.ADD, delegator, context.get("partyId").toString(), catalogCategories, locale);
}
if (!listEdit.isEmpty()) {
req = new SetStoreCategoriesRequestType();
categoryArrayType = new StoreCustomCategoryArrayType();
categoryArrayType.setCustomCategory(toStoreCustomCategoryTypeArray(listEdit));
req.setStoreCategories(categoryArrayType);
req.setDestinationParentCategoryID(new Long(ebayParentCategoryId));
result = excuteExportCategoryToEbayStore(call, req, StoreCategoryUpdateActionCodeType.RENAME, delegator, context.get("partyId").toString(), catalogCategories, locale);
}
}
}
}
}
} else {
return ServiceUtil.returnError(UtilProperties.getMessage(RESOURCE, "EbayStoreRootCategoryNotFound", UtilMisc.toMap("prodCatalogId", context.get("prodCatalogId")), locale));
}
} catch (GenericEntityException e) {
result = ServiceUtil.returnError(e.getMessage());
}
if (result.get("responseMessage") != null && "fail".equals(result.get("responseMessage"))) {
result = ServiceUtil.returnError(result.get("errorMessage").toString());
}
return result;
}