package org.springmodules.feedxt.infrastructure.dao.db4o; import com.db4o.ObjectSet; import com.db4o.query.Predicate; import org.springmodules.db4o.Db4oTemplate; import org.springmodules.feedxt.domain.User; import org.springmodules.feedxt.domain.repository.UserRepository; /** * Db4o {@link org.springmodules.feedxt.domain.repository.UserRepository} * implementation. * * @author Sergio Bossa */ public class Db4oUserDao implements UserRepository { private Db4oTemplate template; public void addUser(User user) { this.template.set(user); } public void removeUser(User user) { ObjectSet set = this.template.query(new UsernamePredicate(user.getUsername())); if (set.hasNext()) { this.template.delete(user); } } public User getUserByUsername(String username) { ObjectSet set = this.template.query(new UsernamePredicate(username)); if (set.hasNext()) { User found = (User) set.next(); found.setUserRepository(this); return found; } else { return null; } } public void setTemplate(Db4oTemplate template) { this.template = template; } private static class UsernamePredicate extends Predicate { private String username; public UsernamePredicate(String username) { this.username = username; } public boolean match(User user) { return user.getUsername().equals(this.username); } } }