<spring:bean id="jdbcDataSource" class="org.enhydra.jdbc.standard.StandardDataSource" destroy-method="shutdown">
    <spring:property name="driverName" value="com.mysql.jdbc.Driver"/>
    <spring:property name="url" value="jdbc:mysql://localhost/salesforce?user=root"/>
</spring:bean>

<jdbc:connector name="jdbcConnector" dataSource-ref="jdbcDataSource">
    <jdbc:query key="insertAccount"
                value="INSERT INTO accounts (id, name, phone)
                    VALUES(#[map-payload:Id], #[map-payload:Name], #[map-payload:Phone])
                    ON DUPLICATE KEY UPDATE name = VALUES(name), phone = VALUES(phone)"/>
</jdbc:connector>

<salesforce:config name="sfdc" username="${sfdc.username}" password="${sfdc.password}"
                       securityToken="${sfdc.securityToken}"/>

<flow name="main">
    <poll frequency="300000">
        <salesforce:get-updated type="Account" duration="10"/>
    </poll>

    <splitter evaluator="ognl" expression="ids"/>

    <salesforce:query query="SELECT Id, Name, Phone FROM Account WHERE Id='#[payload]'" batchsize="1"/>

    <expression-transformer evaluator="ognl" expression="[0]"/>

    <jdbc:outbound-endpoint queryKey="insertAccount"/>
</flow>