summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/gui/tabs
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-11-18 09:53:33 +0100
committerAndrew Branson <andrew.branson@cern.ch>2013-11-18 17:29:55 +0100
commitb9402204384bb5cfc25e6038d2f976f9f0c16fba (patch)
tree2ae22a8f52bfbf11e2c920929bcd7a6ead2235dd /src/main/java/com/c2kernel/gui/tabs
parentf19c74a14c0565c55c0f51607f25eed86e93c70d (diff)
3.0-SNAPSHOT
IssueID #28
Diffstat (limited to 'src/main/java/com/c2kernel/gui/tabs')
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/ExecutionPane.java2
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/HistoryPane.java13
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/JobListPane.java3
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/execution/ActivityItem.java7
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java92
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/execution/RequestButton.java18
6 files changed, 83 insertions, 52 deletions
diff --git a/src/main/java/com/c2kernel/gui/tabs/ExecutionPane.java b/src/main/java/com/c2kernel/gui/tabs/ExecutionPane.java
index 9d9a395..1f5d3b8 100644
--- a/src/main/java/com/c2kernel/gui/tabs/ExecutionPane.java
+++ b/src/main/java/com/c2kernel/gui/tabs/ExecutionPane.java
@@ -86,7 +86,7 @@ public class ExecutionPane extends EntityTabPane implements EntityProxyObserver<
jobList = ((ItemProxy)sourceEntity.getEntity()).getJobList(MainFrame.userAgent);
activitySelector.addItem(emptyAct);
for (Job thisJob : jobList) {
- Logger.msg(7, "ExecutionPane - loadJobList " + thisJob.hasOutcome() + "|" + thisJob.getSchemaType() + "|" + thisJob.getSchemaVersion() + "|");
+ //Logger.msg(7, "ExecutionPane - loadJobList " + thisJob.hasOutcome() + "|" + thisJob.getSchemaName() + "|" + thisJob.getSchemaVersion() + "|");
ActivityItem newAct = new ActivityItem(thisJob);
if (activities.contains(newAct)) {
int actIndex = activities.indexOf(newAct);
diff --git a/src/main/java/com/c2kernel/gui/tabs/HistoryPane.java b/src/main/java/com/c2kernel/gui/tabs/HistoryPane.java
index 7a24f37..8384dd8 100644
--- a/src/main/java/com/c2kernel/gui/tabs/HistoryPane.java
+++ b/src/main/java/com/c2kernel/gui/tabs/HistoryPane.java
@@ -28,9 +28,10 @@ import com.c2kernel.entity.proxy.MemberSubscription;
import com.c2kernel.events.Event;
import com.c2kernel.events.History;
import com.c2kernel.gui.MainFrame;
-import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
+import com.c2kernel.lifecycle.instance.stateMachine.StateMachine;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.utils.Language;
+import com.c2kernel.utils.LocalObjectLoader;
import com.c2kernel.utils.Logger;
/**
@@ -176,6 +177,7 @@ public class HistoryPane extends EntityTabPane implements ActionListener, Entity
private class HistoryTableModel extends AbstractTableModel {
Event[] event;
+ StateMachine[] sm;
Integer[] ids;
int loaded = 0;
int startId = 0;
@@ -192,9 +194,13 @@ public class HistoryPane extends EntityTabPane implements ActionListener, Entity
public void setView(int startId, int size) {
event = new Event[size];
ids = new Integer[size];
+ sm = new StateMachine[size];
this.startId = startId;
for (int i=0; i<size; i++) {
event[i] = history.getEvent(startId+i);
+ try {
+ sm[i] = LocalObjectLoader.getStateMachine(event[i].getStateMachineName(), event[i].getStateMachineVersion());
+ } catch (Exception ex) { Logger.error(ex); }
ids[i] = new Integer(startId+i);
loaded = i+1;
}
@@ -258,11 +264,12 @@ public class HistoryPane extends EntityTabPane implements ActionListener, Entity
switch (columnIndex) {
case 0: return ids[rowIndex];
case 1: return event[rowIndex].getStepName();
- case 2: return Transitions.getTransitionName(event[rowIndex].getTransition());
+ case 2: return sm[rowIndex]==null?"Unknown":
+ sm[rowIndex].getTransition(event[rowIndex].getTransition()).getName();
case 3: return event[rowIndex].getTimeString();
case 4: return event[rowIndex].getAgentName();
case 5: return event[rowIndex].getAgentRole();
- case 6: return event[rowIndex].getSchemaName();
+ case 6: return event[rowIndex].getSchemaName()+"v"+event[rowIndex].getSchemaVersion();
case 7: return event[rowIndex].getViewName();
default: return "";
}
diff --git a/src/main/java/com/c2kernel/gui/tabs/JobListPane.java b/src/main/java/com/c2kernel/gui/tabs/JobListPane.java
index 619a589..20a4e05 100644
--- a/src/main/java/com/c2kernel/gui/tabs/JobListPane.java
+++ b/src/main/java/com/c2kernel/gui/tabs/JobListPane.java
@@ -30,7 +30,6 @@ import com.c2kernel.entity.agent.JobList;
import com.c2kernel.entity.proxy.EntityProxyObserver;
import com.c2kernel.entity.proxy.MemberSubscription;
import com.c2kernel.gui.MainFrame;
-import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.process.Gateway;
import com.c2kernel.property.Property;
@@ -265,7 +264,7 @@ public class JobListPane extends EntityTabPane implements ActionListener, Entity
case 0: return ids[rowIndex];
case 1: return itemNames[rowIndex];
case 2: return job[rowIndex].getStepName();
- case 3: return Transitions.getTransitionName(job[rowIndex].getPossibleTransition());
+ case 3: return job[rowIndex].getTransition().getName();
default: return "";
}
} catch (Exception e) {
diff --git a/src/main/java/com/c2kernel/gui/tabs/execution/ActivityItem.java b/src/main/java/com/c2kernel/gui/tabs/execution/ActivityItem.java
index 6a8f2f7..bacdd52 100644
--- a/src/main/java/com/c2kernel/gui/tabs/execution/ActivityItem.java
+++ b/src/main/java/com/c2kernel/gui/tabs/execution/ActivityItem.java
@@ -2,11 +2,11 @@ package com.c2kernel.gui.tabs.execution;
import java.util.ArrayList;
import com.c2kernel.entity.agent.Job;
-import com.c2kernel.lifecycle.instance.stateMachine.States;
public class ActivityItem {
public String stepPath;
public int state;
+ public String stateName;
public String name;
ArrayList<Job> jobs = new ArrayList<Job>();
@@ -18,7 +18,8 @@ public class ActivityItem {
public ActivityItem(Job thisJob) {
stepPath = thisJob.getStepPath();
- state = thisJob.getCurrentState();
+ state = thisJob.getTransition().getOriginStateId();
+ stateName = thisJob.getOriginStateName();
name = thisJob.getStepName();
jobs.add(thisJob);
}
@@ -37,7 +38,7 @@ public class ActivityItem {
@Override
public String toString() {
- return name+(state>-1?" ("+States.getStateName(state)+")":"");
+ return name+(state>-1?" ("+stateName+")":"");
}
@Override
diff --git a/src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java b/src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java
index 7723e16..a265bc1 100644
--- a/src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java
+++ b/src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java
@@ -19,6 +19,7 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
+import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.agent.Job;
import com.c2kernel.entity.proxy.ItemProxy;
@@ -29,6 +30,7 @@ import com.c2kernel.gui.tabs.outcome.InvalidOutcomeException;
import com.c2kernel.gui.tabs.outcome.InvalidSchemaException;
import com.c2kernel.gui.tabs.outcome.OutcomeException;
import com.c2kernel.gui.tabs.outcome.OutcomeHandler;
+import com.c2kernel.persistency.outcome.Schema;
import com.c2kernel.utils.FileStringUtility;
import com.c2kernel.utils.Language;
import com.c2kernel.utils.LocalObjectLoader;
@@ -171,29 +173,42 @@ public class ActivityViewer extends JPanel implements Runnable {
outcomeButtons.add(Box.createHorizontalStrut(5));
newButton.setEnabled(false);
- if (thisJob.requiresOutcome() && outcomePanel == null) {
- try {
- outcomePanel = getOutcomeHandler(thisJob);
- outcomeView = outcomePanel.getPanel();
- newButton.setEnabled(true);
- } catch (ObjectNotFoundException ex) {
- outcomeView.add(new JLabel(Language.translate("Schema not found:")+" "+thisJob.getSchemaType()+" v"+thisJob.getSchemaVersion()));
- } catch (Exception ex) {
- outcomeView.add(new JLabel(Language.translate("ERROR loading outcome editor: ")
- +ex.getClass().getName()+" ("+ex.getMessage()+")"));
- Logger.error(ex);
- }
- }
- else if (thisJob.isError()) {
- try {
- errorPanel = getOutcomeHandler(thisJob);
- errorView.add(errorPanel.getPanel());
- newButton.setEnabled(true);
- } catch (Exception ex) {
- errorView.add(new JLabel(Language.translate("ERROR loading error editor: ")
+ if (thisJob.hasOutcome()) {
+
+ String schemaName;
+ int schemaVersion;
+ try {
+ schemaName = thisJob.getSchemaName();
+ schemaVersion = thisJob.getSchemaVersion();
+ } catch (Exception e) {
+ newButton.setToolTipText("Could not load schema for this job.");
+ continue;
+ }
+
+ if(!schemaName.equals("Errors") && outcomePanel == null) {
+ try {
+ outcomePanel = getOutcomeHandler(thisJob);
+ outcomeView = outcomePanel.getPanel();
+ newButton.setEnabled(true);
+ } catch (ObjectNotFoundException ex) {
+ outcomeView.add(new JLabel(Language.translate("Schema not found:")+" "+schemaName+" v"+schemaVersion));
+ } catch (Exception ex) {
+ outcomeView.add(new JLabel(Language.translate("ERROR loading outcome editor: ")
+ex.getClass().getName()+" ("+ex.getMessage()+")"));
-
- }
+ Logger.error(ex);
+ }
+ }
+ if (schemaName.equals("Errors")) {
+ try {
+ errorPanel = getOutcomeHandler(thisJob);
+ errorView.add(errorPanel.getPanel());
+ newButton.setEnabled(true);
+ } catch (Exception ex) {
+ errorView.add(new JLabel(Language.translate("ERROR loading error editor: ")
+ +ex.getClass().getName()+" ("+ex.getMessage()+")"));
+
+ }
+ }
}
else
newButton.setEnabled(true);
@@ -212,11 +227,11 @@ public class ActivityViewer extends JPanel implements Runnable {
}
- public OutcomeHandler getOutcomeHandler(Job thisJob) throws ObjectNotFoundException, InvalidSchemaException, InvalidOutcomeException {
+ public OutcomeHandler getOutcomeHandler(Job thisJob) throws ObjectNotFoundException, InvalidSchemaException, InvalidOutcomeException, InvalidDataException {
String schema;
OutcomeHandler thisForm;
- schema = LocalObjectLoader.getSchema(thisJob.getSchemaType(), thisJob.getSchemaVersion()).schema;
- thisForm = EntityTabPane.getOutcomeHandler(thisJob.getSchemaType(), thisJob.getSchemaVersion());
+ schema = LocalObjectLoader.getSchema(thisJob.getSchemaName(), thisJob.getSchemaVersion()).schema;
+ thisForm = EntityTabPane.getOutcomeHandler(thisJob.getSchemaName(), thisJob.getSchemaVersion());
thisForm.setReadOnly(false);
thisForm.setDescription(schema);
String outcomeString = thisJob.getOutcomeString();
@@ -280,21 +295,21 @@ public class ActivityViewer extends JPanel implements Runnable {
public void execute(Job thisJob) {
try {
- if (thisJob.requiresOutcome() && thisJob.getSchemaType().length() > 0)
- thisJob.setOutcome(outcomePanel.getOutcome());
- else if (thisJob.isError()) {
- //JOptionPane errorDialog = new JOptionPane();
- Box errorBox = Box.createVerticalBox();
- errorBox.add(new JLabel("Please give details of the error:"));
- errorBox.add(errorView);
- int result = JOptionPane.showConfirmDialog(this, errorBox, "Send Error", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
- if (result != JOptionPane.OK_OPTION)
- return;
- thisJob.setOutcome(errorPanel.getOutcome());
- }
+ if (thisJob.hasOutcome())
+ if (!thisJob.getSchemaName().equals("Errors"))
+ thisJob.setOutcome(outcomePanel.getOutcome());
+ else {
+ Box errorBox = Box.createVerticalBox();
+ errorBox.add(new JLabel("Please give details of the error:"));
+ errorBox.add(errorView);
+ int result = JOptionPane.showConfirmDialog(this, errorBox, "Send Error", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
+ if (result != JOptionPane.OK_OPTION)
+ return;
+ thisJob.setOutcome(errorPanel.getOutcome());
+ }
executingJob = thisJob;
new Thread(this).start();
- } catch (OutcomeException ex) {
+ } catch (Exception ex) {
MainFrame.exceptionDialog(ex);
}
@@ -313,6 +328,7 @@ public class ActivityViewer extends JPanel implements Runnable {
} catch (Exception e) {
Logger.error(e);
MainFrame.progress.stopBouncing(Language.translate("Error during execution"));
+ status.setText(Language.translate("Error during execution: "+e.getClass().getSimpleName()));
MainFrame.exceptionDialog(e);
}
enableAllButtons(true);
diff --git a/src/main/java/com/c2kernel/gui/tabs/execution/RequestButton.java b/src/main/java/com/c2kernel/gui/tabs/execution/RequestButton.java
index 96123ff..440bb58 100644
--- a/src/main/java/com/c2kernel/gui/tabs/execution/RequestButton.java
+++ b/src/main/java/com/c2kernel/gui/tabs/execution/RequestButton.java
@@ -6,7 +6,8 @@ import java.awt.event.ActionListener;
import javax.swing.JButton;
import com.c2kernel.entity.agent.Job;
-import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
+import com.c2kernel.gui.MainFrame;
+import com.c2kernel.utils.Logger;
/**
* Each job gets a RequestButton
*/
@@ -20,10 +21,17 @@ import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
super();
this.myJob = myJob;
this.parent = parent;
- String label = Transitions.getTransitionName(myJob.getPossibleTransition());
- label = Character.toUpperCase(label.charAt(0))+label.substring(1);
- if (myJob.requiresOutcome()) setBackground(Color.white);
- if (myJob.isError()) setBackground(Color.pink);
+ String label = myJob.getTransition().getName();
+ if (myJob.hasOutcome()) {
+ setBackground(Color.white);
+ try {
+ if (myJob.getSchemaName().equals("Errors")) setBackground(Color.pink);
+ } catch (Exception e) {
+ Logger.error(e);
+ MainFrame.exceptionDialog(e);
+ setEnabled(false);
+ }
+ }
super.setText(label);
addActionListener(this);
}