|
Added: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java?rev=905876&view=auto ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java (added) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java Wed Feb 3 03:16:07 2010 @@ -0,0 +1,1482 @@ +/* + * 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.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Calendar; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import javolution.util.FastList; +import javolution.util.FastMap; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.StringUtil; +import org.ofbiz.base.util.UtilDateTime; +import org.ofbiz.base.util.UtilHttp; +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.base.util.UtilProperties; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.base.util.UtilXml; +import org.ofbiz.entity.Delegator; +import org.ofbiz.entity.GenericEntityException; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.entity.condition.EntityCondition; +import org.ofbiz.entity.condition.EntityOperator; +import org.ofbiz.entity.util.EntityUtil; +import org.ofbiz.service.DispatchContext; +import org.ofbiz.service.GenericServiceException; +import org.ofbiz.service.LocalDispatcher; +import org.ofbiz.service.ModelService; +import org.ofbiz.service.ServiceUtil; +import org.ofbiz.webapp.event.EventHandlerException; +import org.ofbiz.product.product.ProductContentWrapper; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; + +import com.ebay.sdk.ApiAccount; +import com.ebay.sdk.ApiContext; +import com.ebay.sdk.ApiCredential; +import com.ebay.sdk.ApiException; +import com.ebay.sdk.ApiLogging; +import com.ebay.sdk.SdkException; +import com.ebay.sdk.SdkSoapException; +import com.ebay.sdk.call.*; +import com.ebay.soap.eBLBaseComponents.AbstractRequestType; +import com.ebay.soap.eBLBaseComponents.DeleteSellingManagerTemplateRequestType; +import com.ebay.soap.eBLBaseComponents.DeleteSellingManagerTemplateResponseType; +import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType; +import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType; +import com.ebay.soap.eBLBaseComponents.GetStoreOptionsRequestType; +import com.ebay.soap.eBLBaseComponents.GetStoreOptionsResponseType; +import com.ebay.soap.eBLBaseComponents.GetStoreRequestType; +import com.ebay.soap.eBLBaseComponents.GetStoreResponseType; +import com.ebay.soap.eBLBaseComponents.MerchDisplayCodeType; +import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType; +import com.ebay.soap.eBLBaseComponents.SellingManagerProductInventoryStatusType; +import com.ebay.soap.eBLBaseComponents.SellingManagerProductType; +import com.ebay.soap.eBLBaseComponents.SellingManagerTemplateDetailsArrayType; +import com.ebay.soap.eBLBaseComponents.SellingManagerTemplateDetailsType; +import com.ebay.soap.eBLBaseComponents.SetStoreRequestType; +import com.ebay.soap.eBLBaseComponents.SetStoreResponseType; +import com.ebay.soap.eBLBaseComponents.StoreColorSchemeType; +import com.ebay.soap.eBLBaseComponents.StoreColorType; +import com.ebay.soap.eBLBaseComponents.StoreCustomHeaderLayoutCodeType; +import com.ebay.soap.eBLBaseComponents.StoreCustomListingHeaderDisplayCodeType; +import com.ebay.soap.eBLBaseComponents.StoreCustomListingHeaderLinkCodeType; +import com.ebay.soap.eBLBaseComponents.StoreCustomListingHeaderLinkType; +import com.ebay.soap.eBLBaseComponents.StoreCustomListingHeaderType; +import com.ebay.soap.eBLBaseComponents.StoreFontFaceCodeType; +import com.ebay.soap.eBLBaseComponents.StoreFontSizeCodeType; +import com.ebay.soap.eBLBaseComponents.StoreFontType; +import com.ebay.soap.eBLBaseComponents.StoreHeaderStyleCodeType; +import com.ebay.soap.eBLBaseComponents.StoreItemListLayoutCodeType; +import com.ebay.soap.eBLBaseComponents.StoreItemListSortOrderCodeType; +import com.ebay.soap.eBLBaseComponents.StoreLogoArrayType; +import com.ebay.soap.eBLBaseComponents.StoreLogoType; +import com.ebay.soap.eBLBaseComponents.StoreSubscriptionLevelCodeType; +import com.ebay.soap.eBLBaseComponents.StoreThemeArrayType; +import com.ebay.soap.eBLBaseComponents.StoreThemeType; +import com.ebay.soap.eBLBaseComponents.StoreType; +import java.sql.Timestamp; +import java.util.TimeZone; + +import com.ebay.soap.eBLBaseComponents.DetailLevelCodeType; +import com.ebay.soap.eBLBaseComponents.ItemArrayType; +import com.ebay.soap.eBLBaseComponents.ItemListCustomizationType; +import com.ebay.soap.eBLBaseComponents.ItemType; +import com.ebay.soap.eBLBaseComponents.MerchDisplayCodeType; +import com.ebay.soap.eBLBaseComponents.PaginatedItemArrayType; +import com.ebay.soap.eBLBaseComponents.SellingManagerSoldOrderType; +import com.ebay.soap.eBLBaseComponents.SellingManagerSoldTransactionType; + +import org.ofbiz.ebay.ProductsExportToEbay; +import org.ofbiz.ebay.EbayHelper; + +public class EbayStore { + private static final String resource = "EbayStoreUiLabels"; + private static final String module = ProductsExportToEbay.class.getName(); + public static ProductsExportToEbay productExportEbay = new ProductsExportToEbay(); + + private static void appendRequesterCredentials(Element elem, Document doc, String token) { + Element requesterCredentialsElem = UtilXml.addChildElement(elem, "RequesterCredentials", doc); + UtilXml.addChildElementValue(requesterCredentialsElem, "eBayAuthToken", token, doc); + } + + private static Map postItem(String postItemsUrl, StringBuffer dataItems, String devID, String appID, String certID, + String callName, String compatibilityLevel, String siteID) throws IOException { + if (Debug.verboseOn()) { + Debug.logVerbose("Request of " + callName + " To eBay:\n" + dataItems.toString(), module); + } + HttpURLConnection connection = (HttpURLConnection)(new URL(postItemsUrl)).openConnection(); + connection.setDoInput(true); + connection.setDoOutput(true); + connection.setRequestMethod("POST"); + connection.setRequestProperty("X-EBAY-API-COMPATIBILITY-LEVEL", compatibilityLevel); + connection.setRequestProperty("X-EBAY-API-DEV-NAME", devID); + connection.setRequestProperty("X-EBAY-API-APP-NAME", appID); + connection.setRequestProperty("X-EBAY-API-CERT-NAME", certID); + connection.setRequestProperty("X-EBAY-API-CALL-NAME", callName); + connection.setRequestProperty("X-EBAY-API-SITEID", siteID); + connection.setRequestProperty("Content-Type", "text/xml"); + + OutputStream outputStream = connection.getOutputStream(); + outputStream.write(dataItems.toString().getBytes()); + outputStream.close(); + int responseCode = connection.getResponseCode(); + InputStream inputStream; + Map result = FastMap.newInstance(); + String response = null; + + if (responseCode == HttpURLConnection.HTTP_CREATED || + responseCode == HttpURLConnection.HTTP_OK) { + inputStream = connection.getInputStream(); + response = toString(inputStream); + result = ServiceUtil.returnSuccess(response); + } else { + inputStream = connection.getErrorStream(); + response = toString(inputStream); + result = ServiceUtil.returnFailure(response); + } + + if (Debug.verboseOn()) { + Debug.logVerbose("Response of " + callName + " From eBay:\n" + response, module); + } + + return result; + } + + private static String toString(InputStream inputStream) throws IOException { + String string; + StringBuilder outputBuilder = new StringBuilder(); + if (inputStream != null) { + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); + while (null != (string = reader.readLine())) { + outputBuilder.append(string).append('\n'); + } + } + return outputBuilder.toString(); + } + + public static Map exportCategoriesSelectedToEbayStore(DispatchContext dctx, Map context) { + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + Map<String, Object> result = FastMap.newInstance(); + Map response = null; + Map<String, Object> eBayConfigResult = EbayHelper.buildEbayConfig(context, delegator); + StringBuffer dataStoreXml = new StringBuffer(); + try { + // GetStore // + Map resultMap = buildGetStoreXml(context, dataStoreXml, eBayConfigResult.get("token").toString(), eBayConfigResult.get("siteID").toString()); + if (!ServiceUtil.isFailure(resultMap)) { + response = postItem(eBayConfigResult.get("xmlGatewayUri").toString(), dataStoreXml, eBayConfigResult.get("devID").toString(), eBayConfigResult.get("appID").toString(), eBayConfigResult.get("certID").toString(), "GetStore", eBayConfigResult.get("compatibilityLevel").toString(), eBayConfigResult.get("siteID").toString()); + String successMessage = (String)response.get("successMessage"); + if (successMessage != null) { + String isSuccess = readEbayResponse(successMessage, context.get("productStoreId").toString()); + if (isSuccess == "success"){ + List<GenericValue> catalogCategories = null; + if(UtilValidate.isNotEmpty(context.get("prodCatalogId"))){ + catalogCategories = delegator.findByAnd("ProdCatalogCategory", UtilMisc.toMap("prodCatalogId", context.get("prodCatalogId").toString())); + } + if (catalogCategories != null){ + String isSuccess2 = ""; + Iterator categoriesListIter = catalogCategories.iterator(); + while (categoriesListIter.hasNext()) { + GenericValue catalogCategory = (GenericValue) categoriesListIter.next(); + String prodCategoryId = catalogCategory.getString("productCategoryId").toString(); + + StringBuffer dataCategoriesXml = new StringBuffer(); + Map resultCategoriesMap = buildSetStoreCategoriesXml(dctx, context, dataCategoriesXml, eBayConfigResult.get("token").toString(), eBayConfigResult.get("siteID").toString(), prodCategoryId); + if (!ServiceUtil.isFailure(resultCategoriesMap)) { + response = postItem(eBayConfigResult.get("xmlGatewayUri").toString(), dataCategoriesXml, eBayConfigResult.get("devID").toString(), eBayConfigResult.get("appID").toString(), eBayConfigResult.get("certID").toString(), "SetStoreCategories", eBayConfigResult.get("compatibilityLevel").toString(), eBayConfigResult.get("siteID").toString()); + String successMessage2 = (String)response.get("successMessage"); + if (successMessage2 != null) { + isSuccess2 = readEbayResponse(successMessage2, context.get("productStoreId").toString()); + } + } + } + } + } + } else { + ServiceUtil.returnFailure(ServiceUtil.getErrorMessage(response)); + } + } else { + return ServiceUtil.returnFailure(ServiceUtil.getErrorMessage(resultMap)); + } + result.put(ModelService.SUCCESS_MESSAGE, "Export categories success..."); + } catch (Exception e) { + Debug.logError("Exception in exportCategoriesSelectedToEbayStore : " + e, module); + return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.exceptionInGetEbayCategories", locale)); + } + return result; + } + + public static Map buildSetStoreXml(DispatchContext dctx, Map context, StringBuffer dataStoreXml, String token, String siteID) { + Locale locale = (Locale)context.get("locale"); + try { + Delegator delegator = dctx.getDelegator(); + String webSiteUrl = (String)context.get("webSiteUrl"); + List selectResult = (List)context.get("selectResult"); + + StringUtil.SimpleEncoder encoder = StringUtil.getEncoder("xml"); + + // Get the list of products to be exported to eBay + try { + Document storeDocument = UtilXml.makeEmptyXmlDocument("SetStoreRequest"); + Element storeRequestElem = storeDocument.getDocumentElement(); + storeRequestElem.setAttribute("xmlns", "urn:ebay:apis:eBLBaseComponents"); + + appendRequesterCredentials(storeRequestElem, storeDocument, token); + + /*UtilXml.addChildElementValue(storeRequestElem, "SiteId", siteID, storeDocument); + UtilXml.addChildElementValue(storeRequestElem, "DetailLevel", "ReturnAll", storeDocument); + UtilXml.addChildElementValue(storeRequestElem, "LevelLimit", "1", storeDocument);*/ + // Prepare data for set to XML + GenericValue productStore = null; + if (UtilValidate.isNotEmpty(context.get("productStoreId").toString())){ + productStore = delegator.findByPrimaryKey("ProductStore",UtilMisc.toMap("productStoreId", context.get("productStoreId").toString())); + } + Element itemElem = UtilXml.addChildElement(storeRequestElem, "Store", storeDocument); + UtilXml.addChildElementValue(itemElem, "Name", (String) productStore.getString("storeName"), storeDocument); + UtilXml.addChildElementValue(itemElem, "SubscriptionLevel", "Basic", storeDocument); + UtilXml.addChildElementValue(itemElem, "Description", (String) productStore.getString("title"), storeDocument); + dataStoreXml.append(UtilXml.writeXmlDocument(storeDocument)); + + } catch (Exception e) { + Debug.logError("Exception during building data items to eBay: " + e.getMessage(), module); + return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.exceptionDuringBuildingDataItemsToEbay", locale)); + } + } catch (Exception e) { + Debug.logError("Exception during building data items to eBay: " + e.getMessage(), module); + return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.exceptionDuringBuildingDataItemsToEbay", locale)); + } + return ServiceUtil.returnSuccess(); + } + + public static String readEbayResponse(String msg, String productStoreId) { + String result ="success"; + try { + Document docResponse = UtilXml.readXmlDocument(msg, true); + Element elemResponse = docResponse.getDocumentElement(); + String ack = UtilXml.childElementValue(elemResponse, "Ack", "Failure"); + if (ack != null && "Failure".equals(ack)) { + String errorMessage = ""; + List errorList = UtilXml.childElementList(elemResponse, "Errors"); + Iterator errorElemIter = errorList.iterator(); + while (errorElemIter.hasNext()) { + Element errorElement = (Element) errorElemIter.next(); + errorMessage = UtilXml.childElementValue(errorElement, "LongMessage"); + } + result = errorMessage; + } else { + String productSuccessfullyExportedMsg = "Successfully exported with ID (" + productStoreId + ")."; + result = "success"; + } + } catch (Exception e) { + Debug.logError("Error in processing xml string" + e.getMessage(), module); + result = "Failure"; + } + return result; + } + + public static Map buildGetStoreXml(Map context, StringBuffer dataStoreXml, String token, String siteID) { + Locale locale = (Locale)context.get("locale"); + try { + StringUtil.SimpleEncoder encoder = StringUtil.getEncoder("xml"); + + // Get the list of products to be exported to eBay + try { + Document storeDocument = UtilXml.makeEmptyXmlDocument("GetStoreRequest"); + Element storeRequestElem = storeDocument.getDocumentElement(); + storeRequestElem.setAttribute("xmlns", "urn:ebay:apis:eBLBaseComponents"); + appendRequesterCredentials(storeRequestElem, storeDocument, token); + //UtilXml.addChildElementValue(storeRequestElem, "CategorySiteID", siteID, storeDocument); + UtilXml.addChildElementValue(storeRequestElem, "DetailLevel", "ReturnAll", storeDocument); + UtilXml.addChildElementValue(storeRequestElem, "LevelLimit", "1", storeDocument); + dataStoreXml.append(UtilXml.writeXmlDocument(storeDocument)); + } catch (Exception e) { + Debug.logError("Exception during building data to eBay: " + e.getMessage(), module); + return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.exceptionDuringBuildingDataItemsToEbay", locale)); + } + } catch (Exception e) { + Debug.logError("Exception during building data to eBay: " + e.getMessage(), module); + return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.exceptionDuringBuildingDataItemsToEbay", locale)); + } + return ServiceUtil.returnSuccess(); + } + + public static Map buildSetStoreCategoriesXml(DispatchContext dctx, Map context, StringBuffer dataStoreXml, String token, String siteID, String productCategoryId) { + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale)context.get("locale"); + try { + StringUtil.SimpleEncoder encoder = StringUtil.getEncoder("xml"); + + // Get the list of products to be exported to eBay + try { + Document storeDocument = UtilXml.makeEmptyXmlDocument("SetStoreCategoriesRequest"); + Element storeRequestElem = storeDocument.getDocumentElement(); + storeRequestElem.setAttribute("xmlns", "urn:ebay:apis:eBLBaseComponents"); + appendRequesterCredentials(storeRequestElem, storeDocument, token); + UtilXml.addChildElementValue(storeRequestElem, "DetailLevel", "ReturnAll", storeDocument); + UtilXml.addChildElementValue(storeRequestElem, "Version", "643", storeDocument); + UtilXml.addChildElementValue(storeRequestElem, "Action", "Add", storeDocument); + + Element StoreCategoriesElem = UtilXml.addChildElement(storeRequestElem, "StoreCategories", storeDocument); + //UtilXml.addChildElementValue(StoreCategoriesElem, "Country", (String)context.get("country"), storeDocument); + GenericValue category = null; + if(UtilValidate.isNotEmpty(context.get("prodCatalogId"))){ + category = delegator.findByPrimaryKeyCache("ProductCategory", UtilMisc.toMap("productCategoryId", productCategoryId)); + } + String categoryName = category.getString("productCategoryId").toString(); + if(category.getString("categoryName").toString() != null){ + categoryName = category.getString("categoryName").toString(); + } + Element customCategoryElem = UtilXml.addChildElement(StoreCategoriesElem, "CustomCategory", storeDocument); + //UtilXml.addChildElementValue(customCategoryElem, "CategoryID", "", storeDocument); + UtilXml.addChildElementValue(customCategoryElem, "Name", categoryName, storeDocument); + + dataStoreXml.append(UtilXml.writeXmlDocument(storeDocument)); + + } catch (Exception e) { + Debug.logError("Exception during building data to eBay: " + e.getMessage(), module); + return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.exceptionDuringBuildingDataItemsToEbay", locale)); + } + } catch (Exception e) { + Debug.logError("Exception during building data to eBay: " + e.getMessage(), module); + return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.exceptionDuringBuildingDataItemsToEbay", locale)); + } + return ServiceUtil.returnSuccess(); + } + + public static Map readEbayGetStoreCategoriesResponse(String msg, Locale locale) { + Map results = null; + List categories = FastList.newInstance(); + try { + Document docResponse = UtilXml.readXmlDocument(msg, true); + Element elemResponse = docResponse.getDocumentElement(); + String ack = UtilXml.childElementValue(elemResponse, "Ack", "Failure"); + if (ack != null && "Failure".equals(ack)) { + String errorMessage = ""; + List errorList = UtilXml.childElementList(elemResponse, "Errors"); + Iterator errorElemIter = errorList.iterator(); + while (errorElemIter.hasNext()) { + Element errorElement = (Element) errorElemIter.next(); + errorMessage = UtilXml.childElementValue(errorElement, "ShortMessage", ""); + } + return ServiceUtil.returnFailure(errorMessage); + } else { + // retrieve Store + List Store = UtilXml.childElementList(elemResponse, "Store"); + Iterator StoreElemIter = Store.iterator(); + while (StoreElemIter.hasNext()) { + Element StoreElemIterElemIterElement = (Element)StoreElemIter.next(); + // retrieve Custom Category Array + + List customCategories = UtilXml.childElementList(StoreElemIterElemIterElement, "CustomCategories"); + Iterator customCategoriesElemIter = customCategories.iterator(); + while (customCategoriesElemIter.hasNext()) { + Element customCategoriesElemIterElement = (Element)customCategoriesElemIter.next(); + + // retrieve CustomCategory + List customCategory = UtilXml.childElementList(customCategoriesElemIterElement, "CustomCategory"); + Iterator customCategoryElemIter = customCategory.iterator(); + while (customCategoryElemIter.hasNext()) { + Map categ = FastMap.newInstance(); + Element categoryElement = (Element)customCategoryElemIter.next(); + categ.put("CategoryID", UtilXml.childElementValue(categoryElement, "CategoryID")); + categ.put("CategoryName", UtilXml.childElementValue(categoryElement, "Name")); + categ.put("CategorySeq", UtilXml.childElementValue(categoryElement, "Order")); + categories.add(categ); + } + } + } + categories = UtilMisc.sortMaps(categories, UtilMisc.toList("CategoryName")); + results = UtilMisc.toMap("categories", categories); + } + } catch (Exception e) { + return ServiceUtil.returnFailure(); + } + return results; + } + + public static Map<String, Object> getEbayStoreUser(DispatchContext dctx, Map<String, ? extends Object> context){ + Map<String, Object>result = FastMap.newInstance(); + String errorMsg = null; + LocalDispatcher dispatcher = dctx.getDispatcher(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + String productStoreId = (String) context.get("productStoreId"); + List itemsResult = FastList.newInstance(); + try{ + List productStores = delegator.findByAnd("ProductStoreRole", UtilMisc.toMap("productStoreId", productStoreId, "roleTypeId", "EBAY_ACCOUNT")); + if(productStores.size() != 0){ + String partyId = ((GenericValue) productStores.get(0)).getString("partyId"); + List userLoginStore = delegator.findByAnd("UserLogin", UtilMisc.toMap("partyId", partyId)); + if(userLoginStore.size() != 0){ + String userLoginId = ((GenericValue) userLoginStore.get(0)).getString("userLoginId"); + result.put("userLoginId", userLoginId); + } + } + }catch(Exception e){ + + } + return result; + } + + /*Editing the Store Settings */ + /* Get store output */ + public static Map<String,Object> getEbayStoreOutput(DispatchContext dctx, Map<String,Object> context){ + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + Map<String,Object> result = FastMap.newInstance(); + StoreType returnedStoreType = null; + GetStoreRequestType req = new GetStoreRequestType(); + GetStoreResponseType resp = null; + + String userLoginId = null; + String password = null; + if(context.get("productStoreId") != null){ + String partyId = null; + try { + List<GenericValue> productStoreRoles = delegator.findByAnd("ProductStoreRole", UtilMisc.toMap("productStoreId", context.get("productStoreId").toString(),"roleTypeId","EBAY_ACCOUNT")); + if(productStoreRoles!=null){ + partyId= (String)productStoreRoles.get(0).get("partyId"); + List<GenericValue> userLogin = delegator.findByAnd("UserLogin", UtilMisc.toMap("partyId", partyId)); + if(userLogin!=null){ + userLoginId = (String)userLogin.get(0).get("userLoginId"); + password = (String)userLogin.get(0).get("currentPassword"); + } + + } + } catch (GenericEntityException e1) { + e1.printStackTrace(); + } + Debug.log("userLoginId is "+userLoginId+" and productStoreId is "+context.get("productStoreId")); + GetStoreCall call = new GetStoreCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + //call.setSite(EbayHelper.getSiteCodeType((String)context.get("productStoreId"), locale, delegator)); + call.setCategoryStructureOnly(false); + call.setUserID(userLoginId); + + try { + resp = (GetStoreResponseType)call.execute(req); + if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + returnedStoreType = resp.getStore(); + result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS); + result.put(ModelService.SUCCESS_MESSAGE, UtilProperties.getMessage(resource, "EbayStoreLoadSuccess", locale)); + // update product store in ofbiz + updateProductStore(dctx, context,returnedStoreType,(String)context.get("productStoreId")); + Map<String,Object> ebayResp = FastMap.newInstance(); + ebayResp.put("storeName", returnedStoreType.getName()); + ebayResp.put("storeUrl", returnedStoreType.getURL()); + ebayResp.put("storeUrlPath", returnedStoreType.getURLPath()); + String desc = returnedStoreType.getDescription(); + if(desc!=null) desc = desc.trim(); + ebayResp.put("storeDesc", desc); + + StoreLogoType logoType = returnedStoreType.getLogo(); + ebayResp.put("storeLogoId", logoType.getLogoID()); + ebayResp.put("storeLogoName", logoType.getName()); + ebayResp.put("storeLogoURL", logoType.getURL()); + + StoreThemeType themeType = returnedStoreType.getTheme(); + ebayResp.put("storeThemeId",themeType.getThemeID()); + ebayResp.put("storeThemeName",themeType.getName()); + + StoreColorSchemeType colorSchemeType = themeType.getColorScheme(); + ebayResp.put("storeColorSchemeId",colorSchemeType.getColorSchemeID()); + + StoreColorType colorType = colorSchemeType.getColor(); + ebayResp.put("storeColorPrimary",colorType.getPrimary()); + ebayResp.put("storeColorAccent",colorType.getAccent()); + ebayResp.put("storeColorSecondary",colorType.getSecondary()); + + StoreFontType fontType = colorSchemeType.getFont(); + ebayResp.put("storeDescColor",fontType.getDescColor()); + ebayResp.put("storeNameColor",fontType.getNameColor()); + ebayResp.put("storeTitleColor",fontType.getTitleColor()); + + if(fontType!=null){// basic & advance theme + String themeId = themeType.getThemeID().toString().concat("-").concat(colorSchemeType.getColorSchemeID().toString()); + context.put("themeId", themeId); + Map<String,Object> results = retrieveThemeColorSchemeByThemeId(dctx,context); + if(results!=null){ + Map<String,Object> storeFontScheme = (Map<String,Object>)results.get("storeFontScheme"); + if(storeFontScheme!=null){ + ebayResp.put("storeDescFontFace",storeFontScheme.get("storeFontTypeFontDescValue")); + ebayResp.put("storeDescSizeCode", storeFontScheme.get("storeDescSizeValue")); + + ebayResp.put("storeNameFontFace",storeFontScheme.get("storeFontTypeFontFaceValue")); + ebayResp.put("storeNameFontFaceSize",storeFontScheme.get("storeFontTypeSizeFaceValue")); + + ebayResp.put("storeTitleFontFace",storeFontScheme.get("storeFontTypeFontTitleValue")); + ebayResp.put("storeTitleFontFaceSize",storeFontScheme.get("storeFontSizeTitleValue")); + } + } + } + + StoreHeaderStyleCodeType storeHeaderStyleCodeType = returnedStoreType.getHeaderStyle(); + ebayResp.put("storeHeaderStyle", storeHeaderStyleCodeType.value()); + StoreHeaderStyleCodeType[] storeHeaderStyleCodeList = storeHeaderStyleCodeType.values(); + if(storeHeaderStyleCodeList != null){ + List<Map<String,Object>> storeHeaderStyleList = FastList.newInstance(); + int i=0; + while(i<storeHeaderStyleCodeList.length){ + Map<String,Object> storeHeaderStyleMap = FastMap.newInstance(); + StoreHeaderStyleCodeType storeHeaderStyleCode = storeHeaderStyleCodeList[i]; + storeHeaderStyleMap.put("storeHeaderStyleName",storeHeaderStyleCode.name()); + storeHeaderStyleMap.put("storeHeaderStyleValue",storeHeaderStyleCode.value()); + storeHeaderStyleList.add(storeHeaderStyleMap); + i++; + } + ebayResp.put("storeHeaderStyleList", storeHeaderStyleList); + } + + ebayResp.put("storeHomePage", returnedStoreType.getHomePage().toString()); + + StoreItemListLayoutCodeType storeItemListLayoutCodeType = returnedStoreType.getItemListLayout(); + ebayResp.put("storeItemLayoutSelected", storeItemListLayoutCodeType.value()); + StoreItemListLayoutCodeType[] storeItemListLayoutCodeTypeList = storeItemListLayoutCodeType.values(); + if(storeItemListLayoutCodeTypeList!=null){ + List<Map<String,Object>> storeItemListLayoutCodeList = FastList.newInstance(); + int i=0; + while(i<storeItemListLayoutCodeTypeList.length){ + Map<String,Object> storeItemListLayoutCodeMap = FastMap.newInstance(); + StoreItemListLayoutCodeType storeItemListLayoutCode = storeItemListLayoutCodeTypeList[i]; + storeItemListLayoutCodeMap.put("storeItemLayoutName",storeItemListLayoutCode.name()); + storeItemListLayoutCodeMap.put("storeItemLayoutValue",storeItemListLayoutCode.value()); + storeItemListLayoutCodeList.add(storeItemListLayoutCodeMap); + i++; + } + ebayResp.put("storeItemLayoutList", storeItemListLayoutCodeList); + } + StoreItemListSortOrderCodeType storeItemListSortOrderCodeType = returnedStoreType.getItemListSortOrder(); + ebayResp.put("storeItemSortOrderSelected", storeItemListSortOrderCodeType.value()); + StoreItemListSortOrderCodeType[] storeItemListSortOrderCodeTypeList = storeItemListSortOrderCodeType.values(); + if(storeItemListSortOrderCodeTypeList!=null){ + List<Map<String,Object>> storeItemSortOrderCodeList = FastList.newInstance(); + int i=0; + while(i<storeItemListSortOrderCodeTypeList.length){ + Map<String,Object> storeItemSortOrderCodeMap = FastMap.newInstance(); + StoreItemListSortOrderCodeType storeItemListLayoutCode = storeItemListSortOrderCodeTypeList[i]; + storeItemSortOrderCodeMap.put("storeItemSortLayoutName",storeItemListLayoutCode.name()); + storeItemSortOrderCodeMap.put("storeItemSortLayoutValue",storeItemListLayoutCode.value()); + storeItemSortOrderCodeList.add(storeItemSortOrderCodeMap); + i++; + } + ebayResp.put("storeItemSortOrderList", storeItemSortOrderCodeList); + } + + ebayResp.put("storeCustomHeader", returnedStoreType.getCustomHeader()); + StoreCustomHeaderLayoutCodeType storeCustomHeaderLayoutCodeType = returnedStoreType.getCustomHeaderLayout(); + ebayResp.put("storeCustomHeaderLayout",storeCustomHeaderLayoutCodeType.value()); + StoreCustomHeaderLayoutCodeType[] storeCustomHeaderLayoutCodeTypeList = storeCustomHeaderLayoutCodeType.values(); + if(storeCustomHeaderLayoutCodeTypeList!=null){ + List<Map<String,Object>> storeCustomHeaderLayoutList = FastList.newInstance(); + int i=0; + while(i<storeCustomHeaderLayoutCodeTypeList.length){ + Map<String,Object> storeCustomHeaderLayoutMap = FastMap.newInstance(); + StoreCustomHeaderLayoutCodeType StoreCustomHeaderLayoutCode = storeCustomHeaderLayoutCodeTypeList[i]; + storeCustomHeaderLayoutMap.put("storeCustomHeaderLayoutName",StoreCustomHeaderLayoutCode.name()); + storeCustomHeaderLayoutMap.put("storeCustomHeaderLayoutValue",StoreCustomHeaderLayoutCode.value()); + storeCustomHeaderLayoutList.add(storeCustomHeaderLayoutMap); + i++; + } + ebayResp.put("storeCustomHeaderLayoutList", storeCustomHeaderLayoutList); + } + + StoreCustomListingHeaderType storeCustomListingHeaderType = returnedStoreType.getCustomListingHeader(); + if(storeCustomListingHeaderType!=null){ + StoreCustomListingHeaderDisplayCodeType storeCustomListingHeaderDisplayCodeType = storeCustomListingHeaderType.getDisplayType(); + ebayResp.put("isLogo",storeCustomListingHeaderType.isLogo()); + ebayResp.put("isSearchBox",storeCustomListingHeaderType.isSearchBox()); + ebayResp.put("isAddToFavoriteStores",storeCustomListingHeaderType.isAddToFavoriteStores()); + ebayResp.put("isSignUpForStoreNewsletter",storeCustomListingHeaderType.isSignUpForStoreNewsletter()); + + ebayResp.put("storeCustomListingHeaderDisplayName",storeCustomListingHeaderDisplayCodeType.name()); + ebayResp.put("storeCustomListingHeaderDisplayValue",storeCustomListingHeaderDisplayCodeType.value()); + StoreCustomListingHeaderDisplayCodeType[] storeCustomListingHeaderDisplayCodeTypeList = storeCustomListingHeaderDisplayCodeType.values(); + if(storeCustomListingHeaderDisplayCodeTypeList != null){ + List<Map<String,Object>> storeCustomListingHeaderDisplayCodeList = FastList.newInstance(); + int i=0; + while(i<storeCustomListingHeaderDisplayCodeTypeList.length){ + Map<String,Object> storeCustomListingHeaderDisplayCodeMap = FastMap.newInstance(); + StoreCustomListingHeaderDisplayCodeType storeCustomListingHeaderDisplayCode = storeCustomListingHeaderDisplayCodeTypeList[i]; + storeCustomListingHeaderDisplayCodeMap.put("storeCustomHeaderLayoutName",storeCustomListingHeaderDisplayCode.name()); + storeCustomListingHeaderDisplayCodeMap.put("storeCustomHeaderLayoutValue",storeCustomListingHeaderDisplayCode.value()); + storeCustomListingHeaderDisplayCodeList.add(storeCustomListingHeaderDisplayCodeMap); + i++; + } + ebayResp.put("storeCustomListingHeaderDisplayList", storeCustomListingHeaderDisplayCodeList); + } + } + + //CustomListingHeader + MerchDisplayCodeType merchDisplayCodeType = returnedStoreType.getMerchDisplay(); + ebayResp.put("storeMerchDisplay",merchDisplayCodeType.value()); + MerchDisplayCodeType[] merchDisplayCodeTypeList = merchDisplayCodeType.values(); + if(merchDisplayCodeTypeList!=null){ + List<Map<String,Object>> merchDisplayCodeList = FastList.newInstance(); + int i=0; + while(i<merchDisplayCodeTypeList.length){ + Map<String,Object> merchDisplayCodeMap = FastMap.newInstance(); + MerchDisplayCodeType merchDisplayCode = merchDisplayCodeTypeList[i]; + merchDisplayCodeMap.put("merchDisplayCodeName",merchDisplayCode.name()); + merchDisplayCodeMap.put("merchDisplayCodeValue",merchDisplayCode.value()); + merchDisplayCodeList.add(merchDisplayCodeMap); + i++; + } + ebayResp.put("storeMerchDisplayList",merchDisplayCodeList); + } + + Calendar calendar = returnedStoreType.getLastOpenedTime(); + ebayResp.put("storeLastOpenedTime", calendar.getTime().toString()); + ebayResp.put("storeSubscriptionLevel",returnedStoreType.getSubscriptionLevel().value()); + StoreSubscriptionLevelCodeType[] storeSubscriptionlevelList = returnedStoreType.getSubscriptionLevel().values(); + if(storeSubscriptionlevelList!=null){ + List<Map<String,Object>> storeSubscriptionLevelCodeList = FastList.newInstance(); + int i=0; + while(i<storeSubscriptionlevelList.length){ + Map<String,Object> storeSubscriptionLevelCodeMap = FastMap.newInstance(); + StoreSubscriptionLevelCodeType storeSubscriptionLevelCode= storeSubscriptionlevelList[i]; + storeSubscriptionLevelCodeMap.put("storeSubscriptionLevelCodeName", storeSubscriptionLevelCode.name()); + storeSubscriptionLevelCodeMap.put("storeSubscriptionLevelCodeValue", storeSubscriptionLevelCode.value()); + storeSubscriptionLevelCodeList.add(storeSubscriptionLevelCodeMap); + i++; + } + ebayResp.put("storeSubscriptionLevelList", storeSubscriptionLevelCodeList); + } + + result.put("ebayStore", ebayResp); + }else{ + result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_ERROR); + result.put(ModelService.ERROR_MESSAGE,resp.getAck().toString()+":"+resp.getMessage()); + } + } catch (ApiException e) { + result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_ERROR); + result.put(ModelService.ERROR_MESSAGE, e.getMessage()); + } catch (SdkSoapException e) { + result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_ERROR); + result.put(ModelService.ERROR_MESSAGE, e.getMessage()); + } catch (SdkException e) { + result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_ERROR); + result.put(ModelService.ERROR_MESSAGE, e.getMessage()); + } + } + return result; + } + + public static void updateProductStore(DispatchContext dctx,Map<String,Object> context,StoreType returnStoreType,String productStoreId){ + LocalDispatcher dispatcher = dctx.getDispatcher(); + Delegator delegator = dctx.getDelegator(); + try{ + Map<String,Object> inMap = FastMap.newInstance(); + if(returnStoreType != null){ + inMap.put("productStoreId", productStoreId); + inMap.put("storeName", returnStoreType.getName()); + inMap.put("subtitle", returnStoreType.getDescription()); + inMap.put("title", returnStoreType.getName()); + inMap.put("userLogin",context.get("userLogin")); + dispatcher.runSync("updateProductStore", inMap); + } + }catch(Exception e){ + Debug.log("error message"+e); + } + + } + + public static Map<String,Object> retrieveThemeColorSchemeByThemeId(DispatchContext dctx, Map<String,Object> context){ + + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + Map<String,Object> result = FastMap.newInstance(); + GetStoreOptionsRequestType req = null; + GetStoreOptionsResponseType resp = null; + StoreThemeArrayType returnedBasicThemeArray = null; + StoreThemeArrayType returnedAdvanceThemeArray = null; + + try { + if(context.get("productStoreId") != null){ + String themeId = (String)context.get("themeId"); + + GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)context.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 = null; + boolean flag = false; + while(i<storeBasicTheme.length){ + + StoreThemeType storeThemeType = (StoreThemeType)storeBasicTheme[i]; + if(themeId.equals(storeThemeType.getThemeID().toString())){ + StoreColorSchemeType colorSchemeType = storeThemeType.getColorScheme(); + if(colorSchemeType!=null){ + if(colorSchemeId.equals(colorSchemeType.getColorSchemeID().toString())){ + // get font,size and color + storeColorSchemeMap = FastMap.newInstance(); + StoreFontType storeFontType = colorSchemeType.getFont(); + storeColorSchemeMap.put("storeFontTypeFontFaceValue",storeFontType.getNameFace().value()); + storeColorSchemeMap.put("storeFontTypeSizeFaceValue",storeFontType.getNameSize().value()); + + storeColorSchemeMap.put("storeFontTypeFontTitleValue",storeFontType.getTitleFace().value()); + storeColorSchemeMap.put("storeFontSizeTitleValue",storeFontType.getTitleSize().value()); + + storeColorSchemeMap.put("storeFontTypeFontDescValue",storeFontType.getDescFace().value()); + storeColorSchemeMap.put("storeDescSizeValue",storeFontType.getDescSize().value()); + flag=true; + break; + } + } + } + i++; + } + result.put("storeFontScheme",storeColorSchemeMap); + } + } + }catch (ApiException e) { + e.printStackTrace(); + } catch (SdkSoapException e) { + e.printStackTrace(); + } catch (SdkException e) { + e.printStackTrace(); + } + + return result; + } + + public static Map<String,Object> retrievePredesignedLogoOption(DispatchContext dctx, Map<String,Object> context){ + Map<String,Object> result = FastMap.newInstance(); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + GetStoreOptionsRequestType req = null; + StoreLogoArrayType returnedLogoArray = null; + GetStoreOptionsResponseType resp = null; + try { + if(context.get("productStoreId") != null){ + GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + req = new GetStoreOptionsRequestType(); + + resp = (GetStoreOptionsResponseType) call.execute(req); + + if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + returnedLogoArray = resp.getLogoArray(); + + int i=0; + List<Map<String,Object>> logoList = FastList.newInstance(); + while(i<returnedLogoArray.getLogoLength()){ + Map<String,Object> logo = FastMap.newInstance(); + StoreLogoType storeLogoType = (StoreLogoType)returnedLogoArray.getLogo(i); + logo.put("storeLogoId", storeLogoType.getLogoID()); + logo.put("storeLogoName", storeLogoType.getName()); + logo.put("storeLogoURL", storeLogoType.getURL()); + logoList.add(logo); + i++; + } + result = ServiceUtil.returnSuccess("load store logo data success.."); + result.put("storeLogoOptList", logoList); + } + } + } catch (ApiException e) { + e.printStackTrace(); + } catch (SdkSoapException e) { + e.printStackTrace(); + } catch (SdkException e) { + e.printStackTrace(); + } + return result; + } + public static Map<String,Object> retrieveBasicThemeArray(DispatchContext dctx, Map<String,Object> context){ + Map<String,Object> result = FastMap.newInstance(); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + GetStoreOptionsRequestType req = null; + StoreThemeArrayType returnedBasicThemeArray = null; + GetStoreOptionsResponseType resp = null; + try { + if(context.get("productStoreId") != null){ + GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + req = new GetStoreOptionsRequestType(); + + resp = (GetStoreOptionsResponseType) call.execute(req); + + StoreColorSchemeType storeFontColorSchemeType = null; + if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + returnedBasicThemeArray = resp.getBasicThemeArray(); + int i=0; + List<Map<String,Object>> themeList = FastList.newInstance(); + while(i<returnedBasicThemeArray.getThemeLength()){ + Map<String,Object> basictheme = FastMap.newInstance(); + StoreThemeType storeBasicThemeType = (StoreThemeType)returnedBasicThemeArray.getTheme(i); + basictheme.put("storeThemeId", storeBasicThemeType.getThemeID()); + basictheme.put("storeThemeName", storeBasicThemeType.getName()); + + StoreColorSchemeType storeColorSchemeType = storeBasicThemeType.getColorScheme(); + basictheme.put("storeColorSchemeId",storeColorSchemeType.getColorSchemeID()); + basictheme.put("storeColorSchemeName",storeColorSchemeType.getName()); + + if(storeFontColorSchemeType == null){ + storeFontColorSchemeType = storeBasicThemeType.getColorScheme(); + } + + themeList.add(basictheme); + i++; + } + result = ServiceUtil.returnSuccess("load store Basic Theme option data success.."); + result.put("storeThemeList", themeList); + } + } + } catch (ApiException e) { + e.printStackTrace(); + } catch (SdkSoapException e) { + e.printStackTrace(); + } catch (SdkException e) { + e.printStackTrace(); + } + return result; + } + + public static Map<String,Object> retrieveAdvancedThemeArray(DispatchContext dctx, Map<String,Object> context){ + Map<String,Object> result = FastMap.newInstance(); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + GetStoreOptionsRequestType req = null; + StoreThemeArrayType returnedAdvancedThemeArray = null; + GetStoreOptionsResponseType resp = null; + try { + if(context.get("productStoreId") != null){ + GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + req = new GetStoreOptionsRequestType(); + + resp = (GetStoreOptionsResponseType) call.execute(req); + + if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + result = ServiceUtil.returnSuccess("load store advanced Theme option data success.."); + + returnedAdvancedThemeArray = resp.getAdvancedThemeArray(); + + int i=0; + List<Map<String,Object>> themeList = FastList.newInstance(); + while(i<returnedAdvancedThemeArray.getThemeLength()){ + Map<String,Object> advanceTheme = FastMap.newInstance(); + StoreThemeType storeThemeType = returnedAdvancedThemeArray.getTheme(i); + advanceTheme.put("storeThemeId",storeThemeType.getThemeID()); + advanceTheme.put("storeThemeName",storeThemeType.getName()); + themeList.add(advanceTheme); + i++; + } + result.put("storeThemeList", themeList); + int j=0; + StoreColorSchemeType[] storeColorSchemeTypes = returnedAdvancedThemeArray.getGenericColorSchemeArray().getColorScheme(); + List<Map<String,Object>> themeColorList = FastList.newInstance(); + while(j<storeColorSchemeTypes.length){ + Map<String,Object> advanceColorTheme = FastMap.newInstance(); + StoreColorSchemeType storeColorSchemeType = (StoreColorSchemeType)storeColorSchemeTypes[j]; + advanceColorTheme.put("storeColorSchemeId", storeColorSchemeType.getColorSchemeID()); + advanceColorTheme.put("storeColorName", storeColorSchemeType.getName()); + themeColorList.add(advanceColorTheme); + j++; + } + + result.put("storeAdvancedThemeColorOptList", themeColorList); + } + //this.returnedSubscriptionArray = resp.getSubscriptionArray(); + } + } catch (ApiException e) { + e.printStackTrace(); + } catch (SdkSoapException e) { + e.printStackTrace(); + } catch (SdkException e) { + e.printStackTrace(); + } + return result; + } + + public static Map<String,Object> retrieveStoreFontTheme(DispatchContext dctx, Map<String,Object> context){ + Map<String,Object> result = FastMap.newInstance(); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + GetStoreOptionsRequestType req = null; + StoreThemeArrayType returnedThemeArray = null; + GetStoreOptionsResponseType resp = null; + try { + if(context.get("productStoreId") != null){ + GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + req = new GetStoreOptionsRequestType(); + + resp = (GetStoreOptionsResponseType) call.execute(req); + + StoreColorSchemeType storeFontColorSchemeType = null; + Map<String,Object> advanceFontTheme = FastMap.newInstance(); + if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + returnedThemeArray = resp.getAdvancedThemeArray(); + int i=0; + List<Map<String,Object>> themeList = FastList.newInstance(); + + StoreColorSchemeType[] storeColorSchemeTypes = returnedThemeArray.getGenericColorSchemeArray().getColorScheme(); + while(i<storeColorSchemeTypes.length){ + + StoreColorSchemeType storeColorSchemeType = (StoreColorSchemeType)storeColorSchemeTypes[i]; + StoreFontType storeFontType = storeColorSchemeType.getFont(); + advanceFontTheme.put("storeFontTypeNameFaceColor",storeFontType.getNameColor()); + int j=0; + StoreFontFaceCodeType[] storeFontNameFaceCodeTypes = storeFontType.getNameFace().values(); + List<Map<String,Object>> nameFaces = FastList.newInstance(); + while(j<storeFontNameFaceCodeTypes.length){ + Map<String,Object> storeFontNameFaceCodeTypeMap = FastMap.newInstance(); + StoreFontFaceCodeType storeFontNameFaceCodeType = (StoreFontFaceCodeType)storeFontNameFaceCodeTypes[j]; + storeFontNameFaceCodeTypeMap.put("storeFontValue",storeFontNameFaceCodeType.value()); + storeFontNameFaceCodeTypeMap.put("storeFontName",storeFontNameFaceCodeType.name()); + nameFaces.add(storeFontNameFaceCodeTypeMap); + j++; + } + advanceFontTheme.put("storeFontTypeFontFaceList",nameFaces); + j=0; + StoreFontSizeCodeType[] storeFontSizeCodeTypes = storeFontType.getNameSize().values(); + List<Map<String,Object>> sizeFaces = FastList.newInstance(); + while(j<storeFontSizeCodeTypes.length){ + Map<String,Object> storeFontSizeCodeTypeMap = FastMap.newInstance(); + StoreFontSizeCodeType storeFontSizeCodeType = (StoreFontSizeCodeType)storeFontSizeCodeTypes[j]; + storeFontSizeCodeTypeMap.put("storeFontSizeValue",storeFontSizeCodeType.value()); + storeFontSizeCodeTypeMap.put("storeFontSizeName",storeFontSizeCodeType.name()); + sizeFaces.add(storeFontSizeCodeTypeMap); + j++; + } + advanceFontTheme.put("storeFontTypeSizeFaceList",sizeFaces); + + advanceFontTheme.put("storeFontTypeTitleColor",storeFontType.getTitleColor()); + j=0; + StoreFontFaceCodeType[] storeFontTypeTitleFaces = storeFontType.getTitleFace().values(); + List<Map<String,Object>> titleFaces = FastList.newInstance(); + while(j<storeFontTypeTitleFaces.length){ + Map<String,Object> storeFontTypeTitleFaceMap = FastMap.newInstance(); + StoreFontFaceCodeType storeFontTypeTitleFace = (StoreFontFaceCodeType)storeFontTypeTitleFaces[j]; + storeFontTypeTitleFaceMap.put("storeFontValue",storeFontTypeTitleFace.value()); + storeFontTypeTitleFaceMap.put("storeFontName",storeFontTypeTitleFace.name()); + titleFaces.add(storeFontTypeTitleFaceMap); + j++; + } + advanceFontTheme.put("storeFontTypeFontTitleList",titleFaces); + + j=0; + StoreFontSizeCodeType[] storeTitleSizeCodeTypes = storeFontType.getTitleSize().values(); + List<Map<String,Object>> titleSizes = FastList.newInstance(); + while(j<storeTitleSizeCodeTypes.length){ + Map<String,Object> storeFontSizeCodeTypeMap = FastMap.newInstance(); + StoreFontSizeCodeType storeFontSizeCodeType = (StoreFontSizeCodeType)storeTitleSizeCodeTypes[j]; + storeFontSizeCodeTypeMap.put("storeFontSizeValue",storeFontSizeCodeType.value()); + storeFontSizeCodeTypeMap.put("storeFontSizeName",storeFontSizeCodeType.name()); + titleSizes.add(storeFontSizeCodeTypeMap); + j++; + } + advanceFontTheme.put("storeFontSizeTitleList",titleSizes); + + + advanceFontTheme.put("storeFontTypeDescColor",storeFontType.getDescColor()); + j=0; + StoreFontFaceCodeType[] storeFontTypeDescFaces = storeFontType.getDescFace().values(); + List<Map<String,Object>> descFaces = FastList.newInstance(); + while(j<storeFontTypeDescFaces.length){ + Map<String,Object> storeFontTypeDescFaceMap = FastMap.newInstance(); + StoreFontFaceCodeType storeFontTypeDescFace = (StoreFontFaceCodeType)storeFontTypeDescFaces[j]; + storeFontTypeDescFaceMap.put("storeFontValue",storeFontTypeDescFace.value()); + storeFontTypeDescFaceMap.put("storeFontName",storeFontTypeDescFace.name()); + descFaces.add(storeFontTypeDescFaceMap); + j++; + } + advanceFontTheme.put("storeFontTypeFontDescList",descFaces); + + j=0; + StoreFontSizeCodeType[] storeDescSizeCodeTypes = storeFontType.getDescSize().values(); + List<Map<String,Object>> descSizes = FastList.newInstance(); + while(j<storeDescSizeCodeTypes.length){ + Map<String,Object> storeFontSizeCodeTypeMap = FastMap.newInstance(); + StoreFontSizeCodeType storeFontSizeCodeType = (StoreFontSizeCodeType)storeDescSizeCodeTypes[j]; + storeFontSizeCodeTypeMap.put("storeFontSizeValue",storeFontSizeCodeType.value()); + storeFontSizeCodeTypeMap.put("storeFontSizeName",storeFontSizeCodeType.name()); + descSizes.add(storeFontSizeCodeTypeMap); + j++; + } + advanceFontTheme.put("storeDescSizeList",descSizes); + i++; + } + result = ServiceUtil.returnSuccess("load store Basic Theme option data success.."); + result.put("advanceFontTheme", advanceFontTheme); + } + } + } catch (ApiException e) { + e.printStackTrace(); + } catch (SdkSoapException e) { + e.printStackTrace(); + } catch (SdkException e) { + e.printStackTrace(); + } + return result; + } + + public static Map<String,Object> setEbayStoreInput(DispatchContext dctx, Map<String,Object> context){ + Map<String,Object> result = FastMap.newInstance(); + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + SetStoreRequestType req = null; + StoreThemeArrayType returnedThemeArray = null; + SetStoreResponseType resp = null; + StoreType storeType = null; + try { + if(context.get("productStoreId") != null){ + SetStoreCall call = new SetStoreCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + req = new SetStoreRequestType(); + + storeType = new StoreType(); + + storeType.setName((String)context.get("storeName")); + storeType.setDescription((String)context.get("storeDesc")); + storeType.setURL((String)context.get("storeUrl")); + storeType.setURLPath(""); + StoreLogoType storeLogo = new StoreLogoType(); + if(context.get("storeLogoURL") == null){ + if(context.get("storeLogoId")!=null)storeLogo.setLogoID(Integer.parseInt((String)context.get("storeLogoId"))); + storeLogo.setName((String)context.get("storeLogoName")); + }else{ + storeLogo.setURL((String)context.get("storeLogoURL")); + } + storeType.setLogo(storeLogo); + + StoreThemeType storeTheme = new StoreThemeType(); + StoreColorSchemeType storeColorScheme = null; + StoreColorType storecolor = null; + StoreFontType storeFont = null; + if(context.get("themeType").equals("Advanced")){ + storeColorScheme = new StoreColorSchemeType(); + if(context.get("storeAdvancedThemeColor")!=null)storeColorScheme.setColorSchemeID(Integer.parseInt((String)context.get("storeAdvancedThemeColor"))); + + storecolor = new StoreColorType(); + storecolor.setPrimary((String)context.get("storePrimaryColor")); + storecolor.setSecondary((String)context.get("storeSecondaryColor")); + storecolor.setAccent((String)context.get("storeAccentColor")); + storeColorScheme.setColor(storecolor); + storeTheme.setColorScheme(storeColorScheme); + storeTheme.setName(null); + storeTheme.setThemeID(Integer.parseInt((String)context.get("storeAdvancedTheme"))); + }else if(context.get("themeType").equals("Basic")){ + storeColorScheme = new StoreColorSchemeType(); + if(context.get("storeBasicTheme")!=null) { + String storeBasicTheme = (String)context.get("storeBasicTheme"); + String storeThemeId = null; + String storeColorSchemeId = null; + if(storeBasicTheme.indexOf("-") != -1){ + storeThemeId = storeBasicTheme.substring(0,storeBasicTheme.indexOf("-")); + storeColorSchemeId = storeBasicTheme.substring(storeBasicTheme.indexOf("-")+1); + } + if(storeColorSchemeId != null) storeColorScheme.setColorSchemeID(Integer.parseInt(storeColorSchemeId)); + + storecolor = new StoreColorType(); + storecolor.setPrimary((String)context.get("storePrimaryColor")); + storecolor.setSecondary((String)context.get("storeSecondaryColor")); + storecolor.setAccent((String)context.get("storeAccentColor")); + storeColorScheme.setColor(storecolor); + + storeFont = new StoreFontType(); + storeFont.setNameColor((String)context.get("storeNameFontColor")); + storeFont.setNameFace(StoreFontFaceCodeType.valueOf((String)context.get("storeNameFont"))); + storeFont.setNameSize(StoreFontSizeCodeType.valueOf((String)context.get("storeNameFontSize"))); + + storeFont.setTitleColor((String)context.get("storeTitleFontColor")); + storeFont.setTitleFace(StoreFontFaceCodeType.valueOf((String)context.get("storeTitleFont"))); + storeFont.setTitleSize(StoreFontSizeCodeType.valueOf((String)context.get("storeTitleFontSize"))); + + storeFont.setDescColor((String)context.get("storeDescFontColor")); + storeFont.setDescFace(StoreFontFaceCodeType.valueOf((String)context.get("storeDescFont"))); + storeFont.setDescSize(StoreFontSizeCodeType.valueOf((String)context.get("storeDescFontSize"))); + + storeColorScheme.setFont(storeFont); + + storeTheme.setColorScheme(storeColorScheme); + + storeTheme.setName(null); + storeTheme.setThemeID(Integer.parseInt(storeThemeId)); + } + } + storeType.setTheme(storeTheme); + storeType.setHeaderStyle(StoreHeaderStyleCodeType.valueOf((String)context.get("storeHeaderStyle"))); + storeType.setItemListLayout(StoreItemListLayoutCodeType.valueOf((String)context.get("storeItemLayout"))); + storeType.setItemListSortOrder(StoreItemListSortOrderCodeType.valueOf((String)context.get("storeItemSortOrder"))); + storeType.setMerchDisplay(MerchDisplayCodeType.valueOf((String)context.get("storeMerchDisplay"))); + storeType.setSubscriptionLevel(StoreSubscriptionLevelCodeType.valueOf((String)context.get("storeSubscriptionDisplay"))); + + + storeType.setCustomHeader((String)context.get("storeCustomHeader")); + storeType.setCustomHeaderLayout(StoreCustomHeaderLayoutCodeType.valueOf((String)context.get("storeCustomHeaderLayout"))); + + StoreCustomListingHeaderType storeCustomListingHeader = new StoreCustomListingHeaderType(); + + if( storeType == null ) + throw new SdkException("StoreType property is not set."); + + req.setStore(storeType); + resp = (SetStoreResponseType) call.execute(req); + + if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreSaveSuccess",locale)); + }else{ + result = ServiceUtil.returnError(resp.getMessage()); + } + LocalDispatcher dispatcher = dctx.getDispatcher(); + Map<String,Object> results = dispatcher.runSync("getEbayStoreOutput",UtilMisc.toMap("productStoreId",(String) context.get("productStoreId"),"userLogin",context.get("userLogin"))); + if(results!=null){ + result.put("ebayStore", results.get("ebayStore")); + } + } + } catch (ApiException e) { + result = ServiceUtil.returnError(e.getMessage()); + } catch (SdkSoapException e) { + result = ServiceUtil.returnError(e.getMessage()); + } catch (SdkException e) { + result = ServiceUtil.returnError(e.getMessage()); + } catch (GenericServiceException e) { + result = ServiceUtil.returnError(e.getMessage()); + } + return result; + } + + public static Map<String, Object> getEbayActiveItems(DispatchContext dctx, Map<String, ? extends Object> context){ + Map<String, Object>result = FastMap.newInstance(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + String productStoreId = (String) context.get("productStoreId"); + List activeItems = FastList.newInstance(); + try { + Map<String, Object> inMap = FastMap.newInstance(); + inMap.put("productStoreId", productStoreId); + inMap.put("userLogin", userLogin); + Map<String, Object> resultUser = dispatcher.runSync("getEbayStoreUser", inMap); + String userID = (String)resultUser.get("userLoginId"); + ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator); + GetMyeBaySellingCall getMyeBaySellingCall = new GetMyeBaySellingCall(apiContext); + ItemListCustomizationType activeList = new ItemListCustomizationType(); + getMyeBaySellingCall.setActiveList(activeList ); + DetailLevelCodeType[] level = {DetailLevelCodeType.RETURN_ALL}; + getMyeBaySellingCall.setDetailLevel(level); + getMyeBaySellingCall.getMyeBaySelling(); + PaginatedItemArrayType itemListCustomizationType = getMyeBaySellingCall.getReturnedActiveList(); + if(itemListCustomizationType != null){ + ItemArrayType itemArrayType = itemListCustomizationType.getItemArray(); + int itemArrayTypeSize = itemArrayType.getItemLength(); + for(int i=0; i<itemArrayTypeSize; i++){ + Map<String, Object> entry = FastMap.newInstance(); + ItemType item = itemArrayType.getItem(i); + entry.put("itemId",item.getItemID()); + entry.put("title",item.getTitle()); + if(item.getPictureDetails() != null){ + String url[] = item.getPictureDetails().getPictureURL(); + if(url.length != 0){ + entry.put("pictureURL",url[0]); + }else{ + entry.put("pictureURL", null); + } + }else{ + entry.put("pictureURL", null); + } + entry.put("timeLeft",item.getTimeLeft()); + if(item.getBuyItNowPrice() != null){ + entry.put("buyItNowPrice",item.getBuyItNowPrice().getValue()); + }else{ + entry.put("buyItNowPrice", null); + } + if(item.getStartPrice() != null){ + entry.put("startPrice",item.getStartPrice().getValue()); + }else{ + entry.put("startPrice", null); + } + if(item.getListingDetails() != null){ + entry.put("relistedItemId",item.getListingDetails().getRelistedItemID()); + }else{ + entry.put("relistedItemId", null); + } + if(item.getListingType() != null){ + entry.put("listingType", item.getListingType().value()); + }else{ + entry.put("listingType", null); + } + activeItems.add(entry); + } + } + result.put("activeItems", activeItems); + } catch (Exception e) { + // TODO Auto-generated catch block + return ServiceUtil.returnError(e.getMessage()); + } + return result; + } + public static Map<String, Object> getEbaySoldItems(DispatchContext dctx, Map<String, ? extends Object> context){ + Map<String, Object>result = FastMap.newInstance(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + String productStoreId = (String) context.get("productStoreId"); + List soldItems = FastList.newInstance(); + try { + Map<String, Object> inMap = FastMap.newInstance(); + inMap.put("productStoreId", productStoreId); + inMap.put("userLogin", userLogin); + Map<String, Object> resultUser = dispatcher.runSync("getEbayStoreUser", inMap); + String userID = (String)resultUser.get("userLoginId"); + ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator); + GetSellingManagerSoldListingsCall sellingManagerSoldListings = new GetSellingManagerSoldListingsCall(apiContext); + sellingManagerSoldListings.getSellingManagerSoldListings(); + SellingManagerSoldOrderType[] sellingManagerSoldOrders = sellingManagerSoldListings.getReturnedSaleRecord(); + if(sellingManagerSoldOrders != null){ + int soldOrderLength = sellingManagerSoldOrders.length; + for(int i=0; i<soldOrderLength; i++){ + SellingManagerSoldOrderType sellingManagerSoldOrder = sellingManagerSoldOrders[i]; + if(sellingManagerSoldOrder != null){ + SellingManagerSoldTransactionType[] sellingManagerSoldTransactions = sellingManagerSoldOrder.getSellingManagerSoldTransaction(); + int sellingManagerSoldTransactionLength = sellingManagerSoldTransactions.length; + for(int j=0;j<sellingManagerSoldTransactionLength;j++){ + Map<String, Object> entry = FastMap.newInstance(); + SellingManagerSoldTransactionType sellingManagerSoldTransaction = sellingManagerSoldTransactions[j]; + entry.put("itemId",sellingManagerSoldTransaction.getItemID()); + entry.put("title",sellingManagerSoldTransaction.getItemTitle()); + if(soldItems!=null){ + int soldItemsLength = soldItems.size(); + boolean checkStatus = false; + for(int check=0;check<soldItemsLength;check++){ + Map checkMap = (Map)soldItems.get(check); + if(checkMap.get("itemId").equals(entry.get("itemId"))){ + checkStatus = true; + } + } + if(!checkStatus){ + soldItems.add(entry); + } + }else{ + soldItems.add(entry); + } + } + } + } + } + result.put("soldItems", soldItems); + } catch (Exception e) { + // TODO Auto-generated catch block + return ServiceUtil.returnError(e.getMessage()); + } + return result; + } + public static Map<String, Object> automaticEbayRelistSoldItems(DispatchContext dctx, Map<String, ? extends Object> context){ + Map<String, Object>result = FastMap.newInstance(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + try { + Map<String, Object>serviceMap = FastMap.newInstance(); + serviceMap.put("userLogin", userLogin); + List<GenericValue>stores = delegator.findByAnd("ProductStore", UtilMisc.toMap()); + for(int storeCount=0;storeCount<stores.size();storeCount++){ + String productStoreId = stores.get(storeCount).getString("productStoreId"); + serviceMap.put("productStoreId", productStoreId); + Map eBayUserLogin = dispatcher.runSync("getEbayStoreUser", serviceMap); + String eBayUserLoginId = (String)eBayUserLogin.get("userLoginId"); + if(eBayUserLoginId != null){ + List<GenericValue>jobs = delegator.findByAnd("JobSandbox", UtilMisc.toMap("authUserLoginId", eBayUserLoginId)); + if(jobs.size() != 0){ + GenericValue job = jobs.get(0); + Timestamp startDateTime = (Timestamp)job.get("startDateTime"); + Timestamp finishDateTime = (Timestamp)job.get("finishDateTime"); + //check can re-list items by eBay account setting + boolean canRelistItems = false; + Timestamp nowTime = UtilDateTime.nowTimestamp(); + if(startDateTime!=null&&finishDateTime!=null){ + if(startDateTime.before(nowTime) && finishDateTime.after(nowTime)){ + canRelistItems = true; + } + }else if(startDateTime!=null&&finishDateTime==null){ + if(startDateTime.before(nowTime)){ + canRelistItems = true; + } + } + if(canRelistItems){ + //save sold items to OFbBiz product entity + Map resultService = dispatcher.runSync("getEbaySoldItems", serviceMap); + List soldItems = (List)resultService.get("soldItems"); + if(soldItems.size()!=0){ + for(int itemCount=0;itemCount<soldItems.size();itemCount++){ + Map soldItemMap = (Map)soldItems.get(itemCount); + if(UtilValidate.isNotEmpty(soldItemMap.get("itemId"))){ + GenericValue productCheck = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", soldItemMap.get("itemId"))); + if(productCheck == null){ + GenericValue product = delegator.makeValue("Product"); + product.set("productId", soldItemMap.get("itemId")); + product.set("internalName", soldItemMap.get("title")); + product.set("productTypeId", "EBAY_ITEM"); + product.create(); + } + } + } + } + //check active items + serviceMap = FastMap.newInstance(); + serviceMap.put("userLogin", userLogin); + serviceMap.put("productStoreId", productStoreId); + resultService = dispatcher.runSync("getEbayActiveItems", serviceMap); + List activeItems = (List)resultService.get("activeItems"); + List<String> activeItemMaps = FastList.newInstance(); + if(activeItems.size()!=0){ + for(int itemCount=0;itemCount<activeItems.size();itemCount++){ + Map activeItemMap = (Map)activeItems.get(itemCount); + if(UtilValidate.isNotEmpty(activeItemMap.get("itemId"))){ + activeItemMaps.add((String)activeItemMap.get("itemId")); + } + } + } + List andExpr = FastList.newInstance(); + EntityCondition activeItemCond = EntityCondition.makeCondition("productId", EntityOperator.NOT_IN, activeItemMaps); + andExpr.add(activeItemCond); + EntityCondition productTypeCond = EntityCondition.makeCondition("productTypeId", EntityOperator.EQUALS, "EBAY_ITEM"); + andExpr.add(productTypeCond); + EntityCondition isVirtualCond = EntityCondition.makeCondition("isVirtual", EntityOperator.EQUALS, null); + andExpr.add(isVirtualCond); + EntityCondition andCond = EntityCondition.makeCondition(andExpr, EntityOperator.AND); + + List itemsToRelist = delegator.findList("Product", andCond, null, null, null, false); + if(itemsToRelist.size() != 0){ + //re-list sold items and not active + Map<String, Object> inMap = FastMap.newInstance(); + inMap.put("productStoreId", productStoreId); + inMap.put("userLogin", userLogin); + Map<String, Object> resultUser = dispatcher.runSync("getEbayStoreUser", inMap); + String userID = (String)resultUser.get("userLoginId"); + ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator); + for(int itemRelist=0;itemRelist<itemsToRelist.size();itemRelist++){ + RelistItemCall relistItemCall = new RelistItemCall(apiContext); + ItemType itemToBeRelisted = new ItemType(); + GenericValue product = (GenericValue)itemsToRelist.get(itemRelist); + itemToBeRelisted.setItemID(product.getString("productId")); + relistItemCall.setItemToBeRelisted(itemToBeRelisted); + relistItemCall.relistItem(); + GenericValue productStore = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", product.getString("productId"))); + productStore.set("isVirtual", "Y"); + productStore.store(); + Debug.logInfo("Relisted Item - "+product.getString("productId"), module); + } + } + } + } + } + } + } catch (Exception e) { + return ServiceUtil.returnError(e.getMessage()); + } + return ServiceUtil.returnSuccess(); + } + + /* ebay store block out of stock items */ + public static Map<String,Object> getSellingInventory(DispatchContext dctx, Map<String,Object> context){ + Locale locale = (Locale) context.get("locale"); + Delegator delegator = dctx.getDelegator(); + Map<String,Object> result = FastMap.newInstance(); + GetSellingManagerInventoryRequestType req = new GetSellingManagerInventoryRequestType(); + GetSellingManagerInventoryResponseType resp = null; + + if(context.get("productStoreId") != null){ + GetSellingManagerInventoryCall call = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + + try { + Map<String,Object> ebayResp = FastMap.newInstance(); + SellingManagerProductType[] returnedSellingManagerProductType = null; + resp = (GetSellingManagerInventoryResponseType)call.execute(req); + if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + returnedSellingManagerProductType = resp.getSellingManagerProduct(); + //result = ServiceUtil.returnSuccess("load store data success.."); + for (int i=0;i<returnedSellingManagerProductType.length;i++){ + SellingManagerProductInventoryStatusType sellingProductInventory = returnedSellingManagerProductType[i].getSellingManagerProductInventoryStatus(); + SellingManagerProductDetailsType prodDetailType = returnedSellingManagerProductType[i].getSellingManagerProductDetails(); + Long productID = (Long)prodDetailType.getProductID(); + int qty = prodDetailType.getQuantityAvailable(); + + if (qty == 0){ + SellingManagerTemplateDetailsArrayType sellingTempArr = returnedSellingManagerProductType[i].getSellingManagerTemplateDetailsArray(); + SellingManagerTemplateDetailsType[] selllingTempType = null; + if (UtilValidate.isNotEmpty(sellingTempArr)){ + selllingTempType = sellingTempArr.getSellingManagerTemplateDetails(); + } + + if (selllingTempType.length > 0){ + for (int j=0;j<selllingTempType.length;j++){ + Long longTemplete = Long.parseLong(selllingTempType[j].getSaleTemplateID()); + DeleteSellingManagerTemplateCall tcall = new DeleteSellingManagerTemplateCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); + DeleteSellingManagerTemplateRequestType treq = new DeleteSellingManagerTemplateRequestType(); + DeleteSellingManagerTemplateResponseType tresp = null; + treq.setSaleTemplateID(longTemplete); + + tresp = (DeleteSellingManagerTemplateResponseType) tcall.execute(treq); + if(tresp != null && "SUCCESS".equals(tresp.getAck().toString())){ + ebayResp.put("TemplateID", tresp.getDeletedSaleTemplateID()); + ebayResp.put("TemplateName", tresp.getDeletedSaleTemplateName()); + result.put("itemBlocked", ebayResp); + } + } + } + } + } + result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS); + if (UtilValidate.isNotEmpty(ebayResp.get("TemplateID"))){ + result.put(ModelService.SUCCESS_MESSAGE, "block "+ebayResp.get("TemplateID")+" out of stock success.."); + }else{ + result.put(ModelService.SUCCESS_MESSAGE, "no item out of stock"); + } + + } + } catch (ApiException e) { + e.printStackTrace(); + } catch (SdkSoapException e) { + e.printStackTrace(); + } catch (SdkException e) { + e.printStackTrace(); + } + } + return result; + } +} \ No newline at end of file Added: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java?rev=905876&view=auto ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java (added) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java Wed Feb 3 03:16:07 2010 @@ -0,0 +1,142 @@ +/* + * 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.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.math.BigDecimal; +import java.net.HttpURLConnection; +import java.net.URL; +import java.sql.Timestamp; +import java.text.ParsePosition; +import java.text.SimpleDateFormat; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javolution.util.FastMap; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.base.util.UtilProperties; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.base.util.UtilXml; +import org.ofbiz.entity.Delegator; +import org.ofbiz.entity.GenericEntityException; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.entity.util.EntityUtil; +import org.ofbiz.order.shoppingcart.ShoppingCart; +import org.ofbiz.party.contact.ContactHelper; +import org.ofbiz.service.GenericServiceException; +import org.ofbiz.service.LocalDispatcher; +import org.ofbiz.service.ModelService; +import org.ofbiz.service.ServiceUtil; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import com.ebay.sdk.ApiAccount; +import com.ebay.sdk.ApiContext; +import com.ebay.sdk.ApiCredential; +import com.ebay.sdk.ApiLogging; +import com.ebay.soap.eBLBaseComponents.SiteCodeType; + +import org.ofbiz.ebay.EbayHelper; + +public class EbayStoreHelper { + private static final String configFileName = "ebayStore.properties"; + private static final String module = EbayStoreHelper.class.getName(); + public static final String resource = "EbayStoreUiLabels"; + + public static ApiContext getApiContext(String productStoreId,Locale locale, Delegator delegator){ + Map<String, Object> context = FastMap.newInstance(); + context.put("locale", locale); + context.put("productStoreId", productStoreId); + Map<String, Object> config = EbayHelper.buildEbayConfig(context, delegator); + ApiCredential apiCredential = new ApiCredential(); + ApiLogging apiLogging = new ApiLogging(); + apiLogging.setEnableLogging(false); + apiLogging.setLogExceptions(false); + apiLogging.setLogSOAPMessages(false); + + String devID = (String)config.get("devId"); + String appID = (String)config.get("appID"); + String certID = (String)config.get("certID"); + String token = (String)config.get("token"); + String apiServerUrl = (String)config.get("apiServerUrl"); + + if(token != null){ + apiCredential.seteBayToken(token); + }else if(devID != null && appID != null && certID != null){ + ApiAccount apiAccount = new ApiAccount(); + apiAccount.setApplication(appID); + apiAccount.setCertificate(certID); + apiAccount.setDeveloper(devID); + apiCredential.setApiAccount(apiAccount); + } + ApiContext apiContext = new ApiContext(); + apiContext.setApiCredential(apiCredential); + apiContext.setApiServerUrl(apiServerUrl); + apiContext.setApiLogging(apiLogging); + apiContext.setErrorLanguage("en_US"); + return apiContext; + } + + public static SiteCodeType getSiteCodeType(String productStoreId,Locale locale, Delegator delegator){ + Map<String, Object> context = FastMap.newInstance(); + context.put("locale", locale); + context.put("productStoreId", productStoreId); + Map<String, Object> config = EbayHelper.buildEbayConfig(context, delegator); + String siteId = (String)config.get("siteID"); + if(siteId != null){ + if(siteId.equals("0")) return SiteCodeType.US; + if(siteId.equals("2")) return SiteCodeType.CANADA; + if(siteId.equals("3")) return SiteCodeType.UK; + if(siteId.equals("15")) return SiteCodeType.AUSTRALIA; + if(siteId.equals("16")) return SiteCodeType.AUSTRIA; + if(siteId.equals("23")) return SiteCodeType.BELGIUM_FRENCH; + if(siteId.equals("71")) return SiteCodeType.FRANCE; + if(siteId.equals("77")) return SiteCodeType.GERMANY; + if(siteId.equals("100")) return SiteCodeType.E_BAY_MOTORS; + if(siteId.equals("101")) return SiteCodeType.ITALY; + if(siteId.equals("123")) return SiteCodeType.BELGIUM_DUTCH; + if(siteId.equals("146")) return SiteCodeType.NETHERLANDS; + if(siteId.equals("189")) return SiteCodeType.SPAIN; + if(siteId.equals("193")) return SiteCodeType.SWITZERLAND; + if(siteId.equals("196")) return SiteCodeType.TAIWAN; + if(siteId.equals("201")) return SiteCodeType.HONG_KONG; + if(siteId.equals("203")) return SiteCodeType.INDIA; + if(siteId.equals("205")) return SiteCodeType.IRELAND; + if(siteId.equals("207")) return SiteCodeType.MALAYSIA; + if(siteId.equals("210")) return SiteCodeType.CANADA_FRENCH; + if(siteId.equals("211")) return SiteCodeType.PHILIPPINES; + if(siteId.equals("212")) return SiteCodeType.POLAND; + if(siteId.equals("216")) return SiteCodeType.SINGAPORE; + if(siteId.equals("218")) return SiteCodeType.SWEDEN; + if(siteId.equals("223")) return SiteCodeType.CHINA; + } + return SiteCodeType.US; + } +} |
| Free forum by Nabble | Edit this page |
