EN · DE · RU · FR · ES

#368: BirthdayAddress.java

projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java Type: Java · Role: Component · Source: projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java 177 lines · 107 code · 41 comments · 29 blank
Source code file at projectforge-business/src/main/java/org/projectforge/business/address/BirthdayAddress.java containing Java code for the Component layer.

Code Structure

Package: org.projectforge.business.address

Classes: BirthdayAddress

Implements: Comparable, Serializable

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

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

Imports: 6 packages

Source Code (abridged)

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("Birthday not given!");
    }
    final PFDateTime day = PFDateTime.from(address.getBirthday()); // not 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);
  }

  /**
   * Ignores the year!
   * @see #getDateOfYear(Date)
   */
  public boolean isSameDay(final Date date)
  {
    return this.dateOfYear.equals(getDateOfYear(date));
  }

  /** Sets and gets the age of the person at the given date. */
  public int setAge(final Date date)
  {
    final PFDateTime dt = PFDateTime.from(date); // not null
    final PFDateTime birthday = PFDateTime.from(address.getBirthday());  // not null
    age = dt.getYear() - birthday.getYear();
    return age;
  }

  /** Gets the age of the person at the date of the last call of getAge(Date). */
  public int getAge()
  {
    return age;
  }

  public AddressDO getAddress()
  {
    return address;
  }

  /**
   * Format {mmdd} (month, day of month)
   */
  public String getDateOfYear()
  {
    return dateOfYear;
  }

  /**
   * Format {mmdd name, firstname} (month, day of month, ...)
   */
  public String getCompareString()
  {
    return compareString;
  }

  public boolean isFavorite()
  {
    return isFavorite;
  }

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

  public Month getMonth()
  {
// ... (truncated, total 155 lines)

Git History

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