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 *
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,
825 calendar.get(Calendar.YEAR));
826
827 }
828
829 /**
830 * Возвращает порядковый номер для даты, где 1 January 1900 = 2 (что почти
831 * соответствует системе нумерации, используемой в Microsoft Excel for
832 * Windows и Lotus 1-2-3).
833 *
834 * @return порядковый номер даты.
835 */
836 public abstract int toSerial();
837
838 /**