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

-->
<pipeline>
  <info>
    <name>0051-creditcard-validator-verify</name>
    <name_sync_with_filename>Y</name_sync_with_filename>
    <description/>
    <extended_description/>
    <pipeline_version/>
    <pipeline_type>Normal</pipeline_type>
    <parameters>
    </parameters>
    <capture_transform_performance>N</capture_transform_performance>
    <transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
    <transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
    <created_user>-</created_user>
    <created_date>2022/11/24 13:25:43.847</created_date>
    <modified_user>-</modified_user>
    <modified_date>2022/11/24 13:25:43.847</modified_date>
  </info>
  <notepads>
  </notepads>
  <order>
    <hop>
      <from>Valid cards</from>
      <to>Credit card validator</to>
      <enabled>Y</enabled>
    </hop>
    <hop>
      <from>Error cards</from>
      <to>Credit card validator</to>
      <enabled>Y</enabled>
    </hop>
    <hop>
      <from>Credit card validator</from>
      <to>Verify</to>
      <enabled>Y</enabled>
    </hop>
  </order>
  <transform>
    <name>Credit card validator</name>
    <type>CreditCardValidator</type>
    <description/>
    <distribute>Y</distribute>
    <custom_distribution/>
    <copies>1</copies>
    <partitioning>
      <method>none</method>
      <schema_name/>
    </partitioning>
    <fieldname>CardNumber</fieldname>
    <resultfieldname>result</resultfieldname>
    <cardtype>card type</cardtype>
    <onlydigits>Y</onlydigits>
    <notvalidmsg>not valid message</notvalidmsg>
    <attributes/>
    <GUI>
      <xloc>320</xloc>
      <yloc>128</yloc>
    </GUI>
  </transform>
  <transform>
    <name>Error cards</name>
    <type>DataGrid</type>
    <description/>
    <distribute>Y</distribute>
    <custom_distribution/>
    <copies>1</copies>
    <partitioning>
      <method>none</method>
      <schema_name/>
    </partitioning>
    <data>
      <line>
        <item>American Express</item>
        <item>378282246310004</item>
      </line>
      <line>
        <item>American Express</item>
        <item>371449635398432</item>
      </line>
      <line>
        <item>American Express Corporate</item>
        <item>234734493671000</item>
      </line>
      <line>
        <item>Australian BankCard</item>
        <item>5610591081018249</item>
      </line>
      <line>
        <item>Diners Club</item>
        <item>30569309025900</item>
      </line>
      <line>
        <item>Diners Club</item>
        <item>38520000023226</item>
      </line>
      <line>
        <item>Discover</item>
        <item>6011111111111111</item>
      </line>
      <line>
        <item>Discover</item>
        <item>6011000990139420</item>
      </line>
      <line>
        <item>JCB</item>
        <item>3530111333300033</item>
      </line>
      <line>
        <item>JCB</item>
        <item>3566002020360553</item>
      </line>
      <line>
        <item>MasterCard</item>
        <item>555555555555444</item>
      </line>
      <line>
        <item>MasterCard</item>
        <item>510510510510510</item>
      </line>
      <line>
        <item>Visa</item>
        <item>411111111111111</item>
      </line>
      <line>
        <item>Visa</item>
        <item>401288888888188</item>
      </line>
      <line>
        <item>Visa</item>
        <item>4222222222221</item>
      </line>
    </data>
    <fields>
      <field>
        <length>-1</length>
        <precision>-1</precision>
        <set_empty_string>N</set_empty_string>
        <name>Brand</name>
        <type>String</type>
      </field>
      <field>
        <length>-1</length>
        <precision>-1</precision>
        <set_empty_string>N</set_empty_string>
        <name>CardNumber</name>
        <type>String</type>
      </field>
    </fields>
    <attributes/>
    <GUI>
      <xloc>128</xloc>
      <yloc>160</yloc>
    </GUI>
  </transform>
  <transform>
    <name>Valid cards</name>
    <type>DataGrid</type>
    <description/>
    <distribute>Y</distribute>
    <custom_distribution/>
    <copies>1</copies>
    <partitioning>
      <method>none</method>
      <schema_name/>
    </partitioning>
    <data>
      <line>
        <item>American Express</item>
        <item>378282246310005</item>
      </line>
      <line>
        <item>American Express</item>
        <item>371449635398431</item>
      </line>
      <line>
        <item>American Express Corporate</item>
        <item>378734493671000</item>
      </line>
      <line>
        <item>Australian BankCard</item>
        <item>5610591081018250</item>
      </line>
      <line>
        <item>Diners Club</item>
        <item>30569309025904</item>
      </line>
      <line>
        <item>Diners Club</item>
        <item>38520000023237</item>
      </line>
      <line>
        <item>Discover</item>
        <item>6011111111111117</item>
      </line>
      <line>
        <item>Discover</item>
        <item>6011000990139424</item>
      </line>
      <line>
        <item>JCB</item>
        <item>3530111333300000</item>
      </line>
      <line>
        <item>JCB</item>
        <item>3566002020360505</item>
      </line>
      <line>
        <item>MasterCard</item>
        <item>5555555555554444</item>
      </line>
      <line>
        <item>MasterCard</item>
        <item>5105105105105100</item>
      </line>
      <line>
        <item>Visa</item>
        <item>4111111111111111</item>
      </line>
      <line>
        <item>Visa</item>
        <item>4012888888881881</item>
      </line>
      <line>
        <item>Visa</item>
        <item>4222222222222</item>
      </line>
    </data>
    <fields>
      <field>
        <length>-1</length>
        <precision>-1</precision>
        <set_empty_string>N</set_empty_string>
        <name>Brand</name>
        <type>String</type>
      </field>
      <field>
        <length>-1</length>
        <precision>-1</precision>
        <set_empty_string>N</set_empty_string>
        <name>CardNumber</name>
        <type>String</type>
      </field>
    </fields>
    <attributes/>
    <GUI>
      <xloc>128</xloc>
      <yloc>80</yloc>
    </GUI>
  </transform>
  <transform>
    <name>Verify</name>
    <type>Dummy</type>
    <description/>
    <distribute>Y</distribute>
    <custom_distribution/>
    <copies>1</copies>
    <partitioning>
      <method>none</method>
      <schema_name/>
    </partitioning>
    <attributes/>
    <GUI>
      <xloc>512</xloc>
      <yloc>128</yloc>
    </GUI>
  </transform>
  <transform_error_handling>
  </transform_error_handling>
  <attributes/>
</pipeline>
