This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 128a145  [OPENMEETINGS-2334] fr-CA date-time parsing/formatting should 
work
128a145 is described below

commit 128a145366def0f4b53a840a29256e50a6bf0988
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Thu May 7 09:55:00 2020 +0700

    [OPENMEETINGS-2334] fr-CA date-time parsing/formatting should work
---
 .../web/common/AbstractOmDateTimePicker.java        | 21 ++++++++++++++++++---
 .../org/apache/openmeetings/util/TestDateTime.java  | 13 +++++++++++++
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AbstractOmDateTimePicker.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AbstractOmDateTimePicker.java
index 062da09..96450c2 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AbstractOmDateTimePicker.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AbstractOmDateTimePicker.java
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.common;
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.util.Locale;
 
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.model.IModel;
@@ -41,7 +42,7 @@ public abstract class AbstractOmDateTimePicker<T> extends 
AbstractDateTimePicker
        public AbstractOmDateTimePicker(String id, IModel<T> model, String 
format) {
                super(id, model, new DatetimePickerConfig()
                                
//.useLocale(WebSession.get().getLocale().toLanguageTag())
-                               .withFormat(format)
+                               .withFormat(patch(format))
                                .with(new DatetimePickerIconConfig()
                                                
.useDateIcon(FontAwesome5IconType.calendar_s)
                                                
.useTimeIcon(FontAwesome5IconType.clock_s)
@@ -56,8 +57,18 @@ public abstract class AbstractOmDateTimePicker<T> extends 
AbstractDateTimePicker
                setRenderBodyOnly(false);
        }
 
+       public static String patch(String format) {
+               // in Java free text is escaped with single-quotes
+               // moment.js uses []
+               return format.replaceFirst("(.*)([']{1}(.*)[']{1})(.*)", 
"$1\\[$3\\]$4");
+       }
+
        public static String getDateTimeFormat() {
-               DateFormat fmt = 
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, 
WebSession.get().getLocale());
+               return getDateTimeFormat(WebSession.get().getLocale());
+       }
+
+       public static String getDateTimeFormat(Locale loc) {
+               DateFormat fmt = 
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, loc);
                if (fmt instanceof SimpleDateFormat) {
                        return ((SimpleDateFormat)fmt).toPattern();
                }
@@ -65,7 +76,11 @@ public abstract class AbstractOmDateTimePicker<T> extends 
AbstractDateTimePicker
        }
 
        public static String getDateFormat() {
-               DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, 
WebSession.get().getLocale());
+               return getDateFormat(WebSession.get().getLocale());
+       }
+
+       public static String getDateFormat(Locale loc) {
+               DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, 
loc);
                if (fmt instanceof SimpleDateFormat) {
                        return ((SimpleDateFormat)fmt).toPattern();
                }
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java 
b/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java
index ac9120d..a5f5c32 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java
@@ -29,6 +29,7 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
 
+import org.apache.openmeetings.web.common.AbstractOmDateTimePicker;
 import org.junit.jupiter.api.Test;
 
 public class TestDateTime {
@@ -73,4 +74,16 @@ public class TestDateTime {
                                .toFormatter(Locale.ENGLISH);
                assertNotNull(formatter1.parse(jsDateStr));
        }
+
+       @Test
+       public void test3() throws Exception {
+               final Locale loc = new Locale.Builder()
+                               .setLanguage("fr")
+                               .setRegion("CA")
+                               .build();
+               String format = AbstractOmDateTimePicker.getDateTimeFormat(loc);
+               assertEquals("yy-MM-dd HH [h] mm", 
AbstractOmDateTimePicker.patch(format));
+               format = 
AbstractOmDateTimePicker.getDateTimeFormat(Locale.ENGLISH);
+               assertEquals(format, AbstractOmDateTimePicker.patch(format));
+       }
 }

Reply via email to