package com.tddinaction.data.person; public class Person { private Long id; private String firstName; private String lastName; private String ssn; private Person inLoveWith; private Person engagedWith; public Person() { } public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public void setId(Long id) { this.id = id; } public Long getId() { return id; } public String getFirstname() { return firstName; } public void setFirstname(String name) { this.firstName = name; } public String getLastname() { return lastName; } public void setLastname(String name) { this.lastName = name; } public String getSsn() { return ssn; } public void setSsn(String ssn) { this.ssn = ssn; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (!obj.getClass().equals(getClass())) { return false; } Person other = (Person) obj; return firstName.equals(other.firstName) && lastName.equals(other.lastName); } public String toString() { return "{" + firstName + " " + lastName + "}"; } public void proposeTo(Person beloved) { if (beloved.acceptProposalFrom(this)) { this.engagedWith = beloved; beloved.engagedWith = this; } } private boolean acceptProposalFrom(Person person) { return person.equals(inLoveWith); } public void isInLoveWith(Person beloved) { inLoveWith = beloved; } public boolean isEngagedWith(Person person) { return person.equals(engagedWith); } }