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