<?xml version="1.0"?>
<!--

    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.

-->
<configuration>
  <!-- Input Definition -->
  <property>
    <name>schemaInName</name>
    <value>ORDERS</value>
  </property>
  <property>
    <name>schemaInDef</name>
    <value>{"separator":",","quoteChar":"\"","fields":[{"name":"RowTime","type":"Date","constraints":{"format":"dd/MM/yyyy hh:mm:ss Z"}},{"name":"id","type":"Integer"},{"name":"Product","type":"String"},{"name":"units","type":"Integer"}]}</value>
  </property>
  <property>
    <name>broker</name>
    <value>localhost:9090</value>
  </property>
  <property>
    <name>topic</name>
    <value>inputTopic</value>
  </property>

  <!-- Output Definition -->
  <property>
    <name>schemaOutName</name>
    <value>SALES</value>
  </property>
  <property>
    <name>schemaOutDef</name>
    <value>{"separator":",","quoteChar":"\"","fields":[{"name":"RowTime1","type":"Date","constraints":{"format":"dd/MM/yyyy hh:mm:ss Z"}},{"name":"RowTime2","type":"Date","constraints":{"format":"dd/MM/yyyy hh:mm:ss Z"}},{"name":"Product","type":"String"}]}</value>
  </property>
  <property>
    <name>outputFolder</name>
    <value>/tmp/output</value>
  </property>
  <property>
    <name>destFileName</name>
    <value>out.file</value>
  </property>

  <!-- Execution SQL -->
  <property>
    <name>sql</name>
    <value>INSERT INTO SALES SELECT STREAM ROWTIME, FLOOR(ROWTIME TO DAY), APEXCONCAT('OILPAINT', SUBSTRING(PRODUCT, 6, 7)) FROM ORDERS WHERE ID > 3 AND PRODUCT LIKE 'paint%'</value>
  </property>
</configuration>

