<?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-map-processors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods.xsd">
  <simple-map-processor name="person">
    <process field="firstName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyFirstNameMissing"/></not-empty></process>
    <process field="middleName"><copy/></process>
    <process field="lastName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyLastNameMissingError"/></not-empty></process>
    <process field="personalTitle"><copy/></process>
    <process field="suffix"><copy/></process>
    <process field="nickname"><copy/></process>
    <process field="gender"><copy/></process>
    <process field="birthDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyBirthDateMissingError"/></convert></process>
    <process field="deceasedDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyDeceasedDateMissingError"/></convert></process>
    <process field="height"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyHeightNotValidNumber"/></convert></process>
    <process field="weight"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyWeightNotValidNumber"/></convert></process>
    <process field="mothersMaidenName"><copy/></process>
    <process field="maritalStatus"><copy/></process>
    <process field="socialSecurityNumber"><copy/></process>
    <process field="passportNumber"><copy/></process>
    <process field="passportExpireDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyPassportExpireDateNotValidDate"/></convert></process>
    <process field="totalYearsWorkExperience"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyTotalYearsWorkNotValidNumber"/></convert></process>
    <process field="comments"><copy/></process>
  </simple-map-processor>

  <simple-map-processor name="partyGroup">
    <process field="groupName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyGroupNameMissing"/></not-empty></process>
    <process field="partyTypeId"><copy/></process>
    <process field="comments"><copy/></process>
    <process field="officeSiteName"><copy/></process>
    <process field="annualRevenue"><copy/></process>
    <process field="numEmployees"><convert type="Long"><fail-property resource="PartyUiLabels" property="PartyGroupNumEmployeeIsInvalid"/></convert></process>
    <process field="tickerSymbol"><copy/></process>
  </simple-map-processor>
</simple-map-processors>
