From aeef3a5af89d94df1be8b4631cd9df786779ca6c Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Mon, 10 Aug 2009 19:08:23 +0000 Subject: [PATCH] Property DAO support for date (yyyy-mm-dd) - Avoided nasty timezone issues by using Epoch millisecond time git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@15665 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/cache-context.xml | 2 +- config/alfresco/dao/dao-context.xml | 2 + ...escoPostCreate-3.3-PropertyValueTables.sql | 37 +++ .../propval-common-SqlMap.xml | 72 ++++++ .../propval/AbstractPropertyValueDAOImpl.java | 122 +++++++++ .../propval/PropertyDateValueEntity.java | 244 ++++++++++++++++++ .../repo/domain/propval/PropertyValueDAO.java | 20 ++ .../domain/propval/PropertyValueDAOTest.java | 80 +++--- .../propval/ibatis/PropertyValueDAOImpl.java | 40 +++ 9 files changed, 584 insertions(+), 35 deletions(-) create mode 100644 source/java/org/alfresco/repo/domain/propval/PropertyDateValueEntity.java diff --git a/config/alfresco/cache-context.xml b/config/alfresco/cache-context.xml index 24ad2f4ec0..d74d787452 100644 --- a/config/alfresco/cache-context.xml +++ b/config/alfresco/cache-context.xml @@ -239,7 +239,7 @@ org.alfresco.cache.immutableEntityTransactionalCache - 100 + 1000 diff --git a/config/alfresco/dao/dao-context.xml b/config/alfresco/dao/dao-context.xml index bea7e028b5..f00219cb81 100644 --- a/config/alfresco/dao/dao-context.xml +++ b/config/alfresco/dao/dao-context.xml @@ -51,6 +51,8 @@ + + diff --git a/config/alfresco/dbscripts/create/3.3/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-3.3-PropertyValueTables.sql b/config/alfresco/dbscripts/create/3.3/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-3.3-PropertyValueTables.sql index be1665905d..d27d139019 100644 --- a/config/alfresco/dbscripts/create/3.3/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-3.3-PropertyValueTables.sql +++ b/config/alfresco/dbscripts/create/3.3/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-3.3-PropertyValueTables.sql @@ -41,6 +41,42 @@ CREATE TABLE alf_prop_serializable_value PRIMARY KEY (id) ) ENGINE=InnoDB; +CREATE TABLE alf_prop_date_value +( + date_value BIGINT NOT NULL, + full_year SMALLINT NOT NULL, + half_of_year TINYINT NOT NULL, + quarter_of_year TINYINT NOT NULL, + month_of_year TINYINT NOT NULL, + week_of_year TINYINT NOT NULL, + week_of_month TINYINT NOT NULL, + day_of_year SMALLINT NOT NULL, + day_of_month TINYINT NOT NULL, + day_of_week TINYINT NOT NULL, + INDEX idx_alf_prop_date_val (date_value), + INDEX idx_alf_prop_date_fy (full_year), + INDEX idx_alf_prop_date_moy (month_of_year), + INDEX idx_alf_prop_date_doy (day_of_year), + INDEX idx_alf_prop_date_dom (day_of_month), + INDEX idx_alf_prop_date_dow (day_of_week), + PRIMARY KEY (date_value) +) ENGINE=InnoDB; + +CREATE TABLE alf_prop_time_value +( + time_value BIGINT NOT NULL, + hour_of_day TINYINT NOT NULL, + minute_of_hour TINYINT NOT NULL, + second_of_minute TINYINT NOT NULL, + ms_of_second TINYINT NOT NULL, + INDEX idx_alf_prop_time_val (time_value), + INDEX idx_alf_prop_time_hod (hour_of_day), + INDEX idx_alf_prop_time_moh (minute_of_hour), + INDEX idx_alf_prop_time_som (second_of_minute), + INDEX idx_alf_prop_time_msos (ms_of_second), + PRIMARY KEY (time_value) +) ENGINE=InnoDB; + CREATE TABLE alf_prop_value ( id BIGINT NOT NULL AUTO_INCREMENT, @@ -51,6 +87,7 @@ CREATE TABLE alf_prop_value INDEX idx_alf_prop_act (actual_type_id, long_value), PRIMARY KEY (id) ) ENGINE=InnoDB; + -- -- Record script finish -- diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/propval-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/propval-common-SqlMap.xml index 60ee445e37..2f5db36afa 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/propval-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/propval-common-SqlMap.xml @@ -13,6 +13,7 @@ + @@ -33,6 +34,19 @@ + + + + + + + + + + + + + @@ -76,6 +90,25 @@ values (#doubleValue#) + + insert into alf_prop_date_value + ( + date_value, + full_year, half_of_year, quarter_of_year, + month_of_year, + week_of_year, week_of_month, + day_of_year, day_of_month, day_of_week + ) + values + ( + #dateValue#, + #fullYear#, #halfOfYear#, #quarterOfYear#, + #monthOfYear#, + #weekOfYear#, #weekOfMonth#, + #dayOfYear#, #dayOfMonth#, #dayOfWeek# + ) + + insert into alf_prop_value (actual_type_id, persisted_type, long_value) values (#actualTypeId#, #persistedType#, #longValue#) @@ -146,6 +179,45 @@ double_value = #doubleValue# + + insert into alf_prop_date_value + ( + date_value, + full_year, half_of_year, quarter_of_year, + month_of_year, + week_of_year, week_of_month, + day_of_year, day_of_month, day_of_week + ) + values + ( + #dateValue#, + #fullYear#, #halfOfYear#, #quarterOfYear#, + #monthOfYear#, + #weekOfYear#, #weekOfMonth#, + #dayOfYear#, #dayOfMonth#, #dayOfWeek# + ) + + + + + + + +