<?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="setDefaultImage" short-description="Set Default Image">
        <entity-and entity-name="ProductContent" list="lastestDefaults">
            <field-map field-name="productId" from-field="parameters.productId"/>
            <field-map field-name="productContentTypeId" value="DEFAULT_IMAGE"/>
        </entity-and>
        <iterate list="lastestDefaults" entry="lastestDefault">
            <remove-value value-field="lastestDefault"/>
        </iterate>
        
        <now-timestamp field="nowTimestamp"/>
        <make-value entity-name="ProductContent" value-field="productContent"/>
        <set field="productContent.productId" from-field="parameters.productId"/>
        <set field="productContent.contentId" from-field="parameters.contentId"/>
        <set field="productContent.productContentTypeId" value="DEFAULT_IMAGE"/>
        <set field="productContent.fromDate" from-field="nowTimestamp"/>
        <create-value value-field="productContent"/>
        
        <!-- set thumbnail to product -->
        <!--<entity-and list="productContentAndInfos" entity-name="ProductContentAndInfo">
            <field-map field-name="productId" from-field="parameters.productId"/>
            <field-map field-name="contentId" from-field="parameters.contentId"/>
            <field-map field-name="productContentTypeId" value="DEFAULT_IMAGE"/>
        </entity-and>
        <if-not-empty field="productContentAndInfos">
            <first-from-list entry="productContentAndInfo" list="productContentAndInfos"/>
            <script location="component://product/webapp/catalog/WEB-INF/actions/imagemanagement/SetDefaultImage.groovy"/>
            
            <entity-one value-field="product" entity-name="Product">
                <field-map field-name="productId" from-field="parameters.productId"/>
            </entity-one>
            <set field="product.originalImageUrl" from-field="productContentAndInfo.drObjectInfo"/>
            <store-value value-field="product"/>
        </if-not-empty>-->
    </simple-method>
</simple-methods>
