Activity Service

- add PostgreSQL support
- add generic schema generation, plus extras (indexes, sequences, workaround for Derby)
- fix feed cleaner keepDate, also increase default from 14 to 31 days
- fix Oracle-specifc issue (when retrieving site feed)
- reformatting sqlMap config files
- improve exception handling
Add Derby warning message

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@9649 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2008-07-04 13:12:31 +00:00
parent 87096f0b2a
commit cc051d8274
28 changed files with 653 additions and 485 deletions

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="ActivityFeed">
<typeAlias alias="ActivityFeed" type="org.alfresco.repo.activities.feed.ActivityFeedDAO"/>
<resultMap id="ActivityFeedResult" class="ActivityFeed">
<result property="id" column="ID"/>
<result property="feedUserId" column="FEED_USER_ID"/>
<result property="postUserId" column="POST_USER_ID"/>
<result property="postDate" column="POST_DATE"/>
<result property="postId" column="POST_ID"/> <!-- not an explicit FK constraint, can dangle if and when activity post is deleted -->
<result property="siteNetwork" column="SITE_NETWORK"/>
<result property="activityType" column="ACTIVITY_TYPE"/>
<result property="activitySummary" column="ACTIVITY_SUMMARY"/>
<result property="activitySummaryFormat" column="ACTIVITY_FORMAT"/>
<result property="feedDate" column="FEED_DATE"/>
</resultMap>
<select id="select.activity.feed.for.feeduser" parameterClass="ActivityFeed" resultClass="ActivityFeed">
<![CDATA[
select id as id, activity_type as activityType, activity_format as activitySummaryFormat, activity_summary as activitySummary, feed_user_id as feedUserId, post_user_id as postUserId, site_network as siteNetwork, post_date as postDate
from alf_activity_feed
where feed_user_id = #feedUserId#
and post_user_id != #feedUserId#
and activity_format = #activitySummaryFormat#
order by post_date desc
]]>
</select>
<select id="select.activity.feed.for.feeduser.and.site" parameterClass="ActivityFeed" resultClass="ActivityFeed">
<![CDATA[
select id as id, activity_type as activityType, activity_format as activitySummaryFormat, activity_summary as activitySummary, feed_user_id as feedUserId, post_user_id as postUserId, site_network as siteNetwork, post_date as postDate
from alf_activity_feed
where feed_user_id = #feedUserId#
and post_user_id != #feedUserId#
and site_network = #siteNetwork#
and activity_format = #activitySummaryFormat#
order by post_date desc
]]>
</select>
<select id="select.activity.feed.for.site" parameterClass="ActivityFeed" resultClass="ActivityFeed">
<![CDATA[
select id as id, activity_type as activityType, activity_format as activitySummaryFormat, activity_summary as activitySummary, post_user_id as postUserId, site_network as siteNetwork, post_date as postDate
from alf_activity_feed
where feed_user_id = ''
and site_network = #siteNetwork#
and activity_format = #activitySummaryFormat#
order by post_date desc
]]>
</select>
<insert id="insert.activity.feed" parameterClass="ActivityFeed">
<selectKey keyProperty="id" resultClass="long">
select nextVal('alf_activity_feed_seq')
</selectKey>
insert into alf_activity_feed (id, activity_type, activity_summary, activity_format, feed_user_id, post_user_id, post_date, post_id, site_network, app_tool, feed_date)
values (#id#, #activityType#, #activitySummary#, #activitySummaryFormat#, #feedUserId#, #postUserId#, #postDate#, #postId#, #siteNetwork#, #appTool#, #feedDate#)
</insert>
<delete id="delete.activity.feed.entries.older.than.date" parameterClass="Date">
<![CDATA[
delete from alf_activity_feed where post_date < #keepdate#
]]>
</delete>
</sqlMap>

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="ActivityFeedControl">
<typeAlias alias="FeedControl" type="org.alfresco.repo.activities.feed.control.FeedControlDAO"/>
<resultMap id="FeedControlResult" class="FeedControl">
<result property="id" column="ID"/>
<result property="feedUserId" column="FEED_USER_ID"/>
<result property="siteNetwork" column="SITE_NETWORK"/>
<result property="appTool" column="APP_TOOL"/>
<result property="lastModified" column="LAST_MODIFIED"/>
</resultMap>
<select id="select.activity.feedcontrols.for.user" parameterClass="FeedControl" resultClass="FeedControl">
<![CDATA[
select id as id, feed_user_id as feedUserId, site_network as siteNetwork, app_tool as appTool
from alf_activity_feed_control
where feed_user_id = #feedUserId#
]]>
</select>
<select id="select.activity.feedcontrol" parameterClass="FeedControl" resultClass="long">
<![CDATA[
select id as id
from alf_activity_feed_control
where feed_user_id = #feedUserId#
and site_network = #siteNetwork#
and app_tool = #appTool#
]]>
</select>
<insert id="insert.activity.feedcontrol" parameterClass="FeedControl">
<selectKey keyProperty="id" resultClass="long">
select nextVal('alf_activity_feed_control_seq')
</selectKey>
insert into alf_activity_feed_control (id, feed_user_id, site_network, app_tool, last_modified)
values (#id#, #feedUserId#, #siteNetwork#, #appTool#, #lastModified#)
</insert>
<delete id="delete.activity.feedcontrol" parameterClass="FeedControl">
<![CDATA[
delete from alf_activity_feed_control
where feed_user_id = #feedUserId#
and site_network = #siteNetwork#
and app_tool = #appTool#
]]>
</delete>
</sqlMap>

View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="ActivityPost">
<typeAlias alias="ActivityPost" type="org.alfresco.repo.activities.post.ActivityPostDAO"/>
<resultMap id="ActivityPostResult" class="ActivityPost">
<result property="id" column="SEQUENCE_ID"/>
<result property="activityData" column="ACTIVITY_DATA"/>
<result property="activityType" column="ACTIVITY_TYPE"/>
<result property="userId" column="POST_USER_ID"/>
<result property="postDate" column="POST_DATE"/>
<result property="jobTaskNode" column="JOB_TASK_NODE"/>
<result property="siteNetwork" column="SITE_NETWORK"/>
<result property="appTool" column="APP_TOOL"/>
<result property="status" column="STATUS"/>
<result property="lastModified" column="LAST_MODIFIED"/>
</resultMap>
<select id="select.activity.posts" parameterClass="ActivityPost" resultClass="ActivityPost">
<![CDATA[
select
sequence_id as id,
activity_data as activityData,
activity_type as activityType,
post_user_id as userId,
post_date as postDate,
job_task_node as jobTaskNode,
site_network as siteNetwork,
app_tool as appTool,
status as status
from
alf_activity_post
where
job_task_node = #jobTaskNode# and
sequence_id >= #minId# and
sequence_id <= #maxId# and
status = #status#
]]>
</select>
<select id="select.activity.posts.by.status.only" parameterClass="ActivityPost" resultClass="ActivityPost">
<![CDATA[
select
sequence_id as id,
activity_data as activityData,
activity_type as activityType,
post_user_id as userId,
post_date as postDate,
job_task_node as jobTaskNode,
site_network as siteNetwork,
app_tool as appTool,
status as status
from
alf_activity_post
where
status = #status#
]]>
</select>
<select id="select.activity.post.max.seq" resultClass="long">
select max(sequence_id) as maxId
from alf_activity_post
where status = 'POSTED'
</select>
<select id="select.activity.post.min.seq" resultClass="long">
select min(sequence_id) as minId
from alf_activity_post
where status = 'POSTED'
</select>
<select id="select.activity.post.max.jobtasknode" resultClass="int">
select max(job_task_node) as maxJobTaskNode
from alf_activity_post
where status = 'POSTED'
</select>
<insert id="insert.activity.post" parameterClass="ActivityPost">
<selectKey keyProperty="id" resultClass="long">
select nextVal('alf_activity_post_seq')
</selectKey>
insert into alf_activity_post (sequence_id, status, activity_data, post_user_id, post_date, activity_type, site_network, app_tool, job_task_node, last_modified)
values (#id#, #status#, #activityData#, #userId#, #postDate#, #activityType#, #siteNetwork#, #appTool#, #jobTaskNode#, #lastModified#)
</insert>
<delete id="delete.activity.posts.older.than.date" parameterClass="ActivityPost">
<![CDATA[
delete from alf_activity_post
where post_date < #postDate#
and status = #status#
]]>
</delete>
<update id="update.activity.post.data" parameterClass="ActivityPost">
update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified#
where sequence_id = #id#
and status != #status#
</update>
<update id="update.activity.post.status" parameterClass="ActivityPost">
update alf_activity_post set status = #status#, last_modified=#lastModified#
where sequence_id = #id#
and status != #status#
</update>
</sqlMap>