Revision dc12a332
Added by Katja Luther over 6 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DateConverter.java | ||
---|---|---|
1 |
package eu.etaxonomy.taxeditor.model; |
|
2 |
|
|
3 |
import java.time.ZoneId; |
|
4 |
import java.time.ZonedDateTime; |
|
5 |
|
|
6 |
import org.joda.time.DateTime; |
|
7 |
import org.joda.time.DateTimeZone; |
|
8 |
|
|
9 |
public class DateConverter { |
|
10 |
|
|
11 |
public static ZonedDateTime convertJoda2ZonedDateTime(DateTime dateTime){ |
|
12 |
ZonedDateTime result = null; |
|
13 |
result = ZonedDateTime.of(dateTime.getYear(), dateTime.getMonthOfYear(), dateTime.getDayOfMonth(), dateTime.getHourOfDay(), dateTime.getMinuteOfHour(), 0, 0, convertJodaTimeZone2ZoneId(dateTime.getZone())); |
|
14 |
|
|
15 |
|
|
16 |
return result; |
|
17 |
} |
|
18 |
|
|
19 |
public static DateTime convertZonedDateTime2Joda(ZonedDateTime dateTime){ |
|
20 |
DateTime result = null; |
|
21 |
result = new DateTime(dateTime.getYear(), dateTime.getMonthValue(), dateTime.getDayOfMonth(), dateTime.getHour(), dateTime.getMinute(), 0, convertZoneId2JodaTimeZone(dateTime.getZone())); |
|
22 |
|
|
23 |
|
|
24 |
return result; |
|
25 |
} |
|
26 |
|
|
27 |
public static ZoneId convertJodaTimeZone2ZoneId(DateTimeZone jodaZone){ |
|
28 |
ZoneId zoneId = null; |
|
29 |
|
|
30 |
zoneId = ZoneId.of(jodaZone.getID()); |
|
31 |
|
|
32 |
return zoneId; |
|
33 |
} |
|
34 |
|
|
35 |
public static DateTimeZone convertZoneId2JodaTimeZone(ZoneId zoneid){ |
|
36 |
DateTimeZone jodaZone = null; |
|
37 |
|
|
38 |
jodaZone = DateTimeZone.forID(zoneid.getId()); |
|
39 |
|
|
40 |
return jodaZone; |
|
41 |
} |
|
42 |
|
|
43 |
} |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java | ||
---|---|---|
9 | 9 |
package eu.etaxonomy.taxeditor.ui.mvc.element; |
10 | 10 |
|
11 | 11 |
|
12 |
import java.time.ZoneId; |
|
13 |
import java.time.ZonedDateTime; |
|
14 |
import java.time.format.DateTimeFormatter; |
|
15 |
|
|
16 |
import org.apache.lucene.analysis.shingle.ShingleMatrixFilter.OneDimensionalNonWeightedTokenSettingsCodec; |
|
12 | 17 |
import org.eclipse.swt.SWT; |
13 | 18 |
import org.eclipse.swt.events.DisposeEvent; |
14 | 19 |
import org.eclipse.swt.events.DisposeListener; |
... | ... | |
41 | 46 |
public class DateElement extends AbstractCdmComposite<DateElementController> { |
42 | 47 |
|
43 | 48 |
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); |
44 |
private org.joda.time.DateTime initialDateTime;
|
|
49 |
private ZonedDateTime initialDateTime;
|
|
45 | 50 |
private Text textDate; |
46 | 51 |
private final Button openDateDialog; |
47 | 52 |
|
... | ... | |
53 | 58 |
* @param parent |
54 | 59 |
* @param style |
55 | 60 |
*/ |
56 |
public DateElement(Composite parent, org.joda.time.DateTime initialDateTime, String label, int style, boolean editableText) {
|
|
61 |
public DateElement(Composite parent, ZonedDateTime initDateTime, String label, int style, boolean editableText) {
|
|
57 | 62 |
super(parent, style); |
58 |
this.initialDateTime = initialDateTime; |
|
63 |
this.initialDateTime = initDateTime; |
|
64 |
|
|
65 |
|
|
59 | 66 |
addDisposeListener(new DisposeListener() { |
60 | 67 |
@Override |
61 | 68 |
public void widgetDisposed(DisposeEvent e) { |
... | ... | |
109 | 116 |
|
110 | 117 |
final DateTime time = new DateTime (dialog, SWT.TIME | SWT.SHORT); |
111 | 118 |
if (initialDateTime != null){ |
112 |
calendar.setDate(initialDateTime.getYear(), initialDateTime.getMonthOfYear() - 1, initialDateTime.getDayOfMonth());
|
|
113 |
time.setHours(initialDateTime.getHourOfDay());
|
|
114 |
time.setMinutes(initialDateTime.getMinuteOfHour());
|
|
115 |
time.setSeconds(initialDateTime.getSecondOfMinute()); |
|
119 |
calendar.setDate(initialDateTime.getYear(), initialDateTime.getMonthValue()-1, initialDateTime.getDayOfMonth());
|
|
120 |
time.setHours(initialDateTime.getHour()); |
|
121 |
time.setMinutes(initialDateTime.getMinute()); |
|
122 |
// time.setSeconds(initialDateTime.getSecondOfMinute());
|
|
116 | 123 |
} |
117 | 124 |
|
118 | 125 |
|
... | ... | |
124 | 131 |
ok.addSelectionListener (new SelectionAdapter() { |
125 | 132 |
@Override |
126 | 133 |
public void widgetSelected(SelectionEvent e){ |
127 |
setData(makeJodaFromSWT(calendar, time));
|
|
134 |
setData(makeZonedTimeFromSWT(calendar, time));
|
|
128 | 135 |
dialog.close (); |
129 | 136 |
} |
130 | 137 |
}); |
... | ... | |
149 | 156 |
|
150 | 157 |
|
151 | 158 |
|
152 |
public static org.joda.time.DateTime makeJodaFromSWT(
|
|
159 |
public static ZonedDateTime makeZonedTimeFromSWT(
|
|
153 | 160 |
org.eclipse.swt.widgets.DateTime widget, |
154 | 161 |
org.eclipse.swt.widgets.DateTime dateTime) { |
155 | 162 |
//the first month of the year is 0 |
156 |
return new org.joda.time.DateTime(widget.getYear(), |
|
157 |
widget.getMonth() +1, |
|
158 |
widget.getDay(), |
|
159 |
dateTime.getHours(), |
|
160 |
dateTime.getMinutes(), |
|
161 |
dateTime.getSeconds()); |
|
163 |
return ZonedDateTime.of(widget.getYear(), |
|
164 |
widget.getMonth()+1, |
|
165 |
widget.getDay(), |
|
166 |
dateTime.getHours(), |
|
167 |
dateTime.getMinutes(), |
|
168 |
0, |
|
169 |
0, |
|
170 |
ZoneId.of("UTC")); |
|
162 | 171 |
} |
163 | 172 |
|
164 | 173 |
public static void updateSWTwithJoda( |
165 | 174 |
org.eclipse.swt.widgets.DateTime widget, |
166 |
org.joda.time.DateTime dateTime) {
|
|
175 |
ZonedDateTime dateTime) {
|
|
167 | 176 |
widget.setYear(dateTime.getYear()); |
168 |
widget.setMonth(dateTime.getMonthOfYear() - 1);
|
|
177 |
widget.setMonth(dateTime.getMonthValue() -1);
|
|
169 | 178 |
widget.setDay(dateTime.getDayOfMonth()); |
170 |
widget.setHours(dateTime.getHourOfDay());
|
|
171 |
widget.setMinutes(dateTime.getMinuteOfHour());
|
|
172 |
widget.setSeconds(dateTime.getSecondOfMinute());
|
|
179 |
widget.setHours(dateTime.getHour()); |
|
180 |
widget.setMinutes(dateTime.getMinute()); |
|
181 |
widget.setSeconds(dateTime.getSecond()); |
|
173 | 182 |
} |
174 | 183 |
|
175 |
public void setData (org.joda.time.DateTime data) {
|
|
184 |
public void setData (ZonedDateTime data) {
|
|
176 | 185 |
this.initialDateTime = data; |
177 | 186 |
this.controller.setDateTime(data); |
178 |
this.textDate.setText(initialDateTime.toString(pattern));
|
|
187 |
this.textDate.setText(initialDateTime.format(DateTimeFormatter.ofPattern(pattern)));
|
|
179 | 188 |
} |
180 | 189 |
|
181 | 190 |
} |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java | ||
---|---|---|
8 | 8 |
*/ |
9 | 9 |
package eu.etaxonomy.taxeditor.ui.mvc.element; |
10 | 10 |
|
11 |
import java.time.ZonedDateTime; |
|
12 |
import java.time.format.DateTimeFormatter; |
|
13 |
|
|
11 | 14 |
import org.eclipse.swt.events.ModifyEvent; |
12 | 15 |
import org.eclipse.swt.events.ModifyListener; |
13 | 16 |
import org.eclipse.swt.widgets.Text; |
... | ... | |
28 | 31 |
public class DateElementController extends AbstractCdmFormElement implements IEnableableFormElement, CdmCompositeController, ModifyListener{ |
29 | 32 |
|
30 | 33 |
private final Text textDate; |
31 |
private DateTime dateTime; |
|
34 |
private ZonedDateTime dateTime;
|
|
32 | 35 |
|
33 | 36 |
/** |
34 | 37 |
* @param dateTimeElement |
... | ... | |
38 | 41 |
* @param none |
39 | 42 |
*/ |
40 | 43 |
public DateElementController(DateElement dateTimeElement, CdmFormFactory formFactory, |
41 |
ICdmFormElement parentElement, DateTime initialDateTime) { |
|
44 |
ICdmFormElement parentElement, ZonedDateTime initialDateTime) {
|
|
42 | 45 |
super(formFactory, parentElement); |
43 | 46 |
this.textDate = dateTimeElement.getTextDate(); |
44 |
if (initialDateTime != null){ |
|
45 |
this.textDate.setText(initialDateTime.toString("yyyy-MM-dd HH:mm"));
|
|
46 |
} |
|
47 |
// this.textDate.setText(initialDateTime!=null?initialDateTime.toString("yyyy-MM-dd HH:mm"):null);
|
|
47 |
// if (initialDateTime != null){
|
|
48 |
// this.textDate.setText(initialDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
|
|
49 |
// }
|
|
50 |
this.textDate.setText(initialDateTime!=null?initialDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")):"");
|
|
48 | 51 |
addControl(textDate); |
49 | 52 |
dateTime = initialDateTime; |
50 | 53 |
textDate.addModifyListener(this); |
... | ... | |
71 | 74 |
} |
72 | 75 |
} |
73 | 76 |
|
74 |
public DateTime getDateTime(){ |
|
77 |
public ZonedDateTime getDateTime(){
|
|
75 | 78 |
return dateTime; |
76 | 79 |
} |
77 |
public void setDateTime(DateTime date){ |
|
80 |
public void setDateTime(ZonedDateTime date){
|
|
78 | 81 |
dateTime = date; |
79 | 82 |
} |
80 | 83 |
|
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java | ||
---|---|---|
3 | 3 |
*/ |
4 | 4 |
package eu.etaxonomy.taxeditor.ui.section.media; |
5 | 5 |
|
6 |
import java.time.ZonedDateTime; |
|
6 | 7 |
import java.util.Map; |
7 | 8 |
|
8 | 9 |
import org.eclipse.jface.action.IAction; |
... | ... | |
11 | 12 |
import org.eclipse.swt.events.SelectionListener; |
12 | 13 |
|
13 | 14 |
import org.eclipse.swt.widgets.Button; |
15 |
import org.joda.time.DateTime; |
|
16 |
|
|
14 | 17 |
import eu.etaxonomy.cdm.common.CdmUtils; |
15 | 18 |
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; |
16 | 19 |
import eu.etaxonomy.cdm.model.agent.AgentBase; |
... | ... | |
18 | 21 |
import eu.etaxonomy.cdm.model.common.LanguageString; |
19 | 22 |
import eu.etaxonomy.cdm.model.media.Media; |
20 | 23 |
import eu.etaxonomy.taxeditor.model.AbstractUtility; |
24 |
import eu.etaxonomy.taxeditor.model.DateConverter; |
|
21 | 25 |
import eu.etaxonomy.taxeditor.model.ImageResources; |
22 | 26 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
23 | 27 |
import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog; |
... | ... | |
74 | 78 |
text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style); |
75 | 79 |
selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style); |
76 | 80 |
addElement(selection_artist); |
77 |
mediaCreated = formFactory.createDateElement(element, "Media Created", getEntity().getMediaCreated(), style, false); |
|
81 |
ZonedDateTime mediaCreatedValue = null; |
|
82 |
if (getEntity().getMediaCreated() != null){ |
|
83 |
mediaCreatedValue = DateConverter.convertJoda2ZonedDateTime(getEntity().getMediaCreated()); |
|
84 |
} |
|
85 |
mediaCreated = formFactory.createDateElement(element, "Media Created", mediaCreatedValue, style, false); |
|
78 | 86 |
addElement(mediaCreated.getController()); |
79 | 87 |
text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style); |
80 | 88 |
|
... | ... | |
139 | 147 |
((AbstractCdmDetailSection<?>) getParentElement()).updateTitle(); |
140 | 148 |
} |
141 | 149 |
} else if (eventSource == mediaCreated.getController()){ |
142 |
org.joda.time.DateTime date = mediaCreated.getController().getDateTime();
|
|
150 |
DateTime date = DateConverter.convertZonedDateTime2Joda(mediaCreated.getController().getDateTime());
|
|
143 | 151 |
getEntity().setMediaCreated(date); |
144 | 152 |
} |
145 | 153 |
} |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaQualityDetailElement.java | ||
---|---|---|
14 | 14 |
import eu.etaxonomy.cdm.model.common.TermType; |
15 | 15 |
import eu.etaxonomy.cdm.model.molecular.DnaQuality; |
16 | 16 |
import eu.etaxonomy.cdm.model.molecular.DnaSample; |
17 |
import eu.etaxonomy.taxeditor.model.DateConverter; |
|
17 | 18 |
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement; |
18 | 19 |
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; |
19 | 20 |
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; |
... | ... | |
68 | 69 |
numberRatioOfAbsorbance260_230 = formFactory.createNumberTextWithLabelElement(formElement, "Ratio of absorbance 260-230", ratioOfAbsorbance260_230, style); |
69 | 70 |
numberConcentration = formFactory.createNumberTextWithLabelElement(formElement, "Concentration", concentration, style); |
70 | 71 |
comboQualityTerm = formFactory.createDefinedTermComboElement(TermType.DnaQualityType, formElement, "Quality Term", qualityTerm, style); |
71 |
dateQualityCheck = formFactory.createDateElement(formElement, "Quality Check", dnaQuality.getQualityCheckDate(), style, false);
|
|
72 |
dateQualityCheck = formFactory.createDateElement(formElement, "Quality Check", DateConverter.convertJoda2ZonedDateTime(dnaQuality.getQualityCheckDate()), style, false);
|
|
72 | 73 |
} |
73 | 74 |
|
74 | 75 |
/* |
... | ... | |
97 | 98 |
dnaQuality.setQualityTerm(comboQualityTerm.getSelection()); |
98 | 99 |
} |
99 | 100 |
else if(eventSource==dateQualityCheck.getController()){ |
100 |
DateTime dateTime = dateQualityCheck.getController().getDateTime(); |
|
101 |
DateTime dateTime = DateConverter.convertZonedDateTime2Joda(dateQualityCheck.getController().getDateTime()); |
|
102 |
|
|
101 | 103 |
dnaQuality.setQualityCheckDate(dateTime); |
102 | 104 |
} |
103 | 105 |
} |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java | ||
---|---|---|
22 | 22 |
import eu.etaxonomy.cdm.model.occurrence.Collection; |
23 | 23 |
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen; |
24 | 24 |
import eu.etaxonomy.cdm.model.reference.Reference; |
25 |
import eu.etaxonomy.taxeditor.model.DateConverter; |
|
25 | 26 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
26 | 27 |
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement; |
27 | 28 |
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; |
... | ... | |
73 | 74 |
comboKindOfUnit = formFactory.createDefinedTermComboElement(mediaSpecimenVocabulary, formElement, "Kind of Media", entity.getKindOfUnit(), style); |
74 | 75 |
textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Motif", media.getTitle(), style); |
75 | 76 |
selectionArtist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Prepared by", media.getArtist(), EntitySelectionElement.ALL, style); |
76 |
date = formFactory.createDateElement(formElement, "Preparation Date", entity.getMediaSpecimen().getMediaCreated(), style, true);
|
|
77 |
date = formFactory.createDateElement(formElement, "Preparation Date", DateConverter.convertJoda2ZonedDateTime(entity.getMediaSpecimen().getMediaCreated()), style, true);
|
|
77 | 78 |
textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.getDefaultLanguage()), style); |
78 | 79 |
selection_collection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style); |
79 | 80 |
text_accessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style); |
... | ... | |
108 | 109 |
media.putTitle(textTitleLanguageString.getLanguageString()); |
109 | 110 |
} |
110 | 111 |
else if(eventSource==date.getController()){ |
111 |
DateTime dateTime = date.getController().getDateTime();
|
|
112 |
DateTime dateTime = DateConverter.convertZonedDateTime2Joda(date.getController().getDateTime());
|
|
112 | 113 |
media.setMediaCreated(dateTime); |
113 | 114 |
} |
114 | 115 |
else if(eventSource==selectionArtist){ |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java | ||
---|---|---|
24 | 24 |
import eu.etaxonomy.cdm.model.reference.Reference; |
25 | 25 |
import eu.etaxonomy.cdm.model.reference.ReferenceFactory; |
26 | 26 |
import eu.etaxonomy.cdm.model.reference.ReferenceType; |
27 |
import eu.etaxonomy.taxeditor.model.DateConverter; |
|
27 | 28 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
28 | 29 |
import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement; |
29 | 30 |
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; |
... | ... | |
186 | 187 |
} |
187 | 188 |
|
188 | 189 |
private void createWebPageControls(ReferenceDetailElement referenceDetailElement, Reference reference, int style) { |
189 |
text_accessed = formFactory.createDateElement(referenceDetailElement, "Accessed", reference.getAccessed(), style, false);
|
|
190 |
text_accessed = formFactory.createDateElement(referenceDetailElement, "Accessed", DateConverter.convertJoda2ZonedDateTime(reference.getAccessed()), style, false);
|
|
190 | 191 |
|
191 | 192 |
} |
192 | 193 |
|
... | ... | |
480 | 481 |
} else if (eventSource == text_volume) { |
481 | 482 |
getEntity().setVolume(text_volume.getText()); |
482 | 483 |
}else if (eventSource == text_accessed.getController()) { |
483 |
getEntity().setAccessed(text_accessed.getController().getDateTime());
|
|
484 |
getEntity().setAccessed(DateConverter.convertZonedDateTime2Joda(text_accessed.getController().getDateTime()));
|
|
484 | 485 |
} |
485 | 486 |
|
486 | 487 |
if (eventSource != text_title && eventSource != text_abbrevTitle) { |
Also available in: Unified diff
ref #6860: use timezone offset 0 and change joda DateTime to ZonedDateTime, until in lib DateTime is still joda a converter is used