ComparatorEMailByDomain.java

/*
 * Copyright (C) 2022 Dipl.-Inform. Kai Hofmann. All rights reserved!
 */
package de.powerstat.validation.comparators;


import java.io.Serializable;
import java.util.Comparator;
import java.util.Objects;

import de.powerstat.validation.values.EMail;


/**
 * Comparator for EMail values by reverse domain and local part.
 */
public class ComparatorEMailByDomain implements Comparator<EMail>, Serializable
 {
  /**
   * Serial version unique identifier.
   */
  private static final long serialVersionUID = 1L;


  /**
   * Default constructor.
   */
  public ComparatorEMailByDomain()
   {
    super();
   }


  /**
   * Compare two EMail value objects.
   *
   * @param email1 Email 1
   * @param email2 Email 2
   * @return 0: equal; 1: greater; -1: smaller
   * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
   */
  @Override
  public int compare(final EMail email1, final EMail email2)
   {
    Objects.requireNonNull(email1, "email1"); //$NON-NLS-1$
    Objects.requireNonNull(email2, "email2"); //$NON-NLS-1$
    int result = email1.getReverseDomainPart().compareTo(email2.getReverseDomainPart());
    if (result == 0)
     {
      result = email1.getLocalPart().compareTo(email2.getLocalPart());
     }
    return result;
   }

 }