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

Flow Controller:
  name: CsvToJsonWorking
  comment: ''
Core Properties:
  flow controller graceful shutdown period: 10 sec
  flow service write delay interval: 500 ms
  administrative yield duration: 30 sec
  bored yield duration: 10 millis
  max concurrent threads: 1
FlowFile Repository:
  partitions: 256
  checkpoint interval: 2 mins
  always sync: false
  Swap:
    threshold: 20000
    in period: 5 sec
    in threads: 1
    out period: 5 sec
    out threads: 4
Content Repository:
  content claim max appendable size: 10 MB
  content claim max flow files: 100
  always sync: false
Provenance Repository:
  provenance rollover time: 1 min
Component Status Repository:
  buffer size: 1440
  snapshot frequency: 1 min
Security Properties:
  keystore: ''
  keystore type: ''
  keystore password: ''
  key password: ''
  truststore: ''
  truststore type: ''
  truststore password: ''
  ssl protocol: ''
  Sensitive Props:
    key:
    algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
    provider: BC
Processors:
- name: ExtractText
  class: org.apache.nifi.processors.standard.ExtractText
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list:
  - unmatched
  Properties:
    Character Set: UTF-8
    Enable Canonical Equivalence: 'false'
    Enable Case-insensitive Matching: 'false'
    Enable DOTALL Mode: 'false'
    Enable Literal Parsing of the Pattern: 'false'
    Enable Multiline Mode: 'false'
    Enable Unicode Predefined Character Classes: 'false'
    Enable Unicode-aware Case Folding: 'false'
    Enable Unix Lines Mode: 'false'
    Include Capture Group 0: 'false'
    Maximum Buffer Size: 1 MB
    Maximum Capture Group Length: '1024'
    Permit Whitespace and Comments in Pattern: 'false'
    csv: (.+),(.+),(.+),(.+)
- name: GenerateFlowFile
  class: org.apache.nifi.processors.standard.GenerateFlowFile
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 1 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list: []
  Properties:
    Batch Size: '1'
    Data Format: Binary
    File Size: 1 b
    Unique FlowFiles: 'false'
- name: ReplaceText
  class: org.apache.nifi.processors.standard.ReplaceText
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list:
  - failure
  Properties:
    Character Set: UTF-8
    Evaluation Mode: Entire text
    Maximum Buffer Size: 1 MB
    Regular Expression: (?s:^.*$)
    Replacement Strategy:
    Replacement Value: a,b,c,d
- name: ReplaceText2
  class: org.apache.nifi.processors.standard.ReplaceText
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list:
  - failure
  Properties:
    Character Set: UTF-8
    Evaluation Mode: Entire text
    Maximum Buffer Size: 1 MB
    Regular Expression: (?s:^.*$)
    Replacement Strategy:
    Replacement Value: "{ \"field1\" : \"${csv.1}\", \"field2\" : \"${csv.2}\",\n\
      \                            \"field3\" : \"${csv.3}\", \"field4\" : \"${csv.4}\"\
      \ }\n                        "
- name: UpdateAttribute
  class: org.apache.nifi.processors.attributes.UpdateAttribute
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list:
  - success
  Properties:
    Delete Attributes Expression:
Connections:
- name: ExtractText/matched/ReplaceText2
  source name: ExtractText
  source relationship name: matched
  destination name: ReplaceText2
  max work queue size: 0
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
- name: GenerateFlowFile/success/ReplaceText
  source name: GenerateFlowFile
  source relationship name: success
  destination name: ReplaceText
  max work queue size: 0
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
- name: ReplaceText/success/ExtractText
  source name: ReplaceText
  source relationship name: success
  destination name: ExtractText
  max work queue size: 0
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
- name: ReplaceText2/success/UpdateAttribute
  source name: ReplaceText2
  source relationship name: success
  destination name: UpdateAttribute
  max work queue size: 0
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
Remote Processing Groups: []
