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;
+    }
+
+}


Reply via email to