Guest User

Untitled

a guest
Oct 16th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.97 KB | None | 0 0
  1.  
  2. package cz.eman.eom.utils;
  3.  
  4. import java.text.ParseException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Calendar;
  7. import java.util.Date;
  8.  
  9. import android.app.DatePickerDialog;
  10. import android.app.DatePickerDialog.OnDateSetListener;
  11. import android.app.Dialog;
  12. import android.content.Context;
  13. import android.widget.DatePicker;
  14. import android.widget.EditText;
  15. import cz.eman.eom.properties.Properties;
  16.  
  17. public class DateFactory {
  18. private static final SimpleDateFormat dateFormat = new SimpleDateFormat(Properties.BIRTH_DATE_FORMAT_PATTERN);
  19.  
  20. protected Context context;
  21. protected EditText textTarget;
  22.  
  23. /**
  24. * Zalozeni factory
  25. *
  26. * @param context
  27. * @param textTarget - Textove pole, kam se ma ulozit vysledny datum ve
  28. * forme textu
  29. */
  30. public DateFactory(Context context, EditText textTarget) {
  31. this.context = context;
  32. this.textTarget = textTarget;
  33. }
  34.  
  35. /**
  36. * vytvoreni dialogu pro nastaveni data. Jako defaultni datum je nastaveno
  37. * datum ze zadaneho Date objektu
  38. *
  39. * @param date - Datum, ktere ma byt nastaveno jako vychozi
  40. * @return - dialog pro nastaveni data, po jeho zavreni je hodnota nastavena
  41. * do zadaneho textoveho pole
  42. */
  43. public Dialog getDateDialog(Date date) {
  44. Calendar calendar = Calendar.getInstance();
  45. calendar.setTime(date);
  46. return getDateDialog(calendar);
  47. }
  48.  
  49. /**
  50. * vytvoreni dialogu pro nastaveni data. Jako defaultni datum je nastaveno
  51. * aktualni datum
  52. *
  53. * @return - dialog pro nastaveni data, po jeho zavreni je hodnota nastavena
  54. * do zadaneho textoveho pole
  55. */
  56. public Dialog getDateDialog() {
  57. return getDateDialog(Calendar.getInstance());
  58. }
  59.  
  60. /**
  61. * vytvoreni dialogu pro nastaveni data. Jako defaultni datum je nastaveno
  62. * datum ze zadaneho kalendare
  63. *
  64. * @param calendar - calendar, podle ktereho se nastavy vychosi datum
  65. * dialogu
  66. * @return - dialog pro nastaveni data, po jeho zavreni je hodnota nastavena
  67. * do zadaneho textoveho pole
  68. */
  69. public Dialog getDateDialog(Calendar calendar) {
  70. return new DatePickerDialog(context, onDateSetListener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
  71. }
  72.  
  73. /**
  74. * vytvoreni dialogu pro nastaveni data. Jako defaultni datum je nastaveno
  75. * datum parsovane ze zadaneho stringu, pokud string neobsahuje datum, je
  76. * nastaveno aktualni datum
  77. *
  78. * @param dateString - String obsahujici datum, ktere ma byt nastaveno jako
  79. * vychozi v dialogu
  80. * @return - dialog pro nastaveni data, po jeho zavreni je hodnota nastavena
  81. * do zadaneho textoveho pole
  82. */
  83. public Dialog getDateDialog(String dateString) {
  84. Date date = getDateFromString(dateString);
  85. if (date != null) {
  86. return getDateDialog(date);
  87. } else {
  88. return getDateDialog();
  89. }
  90. }
  91.  
  92. /**
  93. * Listener, ktery nastavi datum z dialogu do zadaneho textView. Datum je
  94. * parsovano na text. Pokud datum neni, je do textView nastaven prazdny
  95. * string
  96. */
  97. private OnDateSetListener onDateSetListener = new OnDateSetListener() {
  98. public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  99. Calendar calendar = Calendar.getInstance();
  100. calendar.set(Calendar.YEAR, year);
  101. calendar.set(Calendar.MONTH, monthOfYear);
  102. calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
  103.  
  104. String date = getStringFromDate(calendar.getTime());
  105. if (date != null) {
  106. textTarget.setText(date);
  107. } else {
  108. textTarget.setText("");
  109. }
  110. }
  111. };
  112.  
  113. /**
  114. * Parsovani Data ze stringu
  115. *
  116. * @param date - String, ktery se ma parsovat na datum
  117. * @return - datum, nebo null
  118. */
  119. public static Date getDateFromString(String date) {
  120. try {
  121. return dateFormat.parse(date);
  122. } catch (ParseException e) {
  123. return null;
  124. }
  125. }
  126.  
  127. /**
  128. * formatovani data na string
  129. *
  130. * @param date - datum, ktere se ma formatovat
  131. * @return - datum ve forme stringu, nebo null
  132. */
  133. public static String getStringFromDate(Date date) {
  134. try {
  135. return dateFormat.format(date);
  136. } catch (Exception e) {
  137. return null;
  138. }
  139. }
  140.  
  141. /**
  142. * provede konverzi data z formatu poskytovaneho z FB na nas format
  143. *
  144. * @param fbDate Datum ve FB formatu
  145. * @return datum v nasem formatu
  146. */
  147. public static String getStringFromFBDateString(String fbDate) {
  148. try {
  149. SimpleDateFormat fbDateFormat = new SimpleDateFormat(Properties.BIRTH_DATE_FORMAT_PATTERN_FB);
  150. Date date = fbDateFormat.parse(fbDate);
  151. return getStringFromDate(date);
  152. } catch (Exception e) {
  153. return null;
  154. }
  155. }
  156.  
  157. }
Add Comment
Please, Sign In to add comment