summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2012-05-30 08:37:45 +0200
committerAndrew Branson <andrew.branson@cern.ch>2012-05-30 08:37:45 +0200
commitb086f57f56bf0eb9dab9cf321a0f69aaaae84347 (patch)
tree8e6e26e8b7eed6abad7a17b093bdbb55c5e6b1ba /src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java
parent22088ae8d2d5ff390518dbe1c4372325ffb3a647 (diff)
Initial Maven Conversion
Diffstat (limited to 'src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java')
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java b/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java
new file mode 100644
index 0000000..5b8be63
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java
@@ -0,0 +1,70 @@
+package com.c2kernel.lifecycle.instance;
+
+import java.util.Enumeration;
+import java.util.Iterator;
+
+import com.c2kernel.entity.Agent;
+import com.c2kernel.entity.AgentHelper;
+import com.c2kernel.entity.agent.Job;
+import com.c2kernel.entity.agent.JobArrayList;
+import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
+import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.RolePath;
+import com.c2kernel.utils.CastorXMLUtility;
+import com.c2kernel.utils.Logger;
+
+final class JobPusher extends Thread {
+ private final Activity activity;
+ private final RolePath myRole;
+
+ JobPusher(Activity activity, RolePath role) {
+ this.activity = activity;
+ this.myRole = role;
+ }
+
+ @Override
+ public void run()
+ {
+ Thread.currentThread().setName("Agent job pusher for "+activity.getName()+" to role "+myRole);
+ for (Enumeration<AgentPath> e = myRole.getChildren(); e.hasMoreElements();)
+ {
+ AgentPath nextAgent = e.nextElement();
+ Logger.msg(7, "Activity.pushJobsToAgents() - Calculating jobs for " + nextAgent.getAgentName());
+ try
+ {
+ // get joblist for user
+ JobArrayList jobList = new JobArrayList(this.activity.calculateJobs(nextAgent, false));
+ // only transmit start, complete and resume jobs
+ for (Iterator<Job> element = jobList.list.iterator(); element.hasNext();)
+ {
+ Job thisJob = element.next();
+ if (thisJob.getPossibleTransition() != Transitions.START
+ && thisJob.getPossibleTransition() != Transitions.COMPLETE
+ && thisJob.getPossibleTransition() != Transitions.RESUME
+ && thisJob.getPossibleTransition() != Transitions.SUSPEND
+ && thisJob.getPossibleTransition() != Transitions.REASSIGN)
+ element.remove();
+ }
+ Logger.msg(7, "Activity.pushJobsToAgents() - User will receive " + jobList.list.size() + " jobs");
+ String stringJobs = CastorXMLUtility.marshall(jobList);
+ // push it to the agent
+ org.omg.CORBA.Object agentIOR = nextAgent.getIOR();
+ Agent thisAgent = AgentHelper.narrow(agentIOR);
+ Logger.debug("Calling agent "+thisAgent.getSystemKey()+" from "+activity.getPath());
+ thisAgent.refreshJobList(this.activity.getItemEntityPath().getSysKey(), activity.getPath(), stringJobs);
+ }
+ catch (Exception ex)
+ {
+ Logger.error(
+ "Agent "
+ + nextAgent.getAgentName()
+ + " of role "
+ + myRole
+ + " could not be found to be informed of a change in "
+ + this.activity.getItemEntityPath().getSysKey());
+ Logger.error(ex);
+ }
+ }
+
+ }
+} \ No newline at end of file