Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java?rev=1695126&r1=1695125&r2=1695126&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java (original) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java Mon Aug 10 16:15:37 2015 @@ -1,406 +1,406 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.ofbiz.ebaystore; - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.UtilMisc; -import org.ofbiz.base.util.UtilProperties; -import org.ofbiz.entity.Delegator; -import org.ofbiz.entity.GenericEntityException; -import org.ofbiz.entity.GenericValue; -import org.ofbiz.entity.util.EntityQuery; -import org.ofbiz.service.DispatchContext; -import org.ofbiz.service.GenericServiceException; -import org.ofbiz.service.LocalDispatcher; -import org.ofbiz.service.ServiceUtil; - -import com.ebay.sdk.ApiException; -import com.ebay.sdk.SdkException; -import com.ebay.sdk.SdkSoapException; -import com.ebay.sdk.call.AddSellingManagerInventoryFolderCall; -import com.ebay.sdk.call.AddSellingManagerProductCall; -import com.ebay.sdk.call.GetSellingManagerInventoryCall; -import com.ebay.sdk.call.GetSellingManagerInventoryFolderCall; -import com.ebay.sdk.call.ReviseSellingManagerProductCall; -import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderRequestType; -import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderResponseType; -import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductRequestType; -import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductResponseType; -import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderRequestType; -import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderResponseType; -import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType; -import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType; -import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductRequestType; -import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductResponseType; -import com.ebay.soap.eBLBaseComponents.SellingManagerFolderDetailsType; -import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType; -import com.ebay.soap.eBLBaseComponents.SellingManagerProductInventoryStatusType; -import com.ebay.soap.eBLBaseComponents.SellingManagerProductType; - -public class EbayStoreInventoryServices { - private static final String module = EbayStoreInventoryServices.class.getName(); - public static final String resource = "EbayStoreUiLabels"; - private static final String defaultFolderName = "OFBizProducts"; - private static String folderId = null; - public EbayStoreInventoryServices() { - // TODO Auto-generated constructor stub - } - /*update inventory on ebay site*/ - public static Map<String,Object> updateEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) { - Map<String,Object> result = new HashMap<String, Object>(); - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Locale locale = (Locale) context.get("locale"); - Delegator delegator = dctx.getDelegator(); - GetSellingManagerInventoryRequestType invenReq = null; - GetSellingManagerInventoryResponseType invenResp = null; - boolean checkProd = false; - boolean status = false; - try { - if (context.get("productStoreId") == null || context.get("productId") == null || context.get("folderId") == null) { - result = ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdRequired", locale)); - result.put("productStoreId", context.get("productStoreId")); - result.put("facilityId", context.get("facilityId")); - result.put("folderId", context.get("folderId")); - return result; - } - - String productId = (String)context.get("productId"); - String folderId = (String)context.get("folderId"); - // start upload/update products which selected to an ebay inventory - if (folderId != null) { - GetSellingManagerInventoryCall invenCall = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); - invenReq = new GetSellingManagerInventoryRequestType(); - invenResp = (GetSellingManagerInventoryResponseType) invenCall.execute(invenReq); - if (invenResp != null && "SUCCESS".equals(invenResp.getAck().toString())) { - GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne(); - - SellingManagerProductType[] sellingManagerProductTypeList = invenResp.getSellingManagerProduct(); - for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) { - SellingManagerProductDetailsType sellingManagerProductDetailsType = sellingManagerProductType.getSellingManagerProductDetails(); - if (String.valueOf(sellingManagerProductDetailsType.getFolderID()).equals(folderId) && String.valueOf(sellingManagerProductDetailsType.getProductID()).equals(String.valueOf(ebayProductStoreInventory.getLong("ebayProductId"))) && String.valueOf(sellingManagerProductDetailsType.getCustomLabel()).equals(productId)) { - checkProd = true; - break; - } - } - } else { - EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), invenResp.getAck().toString(), "GetSellingManagerInventoryCall : updateEbayStoreInventory", invenResp.getErrors(0).getLongMessage()); - } - - // checkProduct is true then update detail but is false do create new one. - if (checkProd) { - status = updateProductInEbayInventoryFolder(dctx,context); - } else { - status = createNewProductInEbayInventoryFolder(dctx,context); - } - if (status) { - Debug.logInfo("Done to updated product ".concat(context.get("productId").toString()), module); - result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdUpdated", UtilMisc.toMap("folderId", context.get("folderId")), locale)); - } else { - result = ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdUpdatedFailed", locale)); - } - } - }catch (ApiException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (SdkSoapException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (SdkException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (GenericEntityException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } - result.put("productStoreId", context.get("productStoreId")); - result.put("facilityId", context.get("facilityId")); - result.put("folderId", context.get("folderId")); - return result; - } - - /* add new product and quantity to ebay inventory */ - public static boolean createNewProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context) { - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Locale locale = (Locale) context.get("locale"); - Delegator delegator = dctx.getDelegator(); - AddSellingManagerProductRequestType productReq = null; - AddSellingManagerProductResponseType productResp = null; - boolean flag = false; - - try { - if (context.get("productStoreId") != null && context.get("productId") != null && context.get("folderId") != null) { - String productId = (String)context.get("productId"); - String folderId = (String)context.get("folderId"); - AddSellingManagerProductCall productCall = new AddSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); - productReq = new AddSellingManagerProductRequestType(); - productReq.setFolderID(new Long(folderId)); - SellingManagerProductDetailsType sellingManagerProductDetailsType = new SellingManagerProductDetailsType(); - GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne(); - - sellingManagerProductDetailsType.setProductName((EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne()).getString("internalName")); - //Must keep productId in SKU NUMBER because ebay allow productId field only long value. - sellingManagerProductDetailsType.setCustomLabel(productId); - if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue()); - - productReq.setSellingManagerProductDetails(sellingManagerProductDetailsType); - productResp = (AddSellingManagerProductResponseType) productCall.execute(productReq); - if (productResp != null && "SUCCESS".equals(productResp.getAck().toString())) { - flag = true; - ebayProductStoreInventory.put("ebayProductId", productResp.getSellingManagerProductDetails().getProductID()); - ebayProductStoreInventory.put("folderId", folderId); - ebayProductStoreInventory.store(); - } else { - EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), productResp.getAck().toString(), "AddSellingManagerProductCall : createNewProductInEbayInventoryFolder", productResp.getErrors(0).getLongMessage()); - Debug.logError("Fail to create inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(productResp.getMessage()), module); - } - } - } catch (ApiException e) { - Debug.logError(e.getMessage(), module); - } catch (SdkSoapException e) { - Debug.logError(e.getMessage(), module); - } catch (SdkException e) { - Debug.logError(e.getMessage(), module); - } catch (GenericEntityException e) { - Debug.logError(e.getMessage(), module); - } - return flag; - } - - /* update product and quantity to ebay inventory */ - public static boolean updateProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context) { - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Locale locale = (Locale) context.get("locale"); - Delegator delegator = dctx.getDelegator(); - ReviseSellingManagerProductRequestType req = null; - ReviseSellingManagerProductResponseType resp = null; - boolean flag = false; - - try { - if (context.get("productStoreId") != null && context.get("productId") != null && context.get("folderId") != null) { - String productId = (String)context.get("productId"); - String folderId = (String)context.get("folderId"); - ReviseSellingManagerProductCall call = new ReviseSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); - req = new ReviseSellingManagerProductRequestType(); - SellingManagerProductDetailsType sellingManagerProductDetailsType = new SellingManagerProductDetailsType(); - GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne(); - Long ebayProductId = null; - if (ebayProductStoreInventory != null && ebayProductStoreInventory.getLong("ebayProductId") == null) { - Debug.logError("Can not update product "+productId+" has no ebay product Id in EbayProductStoreInventory. ", module); - return flag; - } - if (ebayProductStoreInventory != null && ebayProductStoreInventory.getLong("ebayProductId") != null) { - ebayProductId = ebayProductStoreInventory.getLong("ebayProductId"); - } - sellingManagerProductDetailsType.setProductID(ebayProductId); - - sellingManagerProductDetailsType.setProductName((EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne()).getString("internalName")); - //Must keep productId in SKU NUMBER because ebay allow productId field only long value. - sellingManagerProductDetailsType.setCustomLabel(productId); - if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue()); - - req.setSellingManagerProductDetails(sellingManagerProductDetailsType); - resp = (ReviseSellingManagerProductResponseType) call.execute(req); - if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { - flag = true; - ebayProductStoreInventory.put("ebayProductId", ebayProductId); - ebayProductStoreInventory.put("folderId", folderId); - ebayProductStoreInventory.store(); - } else { - EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "ReviseSellingManagerProductCall : updateProductInEbayInventoryFolder", resp.getErrors(0).getLongMessage()); - Debug.logError("Fail to update inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(resp.getMessage()), module); - } - } - } catch (ApiException e) { - Debug.logError(e.getMessage(), module); - } catch (SdkSoapException e) { - Debug.logError(e.getMessage(), module); - } catch (SdkException e) { - Debug.logError(e.getMessage(), module); - } catch (GenericEntityException e) { - Debug.logError(e.getMessage(), module); - } - return flag; - } - - public static Map<String,Object> getFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) { - Map<String,Object> result = new HashMap<String, Object>(); - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Locale locale = (Locale) context.get("locale"); - Delegator delegator = dctx.getDelegator(); - GetSellingManagerInventoryFolderRequestType req = null; - GetSellingManagerInventoryFolderResponseType resp = null; - boolean flag = false; - - try { - if (context.get("productStoreId") != null) { - GetSellingManagerInventoryFolderCall call = new GetSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); - req = new GetSellingManagerInventoryFolderRequestType(); - resp = (GetSellingManagerInventoryFolderResponseType) call.execute(req); - if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { - SellingManagerFolderDetailsType sellingManagerFolderDetailsType = resp.getFolder(); - if (sellingManagerFolderDetailsType != null) { - SellingManagerFolderDetailsType[] SellingManagerFolderDetailsTypeList = sellingManagerFolderDetailsType.getChildFolder(); - for (SellingManagerFolderDetailsType sellingManagerFolderDetails : SellingManagerFolderDetailsTypeList) { - Debug.logInfo("ebay inventory folders name ".concat(sellingManagerFolderDetails.getFolderName()), module); - if (sellingManagerFolderDetails.getFolderName().equals(defaultFolderName)) { - folderId = String.valueOf(sellingManagerFolderDetails.getFolderID()); - flag = true; - break; - } - } - } - if (!flag) { - folderId = createNewFolderInEbayStoreInventory(dctx,context); - } - } else { - EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "GetSellingManagerInventoryFolderCall : getFolderInEbayStoreInventory", resp.getErrors(0).getLongMessage()); - } - result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdLoaded", UtilMisc.toMap("folderId", folderId), locale)); - } - } catch (ApiException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (SdkSoapException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (SdkException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } - if (result.get("responseMessage") != null && result.get("responseMessage").equals("fail")) folderId = null; - result.put("folderId", folderId); - Debug.logInfo("service return result "+ result, module); - return result; - } - - /*create new folder for export product into inventory.*/ - public static String createNewFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) { - Locale locale = (Locale) context.get("locale"); - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Delegator delegator = dctx.getDelegator(); - AddSellingManagerInventoryFolderRequestType req = null; - AddSellingManagerInventoryFolderResponseType resp = null; - - try { - if (context.get("productStoreId") != null) { - AddSellingManagerInventoryFolderCall call = new AddSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); - req = new AddSellingManagerInventoryFolderRequestType(); - req.setFolderName(defaultFolderName);//req.setComment(value);//req.setParentFolderID(value) - resp = (AddSellingManagerInventoryFolderResponseType) call.execute(req); - if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { - folderId = String.valueOf(resp.getFolderID()); - } else { - EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "AddSellingManagerInventoryFolderCall : createNewFolderInEbayStoreInventory", resp.getErrors(0).getLongMessage()); - Debug.logError("The problem with create new folder on ebay site.", module); - return folderId; - } - } - } catch (ApiException e) { - Debug.logError(e.getMessage(), module); - } catch (SdkSoapException e) { - Debug.logError(e.getMessage(), module); - } catch (SdkException e) { - Debug.logError(e.getMessage(), module); - } - return folderId; - } - - /* update inventory status from ebay store inventory */ - public static Map<String,Object> updateEbayInventoryStatusByProductId(DispatchContext dctx, Map<String,Object> context) { - Locale locale = (Locale) context.get("locale"); - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Map<String,Object> result = new HashMap<String, Object>(); - Delegator delegator = dctx.getDelegator(); - String productStoreId = (String)context.get("productStoreId"); - String facilityId = (String)context.get("facilityId"); - String folderId = (String)context.get("folderId"); - String productId = (String)context.get("productId"); - String ebayProductId = null; - GetSellingManagerInventoryRequestType req = null; - GetSellingManagerInventoryResponseType resp = null; - GenericValue ebayProductStoreInventory = null; - - if (context.get("ebayProductId") != null) { - ebayProductId = String.valueOf(context.get("ebayProductId")); - } - try { - if (productStoreId != null && ebayProductId != null) { - ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", facilityId, "productStoreId", productStoreId).queryOne(); - GetSellingManagerInventoryCall call = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext(productStoreId, locale, delegator)); - req = new GetSellingManagerInventoryRequestType(); - resp = (GetSellingManagerInventoryResponseType) call.execute(req); - if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { - SellingManagerProductType[] sellingManagerProductTypeList = resp.getSellingManagerProduct(); - for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) { - SellingManagerProductDetailsType productDetail = sellingManagerProductType.getSellingManagerProductDetails(); - if (String.valueOf(productDetail.getFolderID()).equals(folderId) && String.valueOf(productDetail.getProductID()).equals(ebayProductId) && String.valueOf(productDetail.getCustomLabel()).equals(productId)) { - SellingManagerProductInventoryStatusType prodInventoryStatus = sellingManagerProductType.getSellingManagerProductInventoryStatus(); - ebayProductStoreInventory.put("activeListing",new BigDecimal(prodInventoryStatus.getQuantityActive())); - ebayProductStoreInventory.put("scheduled",new BigDecimal(prodInventoryStatus.getQuantityScheduled())); - ebayProductStoreInventory.put("sold",new BigDecimal(prodInventoryStatus.getQuantitySold())); - ebayProductStoreInventory.put("unSold",new BigDecimal(prodInventoryStatus.getQuantityUnsold())); - ebayProductStoreInventory.store(); - result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryStatusUpdated", UtilMisc.toMap("productId", productId), locale)); - break; - } - } - } else { - EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "GetSellingManagerInventoryCall : updateEbayInventoryStatusByProductId", resp.getErrors(0).getLongMessage()); - Debug.logError("The problem with get manage inventory detail from ebay site.", module); - } - } - } catch (ApiException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (SdkSoapException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (SdkException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (GenericEntityException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } - result.put("productStoreId", context.get("productStoreId")); - result.put("facilityId", context.get("facilityId")); - result.put("folderId", context.get("folderId")); - result.put("productId", productId); - return result; - } - - public static Map<String,Object> updateEbayInventoryStatus(DispatchContext dctx, Map<String,Object> context) { - LocalDispatcher dispatcher = dctx.getDispatcher(); - Map<String,Object> result = new HashMap<String, Object>(); - Delegator delegator = dctx.getDelegator(); - List<GenericValue> ebayProductStoreInventoryList = null; - - try { - if (context.get("productStoreId") != null && context.get("facilityId") != null) { - ebayProductStoreInventoryList = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("facilityId",(String)context.get("facilityId"),"productStoreId",(String)context.get("productStoreId")).queryList(); - for (GenericValue ebayProductStoreInventory : ebayProductStoreInventoryList) { - if (ebayProductStoreInventory.get("ebayProductId") != null) { - dispatcher.runSync("updateEbayInventoryStatusByProductId", UtilMisc.toMap("productStoreId", (String)context.get("productStoreId"), "facilityId", (String)context.get("facilityId"), "folderId", ebayProductStoreInventory.get("folderId"), "productId", ebayProductStoreInventory.get("productId"), "ebayProductId", ebayProductStoreInventory.get("ebayProductId"), "userLogin", context.get("userLogin"))); - } - } - } - } catch (GenericEntityException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } catch (GenericServiceException e) { - result = ServiceUtil.returnFailure(e.getMessage()); - } - result = ServiceUtil.returnSuccess(); - return result; - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.ofbiz.ebaystore; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.base.util.UtilProperties; +import org.ofbiz.entity.Delegator; +import org.ofbiz.entity.GenericEntityException; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.entity.util.EntityQuery; +import org.ofbiz.service.DispatchContext; +import org.ofbiz.service.GenericServiceException; +import org.ofbiz.service.LocalDispatcher; +import org.ofbiz.service.ServiceUtil; + +import com.ebay.sdk.ApiException; +import com.ebay.sdk.SdkException; +import com.ebay.sdk.SdkSoapException; +import com.ebay.sdk.call.AddSellingManagerInventoryFolderCall; +import com.ebay.sdk.call.AddSellingManagerProductCall; +import com.ebay.sdk.call.GetSellingManagerInventoryCall; +import com.ebay.sdk.call.GetSellingManagerInventoryFolderCall; +import com.ebay.sdk.call.ReviseSellingManagerProductCall; +import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderRequestType; +import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderResponseType; +import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductRequestType; +import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductResponseType; +import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderRequestType; +import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderResponseType; +import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType; +import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType; +import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductRequestType; +import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductResponseType; +import com.ebay.soap.eBLBaseComponents.SellingManagerFolderDetailsType; +import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType; +import com.ebay.soap.eBLBaseComponents.SellingManagerProductInventoryStatusType; +import com.ebay.soap.eBLBaseComponents.SellingManagerProductType; + +public class EbayStoreInventoryServices { + private static final String module = EbayStoreInventoryServices.class.getName(); + public static final String resource = "EbayStoreUiLabels"; + private static final String defaultFolderName = "OFBizProducts"; + private static String folderId = null; + public EbayStoreInventoryServices() { + // TODO Auto-generated constructor stub + } + /*update inventory on ebay site*/ + public static Map<String,Object> updateEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) { + Map<String,Object> result = new HashMap<String, Object>(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + GetSellingManagerInventoryRequestType invenReq = null; + GetSellingManagerInventoryResponseType invenResp = null; + boolean checkProd = false; + boolean status = false; + try { + if (context.get("productStoreId") == null || context.get("productId") == null || context.get("folderId") == null) { + result = ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdRequired", locale)); + result.put("productStoreId", context.get("productStoreId")); + result.put("facilityId", context.get("facilityId")); + result.put("folderId", context.get("folderId")); + return result; + } + + String productId = (String)context.get("productId"); + String folderId = (String)context.get("folderId"); + // start upload/update products which selected to an ebay inventory + if (folderId != null) { + GetSellingManagerInventoryCall invenCall = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + invenReq = new GetSellingManagerInventoryRequestType(); + invenResp = (GetSellingManagerInventoryResponseType) invenCall.execute(invenReq); + if (invenResp != null && "SUCCESS".equals(invenResp.getAck().toString())) { + GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne(); + + SellingManagerProductType[] sellingManagerProductTypeList = invenResp.getSellingManagerProduct(); + for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) { + SellingManagerProductDetailsType sellingManagerProductDetailsType = sellingManagerProductType.getSellingManagerProductDetails(); + if (String.valueOf(sellingManagerProductDetailsType.getFolderID()).equals(folderId) && String.valueOf(sellingManagerProductDetailsType.getProductID()).equals(String.valueOf(ebayProductStoreInventory.getLong("ebayProductId"))) && String.valueOf(sellingManagerProductDetailsType.getCustomLabel()).equals(productId)) { + checkProd = true; + break; + } + } + } else { + EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), invenResp.getAck().toString(), "GetSellingManagerInventoryCall : updateEbayStoreInventory", invenResp.getErrors(0).getLongMessage()); + } + + // checkProduct is true then update detail but is false do create new one. + if (checkProd) { + status = updateProductInEbayInventoryFolder(dctx,context); + } else { + status = createNewProductInEbayInventoryFolder(dctx,context); + } + if (status) { + Debug.logInfo("Done to updated product ".concat(context.get("productId").toString()), module); + result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdUpdated", UtilMisc.toMap("folderId", context.get("folderId")), locale)); + } else { + result = ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdUpdatedFailed", locale)); + } + } + }catch (ApiException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (SdkSoapException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (SdkException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (GenericEntityException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } + result.put("productStoreId", context.get("productStoreId")); + result.put("facilityId", context.get("facilityId")); + result.put("folderId", context.get("folderId")); + return result; + } + + /* add new product and quantity to ebay inventory */ + public static boolean createNewProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context) { + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + AddSellingManagerProductRequestType productReq = null; + AddSellingManagerProductResponseType productResp = null; + boolean flag = false; + + try { + if (context.get("productStoreId") != null && context.get("productId") != null && context.get("folderId") != null) { + String productId = (String)context.get("productId"); + String folderId = (String)context.get("folderId"); + AddSellingManagerProductCall productCall = new AddSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + productReq = new AddSellingManagerProductRequestType(); + productReq.setFolderID(new Long(folderId)); + SellingManagerProductDetailsType sellingManagerProductDetailsType = new SellingManagerProductDetailsType(); + GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne(); + + sellingManagerProductDetailsType.setProductName((EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne()).getString("internalName")); + //Must keep productId in SKU NUMBER because ebay allow productId field only long value. + sellingManagerProductDetailsType.setCustomLabel(productId); + if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue()); + + productReq.setSellingManagerProductDetails(sellingManagerProductDetailsType); + productResp = (AddSellingManagerProductResponseType) productCall.execute(productReq); + if (productResp != null && "SUCCESS".equals(productResp.getAck().toString())) { + flag = true; + ebayProductStoreInventory.put("ebayProductId", productResp.getSellingManagerProductDetails().getProductID()); + ebayProductStoreInventory.put("folderId", folderId); + ebayProductStoreInventory.store(); + } else { + EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), productResp.getAck().toString(), "AddSellingManagerProductCall : createNewProductInEbayInventoryFolder", productResp.getErrors(0).getLongMessage()); + Debug.logError("Fail to create inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(productResp.getMessage()), module); + } + } + } catch (ApiException e) { + Debug.logError(e.getMessage(), module); + } catch (SdkSoapException e) { + Debug.logError(e.getMessage(), module); + } catch (SdkException e) { + Debug.logError(e.getMessage(), module); + } catch (GenericEntityException e) { + Debug.logError(e.getMessage(), module); + } + return flag; + } + + /* update product and quantity to ebay inventory */ + public static boolean updateProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context) { + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + ReviseSellingManagerProductRequestType req = null; + ReviseSellingManagerProductResponseType resp = null; + boolean flag = false; + + try { + if (context.get("productStoreId") != null && context.get("productId") != null && context.get("folderId") != null) { + String productId = (String)context.get("productId"); + String folderId = (String)context.get("folderId"); + ReviseSellingManagerProductCall call = new ReviseSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + req = new ReviseSellingManagerProductRequestType(); + SellingManagerProductDetailsType sellingManagerProductDetailsType = new SellingManagerProductDetailsType(); + GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne(); + Long ebayProductId = null; + if (ebayProductStoreInventory != null && ebayProductStoreInventory.getLong("ebayProductId") == null) { + Debug.logError("Can not update product "+productId+" has no ebay product Id in EbayProductStoreInventory. ", module); + return flag; + } + if (ebayProductStoreInventory != null && ebayProductStoreInventory.getLong("ebayProductId") != null) { + ebayProductId = ebayProductStoreInventory.getLong("ebayProductId"); + } + sellingManagerProductDetailsType.setProductID(ebayProductId); + + sellingManagerProductDetailsType.setProductName((EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne()).getString("internalName")); + //Must keep productId in SKU NUMBER because ebay allow productId field only long value. + sellingManagerProductDetailsType.setCustomLabel(productId); + if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue()); + + req.setSellingManagerProductDetails(sellingManagerProductDetailsType); + resp = (ReviseSellingManagerProductResponseType) call.execute(req); + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { + flag = true; + ebayProductStoreInventory.put("ebayProductId", ebayProductId); + ebayProductStoreInventory.put("folderId", folderId); + ebayProductStoreInventory.store(); + } else { + EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "ReviseSellingManagerProductCall : updateProductInEbayInventoryFolder", resp.getErrors(0).getLongMessage()); + Debug.logError("Fail to update inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(resp.getMessage()), module); + } + } + } catch (ApiException e) { + Debug.logError(e.getMessage(), module); + } catch (SdkSoapException e) { + Debug.logError(e.getMessage(), module); + } catch (SdkException e) { + Debug.logError(e.getMessage(), module); + } catch (GenericEntityException e) { + Debug.logError(e.getMessage(), module); + } + return flag; + } + + public static Map<String,Object> getFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) { + Map<String,Object> result = new HashMap<String, Object>(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + GetSellingManagerInventoryFolderRequestType req = null; + GetSellingManagerInventoryFolderResponseType resp = null; + boolean flag = false; + + try { + if (context.get("productStoreId") != null) { + GetSellingManagerInventoryFolderCall call = new GetSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + req = new GetSellingManagerInventoryFolderRequestType(); + resp = (GetSellingManagerInventoryFolderResponseType) call.execute(req); + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { + SellingManagerFolderDetailsType sellingManagerFolderDetailsType = resp.getFolder(); + if (sellingManagerFolderDetailsType != null) { + SellingManagerFolderDetailsType[] SellingManagerFolderDetailsTypeList = sellingManagerFolderDetailsType.getChildFolder(); + for (SellingManagerFolderDetailsType sellingManagerFolderDetails : SellingManagerFolderDetailsTypeList) { + Debug.logInfo("ebay inventory folders name ".concat(sellingManagerFolderDetails.getFolderName()), module); + if (sellingManagerFolderDetails.getFolderName().equals(defaultFolderName)) { + folderId = String.valueOf(sellingManagerFolderDetails.getFolderID()); + flag = true; + break; + } + } + } + if (!flag) { + folderId = createNewFolderInEbayStoreInventory(dctx,context); + } + } else { + EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "GetSellingManagerInventoryFolderCall : getFolderInEbayStoreInventory", resp.getErrors(0).getLongMessage()); + } + result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdLoaded", UtilMisc.toMap("folderId", folderId), locale)); + } + } catch (ApiException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (SdkSoapException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (SdkException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } + if (result.get("responseMessage") != null && result.get("responseMessage").equals("fail")) folderId = null; + result.put("folderId", folderId); + Debug.logInfo("service return result "+ result, module); + return result; + } + + /*create new folder for export product into inventory.*/ + public static String createNewFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) { + Locale locale = (Locale) context.get("locale"); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Delegator delegator = dctx.getDelegator(); + AddSellingManagerInventoryFolderRequestType req = null; + AddSellingManagerInventoryFolderResponseType resp = null; + + try { + if (context.get("productStoreId") != null) { + AddSellingManagerInventoryFolderCall call = new AddSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + req = new AddSellingManagerInventoryFolderRequestType(); + req.setFolderName(defaultFolderName);//req.setComment(value);//req.setParentFolderID(value) + resp = (AddSellingManagerInventoryFolderResponseType) call.execute(req); + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { + folderId = String.valueOf(resp.getFolderID()); + } else { + EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "AddSellingManagerInventoryFolderCall : createNewFolderInEbayStoreInventory", resp.getErrors(0).getLongMessage()); + Debug.logError("The problem with create new folder on ebay site.", module); + return folderId; + } + } + } catch (ApiException e) { + Debug.logError(e.getMessage(), module); + } catch (SdkSoapException e) { + Debug.logError(e.getMessage(), module); + } catch (SdkException e) { + Debug.logError(e.getMessage(), module); + } + return folderId; + } + + /* update inventory status from ebay store inventory */ + public static Map<String,Object> updateEbayInventoryStatusByProductId(DispatchContext dctx, Map<String,Object> context) { + Locale locale = (Locale) context.get("locale"); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Map<String,Object> result = new HashMap<String, Object>(); + Delegator delegator = dctx.getDelegator(); + String productStoreId = (String)context.get("productStoreId"); + String facilityId = (String)context.get("facilityId"); + String folderId = (String)context.get("folderId"); + String productId = (String)context.get("productId"); + String ebayProductId = null; + GetSellingManagerInventoryRequestType req = null; + GetSellingManagerInventoryResponseType resp = null; + GenericValue ebayProductStoreInventory = null; + + if (context.get("ebayProductId") != null) { + ebayProductId = String.valueOf(context.get("ebayProductId")); + } + try { + if (productStoreId != null && ebayProductId != null) { + ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", facilityId, "productStoreId", productStoreId).queryOne(); + GetSellingManagerInventoryCall call = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext(productStoreId, locale, delegator)); + req = new GetSellingManagerInventoryRequestType(); + resp = (GetSellingManagerInventoryResponseType) call.execute(req); + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { + SellingManagerProductType[] sellingManagerProductTypeList = resp.getSellingManagerProduct(); + for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) { + SellingManagerProductDetailsType productDetail = sellingManagerProductType.getSellingManagerProductDetails(); + if (String.valueOf(productDetail.getFolderID()).equals(folderId) && String.valueOf(productDetail.getProductID()).equals(ebayProductId) && String.valueOf(productDetail.getCustomLabel()).equals(productId)) { + SellingManagerProductInventoryStatusType prodInventoryStatus = sellingManagerProductType.getSellingManagerProductInventoryStatus(); + ebayProductStoreInventory.put("activeListing",new BigDecimal(prodInventoryStatus.getQuantityActive())); + ebayProductStoreInventory.put("scheduled",new BigDecimal(prodInventoryStatus.getQuantityScheduled())); + ebayProductStoreInventory.put("sold",new BigDecimal(prodInventoryStatus.getQuantitySold())); + ebayProductStoreInventory.put("unSold",new BigDecimal(prodInventoryStatus.getQuantityUnsold())); + ebayProductStoreInventory.store(); + result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryStatusUpdated", UtilMisc.toMap("productId", productId), locale)); + break; + } + } + } else { + EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "GetSellingManagerInventoryCall : updateEbayInventoryStatusByProductId", resp.getErrors(0).getLongMessage()); + Debug.logError("The problem with get manage inventory detail from ebay site.", module); + } + } + } catch (ApiException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (SdkSoapException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (SdkException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (GenericEntityException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } + result.put("productStoreId", context.get("productStoreId")); + result.put("facilityId", context.get("facilityId")); + result.put("folderId", context.get("folderId")); + result.put("productId", productId); + return result; + } + + public static Map<String,Object> updateEbayInventoryStatus(DispatchContext dctx, Map<String,Object> context) { + LocalDispatcher dispatcher = dctx.getDispatcher(); + Map<String,Object> result = new HashMap<String, Object>(); + Delegator delegator = dctx.getDelegator(); + List<GenericValue> ebayProductStoreInventoryList = null; + + try { + if (context.get("productStoreId") != null && context.get("facilityId") != null) { + ebayProductStoreInventoryList = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("facilityId",(String)context.get("facilityId"),"productStoreId",(String)context.get("productStoreId")).queryList(); + for (GenericValue ebayProductStoreInventory : ebayProductStoreInventoryList) { + if (ebayProductStoreInventory.get("ebayProductId") != null) { + dispatcher.runSync("updateEbayInventoryStatusByProductId", UtilMisc.toMap("productStoreId", (String)context.get("productStoreId"), "facilityId", (String)context.get("facilityId"), "folderId", ebayProductStoreInventory.get("folderId"), "productId", ebayProductStoreInventory.get("productId"), "ebayProductId", ebayProductStoreInventory.get("ebayProductId"), "userLogin", context.get("userLogin"))); + } + } + } + } catch (GenericEntityException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (GenericServiceException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } + result = ServiceUtil.returnSuccess(); + return result; + } +} Propchange: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java ('svn:eol-style' removed) Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java?rev=1695126&r1=1695125&r2=1695126&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java (original) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java Mon Aug 10 16:15:37 2015 @@ -1,264 +1,264 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.ofbiz.ebaystore; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.UtilHttp; -import org.ofbiz.base.util.UtilValidate; -import org.ofbiz.entity.Delegator; -import org.ofbiz.entity.GenericValue; -import org.ofbiz.service.GenericServiceException; -import org.ofbiz.service.LocalDispatcher; -import org.ofbiz.webapp.event.EventHandlerException; - -import com.ebay.sdk.ApiContext; -import com.ebay.sdk.ApiException; -import com.ebay.sdk.SdkException; -import com.ebay.sdk.SdkSoapException; -import com.ebay.sdk.call.GetStoreOptionsCall; -import com.ebay.soap.eBLBaseComponents.CategoryType; -import com.ebay.soap.eBLBaseComponents.GetStoreOptionsRequestType; -import com.ebay.soap.eBLBaseComponents.GetStoreOptionsResponseType; -import com.ebay.soap.eBLBaseComponents.StoreColorSchemeType; -import com.ebay.soap.eBLBaseComponents.StoreColorType; -import com.ebay.soap.eBLBaseComponents.StoreFontType; -import com.ebay.soap.eBLBaseComponents.StoreThemeArrayType; -import com.ebay.soap.eBLBaseComponents.StoreThemeType; -import com.ebay.soap.eBLBaseComponents.StoreCustomCategoryType; - -public class EbayStoreOptions { - - private static final String module = EbayStoreOptions.class.getName(); - - public static String retrieveThemeColorSchemeByThemeId(HttpServletRequest request, HttpServletResponse response) { - Locale locale = UtilHttp.getLocale(request); - HttpSession session = request.getSession(true); - GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); - Delegator delegator = (Delegator) request.getAttribute("delegator"); - LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); - GetStoreOptionsRequestType req = null; - GetStoreOptionsResponseType resp = null; - StoreThemeArrayType returnedBasicThemeArray = null; - - try { - Map<String, Object> paramMap = UtilHttp.getCombinedMap(request); - if (paramMap.get("productStoreId") != null) { - String themeId = (String)paramMap.get("themeId"); - - GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)paramMap.get("productStoreId"), locale, delegator)); - req = new GetStoreOptionsRequestType(); - - resp = (GetStoreOptionsResponseType) call.execute(req); - if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { - - returnedBasicThemeArray = resp.getBasicThemeArray(); - StoreThemeType[] storeBasicTheme = returnedBasicThemeArray.getTheme(); - - int i=0; - String colorSchemeId = themeId.substring(themeId.indexOf("-")+1); - themeId = themeId.substring(0,themeId.indexOf("-")); - - Map<String,Object> storeColorSchemeMap = new HashMap<String, Object>(); - while (i < storeBasicTheme.length) { - - StoreThemeType storeThemeType = storeBasicTheme[i]; - if (themeId.equals(storeThemeType.getThemeID().toString())) { - StoreColorSchemeType colorSchemeType = storeThemeType.getColorScheme(); - if (colorSchemeType != null) { - if (colorSchemeId.equals(colorSchemeType.getColorSchemeID().toString())) { - StoreColorType storeColor = colorSchemeType.getColor(); - storeColorSchemeMap.put("storeColorAccent",storeColor.getAccent()); - storeColorSchemeMap.put("storeColorPrimary",storeColor.getPrimary()); - storeColorSchemeMap.put("storeColorSecondary",storeColor.getSecondary()); - - // get font,size and color - StoreFontType storeFontType = colorSchemeType.getFont(); - storeColorSchemeMap.put("storeFontTypeNameFaceColor",storeFontType.getNameColor()); - storeColorSchemeMap.put("storeFontTypeFontFaceValue",storeFontType.getNameFace().value()); - storeColorSchemeMap.put("storeFontTypeSizeFaceValue",storeFontType.getNameSize().value()); - - storeColorSchemeMap.put("storeFontTypeTitleColor",storeFontType.getTitleColor()); - storeColorSchemeMap.put("storeFontTypeFontTitleValue",storeFontType.getTitleFace().value()); - storeColorSchemeMap.put("storeFontSizeTitleValue",storeFontType.getTitleSize().value()); - - storeColorSchemeMap.put("storeFontTypeDescColor",storeFontType.getDescColor()); - storeColorSchemeMap.put("storeFontTypeFontDescValue",storeFontType.getDescFace().value()); - storeColorSchemeMap.put("storeDescSizeValue",storeFontType.getDescSize().value()); - request.setAttribute("storeColorSchemeMap", storeColorSchemeMap); - - break; - } - } - } - i++; - } - } else { - EbayStoreHelper.createErrorLogMessage(userLogin, dispatcher, paramMap.get("productStoreId").toString(), resp.getAck().toString(), "GetStoreOptionsCall : retrieveThemeColorSchemeByThemeId", resp.getErrors(0).getLongMessage()); - } - } - } catch (ApiException e) { - e.printStackTrace(); - return "error"; - } catch (SdkSoapException e) { - e.printStackTrace(); - return "error"; - } catch (SdkException e) { - e.printStackTrace(); - return "error"; - } - return "success"; - } - - public static String retrieveItemTemplateByTemplateGroupId(HttpServletRequest request,HttpServletResponse response) { - Map<String, Object> paramMap = UtilHttp.getCombinedMap(request); - if (paramMap.get("productStoreId") != null) { - String temGroupId = (String)paramMap.get("templateGroupId"); - Map<String,Object> addItemObj = EbayEvents.getAddItemListingObject(request, EbayEvents.getApiContext(request)); - if (UtilValidate.isNotEmpty(addItemObj)) { - String refName = "itemCateFacade_".concat((String) paramMap.get("pkCategoryId")); - if (UtilValidate.isNotEmpty(addItemObj.get(refName))) { - EbayStoreCategoryFacade cf = (EbayStoreCategoryFacade) addItemObj.get(refName); - List<Map<String,Object>> theme = cf.getAdItemTemplates(temGroupId); - if (theme.size() > 0) { - request.setAttribute("itemTemplates", theme); - } - } - } - } - return "success"; - } - - public static String retrieveEbayCategoryByParent(HttpServletRequest request, HttpServletResponse response) { - List<CategoryType> results; - try { - Map<String, Object> paramMap = UtilHttp.getCombinedMap(request); - if (paramMap.get("productStoreId") != null) { - String ebayCategoryId = (String)paramMap.get("ebayCategoryId"); - // when change category should be remove old category from session - if (ebayCategoryId.indexOf("CH_") != -1) { - ebayCategoryId = ebayCategoryId.replace("CH_", ""); - if (UtilValidate.isNotEmpty(ebayCategoryId)) { - ApiContext apiContext = EbayEvents.getApiContext(request); - Map<String,Object> addItemObject = EbayEvents.getAddItemListingObject(request, apiContext); - String refName = "itemCateFacade_".concat(ebayCategoryId); - if (UtilValidate.isNotEmpty(addItemObject.get(refName))) { - addItemObject.remove(refName); - } - } - ebayCategoryId = ""; - } - request.setAttribute("productStoreId", paramMap.get("productStoreId")); - request.setAttribute("categoryId", ebayCategoryId); - results = EbayEvents.getChildCategories(request); - if (UtilValidate.isNotEmpty(results)) { - List<Map<String,Object>> categories = new LinkedList<Map<String,Object>>(); - for (CategoryType category : results) { - Map<String,Object> context = new HashMap<String, Object>(); - context.put("CategoryCode", category.getCategoryID()); - context.put("CategoryName", category.getCategoryName()); - String isLeaf = String.valueOf(category.isLeafCategory()!= null ? category.isLeafCategory() : "false"); - context.put("IsLeafCategory", isLeaf); - categories.add(context); - } - if (categories.size() > 0) { - request.setAttribute("categories", categories); - } - } - } - } catch (GenericServiceException e) { - Debug.logError(e.getMessage(), module); - } catch (EventHandlerException e) { - Debug.logError(e.getMessage(), module); - } catch (ApiException e) { - Debug.logError(e.getMessage(), module); - } catch (SdkException e) { - Debug.logError(e.getMessage(), module); - } catch (Exception e) { - Debug.logError(e.getMessage(), module); - } - return "success"; - } - - public static String retrieveEbayStoreCategoryByParent(HttpServletRequest request, HttpServletResponse response) { - List<StoreCustomCategoryType> results; - try { - Map<String, Object> paramMap = UtilHttp.getCombinedMap(request); - if (paramMap.get("productStoreId") != null) { - String ebayStoreCategory = (String)paramMap.get("ebayCategoryId"); - // when change category should be remove old category from session - if (ebayStoreCategory.indexOf("CH_") != -1) { - ebayStoreCategory = ebayStoreCategory.replace("CH_", ""); - if (UtilValidate.isNotEmpty(ebayStoreCategory)) { - ApiContext apiContext = EbayEvents.getApiContext(request); - Map<String,Object> addItemObject = EbayEvents.getAddItemListingObject(request, apiContext); - String refName = "itemCateFacade_".concat(ebayStoreCategory); - if (UtilValidate.isNotEmpty(addItemObject.get(refName))) { - addItemObject.remove(refName); - } - } - ebayStoreCategory = ""; - } - request.setAttribute("productStoreId", paramMap.get("productStoreId")); - request.setAttribute("categoryId", ebayStoreCategory); - results = EbayEvents.getStoreChildCategories(request); - if (UtilValidate.isNotEmpty(results)) { - List<Map<String,Object>> categories = new LinkedList<Map<String,Object>>(); - for (StoreCustomCategoryType category : results) { - Map<String,Object> context = new HashMap<String, Object>(); - context.put("CategoryCode", category.getCategoryID()); - context.put("CategoryName", category.getName()); - String isLeaf = "false"; - if (category.getChildCategory().length == 0) { - isLeaf = "true"; - } else { - isLeaf = "false"; - } - context.put("IsLeafCategory", isLeaf); - categories.add(context); - } - if (categories.size() > 0) { - request.setAttribute("categories", categories); - } - } - } - } catch (GenericServiceException e) { - Debug.logError(e.getMessage(), module); - } catch (EventHandlerException e) { - Debug.logError(e.getMessage(), module); - } catch (ApiException e) { - Debug.logError(e.getMessage(), module); - } catch (SdkException e) { - Debug.logError(e.getMessage(), module); - } catch (Exception e) { - Debug.logError(e.getMessage(), module); - } - return "success"; - } - -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.ofbiz.ebaystore; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilHttp; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.entity.Delegator; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.service.GenericServiceException; +import org.ofbiz.service.LocalDispatcher; +import org.ofbiz.webapp.event.EventHandlerException; + +import com.ebay.sdk.ApiContext; +import com.ebay.sdk.ApiException; +import com.ebay.sdk.SdkException; +import com.ebay.sdk.SdkSoapException; +import com.ebay.sdk.call.GetStoreOptionsCall; +import com.ebay.soap.eBLBaseComponents.CategoryType; +import com.ebay.soap.eBLBaseComponents.GetStoreOptionsRequestType; +import com.ebay.soap.eBLBaseComponents.GetStoreOptionsResponseType; +import com.ebay.soap.eBLBaseComponents.StoreColorSchemeType; +import com.ebay.soap.eBLBaseComponents.StoreColorType; +import com.ebay.soap.eBLBaseComponents.StoreFontType; +import com.ebay.soap.eBLBaseComponents.StoreThemeArrayType; +import com.ebay.soap.eBLBaseComponents.StoreThemeType; +import com.ebay.soap.eBLBaseComponents.StoreCustomCategoryType; + +public class EbayStoreOptions { + + private static final String module = EbayStoreOptions.class.getName(); + + public static String retrieveThemeColorSchemeByThemeId(HttpServletRequest request, HttpServletResponse response) { + Locale locale = UtilHttp.getLocale(request); + HttpSession session = request.getSession(true); + GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); + Delegator delegator = (Delegator) request.getAttribute("delegator"); + LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); + GetStoreOptionsRequestType req = null; + GetStoreOptionsResponseType resp = null; + StoreThemeArrayType returnedBasicThemeArray = null; + + try { + Map<String, Object> paramMap = UtilHttp.getCombinedMap(request); + if (paramMap.get("productStoreId") != null) { + String themeId = (String)paramMap.get("themeId"); + + GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)paramMap.get("productStoreId"), locale, delegator)); + req = new GetStoreOptionsRequestType(); + + resp = (GetStoreOptionsResponseType) call.execute(req); + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { + + returnedBasicThemeArray = resp.getBasicThemeArray(); + StoreThemeType[] storeBasicTheme = returnedBasicThemeArray.getTheme(); + + int i=0; + String colorSchemeId = themeId.substring(themeId.indexOf("-")+1); + themeId = themeId.substring(0,themeId.indexOf("-")); + + Map<String,Object> storeColorSchemeMap = new HashMap<String, Object>(); + while (i < storeBasicTheme.length) { + + StoreThemeType storeThemeType = storeBasicTheme[i]; + if (themeId.equals(storeThemeType.getThemeID().toString())) { + StoreColorSchemeType colorSchemeType = storeThemeType.getColorScheme(); + if (colorSchemeType != null) { + if (colorSchemeId.equals(colorSchemeType.getColorSchemeID().toString())) { + StoreColorType storeColor = colorSchemeType.getColor(); + storeColorSchemeMap.put("storeColorAccent",storeColor.getAccent()); + storeColorSchemeMap.put("storeColorPrimary",storeColor.getPrimary()); + storeColorSchemeMap.put("storeColorSecondary",storeColor.getSecondary()); + + // get font,size and color + StoreFontType storeFontType = colorSchemeType.getFont(); + storeColorSchemeMap.put("storeFontTypeNameFaceColor",storeFontType.getNameColor()); + storeColorSchemeMap.put("storeFontTypeFontFaceValue",storeFontType.getNameFace().value()); + storeColorSchemeMap.put("storeFontTypeSizeFaceValue",storeFontType.getNameSize().value()); + + storeColorSchemeMap.put("storeFontTypeTitleColor",storeFontType.getTitleColor()); + storeColorSchemeMap.put("storeFontTypeFontTitleValue",storeFontType.getTitleFace().value()); + storeColorSchemeMap.put("storeFontSizeTitleValue",storeFontType.getTitleSize().value()); + + storeColorSchemeMap.put("storeFontTypeDescColor",storeFontType.getDescColor()); + storeColorSchemeMap.put("storeFontTypeFontDescValue",storeFontType.getDescFace().value()); + storeColorSchemeMap.put("storeDescSizeValue",storeFontType.getDescSize().value()); + request.setAttribute("storeColorSchemeMap", storeColorSchemeMap); + + break; + } + } + } + i++; + } + } else { + EbayStoreHelper.createErrorLogMessage(userLogin, dispatcher, paramMap.get("productStoreId").toString(), resp.getAck().toString(), "GetStoreOptionsCall : retrieveThemeColorSchemeByThemeId", resp.getErrors(0).getLongMessage()); + } + } + } catch (ApiException e) { + e.printStackTrace(); + return "error"; + } catch (SdkSoapException e) { + e.printStackTrace(); + return "error"; + } catch (SdkException e) { + e.printStackTrace(); + return "error"; + } + return "success"; + } + + public static String retrieveItemTemplateByTemplateGroupId(HttpServletRequest request,HttpServletResponse response) { + Map<String, Object> paramMap = UtilHttp.getCombinedMap(request); + if (paramMap.get("productStoreId") != null) { + String temGroupId = (String)paramMap.get("templateGroupId"); + Map<String,Object> addItemObj = EbayEvents.getAddItemListingObject(request, EbayEvents.getApiContext(request)); + if (UtilValidate.isNotEmpty(addItemObj)) { + String refName = "itemCateFacade_".concat((String) paramMap.get("pkCategoryId")); + if (UtilValidate.isNotEmpty(addItemObj.get(refName))) { + EbayStoreCategoryFacade cf = (EbayStoreCategoryFacade) addItemObj.get(refName); + List<Map<String,Object>> theme = cf.getAdItemTemplates(temGroupId); + if (theme.size() > 0) { + request.setAttribute("itemTemplates", theme); + } + } + } + } + return "success"; + } + + public static String retrieveEbayCategoryByParent(HttpServletRequest request, HttpServletResponse response) { + List<CategoryType> results; + try { + Map<String, Object> paramMap = UtilHttp.getCombinedMap(request); + if (paramMap.get("productStoreId") != null) { + String ebayCategoryId = (String)paramMap.get("ebayCategoryId"); + // when change category should be remove old category from session + if (ebayCategoryId.indexOf("CH_") != -1) { + ebayCategoryId = ebayCategoryId.replace("CH_", ""); + if (UtilValidate.isNotEmpty(ebayCategoryId)) { + ApiContext apiContext = EbayEvents.getApiContext(request); + Map<String,Object> addItemObject = EbayEvents.getAddItemListingObject(request, apiContext); + String refName = "itemCateFacade_".concat(ebayCategoryId); + if (UtilValidate.isNotEmpty(addItemObject.get(refName))) { + addItemObject.remove(refName); + } + } + ebayCategoryId = ""; + } + request.setAttribute("productStoreId", paramMap.get("productStoreId")); + request.setAttribute("categoryId", ebayCategoryId); + results = EbayEvents.getChildCategories(request); + if (UtilValidate.isNotEmpty(results)) { + List<Map<String,Object>> categories = new LinkedList<Map<String,Object>>(); + for (CategoryType category : results) { + Map<String,Object> context = new HashMap<String, Object>(); + context.put("CategoryCode", category.getCategoryID()); + context.put("CategoryName", category.getCategoryName()); + String isLeaf = String.valueOf(category.isLeafCategory()!= null ? category.isLeafCategory() : "false"); + context.put("IsLeafCategory", isLeaf); + categories.add(context); + } + if (categories.size() > 0) { + request.setAttribute("categories", categories); + } + } + } + } catch (GenericServiceException e) { + Debug.logError(e.getMessage(), module); + } catch (EventHandlerException e) { + Debug.logError(e.getMessage(), module); + } catch (ApiException e) { + Debug.logError(e.getMessage(), module); + } catch (SdkException e) { + Debug.logError(e.getMessage(), module); + } catch (Exception e) { + Debug.logError(e.getMessage(), module); + } + return "success"; + } + + public static String retrieveEbayStoreCategoryByParent(HttpServletRequest request, HttpServletResponse response) { + List<StoreCustomCategoryType> results; + try { + Map<String, Object> paramMap = UtilHttp.getCombinedMap(request); + if (paramMap.get("productStoreId") != null) { + String ebayStoreCategory = (String)paramMap.get("ebayCategoryId"); + // when change category should be remove old category from session + if (ebayStoreCategory.indexOf("CH_") != -1) { + ebayStoreCategory = ebayStoreCategory.replace("CH_", ""); + if (UtilValidate.isNotEmpty(ebayStoreCategory)) { + ApiContext apiContext = EbayEvents.getApiContext(request); + Map<String,Object> addItemObject = EbayEvents.getAddItemListingObject(request, apiContext); + String refName = "itemCateFacade_".concat(ebayStoreCategory); + if (UtilValidate.isNotEmpty(addItemObject.get(refName))) { + addItemObject.remove(refName); + } + } + ebayStoreCategory = ""; + } + request.setAttribute("productStoreId", paramMap.get("productStoreId")); + request.setAttribute("categoryId", ebayStoreCategory); + results = EbayEvents.getStoreChildCategories(request); + if (UtilValidate.isNotEmpty(results)) { + List<Map<String,Object>> categories = new LinkedList<Map<String,Object>>(); + for (StoreCustomCategoryType category : results) { + Map<String,Object> context = new HashMap<String, Object>(); + context.put("CategoryCode", category.getCategoryID()); + context.put("CategoryName", category.getName()); + String isLeaf = "false"; + if (category.getChildCategory().length == 0) { + isLeaf = "true"; + } else { + isLeaf = "false"; + } + context.put("IsLeafCategory", isLeaf); + categories.add(context); + } + if (categories.size() > 0) { + request.setAttribute("categories", categories); + } + } + } + } catch (GenericServiceException e) { + Debug.logError(e.getMessage(), module); + } catch (EventHandlerException e) { + Debug.logError(e.getMessage(), module); + } catch (ApiException e) { + Debug.logError(e.getMessage(), module); + } catch (SdkException e) { + Debug.logError(e.getMessage(), module); + } catch (Exception e) { + Debug.logError(e.getMessage(), module); + } + return "success"; + } + +} Propchange: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java ('svn:eol-style' removed) |
Free forum by Nabble | Edit this page |