Repository: incubator-taverna-server
Updated Branches:
  refs/heads/master 586150339 -> 419a7d460


A more consistent way of handling the interfacing of JDO queries.

Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/commit/0f0ea919
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/tree/0f0ea919
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/diff/0f0ea919

Branch: refs/heads/master
Commit: 0f0ea919a8acd6655814d71e48b68ed9fcf10db2
Parents: 5861503
Author: Donal Fellows <[email protected]>
Authored: Thu Sep 8 15:33:46 2016 +0100
Committer: Donal Fellows <[email protected]>
Committed: Thu Sep 8 15:33:46 2016 +0100

----------------------------------------------------------------------
 .../taverna/server/master/ManagementState.java  |  4 +--
 .../master/notification/atom/EventDAO.java      | 29 ++++++++++++++------
 .../master/usage/UsageRecordRecorder.java       | 10 ++++---
 .../taverna/server/master/utils/JDOSupport.java |  6 ++--
 .../server/master/worker/RunDatabaseDAO.java    | 18 +++++++-----
 5 files changed, 43 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/0f0ea919/taverna-server-webapp/src/main/java/org/taverna/server/master/ManagementState.java
----------------------------------------------------------------------
diff --git 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/ManagementState.java
 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/ManagementState.java
index 31d5356..c65a334 100644
--- 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/ManagementState.java
+++ 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/ManagementState.java
@@ -110,9 +110,9 @@ class ManagementState extends JDOSupport<WebappState> 
implements
        private static final int KEY = 42; // whatever
 
        private WebappState get() {
-               Query q = query("id == " + KEY);
+               Query<WebappState> q = query("id == " + KEY);
                q.setUnique(true);
-               return (WebappState) q.execute();
+               return q.executeUnique();
        }
 
        private boolean loadedState;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/0f0ea919/taverna-server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
