EN · DE · RU · FR · ES

#368: BirthdayAddress.java

projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java Тип: Java · Роль: Компонент · Источник: projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java 177 строк · 107 кода · 41 комментарий · 29 пустых
Файл исходного кода projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java, содержащий Java-код для слоя компонентов.

Структура кода

Пакет: org.projectforge.business.address

Классы: BirthdayAddress

Реализует: Comparable<BirthdayAddress>, Serializable

Методы (16): equals, hashCode, compareTo, isSameDay, setAge, getAge, getAddress, getDateOfYear, getCompareString, isFavorite, setFavorite, getMonth, getDayOfMonth, toString, getDateOfYear, getDateOfYear

Поля (7): serialVersionUID, dateOfYear, compareString, month, dayOfMonth, isFavorite, age

Импорты: 6 пакетов

Исходный код (сокращён)

package org.projectforge.business.address;

import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.projectforge.common.StringHelper;
import org.projectforge.framework.time.PFDateTime;

import java.io.Serializable;
import java.time.Month;
import java.util.Date;


public class BirthdayAddress implements Comparable<BirthdayAddress>, Serializable
{
  private static final long serialVersionUID = -611024181799550736L;

  private final String dateOfYear;

  private final String compareString;

  private final Month month;

  private final int dayOfMonth;

  private boolean isFavorite;

  private int age = -1;

  AddressDO address;

  public BirthdayAddress(final AddressDO address)
  {
    this.address = address;
    if (address.getBirthday() == null) {
      throw new UnsupportedOperationException("День рождения не указан!");
    }
    final PFDateTime day = PFDateTime.from(address.getBirthday()); // не null
    month = day.getMonth();
    dayOfMonth = day.getDayOfMonth();
    dateOfYear = getDateOfYear(month, dayOfMonth);
    compareString = dateOfYear + " " + address.getName() + ", " + address.getFirstName();
  }

  @Override
  public boolean equals(final Object obj)
  {
    return compareString.equals(((BirthdayAddress) obj).compareString);
  }

  @Override
  public int hashCode()
  {
    final HashCodeBuilder hcb = new HashCodeBuilder();
    hcb.append(this.compareString);
    return hcb.toHashCode();
  }

  @Override
  public int compareTo(final BirthdayAddress o)
  {
    return this.compareString.compareTo(o.compareString);
  }

  /**
   * Игнорирует год!
   * @see #getDateOfYear(Date)
   */
  public boolean isSameDay(final Date date)
  {
    return this.dateOfYear.equals(getDateOfYear(date));
  }

  /** Устанавливает и возвращает возраст человека на указанную дату. */
  public int setAge(final Date date)
  {
    final PFDateTime dt = PFDateTime.from(date); // не null
    final PFDateTime birthday = PFDateTime.from(address.getBirthday());  // не null
    age = dt.getYear() - birthday.getYear();
    return age;
  }

  /** Возвращает возраст человека на дату последнего вызова getAge(Date). */
  public int getAge()
  {
    return age;
  }

  public AddressDO getAddress()
  {
    return address;
  }

  /**
   * Формат {ммдд} (месяц, день месяца)
   */
  public String getDateOfYear()
  {
    return dateOfYear;
  }

  /**
   * Формат {ммдд имя, фамилия} (месяц, день месяца, ...)
   */
  public String getCompareString()
  {
    return compareString;
  }

  public boolean isFavorite()
  {
    return isFavorite;
  }

  public void setFavorite(final boolean isFavorite)
  {
    this.isFavorite = isFavorite;
  }

  public Month getMonth()
  {
// ... (сокращено, всего 155 строк)

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024-> 2025.
b6092df09 Авторские права 2023 -> 2024
ab45d51fa Авторские права 2001-2022 -> 2001-2023.
5f7ef41b8 Авторские права 2021 -> 2022