<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
-->

<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.xsd">
    <simple-method method-name="autoUpdateToGoogleBase" short-description="Auto update to google base" >
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="productStoreIds">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStoreId"/>
        </call-class-method>
        <set field="productStoreIds" value="${groovy: spl = productStoreIds.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="outOfStocks">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.option.outOfStock"/>
        </call-class-method>
        <set field="outOfStocks" value="${groovy: spl = outOfStocks.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="backInStocks">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.option.backInStock"/>
        </call-class-method>
        <set field="backInStocks" value="${groovy: spl = backInStocks.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="webSiteUrls">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.webSiteUrl"/>
        </call-class-method>
        <set field="webSiteUrls" value="${groovy: spl = webSiteUrls.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="actionTypes">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.actionType"/>
        </call-class-method>
        <set field="actionTypes" value="${groovy: spl = actionTypes.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="statusIds">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.statusId"/>
        </call-class-method>
        <set field="statusIds" value="${groovy: spl = statusIds.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="testModes">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.testMode"/>
        </call-class-method>
        <set field="testModes" value="${groovy: spl = testModes.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="webSiteMountPoints">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.webSiteMountPoint"/>
        </call-class-method>
        <set field="webSiteMountPoints" value="${groovy: spl = webSiteMountPoints.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="countryCodes">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.countryCode"/>
        </call-class-method>
        <set field="countryCodes" value="${groovy: spl = countryCodes.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="trackingCodeIds">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.trackingCodeId"/>
        </call-class-method>
        <set field="trackingCodeIds" value="${groovy: spl = trackingCodeIds.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        <call-class-method method-name="getPropertyValue" class-name="org.ofbiz.base.util.UtilProperties" ret-field="allowRecommendeds">
            <string value="autoUpdateToGoogleBase.properties"/>
            <string value="autoUpdateGoogleBase.productStore.allowRecommended"/>
        </call-class-method>
        <set field="allowRecommendeds" value="${groovy: spl = allowRecommendeds.split(&quot;,&quot;); return spl.toList();}" type="List"/>
        
        <!-- read configs from autoUpdateToGoogleBase.properties, then iterate each ProductStore-->
        <set field="indexOfSetting" value="0" type="Integer"/>
        <iterate entry="productStoreId" list="productStoreIds">
            <entity-one value-field="productStore" entity-name="ProductStore"/>
            <log level="info" message="======= autoUpdateToGoogleBase.properties of productStoreId[${productStoreId}] ==="/>
            <log level="info" message="=== outOfStocks: ${outOfStocks[indexOfSetting]}"/>
            <log level="info" message="=== backInStocks: ${backInStocks[indexOfSetting]}"/>
            <log level="info" message="=== webSiteUrls: ${webSiteUrls[indexOfSetting]}"/>
            <log level="info" message="=== actionTypes: ${actionTypes[indexOfSetting]}"/>
            <log level="info" message="=== statusIds: ${statusIds[indexOfSetting]}"/>
            <log level="info" message="=== testModes: ${testModes[indexOfSetting]}"/>
            <log level="info" message="=== webSiteMountPoints: ${webSiteMountPoints[indexOfSetting]}"/>
            <log level="info" message="=== countryCodes$: ${countryCodes[indexOfSetting]}"/>
            <log level="info" message="=== trackingCodeIds: ${trackingCodeIds[indexOfSetting]}"/>
            <log level="info" message="=== allowRecommendeds: ${allowRecommendeds[indexOfSetting]}"/>
            <set field="parameters.productStoreId" from-field="productStoreId"/>
            <script location="component://googlebase/webapp/googlebase/WEB-INF/actions/productsToGooglebase.groovy"/>
            <!-- iterate each CatalogList in each ProductStore -->
            <iterate entry="catalogCategoryIds" list="categoryIds">
                <if-not-empty field="catalogCategoryIds">
                    <!-- iterate each Category in each Catalog -->
                    <iterate entry="categoryId" list="catalogCategoryIds">
                        <if-not-empty field="categoryId">
                            <set field="categoryIdMap.categoryId" from-field="categoryId"/>
                            <call-service service-name="getProductCategoryMembers" in-map-name="categoryIdMap">
                                <result-to-field result-name="categoryMembers"/>
                            </call-service>
                            <if-not-empty field="categoryMembers">
                            <!-- iterate each CategoryMembers(Product) in Category-->
                                <iterate entry="categoryMember" list="categoryMembers">
                                    <field-to-list list="productList" field="categoryMember.productId"/>
                                </iterate>
                            </if-not-empty>
                        </if-not-empty>
                    </iterate>
                </if-not-empty>
            </iterate>
            <if>
                <condition>
                    <and>
                        <if-compare operator="equals" value="N" field="outOfStocks[indexOfSetting]"/>
                        <if-compare operator="equals" value="N" field="backInStocks[indexOfSetting]"/>
                    </and>
                </condition>
                <then>
                    <return/>
                </then>
            </if>
            <if-not-empty field="productList">
                <script location="component://googlebase/webapp/googlebase/WEB-INF/actions/googlebaseDivideList.groovy"/>
                <set field="i" value="0" type="Integer"/>
                <iterate entry="productExportList" list="productExportLists">
                    <iterate entry="checkProductId" list="productExportList">
                        <set field="isAvailableMap.productId" from-field="checkProductId"/>
                        <set field="isAvailableMap.productStoreId" from-field="productStoreId"/>
                        <set field="isAvailableMap.quantity" value="1" type="BigDecimal"/>
                        <call-service service-name="isStoreInventoryAvailable" in-map-name="isAvailableMap">
                            <result-to-field result-name="available"/>
                        </call-service>
                        <if-compare operator="not-equals" value="N" field="outOfStocks[indexOfSetting]">
                            <if-compare operator="equals" value="N" field="available">
                                <field-to-list list="selectResult" field="checkProductId"/>
                            </if-compare>
                        </if-compare>
                        <if-compare operator="not-equals" value="N" field="backInStocks[indexOfSetting]">
                            <if-compare operator="equals" value="Y" field="available">
                                <field-to-list list="selectResult" field="checkProductId"/>
                            </if-compare>
                        </if-compare>
                    </iterate>
                    <set field="inMap.selectResult" from-field="selectResult"/>
                    <set field="inMap.webSiteUrl" from-field="webSiteUrls[indexOfSetting]"/>
                    <set field="inMap.actionType" from-field="actionTypes[indexOfSetting]"/>
                    <set field="inMap.statusId" from-field="statusIds[indexOfSetting]"/>
                    <set field="inMap.testMode" from-field="testModes[indexOfSetting]"/>
                    <set field="inMap.webSiteMountPoint" from-field="webSiteMountPoints[indexOfSetting]"/>
                    <set field="inMap.countryCode" from-field="countryCodes[indexOfSetting]"/>
                    <set field="inMap.trackingCodeId" from-field="trackingCodeIds[indexOfSetting]"/>
                    <set field="inMap.allowRecommended" from-field="allowRecommendeds[indexOfSetting]"/>
                    <set field="inMap.userLogin" from-field="userLogin"/>
                    <set field="inMap.productStoreId" from-field="productStoreId"/>
                    <!--<log level="info" message="=== productStoreId[${productStoreId}] inMap section[${i}]: ${inMap}"/>-->
                    <call-service service-name="exportToGoogle" in-map-name="inMap"/>
                    <field-to-list list="allProductExportList" field="selectResult"/>
                    <clear-field field="selectResult"/>
                    <clear-field field="inMap"/>
                    <clear-field field="productList"/>
                    <set field="i" value="${groovy: i+1}" type="Integer"/>
                </iterate>
            </if-not-empty>
            <set field="indexOfSetting" value="${groovy: indexOfSetting + 1;}" type="Integer"/>
        </iterate>
        <field-to-result field="allProductExportList"/>
        <log level="info" message="=== allProductExportList ${allProductExportList}"/>
    </simple-method>
</simple-methods>
