>755 case SerialDate.SECOND_WEEK_IN_MONTH : return "Second";
>756 case SerialDate.THIRD_WEEK_IN_MONTH : return "Third";
>757 case SerialDate.FOURTH_WEEK_IN_MONTH : return "Fourth";
>758 case SerialDate.LAST_WEEK_IN_MONTH : return "Last";
>759 default :
>760 return "SerialDate.weekInMonthToString(): invalid code.";
>761 }
>762
>763 }
>764
>765 /**
>766 * Возвращает строку, представляющую переданное значение relative.
>767 *
>768 * Необходимо поискать более элегантное решение.
>769 *
>770 * @param relative константа, представляющая значение’relative’.
>771 *
>772 * @return строка, представляющая переданное значение ‘relative’.
>773 */
>774 public static String relativeToString(final int relative) {
>775
>776 switch (relative) {
>777 case SerialDate.PRECEDING : return "Preceding";
>778 case SerialDate.NEAREST : return "Nearest";
>779 case SerialDate.FOLLOWING : return "Following";
>780 default : return "ERROR : Relative To String";
>781 }
>782
>783 }
>784
>785 /**
>786 * Метод-фабрика, возвращающий экземпляр конкретного субкласса
>787 * {@link SerialDate}.
>788 *
Листинг Б.1 (продолжение)
>789 * @param day день (1–31).
>790 * @param month месяц (1–12).
>791 * @param yyyy год (в диапазоне от 1900 до 9999).
>792 *
>793 * @return Экземпляр {@link SerialDate}.
>794 */
>795 public static SerialDate createInstance(final int day, final int month,
>796 final int yyyy) {
>797 return new SpreadsheetDate(day, month, yyyy);
>798 }
>799
>800 /**
>801 * Метод-фабрика, возвращающий экземпляр конкретного субкласса
>802 * {@link SerialDate}.
>803 *
>804 * @param serial порядковый номер дня (1 января 1900 = 2).
>805 *
>806 * @return экземпляр SerialDate.
>807 */
>808 public static SerialDate createInstance(final int serial) {
>809 return new SpreadsheetDate(serial);
>810 }
>811
>812 /**
>813 * Метод-фабрика, возвращающий экземпляр субкласса SerialDate.
>814 *
>815 * @param date объект даты Java.
>816 *
>817 * @return экземпляр SerialDate.
>818 */
>819 public static SerialDate createInstance(final java.util.Date date) {
>820
>821 final GregorianCalendar calendar = new GregorianCalendar();
>822 calendar.setTime(date);
>823 return new SpreadsheetDate(calendar.get(Calendar.DATE),
>824 calendar.get(Calendar.MONTH) + 1,