You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ha...@apache.org on 2010/02/03 04:16:40 UTC
svn commit: r905876 [5/7] - in /ofbiz/trunk:
applications/commonext/documents/ specialpurpose/ specialpurpose/ebay/
specialpurpose/ebay/config/ specialpurpose/ebay/data/
specialpurpose/ebay/data/helpdata/ specialpurpose/ebay/entitydef/
specialpurpose/e...
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;
+ }
+}