----------------------------------------------------------------------
diff --git 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
index aaab2a1..8bec456 100644
--- 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
+++ 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
@@ -83,9 +83,7 @@ public class EventDAO extends JDOSupport<Event> implements 
MessageDispatcher {
        @Nonnull
        @WithinSingleTransaction
        public List<Event> getEvents(@Nonnull UsernamePrincipal user) {
-               @SuppressWarnings("unchecked")
-               List<String> ids = (List<String>) 
namedQuery("eventsForUser").execute(
-                               user.getName());
+               List<String> ids = eventsForUser(user);
                if (log.isDebugEnabled())
                        log.debug("found " + ids.size() + " events for user " + 
user);
 
@@ -97,6 +95,12 @@ public class EventDAO extends JDOSupport<Event> implements 
MessageDispatcher {
                return result;
        }
 
+       @SuppressWarnings("unchecked")
+       private List<String> eventsForUser(UsernamePrincipal user) {
+               return (List<String>) namedQuery("eventsForUser").execute(
+                               user.getName());
+       }
+
        /**
         * Get a particular event.
         * 
@@ -109,9 +113,7 @@ public class EventDAO extends JDOSupport<Event> implements 
MessageDispatcher {
        @Nonnull
        @WithinSingleTransaction
        public Event getEvent(@Nonnull UsernamePrincipal user, @Nonnull String 
id) {
-               @SuppressWarnings("unchecked")
-               List<String> ids = (List<String>) 
namedQuery("eventForUserAndId")
-                               .execute(user.getName(), id);
+               List<String> ids = eventsForUserAndId(user, id);
                if (log.isDebugEnabled())
                        log.debug("found " + ids.size() + " events for user " + 
user
                                        + " with id = " + id);
@@ -121,6 +123,12 @@ public class EventDAO extends JDOSupport<Event> implements 
MessageDispatcher {
                return detach(getById(ids.get(0)));
        }
 
+       @SuppressWarnings("unchecked")
+       private List<String> eventsForUserAndId(UsernamePrincipal user, String 
id) {
+               return (List<String>) namedQuery("eventForUserAndId").execute(
+                               user.getName(), id);
+       }
+
        /**
         * Delete a particular event.
         * 
@@ -140,9 +148,7 @@ public class EventDAO extends JDOSupport<Event> implements 
MessageDispatcher {
                Date death = new DateTime().plusDays(-expiryAgeDays).toDate();
                death = new Timestamp(death.getTime()); // UGLY SQL HACK
 
-               @SuppressWarnings("unchecked")
-               List<String> ids = (List<String>) namedQuery("eventsFromBefore")
-                               .execute(death);
+               List<String> ids = eventsFromBefore(death);
                if (log.isDebugEnabled() && !ids.isEmpty())
                        log.debug("found " + ids.size()
                                        + " events to be squelched (older than 
" + death + ")");
@@ -151,6 +157,11 @@ public class EventDAO extends JDOSupport<Event> implements 
MessageDispatcher {
                        delete(getById(id));
        }
 
+       @SuppressWarnings("unchecked")
+       private List<String> eventsFromBefore(Date death) {
+               return (List<String>) 
namedQuery("eventsFromBefore").execute(death);
+       }
+
        @Override
        public boolean isAvailable() {
                return true;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/0f0ea919/taverna-server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
----------------------------------------------------------------------
diff --git 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
index dc9289b..d8989b5 100644
--- 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
+++ 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
@@ -24,7 +24,6 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
 import javax.annotation.PreDestroy;
@@ -155,9 +154,7 @@ public class UsageRecordRecorder extends 
JDOSupport<UsageRecord> {
 
        @WithinSingleTransaction
        public List<JobUsageRecord> getUsageRecords() {
-               @SuppressWarnings("unchecked")
-               Collection<String> urs = (Collection<String>) 
namedQuery("allByDate")
-                               .execute();
+               List<String> urs = allByDate();
                List<JobUsageRecord> result = new ArrayList<>();
                for (String ur : urs)
                        try {
@@ -168,6 +165,11 @@ public class UsageRecordRecorder extends 
JDOSupport<UsageRecord> {
                return result;
        }
 
+       @SuppressWarnings("unchecked")
+       private List<String> allByDate() {
+               return (List<String>) namedQuery("allByDate").execute();
+       }
+
        @PreDestroy
        public void close() {
                if (writer != null)

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/0f0ea919/taverna-server-webapp/src/main/java/org/taverna/server/master/utils/JDOSupport.java
----------------------------------------------------------------------
diff --git 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/utils/JDOSupport.java
 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/utils/JDOSupport.java
index 29a6c53..96f6a11 100644
--- 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/utils/JDOSupport.java
+++ 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/utils/JDOSupport.java
@@ -99,13 +99,14 @@ public abstract class JDOSupport<T> {
         * @return The query, which should be executed to retrieve the results.
         */
        @Nonnull
-       protected Query query(@Nonnull String filter) {
+       protected Query<T> query(@Nonnull String filter) {
                return pm().newQuery(contextClass, filter);
        }
 
        /**
         * Get an instance of a named query attached to the context class (as an
-        * annotation).
+        * annotation). Note that the result is a <i>raw</i> {@link Query} 
because
+        * not all queries return instances of the context class.
         * 
         * @param name
         *            The name of the query.
@@ -113,6 +114,7 @@ public abstract class JDOSupport<T> {
         * @see javax.jdo.annotations.Query
         */
        @Nonnull
+       @SuppressWarnings("rawtypes")
        protected Query namedQuery(@Nonnull String name) {
                return pm().newNamedQuery(contextClass, name);
        }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/0f0ea919/taverna-server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
----------------------------------------------------------------------
diff --git 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
index 18f0e49..1c75d22 100644
--- 
a/taverna-server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
+++ 
b/taverna-server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
@@ -64,7 +64,7 @@ public class RunDatabaseDAO extends JDOSupport<RunConnection> 
{
        // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
        @SuppressWarnings("unchecked")
-       private List<String> nameRuns() {
+       private List<String> names() {
                if (log.isDebugEnabled())
                        log.debug("fetching all run names");
                return (List<String>) namedQuery("names").execute();
@@ -77,16 +77,20 @@ public class RunDatabaseDAO extends 
JDOSupport<RunConnection> {
        public int countRuns() {
                if (log.isDebugEnabled())
                        log.debug("counting the number of runs");
+               return count();
+       }
+
+       private Integer count() {
                return (Integer) namedQuery("count").execute();
        }
 
        @SuppressWarnings("unchecked")
-       private List<String> expiredRuns() {
+       private List<String> timedout() {
                return (List<String>) namedQuery("timedout").execute();
        }
 
        @SuppressWarnings("unchecked")
-       private List<String> unterminatedRuns() {
+       private List<String> unterminated() {
                return (List<String>) namedQuery("unterminated").execute();
        }
 
@@ -122,7 +126,7 @@ public class RunDatabaseDAO extends 
JDOSupport<RunConnection> {
        private List<RunConnection> allRuns() {
                try {
                        List<RunConnection> rcs = new ArrayList<>();
-                       List<String> names = nameRuns();
+                       List<String> names = names();
                        for (String id : names) {
                                try {
                                        if (id != null)
@@ -171,7 +175,7 @@ public class RunDatabaseDAO extends 
JDOSupport<RunConnection> {
        @WithinSingleTransaction
        public Map<String, TavernaRun> listRuns(UsernamePrincipal user, Policy 
p) {
                Map<String, TavernaRun> result = new HashMap<>();
-               for (String id : nameRuns())
+               for (String id : names())
                        try {
                                RemoteRunDelegate rrd = 
pickRun(id).fromDBform(facade);
                                if (p.permitAccess(user, rrd))
@@ -264,7 +268,7 @@ public class RunDatabaseDAO extends 
JDOSupport<RunConnection> {
        public List<String> doClean() {
                if (log.isDebugEnabled())
                        log.debug("deleting runs that timed out before " + new 
Date());
-               List<String> toDelete = expiredRuns();
+               List<String> toDelete = timedout();
                if (log.isDebugEnabled())
                        log.debug("found " + toDelete.size() + " runs to 
delete");
                for (String id : toDelete) {
@@ -290,7 +294,7 @@ public class RunDatabaseDAO extends 
JDOSupport<RunConnection> {
        @WithinSingleTransaction
        public List<RemoteRunDelegate> getPotentiallyNotifiable() {
                List<RemoteRunDelegate> toNotify = new ArrayList<>();
-               for (String id : unterminatedRuns())
+               for (String id : unterminated())
                        try {
                                RunConnection rc = getById(id);
                                toNotify.add(rc.fromDBform(facade));

Reply via email to