You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mu...@apache.org on 2007/04/20 04:29:32 UTC
svn commit: r530613 - in /struts/struts2/trunk/plugins/dojo/src:
main/java/org/apache/struts2/dojo/components/
test/java/org/apache/struts2/dojo/views/jsp/ui/
test/resources/org/apache/struts2/dojo/views/jsp/ui/
Author: musachy
Date: Thu Apr 19 19:29:31 2007
New Revision: 530613
URL: http://svn.apache.org/viewvc?view=rev&rev=530613
Log:
Add testcases and improve javadoc for DateTimePicker
Modified:
struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/DateTimePicker.java
struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest.java
struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest-1.txt
Modified: struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/DateTimePicker.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/DateTimePicker.java?view=diff&rev=530613&r1=530612&r2=530613
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/DateTimePicker.java (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/DateTimePicker.java Thu Apr 19 19:29:31 2007
@@ -21,7 +21,6 @@
package org.apache.struts2.dojo.components;
import java.text.DateFormat;
-import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -92,13 +91,23 @@
* </table>
*
* <p>
- * The value sent to the server is
- * typically a locale-independent value in a hidden field as defined by the name
- * attribute. RFC3339 representation is the format used.
+ * The value sent to the server is a locale-independent value, in a hidden field as defined
+ * by the name attribute. The value will be formatted conforming to RFC3 339
+ * (yyyy-MM-dd'T'HH:mm:ss)
* </p>
- *
- * <p/>
- *
+ * <p>
+ * The following formats(in order) will be used to parse the values of the attributes 'value',
+ * 'startDate' and 'endDate':
+ * </p>
+ * <ul>
+ * <li>RFC 3339
+ * <li>SimpleDateFormat.getTimeInstance(DateFormat.SHORT
+ * <li>SimpleDateFormat.getDateInstance(DateFormat.SHORT
+ * <li>SimpleDateFormat.getDateInstance(DateFormat.MEDIUM
+ * <li>SimpleDateFormat.getDateInstance(DateFormat.FULL
+ * <li>SimpleDateFormat.getDateInstance(DateFormat.LONG
+ * <li>'displayFormat' attribute value
+ * </ul>
* <!-- END SNIPPET: javadoc -->
*
* <b>Examples</b>
@@ -109,26 +118,13 @@
* Example 1:
* <s:datetimepicker name="order.date" label="Order Date" />
* Example 2:
- * <s:datetimepicker name="delivery.date" label="Delivery Date" format="yyyy-MM-dd" />
- *
+ * <s:datetimepicker name="delivery.date" label="Delivery Date" displayFormat="yyyy-MM-dd" />
+ * Example 3:
+ * <s:datetimepicker name="delivery.date" label="Delivery Date" value="%{date}" />
* <!-- END SNIPPET: expl1 -->
* </pre>
* <p/>
*
- * <!-- START SNIPPET: expldesc2 -->
- *
- * The css could be changed by using the following :-
- *
- * <!-- END SNIPPET: expldesc2 -->
- *
- * <pre>
- * <!-- START SNIPPET: expl2 -->
- *
- * <s:datetimepicker name="birthday" label="Birthday" templateCss="...." />
- *
- * <!-- END SNIPPET: expl2 -->
- * </pre>
- *
*/
@StrutsTag(name="datetimepicker", tldTagClass="org.apache.struts2.dojo.views.jsp.ui.DateTimePickerTag", description="Render datetimepicker")
public class DateTimePicker extends UIBean {
@@ -172,9 +168,9 @@
if(adjustWeeks != null)
addParameter("adjustWeeks", findValue(adjustWeeks, Boolean.class));
if(startDate != null)
- addParameter("startDate", findString(startDate));
+ addParameter("startDate", format(findString(startDate)));
if(endDate != null)
- addParameter("endDate", findString(endDate));
+ addParameter("endDate", format(findString(endDate)));
if(weekStartsOn != null)
addParameter("weekStartsOn", findString(weekStartsOn));
if(staticDisplay != null)
@@ -334,17 +330,17 @@
Date date = null;
//formats used to parse the date
List<DateFormat> formats = new ArrayList<DateFormat>();
- if (this.displayFormat != null) {
- SimpleDateFormat displayFormat = new SimpleDateFormat(
- (String) getParameters().get("displayFormat"));
- formats.add(displayFormat);
- }
formats.add(RFC3339_FORMAT);
formats.add(SimpleDateFormat.getTimeInstance(DateFormat.SHORT));
formats.add(SimpleDateFormat.getDateInstance(DateFormat.SHORT));
formats.add(SimpleDateFormat.getDateInstance(DateFormat.MEDIUM));
formats.add(SimpleDateFormat.getDateInstance(DateFormat.FULL));
formats.add(SimpleDateFormat.getDateInstance(DateFormat.LONG));
+ if (this.displayFormat != null) {
+ SimpleDateFormat displayFormat = new SimpleDateFormat(
+ (String) getParameters().get("displayFormat"));
+ formats.add(displayFormat);
+ }
for (DateFormat format : formats) {
try {
Modified: struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest.java?view=diff&rev=530613&r1=530612&r2=530613
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest.java (original)
+++ struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest.java Thu Apr 19 19:29:31 2007
@@ -20,9 +20,22 @@
*/
package org.apache.struts2.dojo.views.jsp.ui;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.servlet.jsp.JspException;
+
+import org.apache.struts2.dojo.TestAction;
+import org.apache.struts2.dojo.components.DateTimePicker;
+
/**
*/
public class DateTimePickerTagTest extends AbstractUITagTest {
+ final private static SimpleDateFormat RFC3339_FORMAT = new SimpleDateFormat(
+ "yyyy-MM-dd'T'HH:mm:ss");
+
public void testSimple() throws Exception {
DateTimePickerTag tag = new DateTimePickerTag();
tag.setPageContext(pageContext);
@@ -32,8 +45,8 @@
tag.setAdjustWeeks("true");
tag.setDayWidth("b");
tag.setDisplayWeeks("true");
- tag.setEndDate("d");
- tag.setStartDate("e");
+ tag.setEndDate("01-01-2008");
+ tag.setStartDate("01-01-2007");
tag.setStaticDisplay("false");
tag.setWeekStartsOn("g");
tag.setName("h");
@@ -44,7 +57,109 @@
tag.doStartTag();
tag.doEndTag();
- verify(DateTimePickerTagTest.class.getResource("DateTimePickerTagTest-1.txt"));
+ verify(DateTimePickerTagTest.class
+ .getResource("DateTimePickerTagTest-1.txt"));
+ }
+
+ public void testDateParsing() throws Exception {
+ DateTimePickerTag tag = new DateTimePickerTag();
+ tag.setPageContext(pageContext);
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.YEAR, 2007);
+ calendar.set(Calendar.MONTH, Calendar.JANUARY);
+ calendar.set(Calendar.DAY_OF_MONTH, 1);
+ calendar.set(Calendar.HOUR_OF_DAY, 10);
+ calendar.set(Calendar.MINUTE, 30);
+ calendar.set(Calendar.SECOND, 10);
+ calendar.set(Calendar.MILLISECOND, 20);
+ calendar.set(Calendar.AM_PM, Calendar.AM);
+ Date date = calendar.getTime();
+
+ //test 'nameValue'
+ stack.set("date", "01-01-2007");
+ tag.setValue("%{date}");
+ tag.setDisplayFormat("MM-dd-yyyy");
+ assertDateValue("nameValue", tag, date, true, false);
+ assertDateProperty("nameValue", tag, date);
+
+ tag.setDisplayFormat(null);
+
+ //test 'startDate'
+ tag.setStartDate("%{date}");
+ assertDateProperty("startDate", tag, date);
+
+ //test 'endDate'
+ tag.setEndDate("%{date}");
+ assertDateProperty("endDate", tag, date);
+
+ }
+
+ private void assertDateProperty(String property, DateTimePickerTag tag, Date date) throws Exception {
+ DateFormat shortTimeFormat = DateFormat.getTimeInstance(DateFormat.SHORT);
+ DateFormat shortFormat = DateFormat.getDateInstance(DateFormat.SHORT);
+ DateFormat mediumFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
+ DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG);
+ DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL);
+
+ // try short format on 'value'
+ stack.set("date", shortFormat.format(date));
+ assertDateValue(property, tag, date, true, false);
+
+ //try medium format on 'value'
+ stack.set("date", mediumFormat.format(date));
+ assertDateValue(property, tag, date, true, false);
+
+ //try long format on 'value'
+ stack.set("date", longFormat.format(date));
+ assertDateValue(property, tag, date, true, false);
+
+ //try long format on 'value'
+ stack.set("date", fullFormat.format(date));
+ assertDateValue(property, tag, date, true, false);
+
+ //try RFC 3339 format on 'value'
+ stack.set("date", RFC3339_FORMAT.format(date));
+ assertDateValue(property, tag, date, true, false);
+
+ //try short time format on 'value'
+ stack.set("date", shortTimeFormat.format(date));
+ assertDateValue(property, tag, date, false, true);
+ }
+
+ private void assertDateValue(String property, DateTimePickerTag tag, Date toCompareDate,
+ boolean compareDate, boolean compareTime) throws Exception {
+ tag.doStartTag();
+ DateTimePicker picker = (DateTimePicker) tag.getComponent();
+ picker.end(pageContext.getOut(), null);
+
+ String dateStr = (String) tag.getComponent().getParameters()
+ .get(property);
+ Date date = RFC3339_FORMAT.parse(dateStr);
+ assertNotNull(date);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+
+ Calendar toCompareCalendar = Calendar.getInstance();
+ toCompareCalendar.setTime(toCompareDate);
+
+ if (compareDate) {
+ assertEquals(toCompareCalendar.get(Calendar.YEAR), calendar
+ .get(Calendar.YEAR));
+ assertEquals(toCompareCalendar.get(Calendar.MONTH), calendar
+ .get(Calendar.MONTH));
+ assertEquals(toCompareCalendar.get(Calendar.DAY_OF_MONTH), calendar
+ .get(Calendar.DAY_OF_MONTH));
+ }
+ if (compareTime) {
+ assertEquals(toCompareCalendar.get(Calendar.HOUR_OF_DAY), calendar
+ .get(Calendar.HOUR_OF_DAY));
+ assertEquals(toCompareCalendar.get(Calendar.MINUTE), calendar
+ .get(Calendar.MINUTE));
+ assertEquals(toCompareCalendar.get(Calendar.AM_PM), calendar
+ .get(Calendar.AM_PM));
+ }
+
}
}
Modified: struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest-1.txt
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest-1.txt?view=diff&rev=530613&r1=530612&r2=530613
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest-1.txt (original)
+++ struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/DateTimePickerTagTest-1.txt Thu Apr 19 19:29:31 2007
@@ -6,8 +6,8 @@
inputName="h"
displayWeeks="true"
adjustWeeks="true"
- startDate="e"
- endDate="d"
+ startDate="01-01-2007"
+ endDate="01-01-2008"
weekStartsOn="g"
staticDisplay="false"
templateCssPath="j"