EN · DE · RU · FR · ES

#368: BirthdayAddress.java

projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java Typ: Java · Rolle: Komponente · Quelle: projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java 177 Zeilen · 107 Code · 41 Kommentare · 29 leer
Quellcodedatei unter projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java mit Java-Code für die Komponentenschicht.

Codestruktur

Paket: org.projectforge.business.address

Klassen: BirthdayAddress

Implementiert: Comparable<BirthdayAddress>, Serializable

Methoden (16): equals, hashCode, compareTo, isSameDay, setAge, getAge, getAddress, getDateOfYear, getCompareString, isFavorite, setFavorite, getMonth, getDayOfMonth, toString, getDateOfYear, getDateOfYear

Felder (7): serialVersionUID, dateOfYear, compareString, month, dayOfMonth, isFavorite, age

Importe: 6 Pakete

Quellcode (gekürzt)

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("Geburtstag nicht angegeben!");
    }
    final PFDateTime day = PFDateTime.from(address.getBirthday()); // nicht 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);
  }

  /**
   * Ignoriert das Jahr!
   * @see #getDateOfYear(Date)
   */
  public boolean isSameDay(final Date date)
  {
    return this.dateOfYear.equals(getDateOfYear(date));
  }

  /** Setzt und gibt das Alter der Person zum angegebenen Datum zurück. */
  public int setAge(final Date date)
  {
    final PFDateTime dt = PFDateTime.from(date); // nicht null
    final PFDateTime birthday = PFDateTime.from(address.getBirthday());  // nicht null
    age = dt.getYear() - birthday.getYear();
    return age;
  }

  /** Gibt das Alter der Person zum Zeitpunkt des letzten Aufrufs von getAge(Date) zurück. */
  public int getAge()
  {
    return age;
  }

  public AddressDO getAddress()
  {
    return address;
  }

  /**
   * Format {mmtt} (Monat, Tag des Monats)
   */
  public String getDateOfYear()
  {
    return dateOfYear;
  }

  /**
   * Format {mmtt Name, Vorname} (Monat, Tag des Monats, ...)
   */
  public String getCompareString()
  {
    return compareString;
  }

  public boolean isFavorite()
  {
    return isFavorite;
  }

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

  public Month getMonth()
  {
// ... (gekürzt, insgesamt 155 Zeilen)

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcodedatei-Header: 2024 -> 2025.
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.
5f7ef41b8 Copyright 2021 -> 2022