|
|
|
梶田先生のパッチだけでは動かなかったので,調べて修正対応しました.
日本語OS(Solaris10)で動かすと,引数でやってくるdisplayDateFormatが yyyy年MM月dd日(a)hh時mm分ss秒 になってしまっているようで, その後のparseに失敗するようでした。 ので...静的にフォーマットを書いてしまいました。 少なくともこの対応で日付が保持され,Oracleに正しく登録されるのを確認できました。 # displayDateFormatがメソッドの引数である意味はなくなってしまっています。 本来はdisplayDateFormatに値セットする箇所を探してそこで対応すべきかとは思います。 (修正箇所) sam/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/author/AssessmentSettingsBean.java: public void setDisplayFormat(String displayDateFormat) { // additiional fix by Y.Ohta&Y.Tajima. 2009/11/26 displayDateFormat = "MM/dd/yyyy hh:mm:ss a"; //System.out.printf("displayDateFormat: %s\n", displayDateFormat); this.displayDateFormat = displayDateFormat; //this.displayFormat = new SimpleDateFormat(displayDateFormat); // For the time being, the locale is fixed to "en" by Shoji Kajita 2009/08/16 Locale defaultLocale = new Locale("en"); this.displayFormat = new SimpleDateFormat(displayDateFormat, defaultLocale); } 一度出版(publish)したテストに関して配信日時を再設定しようとすると,同じ問題が起こることを確認。
PublishedAssessmentSettingsBean.java の setDisplayFormat メソッドも同じように修正が必要。 修正後のメソッド: public void setDisplayFormat(String displayDateFormat) { displayDateFormat = "MM/dd/yyyy hh:mm:ss a"; this.displayDateFormat = displayDateFormat; //this.displayFormat = new SimpleDateFormat(displayDateFormat); Locale defaultLocale = new Locale("en"); this.displayFormat = new SimpleDateFormat(displayDateFormat, defaultLocale); } # また, java.util.Localeも同様にimportしておくこと. The delivery date of test in Samigo is not saved in database so that the date must be re-set again.
この問題は、既に本家JIRAへバグ報告が行われており、現時点では未解決です。
https://jira.sakaiproject.org/browse/SAM-1046 |
||||||||||||||||||||||||||||||||||||||||||||
以下のパッチを当てる必要があります.
*** sam/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/author/AssessmentSettingsBean.java.orig Wed May 13 17:03:02 2009
--- sam/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/author/AssessmentSettingsBean.java Mon Aug 17 07:54:03 2009
***************
*** 33,38 ****
--- 33,39 ----
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+ import java.util.Locale;
import java.util.Set;
import java.util.TreeMap;
***************
*** 1482,1488 ****
public void setDisplayFormat(String displayDateFormat)
{
this.displayDateFormat = displayDateFormat;
! this.displayFormat = new SimpleDateFormat(displayDateFormat);
}
public boolean getIsValidStartDate()
--- 1483,1492 ----
public void setDisplayFormat(String displayDateFormat)
{
this.displayDateFormat = displayDateFormat;
! // this.displayFormat = new SimpleDateFormat(displayDateFormat);
! // For the time being, the locale is fixed to "en" by Shoji Kajita 2009/08/16
! Locale defaultLocale = new Locale("en");
! this.displayFormat = new SimpleDateFormat(displayDateFormat, defaultLocale);
}
public boolean getIsValidStartDate()