001 /* 002 * Copyright 2002-2006 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.richclient.samples.simple.domain; 017 018 import java.math.BigDecimal; 019 import java.util.Date; 020 import java.util.List; 021 import java.util.ArrayList; 022 023 /** 024 * This class provides a trivial domain object for the sample application. It represents a simple Contact entry in a 025 * personal address book. It is not very useful in that it only allows a single address for an individual and it doesn't 026 * support arbitrary contact data, just predefined fields. However, since we're not going into the Address Book 027 * business, this will suffice for demonstration purposes in this sample application. 028 * <p> 029 * This class makes use of one subordinate (or nested) object in order to show how nested property paths can be used in 030 * forms. It doesn't really serve any other great design need. 031 * <p> 032 * The validation rules for this class are provided externally, by {@link SimpleValidationRulesSource}. This 033 * configuration is often required when you don't have any mechanism to extend the domain object directly, or for other 034 * design reasons, don't want to include the validation rules directly in the domain object implementation. 035 * @author Larry Streepy 036 * @see SimpleValidationRulesSource 037 */ 038 public class Contact implements Comparable<Contact> 039 { 040 041 private int id; 042 043 private ContactType contactType; 044 045 private String firstName; 046 047 private String middleName; 048 049 private String lastName; 050 051 private Date dateOfBirth; 052 053 private Address address; 054 055 private String homePhone; 056 057 private String workPhone; 058 059 private String emailAddress; 060 061 private String memo; 062 063 private BigDecimal monthlyIncome; 064 065 private List<TodoItem> todoItems; 066 067 /** 068 * Default constructor. 069 */ 070 public Contact() { 071 setAddress(new Address()); // Avoid null sub-object 072 todoItems = new ArrayList<TodoItem>(); 073 } 074 075 /** 076 * @return the id 077 */ 078 public int getId() { 079 return id; 080 } 081 082 /** 083 * @param id the id to set 084 */ 085 public void setId(int id) { 086 this.id = id; 087 } 088 089 /** 090 * @return the address 091 */ 092 public Address getAddress() { 093 return address; 094 } 095 096 /** 097 * @param address the address to set 098 */ 099 public void setAddress(Address address) { 100 this.address = address; 101 } 102 103 /** 104 * @return the dateOfBirth 105 */ 106 public Date getDateOfBirth() { 107 return dateOfBirth; 108 } 109 110 /** 111 * @param dateOfBirth the dateOfBirth to set 112 */ 113 public void setDateOfBirth(Date dateOfBirth) { 114 this.dateOfBirth = dateOfBirth; 115 } 116 117 /** 118 * @return the emailAddress 119 */ 120 public String getEmailAddress() { 121 return emailAddress; 122 } 123 124 /** 125 * @param emailAddress the emailAddress to set 126 */ 127 public void setEmailAddress(String emailAddress) { 128 this.emailAddress = emailAddress; 129 } 130 131 /** 132 * @return the firstName 133 */ 134 public String getFirstName() { 135 return firstName; 136 } 137 138 /** 139 * @param firstName the firstName to set 140 */ 141 public void setFirstName(String firstName) { 142 this.firstName = firstName; 143 } 144 145 /** 146 * @return the homePhone 147 */ 148 public String getHomePhone() { 149 return homePhone; 150 } 151 152 /** 153 * @param homePhone the homePhone to set 154 */ 155 public void setHomePhone(String homePhone) { 156 this.homePhone = homePhone; 157 } 158 159 /** 160 * @return the lastName 161 */ 162 public String getLastName() { 163 return lastName; 164 } 165 166 /** 167 * @param lastName the lastName to set 168 */ 169 public void setLastName(String lastName) { 170 this.lastName = lastName; 171 } 172 173 /** 174 * @return the middleName 175 */ 176 public String getMiddleName() { 177 return middleName; 178 } 179 180 /** 181 * @param middleName the middleName to set 182 */ 183 public void setMiddleName(String middleName) { 184 this.middleName = middleName; 185 } 186 187 /** 188 * @return the workPhone 189 */ 190 public String getWorkPhone() { 191 return workPhone; 192 } 193 194 /** 195 * @param workPhone the workPhone to set 196 */ 197 public void setWorkPhone(String workPhone) { 198 this.workPhone = workPhone; 199 } 200 201 /** 202 * @return the contactType 203 */ 204 public ContactType getContactType() { 205 return contactType; 206 } 207 208 /** 209 * @param contactType the contactType to set 210 */ 211 public void setContactType(ContactType contactType) { 212 this.contactType = contactType; 213 } 214 215 public String getMemo() 216 { 217 return memo; 218 } 219 220 public void setMemo(String memo) 221 { 222 this.memo = memo; 223 } 224 225 public BigDecimal getMonthlyIncome() 226 { 227 return monthlyIncome; 228 } 229 230 public void setMonthlyIncome(BigDecimal monthlyIncome) 231 { 232 this.monthlyIncome = monthlyIncome; 233 } 234 235 public List<TodoItem> getTodoItems() 236 { 237 return todoItems; 238 } 239 240 public void setTodoItems(List<TodoItem> todoItems) 241 { 242 this.todoItems = todoItems; 243 } 244 245 /** 246 * Compare two objects for equality. Just test their ids. 247 * @param o object to compare 248 */ 249 public boolean equals(Object o) { 250 if (o instanceof Contact) { 251 return id == ((Contact) o).id; 252 } 253 return false; 254 } 255 256 /** 257 * Hashcode. 258 */ 259 public int hashCode() { 260 return id; 261 } 262 263 public int compareTo(Contact o) 264 { 265 return getId() - o.getId(); 266 } 267 }