From 8ee4cdd08d5bcdb163336b91d8bf3a38b3c2de39 Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 5 Jul 2017 07:24:55 +0000 Subject: [PATCH] CCM NG/ccm-cms: - Fixed wrong datatype in ccm_cms.events table (was SQL Date, which does not save time, is now SQL Timestamp) - EventPropertiesStep and EventPropertyForm work now as expected git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4840 8810af33-2d31-482b-a856-94f89814c4df --- .../contenttypes/ui/EventPropertiesStep.java | 2 +- .../contenttypes/ui/EventPropertyForm.java | 57 ++++++++++++++++--- .../java/org/librecms/contenttypes/Event.java | 4 +- ..._0_13__change_event_dates_to_timestamp.sql | 5 ++ ..._0_13__change_event_dates_to_timestamp.sql | 5 ++ .../org/librecms/CmsResources.properties | 1 + .../org/librecms/CmsResources_de.properties | 1 + .../org/librecms/CmsResources_fr.properties | 1 + .../scripts/create_ccm_cms_schema.sql | 8 +-- .../scripts/create_ccm_cms_schema.sql | 8 +-- 10 files changed, 73 insertions(+), 19 deletions(-) create mode 100644 ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_13__change_event_dates_to_timestamp.sql create mode 100644 ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_13__change_event_dates_to_timestamp.sql diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java b/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java index a875e50d4..a106048ad 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java @@ -133,7 +133,7 @@ public class EventPropertiesStep extends SimpleEditStep { "name"); sheet.add(new GlobalizedMessage("cms.contenttypes.ui.event.lead", CmsConstants.CMS_BUNDLE), - "lead"); + "description"); sheet.add(new GlobalizedMessage("cms.contenttypes.ui.event.start_time", CmsConstants.CMS_BUNDLE), diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertyForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertyForm.java index af654e5b1..b58b602b1 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertyForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertyForm.java @@ -71,12 +71,14 @@ public class EventPropertyForm FormInitListener, FormSubmissionListener { + private final static Logger LOGGER = LogManager + .getLogger(EventPropertyForm.class); + /** * Name of this form */ public static final String ID = "event_edit"; - private final static Logger LOGGER = LogManager - .getLogger(EventPropertyForm.class); + private EventPropertiesStep eventPropertiesStep; /** * event date parameter name @@ -516,13 +518,52 @@ public class EventPropertyForm final java.util.Date startDate = (java.util.Date) data .get(START_DATE); - startDate.setTime(((java.util.Date) data.get(START_TIME)).getTime()); - item.setStartDate((java.util.Date) data.get(START_DATE)); + final java.util.Date startTime = (java.util.Date) data + .get(START_TIME); + final java.util.Date endDate = (java.util.Date) data.get(END_DATE); + final java.util.Date endTime = (java.util.Date) data.get(END_TIME); + + final Calendar startDateCal = Calendar.getInstance(); + final Calendar startTimeCal = Calendar.getInstance(); + final Calendar endDateCal = Calendar.getInstance(); + final Calendar endTimeCal = Calendar.getInstance(); + startDateCal.setTime(startDate); + startTimeCal.setTime(startTime); + endDateCal.setTime(endDate); + endTimeCal.setTime(endTime); + + final int startYear = startDateCal.get(Calendar.YEAR); + final int startMonth = startDateCal.get(Calendar.MONTH); + final int startDay = startDateCal.get(Calendar.DAY_OF_MONTH); + final int startHour = startTimeCal.get(Calendar.HOUR_OF_DAY); + final int startMinute = startTimeCal.get(Calendar.MINUTE); + + final int endYear = endDateCal.get(Calendar.YEAR); + final int endMonth = endDateCal.get(Calendar.MONTH); + final int endDay = endDateCal.get(Calendar.DAY_OF_MONTH); + final int endHour = endTimeCal.get(Calendar.HOUR_OF_DAY); + final int endMinute = endTimeCal.get(Calendar.MINUTE); + + final Calendar startDateTimeCal = Calendar.getInstance(); + final Calendar endDateTimeCal = Calendar.getInstance(); + + startDateTimeCal.set(Calendar.YEAR, startYear); + startDateTimeCal.set(Calendar.MONTH, startMonth); + startDateTimeCal.set(Calendar.DAY_OF_MONTH, startDay); + startDateTimeCal.set(Calendar.HOUR_OF_DAY, startHour); + startDateTimeCal.set(Calendar.MINUTE, startMinute); + + endDateTimeCal.set(Calendar.YEAR, endYear); + endDateTimeCal.set(Calendar.MONTH, endMonth); + endDateTimeCal.set(Calendar.DAY_OF_MONTH, endDay); + endDateTimeCal.set(Calendar.HOUR_OF_DAY, endHour); + endDateTimeCal.set(Calendar.MINUTE, endMinute); + + final java.util.Date startDateTime = startDateTimeCal.getTime(); + final java.util.Date endDateTime = endDateTimeCal.getTime(); - final java.util.Date endDate = (java.util.Date) data - .get(END_DATE); - endDate.setTime(((java.util.Date) data.get(END_TIME)).getTime()); - item.setEndDate((java.util.Date) data.get(END_DATE)); + item.setStartDate(startDateTime); + item.setEndDate(endDateTime); //date_description if (!eventConfig.isHideDateDescription()) { item.getEventDate().addValue(selectedLocale, diff --git a/ccm-cms/src/main/java/org/librecms/contenttypes/Event.java b/ccm-cms/src/main/java/org/librecms/contenttypes/Event.java index 824c7fe12..2bad74863 100644 --- a/ccm-cms/src/main/java/org/librecms/contenttypes/Event.java +++ b/ccm-cms/src/main/java/org/librecms/contenttypes/Event.java @@ -84,12 +84,12 @@ public class Event extends ContentItem implements Serializable { private LocalizedString text; @Column(name = "START_DATE", nullable = false) - @Temporal(TemporalType.DATE) + @Temporal(TemporalType.TIMESTAMP) @NotNull private Date startDate; @Column(name = "END_DATE") - @Temporal(TemporalType.DATE) + @Temporal(TemporalType.TIMESTAMP) private Date endDate; /** diff --git a/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_13__change_event_dates_to_timestamp.sql b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_13__change_event_dates_to_timestamp.sql new file mode 100644 index 000000000..13272c2fb --- /dev/null +++ b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_13__change_event_dates_to_timestamp.sql @@ -0,0 +1,5 @@ +ALTER TABLE ccm_cms.events ALTER COLUMN start_date timestamp; +ALTER TABLE ccm_cms.events ALTER COLUMN end_date timestamp; + +ALTER TABLE ccm_cms.events_aud ALTER COLUMN start_date TYPE timestamp; +ALTER TABLE ccm_cms.events_aud ALTER COLUMN end_date TYPE timestamp; diff --git a/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_13__change_event_dates_to_timestamp.sql b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_13__change_event_dates_to_timestamp.sql new file mode 100644 index 000000000..d1a244279 --- /dev/null +++ b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_13__change_event_dates_to_timestamp.sql @@ -0,0 +1,5 @@ +ALTER TABLE ccm_cms.events ALTER COLUMN start_date TYPE timestamp; +ALTER TABLE ccm_cms.events ALTER COLUMN end_date TYPE timestamp; + +ALTER TABLE ccm_cms.events_aud ALTER COLUMN start_date TYPE timestamp; +ALTER TABLE ccm_cms.events_aud ALTER COLUMN end_date TYPE timestamp; diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties index 0ff0c7d32..50423f1a1 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -346,3 +346,4 @@ cms.contenttypes.ui.event.main_contributor=Main contributor cms.contenttypes.ui.event.event_type=Event type cms.contenttypes.ui.event.link_to_map=Link to map cms.contenttypes.ui.event.cost=Cost +cms.contenttypes.ui.event.end_date_after_start_date=The end date must be later then the start date diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties index 1280a4d6d..97dbb719a 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties @@ -343,3 +343,4 @@ cms.contenttypes.ui.event.main_contributor=Ansprechpartner cms.contenttypes.ui.event.event_type=Art der Veranstaltung cms.contenttypes.ui.event.link_to_map=Link zur Karte cms.contenttypes.ui.event.cost=Kosten +cms.contenttypes.ui.event.end_date_after_start_date=Das End-Datum muss nach dem Start-Datum liegen. diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties index 5fad60b7e..e81598c41 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties @@ -302,3 +302,4 @@ cms.contenttypes.ui.event.main_contributor=Main contributor cms.contenttypes.ui.event.event_type=Event type cms.contenttypes.ui.event.link_to_map=Link to map cms.contenttypes.ui.event.cost=Cost +cms.contenttypes.ui.event.end_date_after_start_date=The end date must be later then the start date diff --git a/ccm-cms/src/test/resources-wildfly-remote-h2-mem/scripts/create_ccm_cms_schema.sql b/ccm-cms/src/test/resources-wildfly-remote-h2-mem/scripts/create_ccm_cms_schema.sql index cdf06f5d4..129c16ab2 100644 --- a/ccm-cms/src/test/resources-wildfly-remote-h2-mem/scripts/create_ccm_cms_schema.sql +++ b/ccm-cms/src/test/resources-wildfly-remote-h2-mem/scripts/create_ccm_cms_schema.sql @@ -453,9 +453,9 @@ create schema CCM_CORE; ); create table CCM_CMS.EVENTS ( - END_DATE date, + END_DATE timestamp, MAP_LINK varchar(255), - START_DATE date not null, + START_DATE timestamp not null, OBJECT_ID bigint not null, primary key (OBJECT_ID) ); @@ -463,9 +463,9 @@ create schema CCM_CORE; create table CCM_CMS.EVENTS_AUD ( OBJECT_ID bigint not null, REV integer not null, - END_DATE date, + END_DATE timestamp, MAP_LINK varchar(255), - START_DATE date, + START_DATE timestamp, primary key (OBJECT_ID, REV) ); diff --git a/ccm-cms/src/test/resources-wildfly-remote-pgsql/scripts/create_ccm_cms_schema.sql b/ccm-cms/src/test/resources-wildfly-remote-pgsql/scripts/create_ccm_cms_schema.sql index 71bfb2fb0..b7d615029 100644 --- a/ccm-cms/src/test/resources-wildfly-remote-pgsql/scripts/create_ccm_cms_schema.sql +++ b/ccm-cms/src/test/resources-wildfly-remote-pgsql/scripts/create_ccm_cms_schema.sql @@ -454,9 +454,9 @@ create schema CCM_CORE; ); create table CCM_CMS.EVENTS ( - END_DATE date, + END_DATE timestamp, MAP_LINK varchar(255), - START_DATE date not null, + START_DATE timestamp not null, OBJECT_ID int8 not null, primary key (OBJECT_ID) ); @@ -464,9 +464,9 @@ create schema CCM_CORE; create table CCM_CMS.EVENTS_AUD ( OBJECT_ID int8 not null, REV int4 not null, - END_DATE date, + END_DATE timestamp, MAP_LINK varchar(255), - START_DATE date, + START_DATE timestamp, primary key (OBJECT_ID, REV) );