<?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.
-->

<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
    <description>Content Component Services</description>
    <vendor>OFBiz</vendor>

    <!--
        This service must do two things:

        First, call persistContentAndAssoc service to create the Content, DataResource and ImageDataResource/ElectronicText/??? entities.
            Note that it will not create a ContentAssoc entity, which persistContentAndAssoc can do.
            It should be able to auto populate the service parameters for persistContentAndAssoc from this service's input parameters
            using ModelService.makeValid (or the simple method equivalent).
            persistContentAndAssoc will return contentId.
            
        Second, it must create a CommEventContentAssoc record.
            The fromData should be defaulted if not passed in.
    -->
    <service name="createCommContentDataResource" engine="simple"
                location="component://content/minilang/content/ContentServices.xml" invoke="createCommContentDataResource" auth="true">
        <description>Create CommunicationEvent and Content</description>
        <implements service="persistContentAndAssoc"/>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="OUT" optional="false"/>
    </service>

    <service name="updateCommContentDataResource" engine="simple"
                location="component://content/minilang/content/ContentServices.xml" invoke="updateCommContentDataResource" auth="true">
        <description>Update CommunicationEvent and Content</description>
        <implements service="persistContentAndAssoc"/>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
    </service>

    <service name="createCommEventContentAssoc" engine="simple"
                location="component://content/minilang/content/ContentServices.xml" invoke="createCommEventContentAssoc" auth="true">
        <description>Create CommEventContentAssoc</description>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="contentId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="INOUT" optional="true"/>
        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
         <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
    </service>

    <service name="updateCommEventContentAssoc" engine="simple"
                location="component://content/minilang/content/ContentServices.xml" invoke="updateCommEventContentAssoc" auth="true">
        <description>Update CommEventContentAssoc</description>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="contentId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
         <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
    </service>

    <service name="removeCommEventContentAssoc" engine="simple"
                location="component://content/minilang/content/ContentServices.xml" invoke="removeCommEventContentAssoc" auth="true">
        <description>Remove CommEventContentAssoc</description>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="contentId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
    </service>

</services>
