/*
* Copyright 2012 McEvoy Software Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.mycontacts.model;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
/**
* This class is to simulate the sort of relational/hierarchial data model typically
* found in business applications.
*
* This sort of data would normally be in a database or accessed over a webservice
* but for simplicity of the tutorial we are holding it in memory
*
* @author brad
*/
public final class ContactsDao {
private final Set<Contact> contacts = new HashSet<Contact>();
private final Set<User> users = new HashSet<User>();
private long contactsVersion = 0; // used for the ctag
public ContactsDao() {
addUser("admin", "password");
}
public synchronized void incrementContactsVersion() {
contactsVersion++;
}
public long getContactsVersion() {
return contactsVersion;
}
public Contact addContact(String fileName) {
return addContact(fileName, null, null, null, null);
}
public Contact addContact(String firstName, String surName) {
return addContact(firstName, surName, null, null);
}
public Contact addContact(String firstName, String surName, String email, String phone) {
String fileName = UUID.randomUUID().toString();
return addContact(fileName, firstName, surName, email, phone);
}
public Contact addContact(String fileName, String firstName, String surName, String email, String phone) {
Contact c = new Contact();
c.setFileName(fileName);
c.setUid(fileName);
c.setGivenName(firstName);
c.setSurName(surName);
c.setMail(email);
c.setTelephonenumber(phone);
contacts.add(c);
return c;
}
public User addUser(String username, String password) {
User u = new User();
u.setUserName(username);
u.setPassword(password);
users.add(u);
return u;
}
public final User findUser(String username) {
for(User u : users ) {
if( u.getUserName().equals(username)) {
return u;
}
}
return null;
}
public Set<User> getUsers() {
return users;
}
public Set<Contact> getContacts() {
return contacts;
}
public Contact findContact(String uid) {
for( Contact c : contacts) {
if( c.getUid().equals(uid)) {
return c;
}
}
return null;
}
public class User {
private String userName;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
public class Contact {
private String fileName;
private String uid;
private String firstName;
private String lastName;
private String phone;
private String email;
private String icalData;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getUid() {
return uid;
}
public void setUid(String name) {
this.uid = name;
}
public String getGivenName() {
return firstName;
}
public void setGivenName(String firstName) {
this.firstName = firstName;
}
public String getSurName() {
return lastName;
}
public void setSurName(String lastName) {
this.lastName = lastName;
}
public String getMail() {
return email;
}
public void setMail(String email) {
this.email = email;
}
public String getTelephonenumber() {
return phone;
}
public void setTelephonenumber(String phone) {
this.phone = phone;
}
public String getIcalData() {
return icalData;
}
public void setIcalData(String icalData) {
this.icalData = icalData;
}
}
}