summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java20
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java2
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java25
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java75
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java2
-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
11 files changed, 155 insertions, 104 deletions
diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java
index b7398fe..08cbf4c 100644
--- a/src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java
+++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java
@@ -118,18 +118,18 @@ public class ElemActDefOutcomeHandler extends VertexPropertyPanel implements Out
public static void exportAct(File dir, BufferedWriter imports, ActivityDef actDef) throws Exception {
// Export associated schema
- exportSchema((String)actDef.getProperties().get("SchemaType"), (String)actDef.getProperties().get("SchemaVersion"), imports, new File(dir, "OD"));
+ exportSchema((String)actDef.getProperties().get("SchemaType"), Integer.parseInt(actDef.getProperties().get("SchemaVersion").toString()), imports, new File(dir, "OD"));
// Export associated script
- exportScript((String)actDef.getProperties().get("ScriptName"), (String)actDef.getProperties().get("ScriptVersion"), imports, new File(dir, "SC"));
+ exportScript((String)actDef.getProperties().get("ScriptName"), Integer.parseInt(actDef.getProperties().get("ScriptVersion").toString()), imports, new File(dir, "SC"));
//Export child act if composite
if (actDef instanceof CompositeActivityDef) {
CompositeActivityDef compActDef = (CompositeActivityDef)actDef;
for (int i=0; i<compActDef.getChildren().length; i++) { // export slot defined scripts and schemas
GraphableVertex vert = compActDef.getChildren()[i];
- exportScript((String)vert.getProperties().get("ScriptName"), (String)vert.getProperties().get("ScriptVersion"), imports, new File(dir, "SC"));
- exportScript((String)vert.getProperties().get("RoutingScriptName"), (String)vert.getProperties().get("RoutingScriptVersion"), imports, new File(dir, "SC"));
- exportSchema((String)vert.getProperties().get("SchemaType"), (String)vert.getProperties().get("SchemaVersion"), imports, new File(dir, "OD"));
+ exportScript((String)vert.getProperties().get("ScriptName"), Integer.parseInt(actDef.getProperties().get("ScriptVersion").toString()), imports, new File(dir, "SC"));
+ exportScript((String)vert.getProperties().get("RoutingScriptName"), Integer.parseInt(actDef.getProperties().get("RoutingScriptVersion").toString()), imports, new File(dir, "SC"));
+ exportSchema((String)vert.getProperties().get("SchemaType"), Integer.parseInt(actDef.getProperties().get("SchemaVersion").toString()), imports, new File(dir, "OD"));
}
GraphableVertex[] childDefs = compActDef.getLayoutableChildren();
for (GraphableVertex childDef : childDefs) {
@@ -139,16 +139,16 @@ public class ElemActDefOutcomeHandler extends VertexPropertyPanel implements Out
// export marshalled compAct
FileStringUtility.string2File(new File(new File(dir, "CA"), compActDef.getActName()+".xml"), Gateway.getMarshaller().marshall(compActDef));
if (imports!=null) {
- imports.write("<Resource name=\""+compActDef.getActName()+"\" "+(compActDef.getVersion()==null?"":"version=\""+compActDef.getVersion()+"\" ")+"type=\"CA\">boot/CA/"+compActDef.getActName()+".xml</Resource>\n");
+ imports.write("<Resource name=\""+compActDef.getActName()+"\" "+(compActDef.getVersion()==-1?"":"version=\""+compActDef.getVersion()+"\" ")+"type=\"CA\">boot/CA/"+compActDef.getActName()+".xml</Resource>\n");
}
}
else {
FileStringUtility.string2File(new File(new File(dir, "EA"), actDef.getActName()+".xml"), Gateway.getMarshaller().marshall(actDef));
- if (imports!=null) imports.write("<Resource name=\""+actDef.getActName()+"\" "+(actDef.getVersion()==null?"":"version=\""+actDef.getVersion()+"\" ")+"type=\"EA\">boot/EA/"+actDef.getActName()+".xml</Resource>\n");
+ if (imports!=null) imports.write("<Resource name=\""+actDef.getActName()+"\" "+(actDef.getVersion()==-1?"":"version=\""+actDef.getVersion()+"\" ")+"type=\"EA\">boot/EA/"+actDef.getActName()+".xml</Resource>\n");
}
}
- public static void exportScript(String name, String version, BufferedWriter imports, File dir) {
+ public static void exportScript(String name, Integer version, BufferedWriter imports, File dir) {
if (name == null || name.length()==0 || name.contains(":")) return;
try {
FileStringUtility.string2File(new File(dir, name+".xml"),
@@ -160,11 +160,11 @@ public class ElemActDefOutcomeHandler extends VertexPropertyPanel implements Out
}
}
- public static void exportSchema(String name, String version, BufferedWriter imports, File dir) {
+ public static void exportSchema(String name, Integer version, BufferedWriter imports, File dir) {
if (name == null || name.length()==0) return;
try {
FileStringUtility.string2File(new File(dir, name+".xsd"),
- LocalObjectLoader.getSchema(name, Integer.parseInt(version)).schema);
+ LocalObjectLoader.getSchema(name, version).schema);
if (imports!=null) imports.write("<Resource name=\""+name+"\" "+(version==null?"":"version=\""+version+"\" ")+"type=\"OD\">boot/OD/"+name+".xsd</Resource>\n");
} catch (Exception ex) {
Logger.error(ex);
diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java
index fe70678..17b2a38 100644
--- a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java
+++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java
@@ -78,7 +78,7 @@ public class WfVertexDefFactory implements VertexFactory, WorkflowDialogue
{
try
{
- act = LocalObjectLoader.getActDef(newName, "last");
+ act = LocalObjectLoader.getActDef(newName, 0);
}
catch (Exception ex)
{
diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java
index 4d7da95..a13d610 100644
--- a/src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java
+++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java
@@ -6,11 +6,11 @@ import java.awt.Paint;
import java.awt.Polygon;
import com.c2kernel.common.GTimeStamp;
+import com.c2kernel.common.InvalidDataException;
import com.c2kernel.graph.model.GraphPoint;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.gui.graph.view.VertexRenderer;
import com.c2kernel.lifecycle.instance.Activity;
-import com.c2kernel.lifecycle.instance.stateMachine.States;
import com.c2kernel.utils.DateUtility;
import com.c2kernel.utils.Language;
public class ActivityRenderer implements VertexRenderer
@@ -37,21 +37,14 @@ public class ActivityRenderer implements VertexRenderer
linesOfText[2] = Language.translate(activity.getErrors());
else
{
- int cs = activity.getCurrentState();
- if (cs == States.WAITING && activity.getActive())
- linesOfText[2] =
- Language.translate(States.getStateName(cs))
- + (((Boolean) activity.getProperties().get("Show time")).booleanValue()
- ? " " + getWaitTime(activity.getActiveDate())
- : "");
- else if (cs == States.STARTED)
- linesOfText[2] =
- Language.translate(States.getStateName(cs))
- + (((Boolean) activity.getProperties().get("Show time")).booleanValue()
- ? " " + getWaitTime(activity.getStartDate())
- : "");
- else
- linesOfText[2] = Language.translate(States.getStateName(cs));
+ boolean showTime = activity.getActive() && ((Boolean) activity.getProperties().get("Show time")).booleanValue();
+ String stateName = "Invalid State";
+ try {
+ stateName = activity.getStateName();
+ } catch (InvalidDataException ex) { }
+
+ linesOfText[2] =
+ Language.translate(stateName) + (showTime ? " " + getWaitTime(activity.getStateDate()) : "");
}
FontMetrics metrics = g2d.getFontMetrics();
diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java
index b1406c5..f8cbff2 100644
--- a/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java
+++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java
@@ -4,6 +4,7 @@ import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.Map;
import javax.swing.Box;
import javax.swing.JButton;
@@ -12,6 +13,7 @@ import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
+import com.c2kernel.common.InvalidDataException;
import com.c2kernel.entity.agent.Job;
import com.c2kernel.entity.proxy.ItemProxy;
import com.c2kernel.graph.model.Vertex;
@@ -20,9 +22,9 @@ import com.c2kernel.gui.graph.view.SelectedVertexPanel;
import com.c2kernel.gui.tabs.EntityTabPane;
import com.c2kernel.gui.tabs.execution.Executor;
import com.c2kernel.lifecycle.instance.Activity;
+import com.c2kernel.lifecycle.instance.stateMachine.State;
import com.c2kernel.lifecycle.instance.stateMachine.StateMachine;
-import com.c2kernel.lifecycle.instance.stateMachine.States;
-import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
+import com.c2kernel.lifecycle.instance.stateMachine.Transition;
import com.c2kernel.utils.Logger;
/**************************************************************************
@@ -40,7 +42,7 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen
protected GridBagConstraints c;
protected Box transBox;
protected JComboBox executors;
- protected JComboBox states = new JComboBox(States.states);
+ protected JComboBox states = new JComboBox();
protected JCheckBox active = new JCheckBox();
protected JLabel status = new JLabel();
protected ItemProxy mItem;
@@ -106,27 +108,56 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen
clear();
if (!(vert instanceof Activity)) return;
mCurrentAct = (Activity)vert;
- states.setSelectedIndex(mCurrentAct.getCurrentState());
+ StateMachine sm;
+ try {
+ sm = mCurrentAct.getStateMachine();
+ } catch (InvalidDataException e) {
+ status.setText("Invalid state machine.");
+ Logger.error(e);
+ return;
+ }
+ states.removeAllItems();
+ int currentState;
+ try {
+ currentState = mCurrentAct.getState();
+ } catch (InvalidDataException e) {
+ status.setText("Could not find activity state");
+ Logger.error(e);
+ return;
+ }
+ for (State thisState : sm.getStates()) {
+ states.addItem(thisState);
+ if (currentState == thisState.getId())
+ states.setSelectedItem(thisState);
+ }
states.setEnabled(true);
active.setSelected(mCurrentAct.active);
active.setEnabled(true);
Logger.msg(1, "Retrieving possible transitions for activity "+mCurrentAct.getName());
- int[] transitions = mCurrentAct.getMachine().possibleTransition();
- if (transitions.length == 0) {
+ Map<Transition, String> transitions;
+ try {
+ transitions = mCurrentAct.getStateMachine().getPossibleTransitions(mCurrentAct, MainFrame.userAgent.getPath());
+ } catch (Exception e) {
+ status.setText("Error loading possible transitions of activity. See log.");
+ Logger.error(e);
+ return;
+ }
+
+ if (transitions.size() == 0) {
status.setText("None");
return;
}
- for (int i = 0; i < transitions.length; i++) {
- String trans= Transitions.getTransitionName(transitions[i]);
- if (!(transitions[i]==Transitions.DONE) && !(transitions[i]==Transitions.COMPLETE)) {
- String buttonLabel = trans.substring(0,1).toUpperCase()+trans.substring(1);
- JButton thisTrans = new JButton(buttonLabel);
- thisTrans.setActionCommand("Trans:"+String.valueOf(transitions[i]));
+
+ for (Transition trans:transitions.keySet()) {
+
+ if (!trans.hasOutcome() || (trans.hasOutcome() && !trans.getOutcome().isRequired())) {
+ JButton thisTrans = new JButton(trans.getName());
+ thisTrans.setActionCommand("Trans:"+trans.getId());
thisTrans.addActionListener(this);
transBox.add(thisTrans);
transBox.add(Box.createHorizontalGlue());
}
- status.setText(transitions.length+" transitions possible.");
+ status.setText(transitions.size()+" transitions possible.");
}
revalidate();
}
@@ -138,22 +169,19 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen
return;
}
if (e.getSource() == states && mCurrentAct != null) {
- mCurrentAct.getMachine().state = states.getSelectedIndex();
+ mCurrentAct.setState(states.getSelectedIndex());
return;
}
if (!e.getActionCommand().startsWith("Trans:")) return;
int transition = Integer.parseInt(e.getActionCommand().substring(6));
Logger.msg("Requesting transition "+transition);
- Job thisJob = new Job(mItem.getSystemKey(),
- mCurrentAct.getPath(),
- transition,
- new StateMachine(mCurrentAct).simulate(transition),
- mCurrentAct.getCurrentState(),
- mCurrentAct.getName(),
- mCurrentAct.getProperties(),
- mCurrentAct.getType(),
- MainFrame.userAgent.getName());
try {
+ StateMachine actSM = mCurrentAct.getStateMachine();
+ Job thisJob = new Job(mCurrentAct,
+ mItem.getSystemKey(),
+ actSM.getTransition(transition),
+ MainFrame.userAgent.getPath(),
+ "Admin");
Executor selectedExecutor = (Executor)executors.getSelectedItem();
selectedExecutor.execute(thisJob, status);
} catch (Exception ex) {
@@ -170,7 +198,6 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen
mCurrentAct = null;
transBox.removeAll();
status.setText("No activity selected");
- states.setSelectedIndex(0);
states.setEnabled(false);
active.setSelected(false);
active.setEnabled(false);
diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java
index 38e3ec4..e7f0034 100644
--- a/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java
+++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java
@@ -78,7 +78,7 @@ public class WfVertexFactory implements VertexFactory, WorkflowDialogue
Activity act = null;
try
{
- ActivityDef actD = LocalObjectLoader.getActDef(newName, "last");
+ ActivityDef actD = LocalObjectLoader.getActDef(newName, 0);
act = (Activity)actD.instantiate(unicName);
}
catch (Exception e)
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);
}