
dao.EventDistributorMapper.xml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of EventDistributor Show documentation
Show all versions of EventDistributor Show documentation
RDBMS based messaging as an alternative to other standard messaging like JMS / Kafka
The newest version!
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="org.simple4j.eventdistributor.dao.EventDistributorMapper"> <resultMap id="eventPaginationResult" type="Event"> <result column="EVENT_ID" property="eventId"/> <result column="BUSINESS_RECORD_ID" property="businessRecordId"/> <result column="BUSINESS_REPORT_TYPE" property="businessRecordType"/> <result column="BUSINESS_RECORD_SUB_TYPE" property="businessRecordSubType"/> <result column="BUSINESS_RECORD_VERSION" property="businessRecordVersion"/> <result column="SOURCE" property="source"/> <result column="STATUS" property="status"/> <result column="DUPLICATE_EVENT_ID" property="duplicateEventId"/> <result column="DUPLICATE_CHECK_END_TIME" property="duplicateCheckEndTime"/> <result column="REPOST_PARENT_EVENT_ID" property="repostParentEventId"/> <result column="PROCESSING_HOST" property="processingHost"/> <result column="STATUS_EXPIRY_TIME" property="statusExpiryTime"/> <result column="CREATE_TIME" property="createTime"/> <result column="UPDATE_TIME" property="updateTime"/> <result column="CREATE_BY" property="createBy"/> <result column="UPDATE_BY" property="updateBy"/> </resultMap> <resultMap id="eventResult" type="Event" extends="eventPaginationResult"> <collection property="targetIds" ofType="String" column="EVENT_ID" select="selectTargetFromEvent" /> <collection property="publishAttempts" ofType="PublishAttempt" column="EVENT_ID" select="selectPublishAttemptFromEvent" /> </resultMap> <resultMap id="publishAttemptResult" type="PublishAttempt"> <result column="PUBLISH_ID" property="publishId"/> <result column="EVENT_ID" property="eventId"/> <result column="TARGET_ID" property="targetId"/> <result column="RESPONSE_HTTP_CODE" property="responseHttpCode"/> <result column="RESPONSE_BODY" property="responseBody"/> <result column="ERROR_DETAILS" property="errorDetails"/> <result column="STATUS" property="publishAttemptStatus"/> <result column="CREATE_TIME" property="createTime"/> <result column="UPDATE_TIME" property="updateTime"/> <result column="CREATE_BY" property="createBy"/> </resultMap> <select id="getEvents" resultMap="eventResult"> SELECT a.EVENT_ID, a.BUSINESS_RECORD_ID, a.BUSINESS_REPORT_TYPE, a.BUSINESS_RECORD_SUB_TYPE, a.BUSINESS_RECORD_VERSION, a.SOURCE, a.STATUS, a.DUPLICATE_EVENT_ID, a.DUPLICATE_CHECK_END_TIME, a.REPOST_PARENT_EVENT_ID, a.PROCESSING_HOST, a.STATUS_EXPIRY_TIME, a.CREATE_TIME, a.UPDATE_TIME, a.CREATE_BY, a.UPDATE_BY FROM ( SELECT b.EVENT_ID, b.BUSINESS_RECORD_ID, b.BUSINESS_REPORT_TYPE, b.BUSINESS_RECORD_SUB_TYPE, b.BUSINESS_RECORD_VERSION, b.SOURCE, b.STATUS, b.DUPLICATE_EVENT_ID, b.DUPLICATE_CHECK_END_TIME, b.REPOST_PARENT_EVENT_ID, b.PROCESSING_HOST, b.STATUS_EXPIRY_TIME, b.CREATE_TIME, b.UPDATE_TIME, b.CREATE_BY, b.UPDATE_BY, rownum rn FROM EVENT b <![CDATA[ WHERE rownum <= (#{startPosition} + #{numberOfRecords} - 1) ]]> <if test="event.eventId != null"> AND b.EVENT_ID= #{event.eventId} </if> <if test="event.businessRecordId != null"> AND b.BUSINESS_RECORD_ID= #{event.businessRecordId} </if> <if test="event.businessRecordType != null"> AND b.BUSINESS_REPORT_TYPE= #{event.businessRecordType} </if> <if test="event.businessRecordSubType != null"> AND b.BUSINESS_RECORD_SUB_TYPE= #{event.businessRecordSubType} </if> <if test="event.businessRecordVersion != null"> AND b.BUSINESS_RECORD_VERSION= #{event.businessRecordVersion} </if> <if test="event.source != null"> AND b.SOURCE= #{event.source} </if> <if test="event.status != null"> AND b.STATUS= #{event.status} </if> <if test="event.processingHost != null"> AND b.PROCESSING_HOST= #{event.processingHost} </if> <if test="event.createBy != null"> AND b.CREATE_BY= #{event.createBy} </if> <if test="event.updateBy != null"> AND b.UPDATE_BY= #{event.updateBy} </if> ) a <![CDATA[ WHERE a.rn >= #{startPosition} ORDER BY a.CREATE_TIME DESC ]]> </select> <select id="getEventsForDuplicateCheck" resultMap="eventResult"> SELECT a.EVENT_ID, a.BUSINESS_RECORD_ID, a.BUSINESS_REPORT_TYPE, a.BUSINESS_RECORD_SUB_TYPE, a.BUSINESS_RECORD_VERSION, a.SOURCE, a.STATUS, a.DUPLICATE_EVENT_ID, a.DUPLICATE_CHECK_END_TIME, a.REPOST_PARENT_EVENT_ID, a.PROCESSING_HOST, a.STATUS_EXPIRY_TIME, a.CREATE_TIME, a.UPDATE_TIME, a.CREATE_BY, a.UPDATE_BY FROM ( SELECT b.EVENT_ID, b.BUSINESS_RECORD_ID, b.BUSINESS_REPORT_TYPE, b.BUSINESS_RECORD_SUB_TYPE, b.BUSINESS_RECORD_VERSION, b.SOURCE, b.STATUS, b.DUPLICATE_EVENT_ID, b.DUPLICATE_CHECK_END_TIME, b.REPOST_PARENT_EVENT_ID, b.PROCESSING_HOST, b.STATUS_EXPIRY_TIME, b.CREATE_TIME, b.UPDATE_TIME, b.CREATE_BY, b.UPDATE_BY, rownum rn FROM EVENT b <![CDATA[ WHERE rownum <= (#{startPosition} + #{numberOfRecords}) AND b.DUPLICATE_CHECK_END_TIME > #{event.createTime} AND b.STATUS != 'ABORT' ]]> <if test="event.businessRecordId != null"> AND b.BUSINESS_RECORD_ID= #{event.businessRecordId} </if> <if test="event.businessRecordType != null"> AND b.BUSINESS_REPORT_TYPE= #{event.businessRecordType} </if> <if test="event.businessRecordSubType != null"> AND b.BUSINESS_RECORD_SUB_TYPE= #{event.businessRecordSubType} </if> <if test="event.businessRecordVersion != null"> AND b.BUSINESS_RECORD_VERSION= #{event.businessRecordVersion} </if> ) a <![CDATA[ WHERE a.rn >= #{startPosition} ]]> </select> <insert id="insertEvent" parameterType="Event"> INSERT INTO EVENT (EVENT_ID,BUSINESS_RECORD_ID,BUSINESS_REPORT_TYPE,BUSINESS_RECORD_SUB_TYPE,BUSINESS_RECORD_VERSION,SOURCE,STATUS,DUPLICATE_EVENT_ID,DUPLICATE_CHECK_END_TIME,REPOST_PARENT_EVENT_ID,PROCESSING_HOST,STATUS_EXPIRY_TIME,CREATE_TIME,UPDATE_TIME,CREATE_BY,UPDATE_BY) VALUES (#{event.eventId},#{event.businessRecordId},#{event.businessRecordType},#{event.businessRecordSubType},#{event.businessRecordVersion},#{event.source},#{event.status},#{event.duplicateEventId},#{event.duplicateCheckEndTime},#{event.repostParentEventId},#{event.processingHost},#{event.statusExpiryTime},#{event.createTime},#{event.updateTime},#{event.createBy},#{event.updateBy}) </insert> <select id="getEventId" resultType="java.lang.Long"> <![CDATA[ SELECT EVENT_SEQ.nextval FROM DUAL ]]> </select> <insert id="insertPublishAttempt" parameterType="PublishAttempt"> INSERT INTO PUBLISH_ATTEMPT (PUBLISH_ID, EVENT_ID, TARGET_ID, RESPONSE_HTTP_CODE, RESPONSE_BODY, ERROR_DETAILS, STATUS, CREATE_TIME, UPDATE_TIME, CREATED_BY) VALUES (#{publishAttempt.publishId},#{publishAttempt.eventId},#{publishAttempt.targetId},#{publishAttempt.responseHttpCode},#{publishAttempt.responseBody},#{publishAttempt.errorDetails},#{publishAttempt.publishAttemptStatus},#{publishAttempt.createTime},#{publishAttempt.updateTime},#{publishAttempt.createBy}) </insert> <select id="getPublishAttemptId" resultType="java.lang.Long"> <![CDATA[ SELECT PUBLISH_ATTEMPT_SEQ.nextval FROM DUAL ]]> </select> <select id="getEvent" parameterType="java.lang.Long" resultMap="eventResult"> <![CDATA[ SELECT b.EVENT_ID, b.BUSINESS_RECORD_ID, b.BUSINESS_REPORT_TYPE, b.BUSINESS_RECORD_SUB_TYPE, b.BUSINESS_RECORD_VERSION, b.SOURCE, b.STATUS, b.DUPLICATE_EVENT_ID, b.DUPLICATE_CHECK_END_TIME, b.REPOST_PARENT_EVENT_ID, b.PROCESSING_HOST, b.STATUS_EXPIRY_TIME, b.CREATE_TIME, b.UPDATE_TIME, b.CREATE_BY, b.UPDATE_BY FROM EVENT b WHERE b.EVENT_ID = #{eventId} ]]> </select> <select id="selectTargetFromEvent" parameterType="java.lang.Integer" resultType="java.lang.String"> <![CDATA[ SELECT TARGET_ID FROM EVENT_TARGET WHERE EVENT_ID = #{EVENT_ID} ]]> </select> <select id="selectPublishAttemptFromEvent" parameterType="java.lang.Integer" resultMap="publishAttemptResult"> <![CDATA[ SELECT b.PUBLISH_ID, b.EVENT_ID, b.TARGET_ID, b.RESPONSE_HTTP_CODE, b.RESPONSE_BODY, b.ERROR_DETAILS, b.STATUS, b.CREATE_TIME, b.UPDATE_TIME, b.CREATED_BY FROM PUBLISH_ATTEMPT b WHERE b.EVENT_ID = #{EVENT_ID} ]]> </select> <select id="getPublishAttempt" parameterType="java.lang.Long" resultMap="publishAttemptResult"> <![CDATA[ SELECT b.PUBLISH_ID, b.EVENT_ID, b.TARGET_ID, b.RESPONSE_HTTP_CODE, b.RESPONSE_BODY, b.ERROR_DETAILS, b.STATUS, b.CREATE_TIME, b.UPDATE_TIME, b.CREATED_BY FROM PUBLISH_ATTEMPT b WHERE b.PUBLISH_ID = #{publishId} ]]> </select> <insert id="insertEventTarget"> INSERT INTO EVENT_TARGET (EVENT_ID, TARGET_ID) VALUES (#{eventId},#{targetId}) </insert> <update id="lockEvents"> <![CDATA[ UPDATE EVENT SET STATUS='IN_PROGRESS', PROCESSING_HOST = #{hostname}, STATUS_EXPIRY_TIME = #{statusExpiryTimeZonedDateTime}, UPDATE_TIME = #{currentTime}, UPDATE_BY = 'EventFetcher' WHERE EVENT_ID IN (SELECT EVENT_ID FROM EVENT WHERE rownum < #{batchSize} AND STATUS IN ('NEW','IN_PROGRESS') AND NVL(STATUS_EXPIRY_TIME, #{currentTime})<=#{currentTime} ) ]]> </update> <select id="fetchLockedEvents" parameterType="java.lang.String" resultMap="eventResult"> <![CDATA[ SELECT b.EVENT_ID, b.BUSINESS_RECORD_ID, b.BUSINESS_REPORT_TYPE, b.BUSINESS_RECORD_SUB_TYPE, b.BUSINESS_RECORD_VERSION, b.SOURCE, b.STATUS, b.DUPLICATE_EVENT_ID, b.DUPLICATE_CHECK_END_TIME, b.REPOST_PARENT_EVENT_ID, b.PROCESSING_HOST, b.STATUS_EXPIRY_TIME, b.CREATE_TIME, b.UPDATE_TIME, b.CREATE_BY, b.UPDATE_BY FROM EVENT b WHERE b.PROCESSING_HOST = #{hostname} AND b.STATUS = 'IN_PROGRESS' ORDER BY b.UPDATE_TIME, b.CREATE_TIME, b.EVENT_ID ]]> </select> <update id="updatePublishAttempt" parameterType="PublishAttempt"> <![CDATA[ UPDATE PUBLISH_ATTEMPT SET RESPONSE_HTTP_CODE =#{publishAttempt.responseHttpCode}, RESPONSE_BODY = #{publishAttempt.responseBody}, ERROR_DETAILS = #{publishAttempt.errorDetails}, STATUS = #{publishAttempt.publishAttemptStatus}, UPDATE_TIME = #{publishAttempt.updateTime} WHERE PUBLISH_ID = #{publishAttempt.publishId} ]]> </update> <update id="updateEvent" parameterType="Event"> <![CDATA[ UPDATE EVENT SET STATUS =#{event.status}, UPDATE_TIME = #{event.updateTime}, UPDATE_BY = #{event.updateBy} WHERE EVENT_ID = #{event.eventId} ]]> </update> </mapper>
© 2015 - 2025 Weber Informatics LLC | Privacy Policy