<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sql PUBLIC "sqllist" "sqllist.dtd" >
 
<sqllist> 
	<dataSpace name="dataio-load">
	
		<sql name="getIOTasks">
			<![CDATA[
			select distinct task_name from sys_io
			order by task_name asc;
			]]>
		</sql>
		
		<sql name="getIOTaskLastUpdateTime">
			<![CDATA[
			select max(last_update_time) from sys_io
			where task_name = '@{taskName}' 
			]]>
		</sql>
		
		<sql name="getIOMappingsLastUpdateTime">
			<![CDATA[
			select max(last_update_time) from sys_io_mapping_field
			where parent_id = '@{mappingId}' 
			]]>
		</sql>
		
		<sql name="getMappingListByParentId">
			<![CDATA[
			select max(last_update_time) from sys_io_mapping_field
			where parent_id = '@{mappingId}';
			]]>
		</sql>
		
		<sql name="getDataIOTemplate">
			<![CDATA[
			select * from sys_dataio_template
			order by groupCode, stageCode asc, orderno asc;
			]]>
		</sql>
		
		<sql name="getIOList">
			<![CDATA[
			select * from sys_dataio
			order by groupCode, stageCode asc, orderno asc;
			]]>
		</sql>
		
		<sql name="getIOListByDataName">
			<![CDATA[
			select * from sys_dataio
			where dataName = '@{dataName}'
			order by stageCode asc, orderno asc;
			]]>
		</sql>
		
		<sql name="getMappingSetList">
			<![CDATA[
			select * from sys_io_mapping;
			]]>
		</sql>
		
		<sql name="getOneMappingSet">
			<![CDATA[
			select * from sys_io_mapping where id = '@{id}' ;
			]]>
		</sql>
		
		<sql name="getIOWorkflowByParentId">
			<![CDATA[
			select *, sys_io_action.id as actionId from sys_io_workflow
			left join sys_io_action on sys_io_action.name = sys_io_workflow.action_name
			where sys_io_workflow.parent_id = '@{parent_id}' 
			order by order_no asc;
			]]>
		</sql>
		
		<sql name="getIOWorkflowByName">
			<![CDATA[
			select *, sys_io_action.id as actionId from sys_io_workflow
			left join sys_io_action on sys_io_action.name = sys_io_workflow.action_name
			where sys_io_workflow.workflow_name = '@{workflow_name}' 
			order by order_no asc;
			]]>
		</sql>
		
	</dataSpace>
	
	<dataSpace name="dataio-exec">
		
		<sql name="getBatchCount">
			select count(1) from @{fromTable} where @{dynamicFilter} @{orderBy}
		</sql>
		
		<sql name="batchSelectFromTable">
			select @{selectFromFieldNames} from @{fromTable} where @{dynamicFilter} @{orderBy}
		</sql>	
		
		<sql name="dropToTableIfExists">
			<![CDATA[
			DROP TABLE IF EXISTS @{toTable};
			]]>
		</sql>
			
		<sql name="createToTable">
			<![CDATA[
			CREATE TABLE @{toTable} (
				@{toFieldCreateMetas} 
			);
			]]>
		</sql>
		
		<sql name="getFieldMappingSetNoData">
			<![CDATA[
			select * from sys_mappingset where 1 <> 1
			]]>
		</sql>
		
		<sql name="getFieldMappingNoData">
			<![CDATA[
			select * from sys_mapping where 1 <> 1
			]]>
		</sql>
		
		<sql name="getFieldDisplayNoData">
			<![CDATA[
			select * from sys_field where 1 <> 1
			]]>
		</sql>		
		
		<sql name="emptyToTable">
		  <![CDATA[
		      truncate table @{toTable}
		  ]]>
		</sql>
		
		<sql name="deleteToTableByFilter">
			delete from @{toTable} where @{filterFieldValues} 
		</sql>				

		<sql name="transferAll">
			<![CDATA[
				insert into @{toTable} (@{insertToFieldNames})
				select @{insertFromFieldNames} from @{fromTable}
				where io_batch_id = '@{ioBatchId}'
			]]>
		</sql>			

		<sql name="transferTempAll">
			<![CDATA[
				insert into @{toTable} (@{insertToFieldNames})
                select @{insertFromToTempFieldNames} from @{toTempTable}
				where io_batch_id = '@{ioBatchId}'
			]]>
		</sql>
		
		<sql name="hardDeleteToTableNotExists">
			<![CDATA[
				delete from @{toTable} where not exists (
					select 1 from @{fromTable} where @{keyFieldPairs}
				) and @{filterFieldValues}
			]]>
		</sql>		
				
		<sql name="softDeleteToTableNotExists">
			<![CDATA[
				update @{toTable} set delflag = 'T' where not exists (
					select 1 from @{fromTable} where @{keyFieldPairs}
				) and @{filterFieldValues}
			]]>
		</sql>
		
		<sql name="updateToTableExists">
			<![CDATA[
				update @{toTable} inner join @{fromTable} on @{keyFieldPairs} 
				set @{updateFieldPairs}
			]]>
		</sql>
		
		<sql name="insertToTableAppend">
			<![CDATA[
				insert into @{toTable} (@{insertToFieldNames})
				select @{insertFromFieldNames} from @{fromTable} where not exists (
					select 1 from @{toTable} where @{keyFieldPairs}
				)
			]]>
		</sql>		
						
	</dataSpace>
		
</sqllist>