From cc051d8274f5e68bdfcda2833883d1faae03f709 Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Fri, 4 Jul 2008 13:12:31 +0000 Subject: [PATCH] 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 --- .../activities/activities-feed-context.xml | 2 +- .../ActivityFeed.xml | 40 +++--- .../ActivityFeedControl.xml | 36 +++--- .../ActivityFeed.xml | 40 +++--- .../ActivityFeedControl.xml | 36 +++--- .../ActivityPost.xml | 54 ++++----- .../ActivityFeed.xml | 40 +++--- .../ActivityFeedControl.xml | 36 +++--- .../ActivityPost.xml | 54 ++++----- .../ActivityFeed.xml | 44 +++---- .../ActivityFeedControl.xml | 36 +++--- .../ActivityPost.xml | 54 ++++----- .../ActivityFeed.xml | 75 ++++++++++++ .../ActivityFeedControl.xml | 57 +++++++++ .../ActivityPost.xml | 114 ++++++++++++++++++ config/alfresco/bootstrap-context.xml | 4 +- ...ables.sql => create-activities-extras.sql} | 40 +++--- .../create-activities-extras.sql | 28 +++++ .../create-activities-tables.sql | 71 ----------- .../create-activities-tables.sql | 68 ----------- .../create-activities-extras.sql | 38 ++++++ .../create-activities-tables.sql | 77 ------------ .../create-activities-extras.sql | 37 ++++++ .../messages/schema-update.properties | 1 + .../alfresco/patch/patch-services-context.xml | 6 +- .../repo/activities/ActivityServiceImpl.java | 42 +++++-- .../activities/feed/cleanup/FeedCleaner.java | 2 +- .../repo/domain/schema/SchemaBootstrap.java | 6 + 28 files changed, 653 insertions(+), 485 deletions(-) create mode 100644 config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeed.xml create mode 100644 config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeedControl.xml create mode 100755 config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityPost.xml rename config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.DerbyDialect/{create-activities-tables.sql => create-activities-extras.sql} (59%) create mode 100644 config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Dialect/create-activities-extras.sql delete mode 100644 config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.HSQLDialect/create-activities-tables.sql delete mode 100644 config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.MySQLInnoDBDialect/create-activities-tables.sql create mode 100644 config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Oracle9Dialect/create-activities-extras.sql delete mode 100644 config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Oracle9Dialect/create-activities-tables.sql create mode 100755 config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.PostgreSQLDialect/create-activities-extras.sql diff --git a/config/alfresco/activities/activities-feed-context.xml b/config/alfresco/activities/activities-feed-context.xml index bd8aecffab..99f0882ed4 100644 --- a/config/alfresco/activities/activities-feed-context.xml +++ b/config/alfresco/activities/activities-feed-context.xml @@ -40,7 +40,7 @@ - 20160 + 44640 diff --git a/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeed.xml b/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeed.xml index 24e0e08322..b4487043da 100644 --- a/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeed.xml +++ b/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeed.xml @@ -7,19 +7,19 @@ - - - - + + + + - - - - + + + + - - + + - - + + 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 (DEFAULT, #activityType#, #activitySummary#, #activitySummaryFormat#, #feedUserId#, #postUserId#, #postDate#, #postId#, #siteNetwork#, #appTool#, #feedDate#) values IDENTITY_VAL_LOCAL() - - - - - - + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeedControl.xml b/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeedControl.xml index 94cf9d63cd..c91f97c69e 100644 --- a/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeedControl.xml +++ b/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeedControl.xml @@ -7,14 +7,14 @@ - - - - - + + + + + - - + + - - + + + insert into alf_activity_feed_control (id, feed_user_id, site_network, app_tool, last_modified) values (DEFAULT, #feedUserId#, #siteNetwork#, #appTool#, #lastModified#) values IDENTITY_VAL_LOCAL() - - - - - + + + + - + and app_tool = #appTool# + ]]> + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeed.xml b/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeed.xml index fdcddd230b..995c282f1c 100644 --- a/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeed.xml +++ b/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeed.xml @@ -7,19 +7,19 @@ - - - - + + + + - - - - + + + + - - + + - - + + insert into alf_activity_feed (activity_type, activity_summary, activity_format, feed_user_id, post_user_id, post_date, post_id, site_network, app_tool, feed_date) values (#activityType#, #activitySummary#, #activitySummaryFormat#, #feedUserId#, #postUserId#, #postDate#, #postId#, #siteNetwork#, #appTool#, #feedDate#) CALL IDENTITY() - - - - - - + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeedControl.xml b/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeedControl.xml index a5502fa021..e9cc83c4b5 100644 --- a/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeedControl.xml +++ b/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeedControl.xml @@ -7,14 +7,14 @@ - - - - - + + + + + - - + + - - + + + insert into alf_activity_feed_control (feed_user_id, site_network, app_tool, last_modified) values (#feedUserId#, #siteNetwork#, #appTool#, #lastModified#) CALL IDENTITY() - - - - - + + + + - + and app_tool = #appTool# + ]]> + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityPost.xml b/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityPost.xml index 2d479a6d32..aeeeebea97 100755 --- a/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityPost.xml +++ b/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityPost.xml @@ -10,11 +10,11 @@ - + - - + + @@ -22,7 +22,7 @@ @@ -60,27 +60,27 @@ where status = #status# ]]> - - - + + - - + + - - + + - - + where status = 'POSTED' + + + insert into alf_activity_post (status, activity_data, post_user_id, post_date, activity_type, site_network, app_tool, job_task_node, last_modified) values (#status#, #activityData#, #userId#, #postDate#, #activityType#, #siteNetwork#, #appTool#, #jobTaskNode#, #lastModified#) @@ -88,7 +88,7 @@ CALL IDENTITY() - + @@ -97,7 +97,7 @@ where post_date < #postDate# and status = #status# ]]> - + update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified# diff --git a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeed.xml b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeed.xml index 947bd8eaf9..6648e91761 100644 --- a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeed.xml +++ b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeed.xml @@ -7,19 +7,19 @@ - - - - + + + + - - - - + + + + - - + + - - + + insert into alf_activity_feed (activity_type, activity_summary, activity_format, feed_user_id, post_user_id, post_date, post_id, site_network, app_tool, feed_date) values (#activityType#, #activitySummary#, #activitySummaryFormat#, #feedUserId#, #postUserId#, #postDate#, #postId#, #siteNetwork#, #appTool#, #feedDate#) SELECT LAST_INSERT_ID() AS value - - - - - - + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeedControl.xml b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeedControl.xml index b0ac596003..122ad06a1c 100644 --- a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeedControl.xml +++ b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeedControl.xml @@ -7,14 +7,14 @@ - - - - - + + + + + - - + + - - + + + insert into alf_activity_feed_control (feed_user_id, site_network, app_tool, last_modified) values (#feedUserId#, #siteNetwork#, #appTool#, #lastModified#) SELECT LAST_INSERT_ID() AS value - - - - - + + + + - + and app_tool = #appTool# + ]]> + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityPost.xml b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityPost.xml index 1c080740e8..b4a99cd4d8 100755 --- a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityPost.xml +++ b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityPost.xml @@ -10,11 +10,11 @@ - + - - + + @@ -22,7 +22,7 @@ @@ -60,27 +60,27 @@ where status = #status# ]]> - - - + + - - + + - - + + - - + where status = 'POSTED' + + + insert into alf_activity_post (status, activity_data, post_user_id, post_date, activity_type, site_network, app_tool, job_task_node, last_modified) values (#status#, #activityData#, #userId#, #postDate#, #activityType#, #siteNetwork#, #appTool#, #jobTaskNode#, #lastModified#) @@ -88,7 +88,7 @@ SELECT LAST_INSERT_ID() AS value - + @@ -97,7 +97,7 @@ where post_date < #postDate# and status = #status# ]]> - + update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified# diff --git a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeed.xml b/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeed.xml index ea0fc42e75..38ce384699 100644 --- a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeed.xml +++ b/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeed.xml @@ -7,19 +7,19 @@ - - - - + + + + - - - - + + + + - - + + - + + select alf_activity_feed_seq.nextval as value from dual - + 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#) - - - - - - + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeedControl.xml b/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeedControl.xml index d8afdccf6b..0b5b118272 100644 --- a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeedControl.xml +++ b/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeedControl.xml @@ -7,14 +7,14 @@ - - - - - + + + + + - - + + + - + select alf_activity_feed_control_seq.nextval as value from dual - + insert into alf_activity_feed_control (id, feed_user_id, site_network, app_tool, last_modified) values (#id#, #feedUserId#, #siteNetwork#, #appTool#, #lastModified#) - - - - - + + + - + and app_tool = #appTool# + ]]> + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityPost.xml b/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityPost.xml index b2f5dc0895..7d90b84254 100755 --- a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityPost.xml +++ b/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityPost.xml @@ -10,11 +10,11 @@ - + - - + + @@ -22,7 +22,7 @@ @@ -60,35 +60,35 @@ where status = #status# ]]> - - - + + - - + + - - + + - + where status = 'POSTED' + + select alf_activity_post_seq.nextval as value from dual - + 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#) - + @@ -97,7 +97,7 @@ where post_date < #postDate# and status = #status# ]]> - + update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified# diff --git a/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeed.xml b/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeed.xml new file mode 100644 index 0000000000..72a4c6ddff --- /dev/null +++ b/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeed.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select nextVal('alf_activity_feed_seq') + + + 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#) + + + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeedControl.xml b/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeedControl.xml new file mode 100644 index 0000000000..4ca9a86049 --- /dev/null +++ b/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeedControl.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + select nextVal('alf_activity_feed_control_seq') + + + insert into alf_activity_feed_control (id, feed_user_id, site_network, app_tool, last_modified) + values (#id#, #feedUserId#, #siteNetwork#, #appTool#, #lastModified#) + + + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityPost.xml b/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityPost.xml new file mode 100755 index 0000000000..8579b31684 --- /dev/null +++ b/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityPost.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select nextVal('alf_activity_post_seq') + + + 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#) + + + + + + + + + update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified# + where sequence_id = #id# + and status != #status# + + + + update alf_activity_post set status = #status#, last_modified=#lastModified# + where sequence_id = #id# + and status != #status# + + + \ No newline at end of file diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml index 5f20803d68..206e9ef26a 100644 --- a/config/alfresco/bootstrap-context.xml +++ b/config/alfresco/bootstrap-context.xml @@ -49,7 +49,7 @@ classpath:alfresco/dbscripts/create/2.2/${db.script.dialect}/AlfrescoPostCreate-2.2-MappedFKIndexes.sql classpath:alfresco/dbscripts/create/2.2/${db.script.dialect}/AlfrescoPostCreate-2.2-Extra.sql - classpath:alfresco/dbscripts/create/3.0/${db.script.dialect}/create-activities-tables.sql + classpath:alfresco/dbscripts/create/3.0/${db.script.dialect}/create-activities-extras.sql @@ -66,7 +66,7 @@ - + diff --git a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.DerbyDialect/create-activities-tables.sql b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.DerbyDialect/create-activities-extras.sql similarity index 59% rename from config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.DerbyDialect/create-activities-tables.sql rename to config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.DerbyDialect/create-activities-extras.sql index 36aaf44699..5e816f23e3 100644 --- a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.DerbyDialect/create-activities-tables.sql +++ b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.DerbyDialect/create-activities-extras.sql @@ -1,12 +1,13 @@ -- --- Title: Activities Schema +-- Title: Activities Schema - Extras (Indexes, Identity) -- Database: Derby -- Since: V3.0.0 Schema -- --- Note: The Activities schema is NOT managed by Hibernate --- - +-- Activity Post + +-- Hibernate workaround - to add identity column +DROP TABLE alf_activity_post; CREATE TABLE alf_activity_post ( sequence_id bigint generated by default as identity (start with 1), post_date timestamp NOT NULL, @@ -20,11 +21,14 @@ CREATE TABLE alf_activity_post ( last_modified timestamp NOT NULL, primary key (sequence_id) ); + +CREATE INDEX post_jobtasknode_idx ON alf_activity_post(job_task_node); +CREATE INDEX post_status_idx ON alf_activity_post(status); -CREATE INDEX jobtasknode_idx on alf_activity_post(job_task_node); -CREATE INDEX status_idx on alf_activity_post(status); - +-- Activity Feed +-- Hibernate workaround - to add identity column +DROP TABLE alf_activity_feed; CREATE TABLE alf_activity_feed ( id bigint generated by default as identity (start with 1), post_id bigint default NULL, @@ -40,13 +44,16 @@ CREATE TABLE alf_activity_feed ( primary key (id) ); -CREATE INDEX postdate_idx ON alf_activity_feed(post_date); -CREATE INDEX feeduserid_idx ON alf_activity_feed(feed_user_id); -CREATE INDEX postuserid_idx ON alf_activity_feed(post_user_id); -CREATE INDEX sitenetwork_idx ON alf_activity_feed(site_network); -CREATE INDEX activityformat_idx ON alf_activity_feed(activity_format); +CREATE INDEX feed_postdate_idx ON alf_activity_feed(post_date); +CREATE INDEX feed_postuserid_idx ON alf_activity_feed(post_user_id); +CREATE INDEX feed_feeduserid_idx ON alf_activity_feed(feed_user_id); +CREATE INDEX feed_sitenetwork_idx ON alf_activity_feed(site_network); +CREATE INDEX feed_activityformat_idx ON alf_activity_feed(activity_format); +-- Activity Feed Control +-- Hibernate workaround - to add identity column +DROP TABLE alf_activity_feed_control; CREATE TABLE alf_activity_feed_control ( id bigint generated by default as identity (start with 1), feed_user_id varchar(255) NOT NULL, @@ -56,16 +63,17 @@ CREATE TABLE alf_activity_feed_control ( primary key (id) ); -CREATE INDEX feedcontroluserid_idx ON alf_activity_feed_control(feed_user_id); +CREATE INDEX feedctrl_feeduserid_idx ON alf_activity_feed_control(feed_user_id); + -- -- Record script finish -- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.0-0-CreateActivitiesTables'; +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.0-0-CreateActivitiesExtras'; INSERT INTO alf_applied_patch (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) VALUES ( - 'patch.db-V3.0-0-CreateActivitiesTables', 'Executed script create V3.0: Created activities tables', + 'patch.db-V3.0-0-CreateActivitiesExtras', 'Executed script create V3.0: Created activities extras', 0, 125, -1, 126, CURRENT_TIMESTAMP, 'UNKNOWN', 1, 1, 'Script completed' - ); + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Dialect/create-activities-extras.sql b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Dialect/create-activities-extras.sql new file mode 100644 index 0000000000..f19f1332f6 --- /dev/null +++ b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Dialect/create-activities-extras.sql @@ -0,0 +1,28 @@ +-- +-- Title: Activities Schema - Extras (Indexes) +-- Database: Generic +-- Since: V3.0.0 Schema +-- + +CREATE INDEX post_jobtasknode_idx ON alf_activity_post(job_task_node); +CREATE INDEX post_status_idx ON alf_activity_post(status); + +CREATE INDEX feed_postdate_idx ON alf_activity_feed(post_date); +CREATE INDEX feed_postuserid_idx ON alf_activity_feed(post_user_id); +CREATE INDEX feed_feeduserid_idx ON alf_activity_feed(feed_user_id); +CREATE INDEX feed_sitenetwork_idx ON alf_activity_feed(site_network); +CREATE INDEX feed_activityformat_idx ON alf_activity_feed(activity_format); + +CREATE INDEX feedctrl_feeduserid_idx ON alf_activity_feed_control(feed_user_id); + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.0-0-CreateActivitiesExtras'; +INSERT INTO alf_applied_patch + (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) + VALUES + ( + 'patch.db-V3.0-0-CreateActivitiesExtras', 'Executed script create V3.0: Created activities extras', + 0, 125, -1, 126, null, 'UNKNOWN', 1, 1, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.HSQLDialect/create-activities-tables.sql b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.HSQLDialect/create-activities-tables.sql deleted file mode 100644 index f2994dafe6..0000000000 --- a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.HSQLDialect/create-activities-tables.sql +++ /dev/null @@ -1,71 +0,0 @@ --- --- Title: Activities Schema --- Database: HSQL --- Since: V3.0.0 Schema --- --- Note: The Activities schema is NOT managed by Hibernate --- - - -CREATE TABLE alf_activity_post ( - sequence_id bigint generated by default as identity (start with 1), - post_date timestamp NOT NULL, - status varchar(10) NOT NULL, - activity_data varchar(4000) NOT NULL, - post_user_id varchar(255) NOT NULL, - job_task_node integer NOT NULL, - site_network varchar(255) default NULL, - app_tool varchar(36) default NULL, - activity_type varchar(255) NOT NULL, - last_modified timestamp NOT NULL, - primary key (sequence_id) -); - -CREATE INDEX jobtasknode_idx on alf_activity_post(job_task_node); -CREATE INDEX status_idx on alf_activity_post(status); - - -CREATE TABLE alf_activity_feed ( - id bigint generated by default as identity (start with 1), - post_id bigint default NULL, - post_date timestamp NOT NULL, - activity_summary varchar(4000) default NULL, - feed_user_id varchar(255) NOT NULL, - activity_type varchar(255) NOT NULL, - activity_format varchar(10) default NULL, - site_network varchar(255) default NULL, - app_tool varchar(36) default NULL, - post_user_id varchar(255) NOT NULL, - feed_date timestamp NOT NULL, - primary key (id) -); - -CREATE INDEX postdate_idx ON alf_activity_feed(post_date); -CREATE INDEX feeduserid_idx ON alf_activity_feed(feed_user_id); -CREATE INDEX postuserid_idx ON alf_activity_feed(post_user_id); -CREATE INDEX sitenetwork_idx ON alf_activity_feed(site_network); -CREATE INDEX activityformat_idx ON alf_activity_feed(activity_format); - - -CREATE TABLE alf_activity_feed_control ( - id bigint generated by default as identity (start with 1), - feed_user_id varchar(255) NOT NULL, - site_network varchar(255) NOT NULL, - app_tool varchar(36) default NULL, - last_modified timestamp NOT NULL, - primary key (id) -); - -CREATE INDEX feedcontroluserid_idx ON alf_activity_feed_control(feed_user_id); - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.0-0-CreateActivitiesTables'; -INSERT INTO alf_applied_patch - (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) - VALUES - ( - 'patch.db-V3.0-0-CreateActivitiesTables', 'Executed script create V3.0: Created activities tables', - 0, 125, -1, 126, NOW, 'UNKNOWN', 1, 1, 'Script completed' - ); diff --git a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.MySQLInnoDBDialect/create-activities-tables.sql b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.MySQLInnoDBDialect/create-activities-tables.sql deleted file mode 100644 index 45aae16d27..0000000000 --- a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.MySQLInnoDBDialect/create-activities-tables.sql +++ /dev/null @@ -1,68 +0,0 @@ --- --- Title: Activities Schema --- Database: MySQL --- Since: V3.0.0 Schema --- --- Note: The Activities schema is NOT managed by Hibernate --- - - -CREATE TABLE alf_activity_post ( - sequence_id bigint NOT NULL auto_increment, - post_date timestamp NOT NULL, - status varchar(10) NOT NULL, - activity_data varchar(4000) NOT NULL, - post_user_id varchar(255) NOT NULL, - job_task_node int(11) NOT NULL, - site_network varchar(255) default NULL, - app_tool varchar(36) default NULL, - activity_type varchar(255) NOT NULL, - last_modified timestamp NOT NULL, - PRIMARY KEY (sequence_id), - KEY jobtasknode_idx (job_task_node), - KEY status_idx (status) -) type=InnoDB; - - -CREATE TABLE alf_activity_feed ( - id bigint NOT NULL auto_increment, - post_id bigint default NULL, - post_date timestamp NOT NULL, - activity_summary varchar(4000) default NULL, - feed_user_id varchar(255) NOT NULL, - activity_type varchar(255) NOT NULL, - activity_format varchar(10) default NULL, - site_network varchar(255) default NULL, - app_tool varchar(36) default NULL, - post_user_id varchar(255) NOT NULL, - feed_date timestamp NOT NULL, - PRIMARY KEY (id), - KEY postdate_idx (post_date), - KEY feeduserid_idx (feed_user_id), - KEY postuserid_idx (post_user_id), - KEY sitenetwork_idx (site_network), - KEY activityformat_idx (activity_format) -) type=InnoDB; - - -CREATE TABLE alf_activity_feed_control ( - id bigint NOT NULL auto_increment, - feed_user_id varchar(255) NOT NULL, - site_network varchar(255) NOT NULL, - app_tool varchar(36) NOT NULL, - last_modified timestamp NOT NULL, - PRIMARY KEY (id), - KEY feedcontroluserid_idx (feed_user_id) -) type=InnoDB; - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.0-0-CreateActivitiesTables'; -INSERT INTO alf_applied_patch - (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) - VALUES - ( - 'patch.db-V3.0-0-CreateActivitiesTables', 'Executed script create V3.0: Created activities tables', - 0, 125, -1, 126, now(), 'UNKNOWN', 1, 1, 'Script completed' - ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Oracle9Dialect/create-activities-extras.sql b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Oracle9Dialect/create-activities-extras.sql new file mode 100644 index 0000000000..dfcf15a125 --- /dev/null +++ b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Oracle9Dialect/create-activities-extras.sql @@ -0,0 +1,38 @@ +-- +-- Title: Activities Schema - Extras (Indexes, Sequences) +-- Database: Oracle +-- Since: V3.0.0 Schema +-- + +-- Activity Post +CREATE SEQUENCE alf_activity_post_seq START WITH 1 INCREMENT BY 1; + +CREATE INDEX post_jobtasknode_idx ON alf_activity_post(job_task_node); +CREATE INDEX post_status_idx ON alf_activity_post(status); + +-- Activity Feed +CREATE SEQUENCE alf_activity_feed_seq START WITH 1 INCREMENT BY 1; + +CREATE INDEX feed_postdate_idx ON alf_activity_feed(post_date); +CREATE INDEX feed_postuserid_idx ON alf_activity_feed(post_user_id); +CREATE INDEX feed_feeduserid_idx ON alf_activity_feed(feed_user_id); +CREATE INDEX feed_sitenetwork_idx ON alf_activity_feed(site_network); +CREATE INDEX feed_activityformat_idx ON alf_activity_feed(activity_format); + +-- Activity Feed Control +CREATE SEQUENCE alf_activity_feed_control_seq START WITH 1 INCREMENT BY 1; + +CREATE INDEX feedctrl_feeduserid_idx ON alf_activity_feed_control(feed_user_id); + + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.0-0-CreateActivitiesExtras'; +INSERT INTO alf_applied_patch + (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) + VALUES + ( + 'patch.db-V3.0-0-CreateActivitiesExtras', 'Executed script create V3.0: Created activities extras', + 0, 125, -1, 126, SYSDATE, 'UNKNOWN', 1, 1, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Oracle9Dialect/create-activities-tables.sql b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Oracle9Dialect/create-activities-tables.sql deleted file mode 100644 index 7406a26893..0000000000 --- a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.Oracle9Dialect/create-activities-tables.sql +++ /dev/null @@ -1,77 +0,0 @@ --- --- Title: Activities Schema --- Database: Oracle --- Since: V3.0.0 Schema --- --- Note: The Activities schema is NOT managed by Hibernate --- - - -CREATE TABLE alf_activity_post ( - sequence_id number(19,0) NOT NULL, - post_date timestamp NOT NULL, - status varchar2(10) NOT NULL, - activity_data varchar2(4000) NOT NULL, - post_user_id varchar2(255) NOT NULL, - job_task_node number(19,0) NOT NULL, - site_network varchar2(255) default NULL, - app_tool varchar2(36) default NULL, - activity_type varchar2(255) NOT NULL, - last_modified timestamp NOT NULL, - primary key (sequence_id) -); - -CREATE SEQUENCE alf_activity_post_seq START WITH 1 INCREMENT BY 1; - -CREATE INDEX jobtasknode_idx on alf_activity_post(job_task_node); -CREATE INDEX status_idx on alf_activity_post(status); - - -CREATE TABLE alf_activity_feed ( - id number(19,0) NOT NULL, - post_id number(19,0) default NULL, - post_date timestamp NOT NULL, - activity_summary varchar2(4000) default NULL, - feed_user_id varchar2(255) default NULL, - activity_type varchar2(255) NOT NULL, - activity_format varchar2(10) default NULL, - site_network varchar2(255) default NULL, - app_tool varchar2(36) default NULL, - post_user_id varchar2(255) NOT NULL, - feed_date timestamp NOT NULL, - primary key (id) -); - -CREATE SEQUENCE alf_activity_feed_seq START WITH 1 INCREMENT BY 1; - -CREATE INDEX postdate_idx ON alf_activity_feed(post_date); -CREATE INDEX feeduserid_idx ON alf_activity_feed(feed_user_id); -CREATE INDEX postuserid_idx ON alf_activity_feed(post_user_id); -CREATE INDEX sitenetwork_idx ON alf_activity_feed(site_network); -CREATE INDEX activityformat_idx ON alf_activity_feed(activity_format); - - -CREATE TABLE alf_activity_feed_control ( - id number(19,0) NOT NULL, - feed_user_id varchar2(255) NOT NULL, - site_network varchar2(255) NOT NULL, - app_tool varchar2(36) NOT NULL, - last_modified timestamp NOT NULL, - primary key (id) -); - -CREATE SEQUENCE alf_activity_feed_control_seq START WITH 1 INCREMENT BY 1; - -CREATE INDEX feedcontroluserid_idx ON alf_activity_feed_control(feed_user_id); - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.0-0-CreateActivitiesTables'; -INSERT INTO alf_applied_patch - (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) - VALUES - ( - 'patch.db-V3.0-0-CreateActivitiesTables', 'Executed script create V3.0: Created activities tables', - 0, 125, -1, 126, SYSDATE, 'UNKNOWN', 1, 1, 'Script completed' - ); diff --git a/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.PostgreSQLDialect/create-activities-extras.sql b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.PostgreSQLDialect/create-activities-extras.sql new file mode 100755 index 0000000000..cd6ced2481 --- /dev/null +++ b/config/alfresco/dbscripts/create/3.0/org.hibernate.dialect.PostgreSQLDialect/create-activities-extras.sql @@ -0,0 +1,37 @@ +-- +-- Title: Activities Schema - Extras (Indexes, Sequences) +-- Database: PostgreSQL +-- Since: V3.0.0 Schema +-- + +-- Activity Post +CREATE SEQUENCE alf_activity_post_seq START WITH 1 INCREMENT BY 1; +CREATE INDEX post_jobtasknode_idx ON alf_activity_post(job_task_node); +CREATE INDEX post_status_idx ON alf_activity_post(status); + +-- Activity Feed +CREATE SEQUENCE alf_activity_feed_seq START WITH 1 INCREMENT BY 1; + +CREATE INDEX feed_postdate_idx ON alf_activity_feed(post_date); +CREATE INDEX feed_postuserid_idx ON alf_activity_feed(post_user_id); +CREATE INDEX feed_feeduserid_idx ON alf_activity_feed(feed_user_id); +CREATE INDEX feed_sitenetwork_idx ON alf_activity_feed(site_network); +CREATE INDEX feed_activityformat_idx ON alf_activity_feed(activity_format); + +-- Activity Feed Control +CREATE SEQUENCE alf_activity_feed_control_seq START WITH 1 INCREMENT BY 1; + +CREATE INDEX feedctrl_feeduserid_idx ON alf_activity_feed_control(feed_user_id); + + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.0-0-CreateActivitiesExtras'; +INSERT INTO alf_applied_patch + (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) + VALUES + ( + 'patch.db-V3.0-0-CreateActivitiesExtras', 'Executed script create V3.0: Created activities extras', + 0, 125, -1, 126, null, 'UNKNOWN', TRUE, TRUE, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/messages/schema-update.properties b/config/alfresco/messages/schema-update.properties index 3608dddda3..36a1824267 100644 --- a/config/alfresco/messages/schema-update.properties +++ b/config/alfresco/messages/schema-update.properties @@ -10,6 +10,7 @@ schema.update.msg.executing_statement= Executing statement: {0} schema.update.msg.optional_statement_failed=Optional statement execution failed:\n SQL: {0}\n Error: {1}\n File: {2}\n Line: {3} schema.update.warn.dialect_unsupported=Alfresco should not be used with database dialect {0}. schema.update.warn.dialect_hsql=Alfresco is using the HSQL default database. Please only use this while evaluating Alfresco, it is NOT recommended for production or deployment! +schema.update.warn.dialect_derby=Alfresco is using the Apache Derby default database. Please only use this while evaluating Alfresco, it is NOT recommended for production or deployment! schema.update.err.found_multiple=\nMore than one Alfresco schema was found when querying the database metadata.\n Limit the database user's permissions or set the 'hibernate.default_schema' property in 'custom-hibernate-dialect.properties'. schema.update.err.previous_failed=A previous schema upgrade failed or was not completed. Revert to the original database before attempting the upgrade again. schema.update.err.statement_failed=Statement execution failed:\n SQL: {0}\n Error: {1}\n File: {2}\n Line: {3} diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml index b6f4751204..1e47fa9218 100644 --- a/config/alfresco/patch/patch-services-context.xml +++ b/config/alfresco/patch/patch-services-context.xml @@ -1468,14 +1468,14 @@ - - patch.db-V3.0-0-CreateActivitiesTables + + patch.db-V3.0-0-CreateActivitiesExtras patch.schemaUpgradeScript.description 0 125 126 - classpath:alfresco/dbscripts/create/3.0/${db.script.dialect}/create-activities-tables.sql + classpath:alfresco/dbscripts/create/3.0/${db.script.dialect}/create-activities-extras.sql diff --git a/source/java/org/alfresco/repo/activities/ActivityServiceImpl.java b/source/java/org/alfresco/repo/activities/ActivityServiceImpl.java index 74cfcda31c..37f2573ce8 100644 --- a/source/java/org/alfresco/repo/activities/ActivityServiceImpl.java +++ b/source/java/org/alfresco/repo/activities/ActivityServiceImpl.java @@ -262,12 +262,16 @@ public class ActivityServiceImpl implements ActivityService } catch (SQLException e) { - throw new AlfrescoRuntimeException("Failed to post activity: " + e, e); + throw new AlfrescoRuntimeException("Failed to post activity: " + e, e); + } + catch (Throwable t) + { + throw new AlfrescoRuntimeException("Failed to post activity: " + t, t); } } catch (AlfrescoRuntimeException e) { - // log error, subsume exception + // log error, subsume exception (for post activity) logger.error(e); } } @@ -313,13 +317,17 @@ public class ActivityServiceImpl implements ActivityService } catch (SQLException se) { - throw new AlfrescoRuntimeException("Unable to get user feed entries: " + se.getMessage()); + AlfrescoRuntimeException are = new AlfrescoRuntimeException("Unable to get user feed entries: " + se.getMessage()); + logger.error(are); + throw are; } catch (JSONException je) { - throw new AlfrescoRuntimeException("Unable to get user feed entries: " + je.getMessage()); + AlfrescoRuntimeException are = new AlfrescoRuntimeException("Unable to get user feed entries: " + je.getMessage()); + logger.error(are); + throw are; } - + return activityFeedEntries; } @@ -350,11 +358,15 @@ public class ActivityServiceImpl implements ActivityService } catch (SQLException se) { - throw new AlfrescoRuntimeException("Unable to get site feed entries: " + se.getMessage()); + AlfrescoRuntimeException are = new AlfrescoRuntimeException("Unable to get site feed entries: " + se.getMessage()); + logger.error(are); + throw are; } catch (JSONException je) { - throw new AlfrescoRuntimeException("Unable to get site feed entries: " + je.getMessage()); + AlfrescoRuntimeException are = new AlfrescoRuntimeException("Unable to get site feed entries: " + je.getMessage()); + logger.error(are); + throw are; } return activityFeedEntries; @@ -382,7 +394,9 @@ public class ActivityServiceImpl implements ActivityService } catch (SQLException e) { - throw new AlfrescoRuntimeException("Failed to set feed control: " + e, e); + AlfrescoRuntimeException are = new AlfrescoRuntimeException("Failed to set feed control: " + e, e); + logger.error(are); + throw are; } } @@ -433,7 +447,9 @@ public class ActivityServiceImpl implements ActivityService } catch (SQLException e) { - throw new AlfrescoRuntimeException("Failed to get feed controls: " + e, e); + AlfrescoRuntimeException are = new AlfrescoRuntimeException("Failed to get feed controls: " + e, e); + logger.error(are); + throw are; } } @@ -456,7 +472,9 @@ public class ActivityServiceImpl implements ActivityService } catch (SQLException e) { - throw new AlfrescoRuntimeException("Failed to unset feed control: " + e, e); + AlfrescoRuntimeException are = new AlfrescoRuntimeException("Failed to unset feed control: " + e, e); + logger.error(are); + throw are; } } @@ -481,7 +499,9 @@ public class ActivityServiceImpl implements ActivityService } catch (SQLException e) { - throw new AlfrescoRuntimeException("Failed to query feed control: " + e, e); + AlfrescoRuntimeException are = new AlfrescoRuntimeException("Failed to query feed control: " + e, e); + logger.error(are); + throw are; } } } diff --git a/source/java/org/alfresco/repo/activities/feed/cleanup/FeedCleaner.java b/source/java/org/alfresco/repo/activities/feed/cleanup/FeedCleaner.java index 0c87bb74af..d8471595e3 100644 --- a/source/java/org/alfresco/repo/activities/feed/cleanup/FeedCleaner.java +++ b/source/java/org/alfresco/repo/activities/feed/cleanup/FeedCleaner.java @@ -78,7 +78,7 @@ public class FeedCleaner try { long nowTimeOffset = new Date().getTime(); - long keepTimeOffset = nowTimeOffset - (maxAgeMins*60*1000); // millsecs = mins * 60 secs * 1000 msecs + long keepTimeOffset = nowTimeOffset - ((long)maxAgeMins*60000L); // millsecs = mins * 60 secs * 1000 msecs Date keepDate = new Date(keepTimeOffset); // clean old entries diff --git a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java index a6b80530be..c4d5fdf223 100644 --- a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java +++ b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java @@ -64,6 +64,7 @@ import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.connection.UserSuppliedConnectionProvider; import org.hibernate.dialect.DB2Dialect; +import org.hibernate.dialect.DerbyDialect; import org.hibernate.dialect.Dialect; import org.hibernate.dialect.HSQLDialect; import org.hibernate.dialect.MySQL5Dialect; @@ -102,6 +103,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean private static final String MSG_OPTIONAL_STATEMENT_FAILED = "schema.update.msg.optional_statement_failed"; private static final String WARN_DIALECT_UNSUPPORTED = "schema.update.warn.dialect_unsupported"; private static final String WARN_DIALECT_HSQL = "schema.update.warn.dialect_hsql"; + private static final String WARN_DIALECT_DERBY = "schema.update.warn.dialect_derby"; private static final String ERR_MULTIPLE_SCHEMAS = "schema.update.err.found_multiple"; private static final String ERR_PREVIOUS_FAILED_BOOTSTRAP = "schema.update.err.previous_failed"; private static final String ERR_STATEMENT_FAILED = "schema.update.err.statement_failed"; @@ -905,6 +907,10 @@ public class SchemaBootstrap extends AbstractLifecycleBean { LogUtil.info(logger, WARN_DIALECT_HSQL); } + if (dialectClazz.equals(DerbyDialect.class)) + { + LogUtil.info(logger, WARN_DIALECT_DERBY); + } int maxStringLength = SchemaBootstrap.DEFAULT_MAX_STRING_LENGTH; // Adjust the maximum allowable String length according to the dialect