Author: husted Date: Sun Nov 25 21:08:19 2007 New Revision: 598128 URL: http://svn.apache.org/viewvc?rev=598128&view=rev Log: WW-1399 Add other count methods.
Added: struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserHelperTest.java Removed: struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/user/UserManagerTest.java Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityHelper.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelper.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelperImpl.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelper.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelperImpl.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelper.java struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelperImpl.java struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/EntityTestCase.java Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityHelper.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityHelper.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityHelper.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityHelper.java Sun Nov 25 21:08:19 2007 @@ -49,12 +49,12 @@ } @SuppressWarnings("unchecked") - public List resultList(String namedQuery, String parameterName, - String value) { + public List resultList(String namedQuery, String parameterName, String value) { EntityManager manager = EntityManagerHelper.getEntityManager(); List result = null; Query query = manager.createNamedQuery(namedQuery); - if (parameterName!=null) query.setParameter(parameterName, value); + if (parameterName != null) + query.setParameter(parameterName, value); try { result = query.getResultList(); } catch (NoResultException e) { @@ -68,7 +68,8 @@ EntityManager manager = EntityManagerHelper.getEntityManager(); Object result = null; Query query = manager.createNamedQuery(namedQuery); - if (parameterName!=null) query.setParameter(parameterName, value); + if (parameterName != null) + query.setParameter(parameterName, value); try { result = query.getSingleResult(); } catch (NoResultException e) { Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java Sun Nov 25 21:08:19 2007 @@ -36,18 +36,31 @@ * </p> */ @Entity(name = "APP_PROTOCOL") [EMAIL PROTECTED]( { @NamedQuery(name = Protocol.FIND_ALL, query = "SELECT p FROM APP_PROTOCOL p") }) [EMAIL PROTECTED]( { + @NamedQuery(name = Protocol.COUNT, query = Protocol.COUNT_QUERY), + @NamedQuery(name = Protocol.FIND_ALL, query = Protocol.FIND_ALL_QUERY) }) public class Protocol extends UuidEntity implements Serializable { // ---- STATICS ---- /** * <p> + * Named query for counting <code>Protocol</code> entities. + * </p> + */ + public static final String COUNT = "Protocol.COUNT"; + + private static final String COUNT_QUERY = "SELECT COUNT(*) FROM APP_PROTOCOL"; + + /** + * <p> * Named query for selecting all <code>Protocol</code> instances. * </p> */ public static final String FIND_ALL = "Protocol.FIND_ALL"; + private static final String FIND_ALL_QUERY = "SELECT p FROM APP_PROTOCOL p"; + // ---- FIELDS ---- @Column(nullable = false) @@ -74,6 +87,11 @@ super(); } + /** + * <p> + * Instantiate a default <code>Protocol</code> object, and load values. + * </p> + */ public Protocol(String description) { super(); setDescription(description); Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelper.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelper.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelper.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelper.java Sun Nov 25 21:08:19 2007 @@ -21,7 +21,32 @@ import java.util.List; import java.util.Map; +import javax.persistence.PersistenceException; + +/** + * <p> + * Custom operations involving the <code>Protocol</code> object. + * <p> + */ public interface ProtocolHelper { + + /** + * <p> + * Provide the current count of + * <p> + * Subscription + * </p> + * objects for all Users. + * </p> + * + * @return current count of + * <p> + * Subscription + * </p> + * objects for all Users + * @throws PersistenceException + */ + int count() throws PersistenceException; /** * <p> Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelperImpl.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelperImpl.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelperImpl.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolHelperImpl.java Sun Nov 25 21:08:19 2007 @@ -24,16 +24,23 @@ import java.util.Map; import javax.persistence.EntityManager; +import javax.persistence.PersistenceException; import entity.EntityManagerHelper; import entity.EntityHelper; /** * <p> - * Custom persistence operations involving the <code>Protocol</code> object. - * <p> + * Default JPA implementation of <code>ProtocolHelper</code>. + * </p> */ public class ProtocolHelperImpl extends EntityHelper implements ProtocolHelper { + + public int count() throws PersistenceException { + Long count = (Long) singleResult(Protocol.COUNT, null, null); + int result = count.intValue(); + return result; + } public Protocol find(String value) { Protocol result = (Protocol) readEntity(Protocol.class, value); Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java Sun Nov 25 21:08:19 2007 @@ -42,12 +42,23 @@ * development). The annotation mode is by field. */ @NamedQueries( { + @NamedQuery(name = Subscription.COUNT, query = Subscription.COUNT_QUERY), @NamedQuery(name = Subscription.FIND_ALL, query = Subscription.FIND_ALL_QUERY), @NamedQuery(name = Subscription.FIND_BY_NAME, query = Subscription.FIND_BY_NAME_QUERY) }) @Entity(name = "APP_SUBSCRIPTION") public class Subscription extends UuidEntity implements Serializable { // ---- STATICS ---- + + /** + * <p> + * Named query for counting <code>Subscription</code> entities for all + * Users. + * </p> + */ + public static final String COUNT = "Subscription.COUNT"; + + private static final String COUNT_QUERY = "SELECT COUNT(*) FROM APP_SUBSCRIPTION"; /** * <p> Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelper.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelper.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelper.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelper.java Sun Nov 25 21:08:19 2007 @@ -18,13 +18,32 @@ */ package entity.subscription; +import javax.persistence.PersistenceException; + /** * <p> - * Custom persistence operations involving the <code>Subscription</code> - * object. + * Custom operations involving the <code>Subscription</code> object. * <p> */ public interface SubscriptionHelper { + + /** + * <p> + * Provide the current count of + * <p> + * Subscription + * </p> + * objects for all Users. + * </p> + * + * @return current count of + * <p> + * Subscription + * </p> + * objects for all Users + * @throws PersistenceException + */ + int count() throws PersistenceException; /** * <p> Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelperImpl.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelperImpl.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelperImpl.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionHelperImpl.java Sun Nov 25 21:08:19 2007 @@ -19,6 +19,7 @@ package entity.subscription; import javax.persistence.EntityManager; +import javax.persistence.PersistenceException; import entity.EntityHelper; import entity.EntityManagerHelper; @@ -30,6 +31,12 @@ */ public class SubscriptionHelperImpl extends EntityHelper implements SubscriptionHelper { + + public int count() throws PersistenceException { + Long count = (Long) singleResult(Subscription.COUNT, null, null); + int result = count.intValue(); + return result; + } public void create(Subscription value) { createEntity(value); Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java Sun Nov 25 21:08:19 2007 @@ -19,9 +19,9 @@ package entity.user; import java.io.Serializable; -import java.util.List; import java.util.ArrayList; -import java.sql.Timestamp; +import java.util.List; + import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -47,18 +47,26 @@ @NamedQueries( { @NamedQuery(name = User.FIND_ALL, query = User.FIND_ALL_QUERY), @NamedQuery(name = User.FIND_BY_NAME, query = User.FIND_BY_NAME_QUERY), - @NamedQuery(name = User.COUNT, query = User.COUNT_QUERY) -}) + @NamedQuery(name = User.COUNT, query = User.COUNT_QUERY) }) public class User extends UuidEntity implements Serializable { // ---- STATICS ---- /** * <p> + * Named query for counting <code>User</code> entities. + * </p> + */ + public static final String COUNT = "User.COUNT"; + + private static final String COUNT_QUERY = "SELECT COUNT(*) FROM APP_USER"; + + /** + * <p> * Named query for finding a <code>User</code> by username. * </p> */ - static final String FIND_ALL = "User.FIND_ALL"; + public static final String FIND_ALL = "User.FIND_ALL"; private static final String FIND_ALL_QUERY = "SELECT u FROM APP_USER u"; @@ -67,17 +75,13 @@ * Named query for finding a <code>User</code> by username. * </p> */ - static final String FIND_BY_NAME = "User.FIND_BY_USERNAME"; + public static final String FIND_BY_NAME = "User.FIND_BY_USERNAME"; private static final String FIND_BY_NAME_QUERY = "SELECT u FROM APP_USER u WHERE u.username = :username"; - - static final String COUNT = "User.COUNT"; - - private static final String COUNT_QUERY = "SELECT COUNT(*) FROM APP_USER"; /** * <p> - * Token representation the "username" attribute. + * Token representing the "username" attribute. * </p> */ static final String NAME = "username"; @@ -259,15 +263,12 @@ * </p> */ public User(String username, String password, String fullName, - String fromAddress, String replyToAddress, Timestamp lastUpdated, - String id) { + String fromAddress, String replyToAddress) { super(); setUsername(username); setPassword(password); setFullName(fullName); setReplyToAddress(replyToAddress); - setLastUpdate(lastUpdated); - setId(id); } } Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelper.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelper.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelper.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelper.java Sun Nov 25 21:08:19 2007 @@ -27,16 +27,25 @@ * */ public interface UserHelper { - + /** * <p> - * Provide the current count of <p>User</p> objects. - * </p> - * @return current count of <p>User</p> objects + * Provide the current count of + * <p> + * User + * </p> + * objects. + * </p> + * + * @return current count of + * <p> + * User + * </p> + * objects * @throws PersistenceException */ int count() throws PersistenceException; - + /** * <p> * Insert the specified <code>User</code> into the persistent database. Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelperImpl.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelperImpl.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelperImpl.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserHelperImpl.java Sun Nov 25 21:08:19 2007 @@ -33,7 +33,7 @@ int result = count.intValue(); return result; } - + public void create(User value) throws PersistenceException { createEntity(value); } Modified: struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/EntityTestCase.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/EntityTestCase.java?rev=598128&r1=598127&r2=598128&view=diff ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/EntityTestCase.java (original) +++ struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/EntityTestCase.java Sun Nov 25 21:08:19 2007 @@ -1,5 +1,7 @@ package entity; +import java.util.Random; + import javax.persistence.EntityManager; import junit.framework.TestCase; @@ -8,16 +10,30 @@ protected EntityManager manager; protected boolean rollback = false; + protected String base; + protected Random generator; + + protected String nextBase() { + int r = generator.nextInt(); + return String.valueOf(r); + } + + protected boolean isNotEmpty(String value) { + return (value != null) && (value.length() > 0); + } public void setUp() throws Exception { super.setUp(); + generator = new Random(); + base = nextBase(); manager = EntityManagerHelper.getEntityManager(); EntityManagerHelper.beginTransaction(); } public void tearDown() throws Exception { super.tearDown(); - if (rollback) EntityManagerHelper.rollback(); + if (rollback) + EntityManagerHelper.rollback(); EntityManagerHelper.commit(); EntityManagerHelper.closeEntityManager(); } Added: struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserHelperTest.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserHelperTest.java?rev=598128&view=auto ============================================================================== --- struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserHelperTest.java (added) +++ struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserHelperTest.java Sun Nov 25 21:08:19 2007 @@ -0,0 +1,100 @@ +package entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.NoResultException; +import javax.persistence.Query; + +import entity.protocol.Protocol; +import entity.protocol.ProtocolHelper; +import entity.protocol.ProtocolHelperImpl; +import entity.subscription.Subscription; +import entity.user.User; +import entity.user.UserHelper; +import entity.user.UserHelperImpl; + +public class UserHelperTest extends EntityTestCase { + + protected UserHelper helper; + int beforeCount = 0; + + public void setUp() throws Exception { + super.setUp(); + helper = new UserHelperImpl(); + beforeCount = helper.count(); + } + + private User newUser() { + return new User("user_" + base, "pass_" + base); + } + + public void testCount() throws Exception { + EntityManager manager = EntityManagerHelper.getEntityManager(); + Object result = null; + Query query = manager.createNamedQuery(User.COUNT); + try { + result = query.getSingleResult(); + } catch (NoResultException e) { + result = null; + } + assertNotNull(result); + Long count = (Long) result; + assertTrue(0 < count.intValue()); + } + + public void testCreate() throws Exception { + User user = newUser(); + String before = user.getId(); + assertTrue("ID not assigned on New", isNotEmpty(before)); + helper.create(user); + String after = user.getId(); + assertTrue("Initial ID changed on Create", before.equals(after)); + int afterCount = helper.count(); + assertTrue("Expected count to increase", afterCount > beforeCount); + } + + private List<Subscription> getSubscriptions(User user) { + ProtocolHelper protocolManager = new ProtocolHelperImpl(); + boolean autoConnect = false; + List<Protocol> protocols = protocolManager.findAll(); + int protocolMax = protocols.size(); + List<Subscription> subscriptions = new ArrayList<Subscription>(); + + for (int i = 0; i < 3; i++) { + String base = String.valueOf(i + 1); + autoConnect = !autoConnect; + int protocolIndex = (i % protocolMax); + Subscription sub = new Subscription("host_" + base, user, "user_" + + base, "pass_" + base, protocols.get(protocolIndex), + autoConnect); + subscriptions.add(sub); + } + return subscriptions; + } + + public void testCreateWithSubscriptions() throws Exception { + User user = newUser(); + helper.create(user); + List<Subscription> subscriptions = getSubscriptions(user); + user.addSubscriptions(subscriptions); + helper.update(user); + assertTrue("Expected ID", user.getId() != null); + assertTrue(user.getSubscriptions() != null); + } + + public void testCreateDelete() throws Exception { + // rollback = true; + User user = new User(); + user.setUsername("user_" + base); + user.setPassword("pass_" + base); + helper.create(user); + // throw new PersistenceException(); + helper.delete(user); + int afterCount = helper.count(); + assertTrue(beforeCount == afterCount); + // rollback = false; + } + +}