annotate src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/Calendar.java @ 216:93d33f138c9e default tip

update medeniyet image server URL.
author casties
date Wed, 26 Jan 2022 16:39:32 +0100
parents 6d82e03fb2ee
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
jurzua
parents:
diff changeset
1 package de.mpiwg.itgroup.ismi.util.guiComponents;
jurzua
parents:
diff changeset
2
jurzua
parents:
diff changeset
3 import java.io.Serializable;
jurzua
parents:
diff changeset
4
jurzua
parents:
diff changeset
5 import javax.faces.event.ActionEvent;
jurzua
parents:
diff changeset
6
jurzua
parents:
diff changeset
7 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
8 import org.joda.time.DateTime;
jurzua
parents:
diff changeset
9 import org.joda.time.chrono.GregorianChronology;
jurzua
parents:
diff changeset
10 import org.joda.time.chrono.IslamicChronology;
jurzua
parents:
diff changeset
11 import org.joda.time.chrono.JulianChronology;
jurzua
parents:
diff changeset
12 import org.json.JSONException;
jurzua
parents:
diff changeset
13 import org.json.JSONObject;
jurzua
parents:
diff changeset
14
jurzua
parents:
diff changeset
15 import de.mpiwg.itgroup.ismi.json.utils.JSONUtils;
jurzua
parents:
diff changeset
16
jurzua
parents:
diff changeset
17 public class Calendar extends AbstractCalendar implements Serializable {
jurzua
parents:
diff changeset
18 private static final long serialVersionUID = 1L;
jurzua
parents:
diff changeset
19
jurzua
parents:
diff changeset
20 private String inputForm;
jurzua
parents:
diff changeset
21 private String calendarType;
jurzua
parents:
diff changeset
22
jurzua
parents:
diff changeset
23 private Date fromGregorian = new Date();
jurzua
parents:
diff changeset
24 private Date untilGregorian = new Date();
jurzua
parents:
diff changeset
25 private String additionalInfo;
jurzua
parents:
diff changeset
26
jurzua
parents:
diff changeset
27 private Integer currentYear;
jurzua
parents:
diff changeset
28 private Date currentFrom = new Date();
jurzua
parents:
diff changeset
29 private Date currentUntil = new Date();
jurzua
parents:
diff changeset
30
jurzua
parents:
diff changeset
31 private String dateInText;
jurzua
parents:
diff changeset
32 private String state;
jurzua
parents:
diff changeset
33
jurzua
parents:
diff changeset
34 public Calendar(){
jurzua
parents:
diff changeset
35 this.calendarType = TYPE_GREGORIAN;
jurzua
parents:
diff changeset
36 this.inputForm = INPUT_FORM_YEAR;
jurzua
parents:
diff changeset
37 this.state = STATE_NOT_CHECKED;
jurzua
parents:
diff changeset
38 }
jurzua
parents:
diff changeset
39
jurzua
parents:
diff changeset
40 public Calendar(String jsonString){
jurzua
parents:
diff changeset
41 if(StringUtils.isNotEmpty(jsonString)){
jurzua
parents:
diff changeset
42 try {
jurzua
parents:
diff changeset
43 JSONObject json = new JSONObject(jsonString);
jurzua
parents:
diff changeset
44 this.state = json.getString(STATE);
jurzua
parents:
diff changeset
45
jurzua
parents:
diff changeset
46 if(StringUtils.isNotEmpty(state)){
jurzua
parents:
diff changeset
47 if(state.equals(STATE_KNOWN)){
jurzua
parents:
diff changeset
48
jurzua
parents:
diff changeset
49 this.additionalInfo = json.getString(ADD_INF);
jurzua
parents:
diff changeset
50 this.calendarType = json.getString(CALENDAR_TYPE);
jurzua
parents:
diff changeset
51 this.inputForm = json.getString(INPUT_FORM);
jurzua
parents:
diff changeset
52
jurzua
parents:
diff changeset
53 if(inputForm.equals(INPUT_FORM_YEAR)){
jurzua
parents:
diff changeset
54 this.fromGregorian = new Date(json.getJSONObject(FROM));
jurzua
parents:
diff changeset
55 this.untilGregorian = new Date(json.getJSONObject(UNTIL));
jurzua
parents:
diff changeset
56 this.currentYear = json.getInt(YEAR);
jurzua
parents:
diff changeset
57 }else if(inputForm.equals(INPUT_FORM_RANGE)){
jurzua
parents:
diff changeset
58 this.fromGregorian = new Date(json.getJSONObject(FROM));
jurzua
parents:
diff changeset
59 this.untilGregorian = new Date(json.getJSONObject(UNTIL));
jurzua
parents:
diff changeset
60 if(calendarType.equals(TYPE_GREGORIAN)){
jurzua
parents:
diff changeset
61 this.currentFrom = new Date(json.getJSONObject(FROM));
jurzua
parents:
diff changeset
62 this.currentUntil = new Date(json.getJSONObject(UNTIL));
jurzua
parents:
diff changeset
63 }else if(calendarType.equals(TYPE_ISLAMIC)){
jurzua
parents:
diff changeset
64 this.currentFrom = new Date(this.fromGregorian.getIslamicDateTime());
jurzua
parents:
diff changeset
65 this.currentUntil = new Date(this.untilGregorian.getIslamicDateTime());
jurzua
parents:
diff changeset
66 }else if(calendarType.equals(TYPE_JULIAN)){
jurzua
parents:
diff changeset
67 this.currentFrom = new Date(this.fromGregorian.getJulianDateTime());
jurzua
parents:
diff changeset
68 this.currentUntil = new Date(this.untilGregorian.getJulianDateTime());
jurzua
parents:
diff changeset
69 }
jurzua
parents:
diff changeset
70 }else if(inputForm.equals(INPUT_FORM_DATE)){
jurzua
parents:
diff changeset
71 this.fromGregorian = new Date(json.getJSONObject(DATE));
jurzua
parents:
diff changeset
72 if(calendarType.equals(TYPE_GREGORIAN)){
jurzua
parents:
diff changeset
73 this.currentFrom = new Date(json.getJSONObject(DATE));
jurzua
parents:
diff changeset
74 }else if(calendarType.equals(TYPE_ISLAMIC)){
jurzua
parents:
diff changeset
75 this.currentFrom = new Date(this.fromGregorian.getIslamicDateTime());
jurzua
parents:
diff changeset
76 }else if(calendarType.equals(TYPE_JULIAN)){
jurzua
parents:
diff changeset
77 this.currentFrom = new Date(this.fromGregorian.getJulianDateTime());
jurzua
parents:
diff changeset
78 }
jurzua
parents:
diff changeset
79 }
jurzua
parents:
diff changeset
80
jurzua
parents:
diff changeset
81 if(json.has("dayOfWeekFrom")){
jurzua
parents:
diff changeset
82 this.currentFrom.setDayOfWeek(json.getInt("dayOfWeekFrom"));
jurzua
parents:
diff changeset
83 }
jurzua
parents:
diff changeset
84 if(json.has("dayOfWeekUntil")){
jurzua
parents:
diff changeset
85 this.currentUntil.setDayOfWeek(json.getInt("dayOfWeekUntil"));
jurzua
parents:
diff changeset
86 }
jurzua
parents:
diff changeset
87 if(json.has("dayOfWeek")){
jurzua
parents:
diff changeset
88 this.currentFrom.setDayOfWeek(json.getInt("dayOfWeek"));
jurzua
parents:
diff changeset
89 }
jurzua
parents:
diff changeset
90
jurzua
parents:
diff changeset
91 }else if(state.equals(STATE_NOT_CHECKED) || state.equals(STATE_UNKNOWN)){
jurzua
parents:
diff changeset
92 if(json.has(DATE_IN_TEXT)){
jurzua
parents:
diff changeset
93 this.dateInText = json.getString(DATE_IN_TEXT);
jurzua
parents:
diff changeset
94 }
jurzua
parents:
diff changeset
95 this.calendarType = TYPE_GREGORIAN;
jurzua
parents:
diff changeset
96 this.inputForm = INPUT_FORM_YEAR;
jurzua
parents:
diff changeset
97 }
jurzua
parents:
diff changeset
98 }
jurzua
parents:
diff changeset
99
jurzua
parents:
diff changeset
100 } catch (Exception e) {
jurzua
parents:
diff changeset
101 e.printStackTrace();
jurzua
parents:
diff changeset
102 this.state = STATE_NOT_CHECKED;
jurzua
parents:
diff changeset
103 this.calendarType = TYPE_GREGORIAN;
jurzua
parents:
diff changeset
104 this.inputForm = INPUT_FORM_YEAR;
jurzua
parents:
diff changeset
105 }
jurzua
parents:
diff changeset
106 }else{
jurzua
parents:
diff changeset
107 this.calendarType = TYPE_GREGORIAN;
jurzua
parents:
diff changeset
108 this.inputForm = INPUT_FORM_YEAR;
jurzua
parents:
diff changeset
109 this.state = STATE_NOT_CHECKED;
jurzua
parents:
diff changeset
110 }
jurzua
parents:
diff changeset
111 }
jurzua
parents:
diff changeset
112
jurzua
parents:
diff changeset
113 public void update(){
jurzua
parents:
diff changeset
114
jurzua
parents:
diff changeset
115 if(inputForm.equals(INPUT_FORM_RANGE)){
jurzua
parents:
diff changeset
116 if(isUntilOlderThanFrom()){
jurzua
parents:
diff changeset
117 if(calendarType.equals(TYPE_GREGORIAN)){
jurzua
parents:
diff changeset
118 this.inputGregorianRange();
jurzua
parents:
diff changeset
119 }else if(calendarType.equals(TYPE_ISLAMIC)){
jurzua
parents:
diff changeset
120 this.inputIslamicRange();
jurzua
parents:
diff changeset
121 }else if(calendarType.equals(TYPE_JULIAN)){
jurzua
parents:
diff changeset
122 this.inputJulianRange();
jurzua
parents:
diff changeset
123 }
jurzua
parents:
diff changeset
124 }else{
jurzua
parents:
diff changeset
125 addGeneralMsg("The until date must be older than the from date.");
jurzua
parents:
diff changeset
126 }
jurzua
parents:
diff changeset
127
jurzua
parents:
diff changeset
128 }else if(inputForm.equals(INPUT_FORM_YEAR)){
jurzua
parents:
diff changeset
129 if(calendarType.equals(TYPE_GREGORIAN)){
jurzua
parents:
diff changeset
130 this.inputGregorianYear();
jurzua
parents:
diff changeset
131 }else if(calendarType.equals(TYPE_ISLAMIC)){
jurzua
parents:
diff changeset
132 this.inputIslamicYear();
jurzua
parents:
diff changeset
133 }else if(calendarType.equals(TYPE_JULIAN)){
jurzua
parents:
diff changeset
134 this.inputJulianYear();
jurzua
parents:
diff changeset
135 }
jurzua
parents:
diff changeset
136 }else if(inputForm.equals(INPUT_FORM_DATE)){
jurzua
parents:
diff changeset
137 if(calendarType.equals(TYPE_GREGORIAN)){
jurzua
parents:
diff changeset
138 this.inputGregorianFrom();
jurzua
parents:
diff changeset
139 }else if(calendarType.equals(TYPE_ISLAMIC)){
jurzua
parents:
diff changeset
140 this.inputIslamicFrom();
jurzua
parents:
diff changeset
141 }else if(calendarType.equals(TYPE_JULIAN)){
jurzua
parents:
diff changeset
142 this.inputJulianFrom();
jurzua
parents:
diff changeset
143 }
jurzua
parents:
diff changeset
144 }
jurzua
parents:
diff changeset
145 }
jurzua
parents:
diff changeset
146
jurzua
parents:
diff changeset
147 public boolean isDeployable(){
jurzua
parents:
diff changeset
148 return (!this.state.equals(STATE_NOT_CHECKED) && !this.state.equals(STATE_UNKNOWN));
jurzua
parents:
diff changeset
149 }
jurzua
parents:
diff changeset
150
jurzua
parents:
diff changeset
151 public String getFormattedRange(){
jurzua
parents:
diff changeset
152 if(inputForm != null){
jurzua
parents:
diff changeset
153 String from = this.fromGregorian.toString();
jurzua
parents:
diff changeset
154 if(this.inputForm.equals(INPUT_FORM_DATE)){
jurzua
parents:
diff changeset
155 return "[" + from + "]";
jurzua
parents:
diff changeset
156 }else{
jurzua
parents:
diff changeset
157
jurzua
parents:
diff changeset
158 String until = this.untilGregorian.toString();
jurzua
parents:
diff changeset
159 if(StringUtils.isNotEmpty(from) && StringUtils.isNotEmpty(until)){
jurzua
parents:
diff changeset
160 return "[FROM: " + from + " TO: " + until + "]";
jurzua
parents:
diff changeset
161 }
jurzua
parents:
diff changeset
162 }
jurzua
parents:
diff changeset
163 }
jurzua
parents:
diff changeset
164 return null;
jurzua
parents:
diff changeset
165 }
jurzua
parents:
diff changeset
166
jurzua
parents:
diff changeset
167 public String getFormattedIslamicRange(){
jurzua
parents:
diff changeset
168 if(inputForm != null){
jurzua
parents:
diff changeset
169 String from = this.fromGregorian.toIslamicString();
jurzua
parents:
diff changeset
170 if(this.inputForm.equals(INPUT_FORM_DATE)){
jurzua
parents:
diff changeset
171 return "[" + from + "]";
jurzua
parents:
diff changeset
172 }else{
jurzua
parents:
diff changeset
173 String until = this.untilGregorian.toIslamicString();
jurzua
parents:
diff changeset
174 if(StringUtils.isNotEmpty(from) && StringUtils.isNotEmpty(until)){
jurzua
parents:
diff changeset
175 return "[FROM: " + from + " TO: " + until + "]";
jurzua
parents:
diff changeset
176 }
jurzua
parents:
diff changeset
177 }
jurzua
parents:
diff changeset
178 }
jurzua
parents:
diff changeset
179 return null;
jurzua
parents:
diff changeset
180 }
jurzua
parents:
diff changeset
181
jurzua
parents:
diff changeset
182 public String getFormattedJulianRange(){
jurzua
parents:
diff changeset
183 if(inputForm != null){
jurzua
parents:
diff changeset
184 String from = this.fromGregorian.toJulianString();
jurzua
parents:
diff changeset
185 if(this.inputForm.equals(INPUT_FORM_DATE)){
jurzua
parents:
diff changeset
186 return "[" + from + "]";
jurzua
parents:
diff changeset
187 }else{
jurzua
parents:
diff changeset
188 String until = this.untilGregorian.toJulianString();
jurzua
parents:
diff changeset
189 if(StringUtils.isNotEmpty(from) && StringUtils.isNotEmpty(until)){
jurzua
parents:
diff changeset
190 return "[FROM: " + from + " TO: " + until + "]";
jurzua
parents:
diff changeset
191 }
jurzua
parents:
diff changeset
192 }
jurzua
parents:
diff changeset
193 }
jurzua
parents:
diff changeset
194 return null;
jurzua
parents:
diff changeset
195 }
jurzua
parents:
diff changeset
196
jurzua
parents:
diff changeset
197 public void listenerUpdate(ActionEvent e){
jurzua
parents:
diff changeset
198 this.update();
jurzua
parents:
diff changeset
199 }
jurzua
parents:
diff changeset
200
jurzua
parents:
diff changeset
201
jurzua
parents:
diff changeset
202 public String getCalendarAsHtml(){
jurzua
parents:
diff changeset
203 StringBuilder sb = new StringBuilder();
jurzua
parents:
diff changeset
204
jurzua
parents:
diff changeset
205 if(isDeployable()){
jurzua
parents:
diff changeset
206 sb.append("<table align=\"left\">");
jurzua
parents:
diff changeset
207
jurzua
parents:
diff changeset
208 sb.append("<tr>");
jurzua
parents:
diff changeset
209 sb.append("<th align=\"left\">Gregorian:</th>");
jurzua
parents:
diff changeset
210 sb.append("<th align=\"left\">" + this.getFormattedRange() + "</th>");
jurzua
parents:
diff changeset
211 sb.append("</tr>");
jurzua
parents:
diff changeset
212
jurzua
parents:
diff changeset
213 sb.append("<tr>");
jurzua
parents:
diff changeset
214 sb.append("<th align=\"left\">Islamic:</th>");
jurzua
parents:
diff changeset
215 sb.append("<th align=\"left\">" + this.getFormattedIslamicRange() + "</th>");
jurzua
parents:
diff changeset
216 sb.append("</tr>");
jurzua
parents:
diff changeset
217
jurzua
parents:
diff changeset
218 sb.append("<tr>");
jurzua
parents:
diff changeset
219 sb.append("<th align=\"left\">Julian:</th>");
jurzua
parents:
diff changeset
220 sb.append("<th align=\"left\">" + this.getFormattedJulianRange() + "</th>");
jurzua
parents:
diff changeset
221 sb.append("</tr>");
jurzua
parents:
diff changeset
222
jurzua
parents:
diff changeset
223 sb.append("</table>");
jurzua
parents:
diff changeset
224 }else if(this.state.equals(STATE_UNKNOWN)){
47
6d82e03fb2ee fix typo date=unkknown at the source.
casties
parents: 1
diff changeset
225 sb.append("Unknown");
1
jurzua
parents:
diff changeset
226 }else{
jurzua
parents:
diff changeset
227 sb.append("Not checked");
jurzua
parents:
diff changeset
228 if(StringUtils.isNotEmpty(this.dateInText)){
jurzua
parents:
diff changeset
229 sb.append("=" + this.dateInText);
jurzua
parents:
diff changeset
230 }
jurzua
parents:
diff changeset
231 }
jurzua
parents:
diff changeset
232
jurzua
parents:
diff changeset
233 return sb.toString();
jurzua
parents:
diff changeset
234 }
jurzua
parents:
diff changeset
235
jurzua
parents:
diff changeset
236
jurzua
parents:
diff changeset
237 private void inputGregorianRange(){
jurzua
parents:
diff changeset
238 this.inputGregorianFrom();
jurzua
parents:
diff changeset
239 try{
jurzua
parents:
diff changeset
240 DateTime gregrorian =
jurzua
parents:
diff changeset
241 new DateTime(currentUntil.getYear(), currentUntil.getMonth(), currentUntil.getDayOfMonth(), 0, 0, 0, 0, GregorianChronology.getInstance());
jurzua
parents:
diff changeset
242 this.untilGregorian = new Date(gregrorian.withChronology(GregorianChronology.getInstance()));
jurzua
parents:
diff changeset
243 if(isDayInWeek(currentUntil.getDayOfWeek())){
jurzua
parents:
diff changeset
244 this.untilGregorian.setDayOfWeek(currentUntil.getDayOfWeek());
jurzua
parents:
diff changeset
245 }
jurzua
parents:
diff changeset
246 }catch (Exception e) {
jurzua
parents:
diff changeset
247 this.addGeneralMsg("In until date - " + e.getMessage());
jurzua
parents:
diff changeset
248 }
jurzua
parents:
diff changeset
249 }
jurzua
parents:
diff changeset
250
jurzua
parents:
diff changeset
251 private void inputGregorianFrom(){
jurzua
parents:
diff changeset
252 try{
jurzua
parents:
diff changeset
253 DateTime gregorian =
jurzua
parents:
diff changeset
254 new DateTime(currentFrom.getYear(), currentFrom.getMonth(), currentFrom.getDayOfMonth(), 0, 0, 0, 0, GregorianChronology.getInstance());
jurzua
parents:
diff changeset
255 this.fromGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
256 if(isDayInWeek(currentFrom.getDayOfWeek())){
jurzua
parents:
diff changeset
257 this.fromGregorian.setDayOfWeek(currentFrom.getDayOfWeek());
jurzua
parents:
diff changeset
258 }
jurzua
parents:
diff changeset
259 }catch (Exception e) {
jurzua
parents:
diff changeset
260 this.addGeneralMsg("In from date - " + e.getMessage());
jurzua
parents:
diff changeset
261 }
jurzua
parents:
diff changeset
262 }
jurzua
parents:
diff changeset
263
jurzua
parents:
diff changeset
264 private void inputIslamicRange(){
jurzua
parents:
diff changeset
265 this.inputIslamicFrom();
jurzua
parents:
diff changeset
266 try{
jurzua
parents:
diff changeset
267 DateTime islamic =
jurzua
parents:
diff changeset
268 new DateTime(currentUntil.getYear(), currentUntil.getMonth(), currentUntil.getDayOfMonth(), 0, 0, 0, 0, IslamicChronology.getInstance());
jurzua
parents:
diff changeset
269 DateTime gregorian = islamic.withChronology(GregorianChronology.getInstance());
jurzua
parents:
diff changeset
270 this.untilGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
271 if(isDayInWeek(currentUntil.getDayOfWeek())){
jurzua
parents:
diff changeset
272 this.untilGregorian.setDayOfWeek(gregorian.getDayOfWeek());
jurzua
parents:
diff changeset
273 }else{
jurzua
parents:
diff changeset
274 this.untilGregorian.setAmbiguity(2);
jurzua
parents:
diff changeset
275 }
jurzua
parents:
diff changeset
276 }catch (Exception e) {
jurzua
parents:
diff changeset
277 this.addGeneralMsg("In until date - " + e.getMessage());
jurzua
parents:
diff changeset
278 }
jurzua
parents:
diff changeset
279 }
jurzua
parents:
diff changeset
280
jurzua
parents:
diff changeset
281 private void inputIslamicFrom(){
jurzua
parents:
diff changeset
282 try{
jurzua
parents:
diff changeset
283 DateTime islamic =
jurzua
parents:
diff changeset
284 new DateTime(currentFrom.getYear(), currentFrom.getMonth(), currentFrom.getDayOfMonth(), 0, 0, 0, 0, IslamicChronology.getInstance());
jurzua
parents:
diff changeset
285 DateTime gregorian = islamic.withChronology(GregorianChronology.getInstance());
jurzua
parents:
diff changeset
286 this.fromGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
287 if(isDayInWeek(currentFrom.getDayOfWeek())){
jurzua
parents:
diff changeset
288 this.fromGregorian.setDayOfWeek(gregorian.getDayOfWeek());
jurzua
parents:
diff changeset
289 }else{
jurzua
parents:
diff changeset
290 this.fromGregorian.setAmbiguity(2);
jurzua
parents:
diff changeset
291 }
jurzua
parents:
diff changeset
292 }catch (Exception e) {
jurzua
parents:
diff changeset
293 this.addGeneralMsg("In from date - " + e.getMessage());
jurzua
parents:
diff changeset
294 }
jurzua
parents:
diff changeset
295 }
jurzua
parents:
diff changeset
296
jurzua
parents:
diff changeset
297
jurzua
parents:
diff changeset
298 private void inputJulianRange(){
jurzua
parents:
diff changeset
299 this.inputJulianFrom();
jurzua
parents:
diff changeset
300 DateTime julian = null;
jurzua
parents:
diff changeset
301 try{
jurzua
parents:
diff changeset
302 julian =
jurzua
parents:
diff changeset
303 new DateTime(currentUntil.getYear(), currentUntil.getMonth(), currentUntil.getDayOfMonth(), 0, 0, 0, 0, JulianChronology.getInstance());
jurzua
parents:
diff changeset
304 DateTime gregorian = julian.withChronology(GregorianChronology.getInstance());
jurzua
parents:
diff changeset
305 this.untilGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
306 if(isDayInWeek(currentUntil.getDayOfWeek())){
jurzua
parents:
diff changeset
307 this.untilGregorian.setDayOfWeek(gregorian.getDayOfWeek());
jurzua
parents:
diff changeset
308 }
jurzua
parents:
diff changeset
309 }catch (Exception e) {
jurzua
parents:
diff changeset
310 this.addGeneralMsg("In until date - " + e.getMessage());
jurzua
parents:
diff changeset
311 }
jurzua
parents:
diff changeset
312 }
jurzua
parents:
diff changeset
313
jurzua
parents:
diff changeset
314 private void inputJulianFrom(){
jurzua
parents:
diff changeset
315 DateTime julian = null;
jurzua
parents:
diff changeset
316 try{
jurzua
parents:
diff changeset
317 julian =
jurzua
parents:
diff changeset
318 new DateTime(currentFrom.getYear(), currentFrom.getMonth(), currentFrom.getDayOfMonth(), 0, 0, 0, 0, JulianChronology.getInstance());
jurzua
parents:
diff changeset
319 DateTime gregorian = julian.withChronology(GregorianChronology.getInstance());
jurzua
parents:
diff changeset
320 this.fromGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
321 if(isDayInWeek(currentFrom.getDayOfWeek())){
jurzua
parents:
diff changeset
322 this.fromGregorian.setDayOfWeek(gregorian.getDayOfWeek());
jurzua
parents:
diff changeset
323 }
jurzua
parents:
diff changeset
324 }catch (Exception e) {
jurzua
parents:
diff changeset
325 addGeneralMsg("In from date - " + e.getMessage());
jurzua
parents:
diff changeset
326 }
jurzua
parents:
diff changeset
327 }
jurzua
parents:
diff changeset
328
jurzua
parents:
diff changeset
329 public void inputGregorianYear(){
jurzua
parents:
diff changeset
330 if(inputForm.equals(INPUT_FORM_YEAR) && currentYear != null){
jurzua
parents:
diff changeset
331 this.fromGregorian = new Date(new DateTime(currentYear, 1, 1, 0, 0, 0, 0, GregorianChronology.getInstance()));
jurzua
parents:
diff changeset
332 this.untilGregorian = new Date(new DateTime(currentYear, 12, 31, 0, 0, 0, 0, GregorianChronology.getInstance()));
jurzua
parents:
diff changeset
333 }
jurzua
parents:
diff changeset
334 }
jurzua
parents:
diff changeset
335
jurzua
parents:
diff changeset
336 public void inputIslamicYear(){
jurzua
parents:
diff changeset
337 if(this.currentYear < 1 || this.currentYear > 292271022){
jurzua
parents:
diff changeset
338 this.addGeneralMsg("year must be in the range [1,292271022]");
jurzua
parents:
diff changeset
339 }else {
jurzua
parents:
diff changeset
340 DateTime islamic =
jurzua
parents:
diff changeset
341 new DateTime(currentYear, 1, 1, 0, 0, 0, 0, IslamicChronology.getInstance());
jurzua
parents:
diff changeset
342 DateTime gregorian = islamic.withChronology(GregorianChronology.getInstance());
jurzua
parents:
diff changeset
343 this.fromGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
344 this.fromGregorian.setAmbiguity(2);
jurzua
parents:
diff changeset
345 this.fromGregorian.setDayOfWeek(null);
jurzua
parents:
diff changeset
346
jurzua
parents:
diff changeset
347 islamic =
jurzua
parents:
diff changeset
348 new DateTime(currentYear, 12, 29, 0, 0, 0, 0, IslamicChronology.getInstance());
jurzua
parents:
diff changeset
349 gregorian = islamic.withChronology(GregorianChronology.getInstance());
jurzua
parents:
diff changeset
350 this.untilGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
351 this.untilGregorian.setAmbiguity(2);
jurzua
parents:
diff changeset
352 this.untilGregorian.setDayOfWeek(null);
jurzua
parents:
diff changeset
353 }
jurzua
parents:
diff changeset
354 }
jurzua
parents:
diff changeset
355
jurzua
parents:
diff changeset
356 public void inputJulianYear(){
jurzua
parents:
diff changeset
357 if(this.currentYear < 1){
jurzua
parents:
diff changeset
358 this.addGeneralMsg("Value 0 for year is not supported");
jurzua
parents:
diff changeset
359 }else{
jurzua
parents:
diff changeset
360 DateTime julian =
jurzua
parents:
diff changeset
361 new DateTime(currentYear, 1, 1, 0, 0, 0, 0, JulianChronology.getInstance());
jurzua
parents:
diff changeset
362 DateTime gregorian = julian.withChronology(GregorianChronology.getInstance());
jurzua
parents:
diff changeset
363 this.fromGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
364 this.fromGregorian.setDayOfWeek(null);
jurzua
parents:
diff changeset
365
jurzua
parents:
diff changeset
366 julian =
jurzua
parents:
diff changeset
367 new DateTime(currentYear, 12, 31, 0, 0, 0, 0, JulianChronology.getInstance());
jurzua
parents:
diff changeset
368 gregorian = julian.withChronology(GregorianChronology.getInstance());
jurzua
parents:
diff changeset
369 this.untilGregorian = new Date(gregorian);
jurzua
parents:
diff changeset
370 this.untilGregorian.setDayOfWeek(null);
jurzua
parents:
diff changeset
371 }
jurzua
parents:
diff changeset
372 }
jurzua
parents:
diff changeset
373
jurzua
parents:
diff changeset
374
jurzua
parents:
diff changeset
375 public String toJSONString(){
jurzua
parents:
diff changeset
376 this.update();
jurzua
parents:
diff changeset
377 JSONObject json = this.toJSON();
jurzua
parents:
diff changeset
378 if(json != null){
jurzua
parents:
diff changeset
379 return json.toString();
jurzua
parents:
diff changeset
380 }
jurzua
parents:
diff changeset
381 return "";
jurzua
parents:
diff changeset
382 }
jurzua
parents:
diff changeset
383
jurzua
parents:
diff changeset
384 public JSONObject toJSON(){
jurzua
parents:
diff changeset
385 JSONObject json = new JSONObject();
jurzua
parents:
diff changeset
386 if(state.equals(STATE_KNOWN)){
jurzua
parents:
diff changeset
387 try {
jurzua
parents:
diff changeset
388
jurzua
parents:
diff changeset
389 if(inputForm.equals(INPUT_FORM_YEAR)){
jurzua
parents:
diff changeset
390 json.put(YEAR, this.currentYear);
jurzua
parents:
diff changeset
391 json.put(FROM, this.fromGregorian.toJSON());
jurzua
parents:
diff changeset
392 json.put(UNTIL, this.untilGregorian.toJSON());
jurzua
parents:
diff changeset
393 }else if(inputForm.equals(INPUT_FORM_RANGE)){
jurzua
parents:
diff changeset
394 json.put(FROM, this.fromGregorian.toJSON());
jurzua
parents:
diff changeset
395 json.put(UNTIL, this.untilGregorian.toJSON());
jurzua
parents:
diff changeset
396 if(isDayInWeek(currentFrom.getDayOfWeek())){
jurzua
parents:
diff changeset
397 json.put("dayOfWeekFrom", currentFrom.getDayOfWeek());
jurzua
parents:
diff changeset
398 }
jurzua
parents:
diff changeset
399 if(isDayInWeek(currentUntil.getDayOfWeek())){
jurzua
parents:
diff changeset
400 json.put("dayOfWeekUntil", currentUntil.getDayOfWeek());
jurzua
parents:
diff changeset
401 }
jurzua
parents:
diff changeset
402 }else if(inputForm.equals(INPUT_FORM_DATE)){
jurzua
parents:
diff changeset
403 json.put(DATE, this.fromGregorian.toJSON());
jurzua
parents:
diff changeset
404 if(isDayInWeek(currentFrom.getDayOfWeek())){
jurzua
parents:
diff changeset
405 json.put("dayOfWeek", currentFrom.getDayOfWeek());
jurzua
parents:
diff changeset
406 }
jurzua
parents:
diff changeset
407 }
jurzua
parents:
diff changeset
408
jurzua
parents:
diff changeset
409 json.put(STATE, this.state);
jurzua
parents:
diff changeset
410 json.put(ADD_INF, additionalInfo);
jurzua
parents:
diff changeset
411 json.put(CALENDAR_TYPE, this.calendarType);
jurzua
parents:
diff changeset
412 json.put(INPUT_FORM, this.inputForm);
jurzua
parents:
diff changeset
413
jurzua
parents:
diff changeset
414 } catch (JSONException e) {
jurzua
parents:
diff changeset
415 e.printStackTrace();
jurzua
parents:
diff changeset
416 }
jurzua
parents:
diff changeset
417 return json;
jurzua
parents:
diff changeset
418 }else if(state.equals(STATE_UNKNOWN)){
jurzua
parents:
diff changeset
419 try {
jurzua
parents:
diff changeset
420 json.put(STATE, this.state);
jurzua
parents:
diff changeset
421 } catch (JSONException e) {
jurzua
parents:
diff changeset
422 e.printStackTrace();
jurzua
parents:
diff changeset
423 }
jurzua
parents:
diff changeset
424 return json;
jurzua
parents:
diff changeset
425 }else if(state.equals(STATE_NOT_CHECKED) && StringUtils.isNotEmpty(dateInText)){
jurzua
parents:
diff changeset
426 try {
jurzua
parents:
diff changeset
427 json.put(STATE, this.state);
jurzua
parents:
diff changeset
428 json.put(DATE_IN_TEXT, this.dateInText);
jurzua
parents:
diff changeset
429 } catch (JSONException e) {
jurzua
parents:
diff changeset
430 e.printStackTrace();
jurzua
parents:
diff changeset
431 }
jurzua
parents:
diff changeset
432 return json;
jurzua
parents:
diff changeset
433 }
jurzua
parents:
diff changeset
434 return null;
jurzua
parents:
diff changeset
435 }
jurzua
parents:
diff changeset
436
jurzua
parents:
diff changeset
437 public boolean isUntilOlderThanFrom(){
jurzua
parents:
diff changeset
438 if(this.currentFrom.getYear() != null && this.currentUntil.getYear() != null){
jurzua
parents:
diff changeset
439 if(this.currentFrom.getYear() < this.currentUntil.getYear()){
jurzua
parents:
diff changeset
440 return true;
jurzua
parents:
diff changeset
441 }else if(this.currentFrom.getYear().equals(this.currentUntil.getYear())){
jurzua
parents:
diff changeset
442 if(this.currentFrom.getMonth() != null && this.currentUntil.getMonth() != null){
jurzua
parents:
diff changeset
443 if(this.currentFrom.getMonth() < this.currentUntil.getMonth()){
jurzua
parents:
diff changeset
444 return true;
jurzua
parents:
diff changeset
445 }else if(this.currentFrom.getMonth().equals(this.currentUntil.getMonth())){
jurzua
parents:
diff changeset
446 if(this.currentFrom.getDayOfMonth() != null && this.currentUntil.getDayOfMonth() != null){
jurzua
parents:
diff changeset
447 if(this.currentFrom.getDayOfMonth() < this.currentUntil.getDayOfMonth()){
jurzua
parents:
diff changeset
448 return true;
jurzua
parents:
diff changeset
449 }
jurzua
parents:
diff changeset
450 }
jurzua
parents:
diff changeset
451 }
jurzua
parents:
diff changeset
452 }
jurzua
parents:
diff changeset
453 }
jurzua
parents:
diff changeset
454 }
jurzua
parents:
diff changeset
455 return false;
jurzua
parents:
diff changeset
456 }
jurzua
parents:
diff changeset
457
jurzua
parents:
diff changeset
458 private boolean isDayInWeek(Integer day){
jurzua
parents:
diff changeset
459 if(day == null)
jurzua
parents:
diff changeset
460 return false;
jurzua
parents:
diff changeset
461 if(day >= 1 && day <= 7){
jurzua
parents:
diff changeset
462 return true;
jurzua
parents:
diff changeset
463 }
jurzua
parents:
diff changeset
464 return false;
jurzua
parents:
diff changeset
465 }
jurzua
parents:
diff changeset
466
jurzua
parents:
diff changeset
467 public Date getFromGregorian() {
jurzua
parents:
diff changeset
468 return fromGregorian;
jurzua
parents:
diff changeset
469 }
jurzua
parents:
diff changeset
470 public void setFromGregorian(Date fromGregorian) {
jurzua
parents:
diff changeset
471 this.fromGregorian = fromGregorian;
jurzua
parents:
diff changeset
472 }
jurzua
parents:
diff changeset
473 public Date getUntilGregorian() {
jurzua
parents:
diff changeset
474 return untilGregorian;
jurzua
parents:
diff changeset
475 }
jurzua
parents:
diff changeset
476 public void setUntilGregorian(Date untilGregorian) {
jurzua
parents:
diff changeset
477 this.untilGregorian = untilGregorian;
jurzua
parents:
diff changeset
478 }
jurzua
parents:
diff changeset
479
jurzua
parents:
diff changeset
480 public String getInputForm() {
jurzua
parents:
diff changeset
481 return inputForm;
jurzua
parents:
diff changeset
482 }
jurzua
parents:
diff changeset
483
jurzua
parents:
diff changeset
484 public void setInputForm(String inputForm) {
jurzua
parents:
diff changeset
485 this.inputForm = inputForm;
jurzua
parents:
diff changeset
486 }
jurzua
parents:
diff changeset
487
jurzua
parents:
diff changeset
488 public String getCalendarType() {
jurzua
parents:
diff changeset
489 return calendarType;
jurzua
parents:
diff changeset
490 }
jurzua
parents:
diff changeset
491
jurzua
parents:
diff changeset
492 public void setCalendarType(String calendarType) {
jurzua
parents:
diff changeset
493 this.calendarType = calendarType;
jurzua
parents:
diff changeset
494 }
jurzua
parents:
diff changeset
495
jurzua
parents:
diff changeset
496 public String getAdditionalInfo() {
jurzua
parents:
diff changeset
497 return additionalInfo;
jurzua
parents:
diff changeset
498 }
jurzua
parents:
diff changeset
499
jurzua
parents:
diff changeset
500 public void setAdditionalInfo(String additionalInfo) {
jurzua
parents:
diff changeset
501 this.additionalInfo = additionalInfo;
jurzua
parents:
diff changeset
502 }
jurzua
parents:
diff changeset
503
jurzua
parents:
diff changeset
504 public Integer getCurrentYear() {
jurzua
parents:
diff changeset
505 return currentYear;
jurzua
parents:
diff changeset
506 }
jurzua
parents:
diff changeset
507
jurzua
parents:
diff changeset
508 public void setCurrentYear(Integer currentYear) {
jurzua
parents:
diff changeset
509 this.currentYear = currentYear;
jurzua
parents:
diff changeset
510 }
jurzua
parents:
diff changeset
511
jurzua
parents:
diff changeset
512 public Date getCurrentFrom() {
jurzua
parents:
diff changeset
513 return currentFrom;
jurzua
parents:
diff changeset
514 }
jurzua
parents:
diff changeset
515
jurzua
parents:
diff changeset
516 public void setCurrentFrom(Date currentFrom) {
jurzua
parents:
diff changeset
517 this.currentFrom = currentFrom;
jurzua
parents:
diff changeset
518 }
jurzua
parents:
diff changeset
519
jurzua
parents:
diff changeset
520 public Date getCurrentUntil() {
jurzua
parents:
diff changeset
521 return currentUntil;
jurzua
parents:
diff changeset
522 }
jurzua
parents:
diff changeset
523
jurzua
parents:
diff changeset
524 public void setCurrentUntil(Date currentUntil) {
jurzua
parents:
diff changeset
525 this.currentUntil = currentUntil;
jurzua
parents:
diff changeset
526 }
jurzua
parents:
diff changeset
527
jurzua
parents:
diff changeset
528 public String getState() {
jurzua
parents:
diff changeset
529 return state;
jurzua
parents:
diff changeset
530 }
jurzua
parents:
diff changeset
531
jurzua
parents:
diff changeset
532 public void setState(String state) {
jurzua
parents:
diff changeset
533 this.state = state;
jurzua
parents:
diff changeset
534 }
jurzua
parents:
diff changeset
535
jurzua
parents:
diff changeset
536 public String getDateInText() {
jurzua
parents:
diff changeset
537 return dateInText;
jurzua
parents:
diff changeset
538 }
jurzua
parents:
diff changeset
539
jurzua
parents:
diff changeset
540 public void setDateInText(String dateInText) {
jurzua
parents:
diff changeset
541 this.dateInText = dateInText;
jurzua
parents:
diff changeset
542 }
jurzua
parents:
diff changeset
543 }