[jboss-svn-commits] JBL Code SVN: r33735 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/compiler/xml/processes and 6 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 2 10:05:03 EDT 2010
Author: KrisVerlaenen
Date: 2010-07-02 10:05:02 -0400 (Fri, 02 Jul 2010)
New Revision: 33735
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/MetaDataHandler.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataCellEditor.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataDialog.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataPropertyDescriptor.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/ProcessSemanticModule.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/AbstractNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/ActionNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/CompositeNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/EndNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/EventNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/FaultNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/HumanTaskNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/JoinNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/MilestoneNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/RuleSetNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/SplitNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/StartNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/StateNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/SubProcessNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/TimerNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/WorkItemNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-5.0.xsd
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/xml/processes/XMLPersistenceTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/impl/NodeImpl.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/ActionWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/DynamicNodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/EndNodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/EventNodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/FaultNodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/StateBasedNodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/TimerWrapper.java
Log:
JBRULES-2565: Support for process node metadata
- added support for metadata in compiler and eclipse plugin
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/ProcessSemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/ProcessSemanticModule.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/ProcessSemanticModule.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -18,6 +18,7 @@
import org.drools.compiler.xml.processes.InPortHandler;
import org.drools.compiler.xml.processes.JoinNodeHandler;
import org.drools.compiler.xml.processes.MappingHandler;
+import org.drools.compiler.xml.processes.MetaDataHandler;
import org.drools.compiler.xml.processes.MilestoneNodeHandler;
import org.drools.compiler.xml.processes.OutPortHandler;
import org.drools.compiler.xml.processes.ParameterHandler;
@@ -115,5 +116,7 @@
new StateNodeHandler() );
addHandler( "dynamic",
new DynamicNodeHandler() );
+ addHandler( "metaData",
+ new MetaDataHandler() );
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/AbstractNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/AbstractNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/AbstractNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -14,6 +14,7 @@
import org.drools.workflow.core.NodeContainer;
import org.drools.workflow.core.impl.DroolsConsequenceAction;
import org.drools.workflow.core.impl.ExtendedNodeImpl;
+import org.drools.workflow.core.impl.NodeImpl;
import org.drools.xml.BaseAbstractHandler;
import org.drools.xml.ExtensibleXmlParser;
import org.drools.xml.Handler;
@@ -180,6 +181,37 @@
}
}
+ protected boolean containsMetaData(final Node node) {
+ for (Map.Entry<String, Object> entry: ((NodeImpl) node).getMetaData().entrySet()) {
+ String name = entry.getKey();
+ if (!"x".equals(name)
+ && !"y".equals(name)
+ && !"width".equals(name)
+ && !"height".equals(name)
+ && !"color".equals(name)
+ && entry.getValue() instanceof String) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ protected void writeMetaData(final Node node, final StringBuilder xmlDump) {
+ for (Map.Entry<String, Object> entry: ((NodeImpl) node).getMetaData().entrySet()) {
+ String name = entry.getKey();
+ if (!"x".equals(name)
+ && !"y".equals(name)
+ && !"width".equals(name)
+ && !"height".equals(name)
+ && !"color".equals(name)
+ && entry.getValue() instanceof String) {
+ xmlDump.append(" <metaData name=\"" + name + "\">" + EOL);
+ xmlDump.append(" <value>" + entry.getValue() + "</value>" + EOL);
+ xmlDump.append(" </metaData>" + EOL);
+ }
+ }
+ }
+
protected void writeActions(final String type, List<DroolsAction> actions, final StringBuilder xmlDump) {
if (actions != null && actions.size() > 0) {
xmlDump.append(" <" + type + ">" + EOL);
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/ActionNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/ActionNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/ActionNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -36,9 +36,14 @@
ActionNode actionNode = (ActionNode) node;
writeNode("actionNode", actionNode, xmlDump, includeMeta);
DroolsConsequenceAction action = (DroolsConsequenceAction) actionNode.getAction();
- if (action != null) {
+ if (action != null || (includeMeta && containsMetaData(actionNode))) {
xmlDump.append(">" + EOL);
- writeAction(action, xmlDump);
+ if (action != null) {
+ writeAction(action, xmlDump);
+ }
+ if (includeMeta) {
+ writeMetaData(actionNode, xmlDump);
+ }
endNode("actionNode", xmlDump);
} else {
endNode(xmlDump);
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/CompositeNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/CompositeNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/CompositeNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -41,6 +41,9 @@
CompositeNode compositeNode = (CompositeNode) node;
writeAttributes(compositeNode, xmlDump, includeMeta);
xmlDump.append(">" + EOL);
+ if (includeMeta) {
+ writeMetaData(compositeNode, xmlDump);
+ }
for (String eventType: compositeNode.getActionTypes()) {
writeActions(eventType, compositeNode.getActions(eventType), xmlDump);
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/EndNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/EndNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/EndNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -34,7 +34,13 @@
if (!terminate) {
xmlDump.append("terminate=\"false\" ");
}
- endNode(xmlDump);
+ if (includeMeta && containsMetaData(endNode)) {
+ xmlDump.append(">" + EOL);
+ writeMetaData(endNode, xmlDump);
+ endNode("end", xmlDump);
+ } else {
+ endNode(xmlDump);
+ }
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/EventNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/EventNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/EventNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -46,6 +46,9 @@
xmlDump.append("scope=\"" + scope + "\" ");
}
xmlDump.append(">" + EOL);
+ if (includeMeta) {
+ writeMetaData(eventNode, xmlDump);
+ }
xmlDump.append(" <eventFilters>" + EOL);
for (EventFilter filter: eventNode.getEventFilters()) {
if (filter instanceof EventTypeFilter) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/FaultNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/FaultNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/FaultNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -42,7 +42,13 @@
if (faultVariable != null && faultVariable.length() != 0) {
xmlDump.append("faultVariable=\"" + faultVariable + "\" ");
}
- endNode(xmlDump);
+ if (includeMeta && containsMetaData(faultNode)) {
+ xmlDump.append(">" + EOL);
+ writeMetaData(faultNode, xmlDump);
+ endNode("fault", xmlDump);
+ } else {
+ endNode(xmlDump);
+ }
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/HumanTaskNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/HumanTaskNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/HumanTaskNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -34,6 +34,9 @@
writeNode("humanTask", workItemNode, xmlDump, includeMeta);
visitParameters(workItemNode, xmlDump);
xmlDump.append(">" + EOL);
+ if (includeMeta) {
+ writeMetaData(workItemNode, xmlDump);
+ }
Work work = workItemNode.getWork();
visitWork(work, xmlDump, includeMeta);
visitInMappings(workItemNode.getInMappings(), xmlDump);
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/JoinNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/JoinNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/JoinNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -44,7 +44,13 @@
xmlDump.append("n=\"" + n + "\" ");
}
}
- endNode(xmlDump);
+ if (includeMeta && containsMetaData(joinNode)) {
+ xmlDump.append(">" + EOL);
+ writeMetaData(joinNode, xmlDump);
+ endNode("join", xmlDump);
+ } else {
+ endNode(xmlDump);
+ }
}
}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/MetaDataHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/MetaDataHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/MetaDataHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -0,0 +1,73 @@
+package org.drools.compiler.xml.processes;
+
+import java.util.HashSet;
+
+import org.drools.process.core.ValueObject;
+import org.drools.process.core.datatype.DataType;
+import org.drools.process.core.datatype.impl.type.StringDataType;
+import org.drools.workflow.core.Node;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class MetaDataHandler extends BaseAbstractHandler
+ implements
+ Handler {
+ public MetaDataHandler() {
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet();
+ this.validParents.add( Node.class );
+
+ this.validPeers = new HashSet();
+ this.validPeers.add( null );
+
+ this.allowNesting = false;
+ }
+ }
+
+ public Object start(final String uri,
+ final String localName,
+ final Attributes attrs,
+ final ExtensibleXmlParser parser) throws SAXException {
+ parser.startElementBuilder( localName,
+ attrs );
+ Node node = (Node) parser.getParent();
+ final String name = attrs.getValue("name");
+ emptyAttributeCheck(localName, "name", name, parser);
+ return new MetaDataWrapper(node, name);
+ }
+
+ public Object end(final String uri,
+ final String localName,
+ final ExtensibleXmlParser parser) throws SAXException {
+ parser.endElementBuilder();
+ return null;
+ }
+
+ public Class generateNodeFor() {
+ return MetaDataWrapper.class;
+ }
+
+ public class MetaDataWrapper implements ValueObject {
+ private Node node;
+ private String name;
+ public MetaDataWrapper(Node node, String name) {
+ this.node = node;
+ this.name = name;
+ }
+ public Object getValue() {
+ return node.getMetaData(name);
+ }
+ public void setValue(Object value) {
+ node.setMetaData(name, value);
+ }
+ public DataType getType() {
+ return new StringDataType();
+ }
+ public void setType(DataType type) {
+ }
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/MilestoneNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/MilestoneNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/MilestoneNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -35,6 +35,9 @@
String constraint = milestoneNode.getConstraint();
if (constraint != null || milestoneNode.getTimers() != null || milestoneNode.containsActions()) {
xmlDump.append(">\n");
+ if (includeMeta) {
+ writeMetaData(milestoneNode, xmlDump);
+ }
if (constraint != null) {
xmlDump.append(" <constraint type=\"rule\" dialect=\"mvel\" >"
+ XmlDumper.replaceIllegalChars(constraint.trim()) + "</constraint>" + EOL);
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/RuleSetNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/RuleSetNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/RuleSetNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -35,9 +35,14 @@
if (ruleFlowGroup != null) {
xmlDump.append("ruleFlowGroup=\"" + ruleFlowGroup + "\" ");
}
- if (ruleSetNode.getTimers() != null) {
+ if (ruleSetNode.getTimers() != null || (includeMeta && containsMetaData(ruleSetNode))) {
xmlDump.append(">\n");
- writeTimers(ruleSetNode.getTimers(), xmlDump);
+ if (ruleSetNode.getTimers() != null) {
+ writeTimers(ruleSetNode.getTimers(), xmlDump);
+ }
+ if (includeMeta) {
+ writeMetaData(ruleSetNode, xmlDump);
+ }
endNode("ruleSet", xmlDump);
} else {
endNode(xmlDump);
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/SplitNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/SplitNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/SplitNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -44,6 +44,9 @@
endNode(xmlDump);
} else {
xmlDump.append(">" + EOL);
+ if (includeMeta) {
+ writeMetaData(splitNode, xmlDump);
+ }
xmlDump.append(" <constraints>" + EOL);
for (Map.Entry<ConnectionRef, Constraint> entry: splitNode.getConstraints().entrySet()) {
ConnectionRef connection = entry.getKey();
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/StartNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/StartNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/StartNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -27,54 +27,59 @@
StartNode startNode = (StartNode) node;
writeNode("start", startNode, xmlDump, includeMeta);
List<Trigger> triggers = startNode.getTriggers();
- if (triggers == null || triggers.isEmpty()) {
+ if ((triggers == null || triggers.isEmpty()) && (!includeMeta || !containsMetaData(startNode))) {
endNode(xmlDump);
} else {
xmlDump.append(">" + EOL);
- xmlDump.append(" <triggers>" + EOL);
- for (Trigger trigger: triggers) {
- if (trigger instanceof ConstraintTrigger) {
- xmlDump.append(" <trigger type=\"constraint\" >" + EOL);
- xmlDump.append(" <constraint type=\"rule\" dialect=\"mvel\" >"
- + ((ConstraintTrigger) trigger).getConstraint() + "</constraint>" + EOL);
- Map<String, String> inMappings = trigger.getInMappings();
- if (inMappings != null && !inMappings.isEmpty()) {
- for (Map.Entry<String, String> entry: inMappings.entrySet()) {
- xmlDump.append(" <mapping type=\"in\" from=\""
- + XmlDumper.replaceIllegalChars(entry.getValue())
- + "\" to=\"" + entry.getKey() + "\" />" + EOL);
+ if (includeMeta) {
+ writeMetaData(startNode, xmlDump);
+ }
+ if (triggers != null) {
+ xmlDump.append(" <triggers>" + EOL);
+ for (Trigger trigger: triggers) {
+ if (trigger instanceof ConstraintTrigger) {
+ xmlDump.append(" <trigger type=\"constraint\" >" + EOL);
+ xmlDump.append(" <constraint type=\"rule\" dialect=\"mvel\" >"
+ + ((ConstraintTrigger) trigger).getConstraint() + "</constraint>" + EOL);
+ Map<String, String> inMappings = trigger.getInMappings();
+ if (inMappings != null && !inMappings.isEmpty()) {
+ for (Map.Entry<String, String> entry: inMappings.entrySet()) {
+ xmlDump.append(" <mapping type=\"in\" from=\""
+ + XmlDumper.replaceIllegalChars(entry.getValue())
+ + "\" to=\"" + entry.getKey() + "\" />" + EOL);
+ }
}
- }
- xmlDump.append(" </trigger>" + EOL);
- } else if (trigger instanceof EventTrigger) {
- xmlDump.append(" <trigger type=\"event\" >" + EOL);
- xmlDump.append(" <eventFilters>" + EOL);
- for (EventFilter filter: ((EventTrigger) trigger).getEventFilters()) {
- if (filter instanceof EventTypeFilter) {
- xmlDump.append(" <eventFilter "
- + "type=\"eventType\" "
- + "eventType=\"" + ((EventTypeFilter) filter).getType() + "\" />" + EOL);
- } else {
- throw new IllegalArgumentException(
- "Unknown filter type: " + filter);
- }
- }
- xmlDump.append(" </eventFilters>" + EOL);
- Map<String, String> inMappings = trigger.getInMappings();
- if (inMappings != null && !inMappings.isEmpty()) {
- for (Map.Entry<String, String> entry: inMappings.entrySet()) {
- xmlDump.append(" <mapping type=\"in\" from=\""
- + XmlDumper.replaceIllegalChars(entry.getValue())
- + "\" to=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" </trigger>" + EOL);
+ } else if (trigger instanceof EventTrigger) {
+ xmlDump.append(" <trigger type=\"event\" >" + EOL);
+ xmlDump.append(" <eventFilters>" + EOL);
+ for (EventFilter filter: ((EventTrigger) trigger).getEventFilters()) {
+ if (filter instanceof EventTypeFilter) {
+ xmlDump.append(" <eventFilter "
+ + "type=\"eventType\" "
+ + "eventType=\"" + ((EventTypeFilter) filter).getType() + "\" />" + EOL);
+ } else {
+ throw new IllegalArgumentException(
+ "Unknown filter type: " + filter);
+ }
+ }
+ xmlDump.append(" </eventFilters>" + EOL);
+ Map<String, String> inMappings = trigger.getInMappings();
+ if (inMappings != null && !inMappings.isEmpty()) {
+ for (Map.Entry<String, String> entry: inMappings.entrySet()) {
+ xmlDump.append(" <mapping type=\"in\" from=\""
+ + XmlDumper.replaceIllegalChars(entry.getValue())
+ + "\" to=\"" + entry.getKey() + "\" />" + EOL);
+ }
}
- }
- xmlDump.append(" </trigger>" + EOL);
- } else {
- throw new IllegalArgumentException(
- "Unknown trigger type " + trigger);
+ xmlDump.append(" </trigger>" + EOL);
+ } else {
+ throw new IllegalArgumentException(
+ "Unknown trigger type " + trigger);
+ }
}
+ xmlDump.append(" </triggers>" + EOL);
}
- xmlDump.append(" </triggers>" + EOL);
endNode("start", xmlDump);
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/StateNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/StateNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/StateNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -36,6 +36,9 @@
StateNode stateNode = (StateNode) node;
writeNode("state", stateNode, xmlDump, includeMeta);
xmlDump.append(">\n");
+ if (includeMeta) {
+ writeMetaData(stateNode, xmlDump);
+ }
for (String eventType: stateNode.getActionTypes()) {
writeActions(eventType, stateNode.getActions(eventType), xmlDump);
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/SubProcessNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/SubProcessNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/SubProcessNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -51,6 +51,9 @@
xmlDump.append("independent=\"false\" ");
}
xmlDump.append(">" + EOL);
+ if (includeMeta) {
+ writeMetaData(subProcessNode, xmlDump);
+ }
Map<String, String> inMappings = subProcessNode.getInMappings();
for (Map.Entry<String, String> inMapping: inMappings.entrySet()) {
xmlDump.append(
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/TimerNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/TimerNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/TimerNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -50,7 +50,13 @@
xmlDump.append(" period=\"" + timer.getPeriod() + "\" ");
}
}
- endNode(xmlDump);
+ if (includeMeta && containsMetaData(timerNode)) {
+ xmlDump.append(">" + EOL);
+ writeMetaData(timerNode, xmlDump);
+ endNode("timerNode", xmlDump);
+ } else {
+ endNode(xmlDump);
+ }
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/WorkItemNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/WorkItemNodeHandler.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/xml/processes/WorkItemNodeHandler.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -43,6 +43,9 @@
writeNode("workItem", workItemNode, xmlDump, includeMeta);
visitParameters(workItemNode, xmlDump);
xmlDump.append(">" + EOL);
+ if (includeMeta) {
+ writeMetaData(workItemNode, xmlDump);
+ }
Work work = workItemNode.getWork();
visitWork(work, xmlDump, includeMeta);
visitInMappings(workItemNode.getInMappings(), xmlDump);
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-5.0.xsd
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-5.0.xsd 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-5.0.xsd 2010-07-02 14:05:02 UTC (rev 33735)
@@ -145,6 +145,14 @@
</xs:choice>
</xs:complexType>
</xs:element>
+ <xs:element name="metaData">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element ref="drools:value"/>
+ </xs:choice>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
<xs:element name="timers">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
@@ -164,7 +172,8 @@
</xs:element>
<xs:element name="start">
<xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:triggers"/>
</xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
@@ -194,6 +203,9 @@
</xs:element>
<xs:element name="end">
<xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
+ </xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="x" type="xs:string"/>
@@ -205,9 +217,10 @@
</xs:element>
<xs:element name="actionNode">
<xs:complexType>
- <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:action"/>
- </xs:sequence>
+ </xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="x" type="xs:string"/>
@@ -230,6 +243,7 @@
<xs:element name="ruleSet">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:timers"/>
</xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
@@ -243,9 +257,10 @@
</xs:element>
<xs:element name="split">
<xs:complexType>
- <xs:sequence minOccurs="0">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:constraints"/>
- </xs:sequence>
+ </xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="x" type="xs:string"/>
@@ -278,6 +293,9 @@
</xs:element>
<xs:element name="join">
<xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
+ </xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="x" type="xs:string"/>
@@ -291,6 +309,7 @@
<xs:element name="milestone">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:constraint"/>
<xs:element ref="drools:timers"/>
<xs:element ref="drools:onEntry"/>
@@ -307,6 +326,7 @@
<xs:element name="subProcess">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:mapping"/>
<xs:element ref="drools:timers"/>
<xs:element ref="drools:onEntry"/>
@@ -326,6 +346,7 @@
<xs:element name="workItem">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:timers"/>
<xs:element ref="drools:work"/>
<xs:element ref="drools:mapping"/>
@@ -381,6 +402,9 @@
</xs:element>
<xs:element name="timerNode">
<xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
+ </xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="x" type="xs:string"/>
@@ -394,6 +418,7 @@
<xs:element name="humanTask">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:work"/>
<xs:element ref="drools:mapping"/>
<xs:element ref="drools:timers"/>
@@ -413,6 +438,7 @@
<xs:element name="composite">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:timers"/>
<xs:element ref="drools:onEntry"/>
<xs:element ref="drools:onExit"/>
@@ -434,6 +460,7 @@
<xs:element name="forEach">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:nodes"/>
<xs:element ref="drools:connections"/>
<xs:element ref="drools:in-ports"/>
@@ -480,7 +507,8 @@
</xs:element>
<xs:element name="eventNode">
<xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:eventFilters"/>
</xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
@@ -508,6 +536,9 @@
</xs:element>
<xs:element name="fault">
<xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
+ </xs:choice>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="x" type="xs:string"/>
@@ -521,6 +552,7 @@
<xs:element name="state">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:timers"/>
<xs:element ref="drools:onEntry"/>
<xs:element ref="drools:onExit"/>
@@ -537,6 +569,7 @@
<xs:element name="dynamic">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:metaData"/>
<xs:element ref="drools:variables"/>
<xs:element ref="drools:exceptionHandlers"/>
<xs:element ref="drools:nodes"/>
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/xml/processes/XMLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/xml/processes/XMLPersistenceTest.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/xml/processes/XMLPersistenceTest.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -191,6 +191,8 @@
startNode.setMetaData("y", 2);
startNode.setMetaData("width", 3);
startNode.setMetaData("height", 4);
+ startNode.setMetaData("meta1", "someValue");
+ startNode.setMetaData("meta2", "someOtherValue");
ConstraintTrigger constraintTrigger = new ConstraintTrigger();
constraintTrigger.setConstraint("constraint");
Map<String, String> inMapping = new HashMap<String, String>();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/impl/NodeImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/impl/NodeImpl.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/impl/NodeImpl.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -256,4 +256,12 @@
return this.metaData.get(name);
}
+ public Map<String, Object> getMetaData() {
+ return this.metaData;
+ }
+
+ public void setMetaData(Map<String, Object> metaData) {
+ this.metaData = metaData;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -15,13 +15,19 @@
* limitations under the License.
*/
+import java.util.HashMap;
+import java.util.Map;
+
import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
+import org.drools.eclipse.flow.ruleflow.view.property.metadata.MetaDataPropertyDescriptor;
import org.drools.workflow.core.Node;
+import org.drools.workflow.core.impl.NodeImpl;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
/**
* Wrapper for a node.
@@ -32,6 +38,16 @@
private static final long serialVersionUID = 4L;
+ public static IPropertyDescriptor[] DESCRIPTORS;
+
+ public static final String METADATA = "MetaData";
+ static {
+ DESCRIPTORS = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 1];
+ System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, DESCRIPTORS, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ DESCRIPTORS[DESCRIPTORS.length - 1] =
+ new MetaDataPropertyDescriptor(METADATA, "MetaData");
+ }
+
public void setNode(Node node) {
setElement(node);
}
@@ -99,4 +115,31 @@
|| ((NodeWrapper) target).getNode() == getNode().getNodeContainer();
}
+ public IPropertyDescriptor[] getPropertyDescriptors() {
+ return DESCRIPTORS;
+ }
+
+ public Object getPropertyValue(Object id) {
+ if (METADATA.equals(id)) {
+ return ((NodeImpl) getNode()).getMetaData();
+ }
+ return super.getPropertyValue(id);
+ }
+
+ public void resetPropertyValue(Object id) {
+ if (METADATA.equals(id)) {
+ ((NodeImpl) getNode()).setMetaData(new HashMap<String, Object>());
+ } else {
+ super.resetPropertyValue(id);
+ }
+ }
+
+ public void setPropertyValue(Object id, Object value) {
+ if (METADATA.equals(id)) {
+ ((NodeImpl) getNode()).setMetaData((Map<String, Object>) value);
+ } else {
+ super.setPropertyValue(id, value);
+ }
+ }
+
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/ActionWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/ActionWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/ActionWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -43,8 +43,8 @@
}
private void setDescriptors() {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 1];
- System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, descriptors, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ descriptors = new IPropertyDescriptor[AbstractNodeWrapper.DESCRIPTORS.length + 1];
+ System.arraycopy(AbstractNodeWrapper.DESCRIPTORS, 0, descriptors, 0, AbstractNodeWrapper.DESCRIPTORS.length);
descriptors[descriptors.length - 1] =
new ActionPropertyDescriptor(ACTION, "Action", getActionNode(), (WorkflowProcess) getParent().getProcessWrapper().getProcess());
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/DynamicNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/DynamicNodeWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/DynamicNodeWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -1,14 +1,31 @@
package org.drools.eclipse.flow.ruleflow.core;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
+import org.drools.eclipse.flow.ruleflow.view.property.action.OnEntryActionsPropertyDescriptor;
+import org.drools.eclipse.flow.ruleflow.view.property.action.OnExitActionsPropertyDescriptor;
+import org.drools.eclipse.flow.ruleflow.view.property.timers.TimersPropertyDescriptor;
import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.core.timer.Timer;
+import org.drools.workflow.core.DroolsAction;
+import org.drools.workflow.core.WorkflowProcess;
+import org.drools.workflow.core.impl.ExtendedNodeImpl;
import org.drools.workflow.core.node.DynamicNode;
+import org.drools.workflow.core.node.ForEachNode;
+import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
public class DynamicNodeWrapper extends CompositeNodeWrapper {
+ public static final String AUTO_COMPLETE = "autoComplete";
+
private static final long serialVersionUID = 4L;
-
+
public DynamicNodeWrapper() {
setNode(new DynamicNode());
getDynamicNode().setName("Dynamic");
@@ -21,6 +38,15 @@
return (DynamicNode) getNode();
}
+ protected void initDescriptors() {
+ super.initDescriptors();
+ IPropertyDescriptor[] oldDescriptors = descriptors;
+ descriptors = new IPropertyDescriptor[oldDescriptors.length + 1];
+ System.arraycopy(oldDescriptors, 0, descriptors, 0, oldDescriptors.length);
+ descriptors[descriptors.length - 1] =
+ new ComboBoxPropertyDescriptor(AUTO_COMPLETE, "Auto-complete", new String[] { "true", "false" });
+ }
+
public boolean acceptsIncomingConnection(ElementConnection connection, ElementWrapper source) {
return super.acceptsIncomingConnection(connection, source)
&& getIncomingConnections().isEmpty();
@@ -32,4 +58,27 @@
// || (target.getParent() == this && getForEachNode().getLinkedIncomingNode(Node.CONNECTION_DEFAULT_TYPE) == null);
}
+ public Object getPropertyValue(Object id) {
+ if (AUTO_COMPLETE.equals(id)) {
+ return getDynamicNode().isAutoComplete() ? new Integer(0) : new Integer(1);
+ }
+ return super.getPropertyValue(id);
+ }
+
+ public void resetPropertyValue(Object id) {
+ if (AUTO_COMPLETE.equals(id)) {
+ getDynamicNode().setAutoComplete(false);
+ } else {
+ super.resetPropertyValue(id);
+ }
+ }
+
+ public void setPropertyValue(Object id, Object value) {
+ if (AUTO_COMPLETE.equals(id)) {
+ getDynamicNode().setAutoComplete(((Integer) value).intValue() == 0);
+ } else {
+ super.setPropertyValue(id, value);
+ }
+ }
+
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/EndNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/EndNodeWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/EndNodeWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -37,8 +37,8 @@
private static IPropertyDescriptor[] descriptors;
static {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 1];
- System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, descriptors, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ descriptors = new IPropertyDescriptor[AbstractNodeWrapper.DESCRIPTORS.length + 1];
+ System.arraycopy(AbstractNodeWrapper.DESCRIPTORS, 0, descriptors, 0, AbstractNodeWrapper.DESCRIPTORS.length);
descriptors[descriptors.length - 1] =
new ComboBoxPropertyDescriptor(TERMINATE, "Terminate", new String[] { "true", "false" });
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/EventNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/EventNodeWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/EventNodeWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -42,8 +42,8 @@
public static final String EVENT_TYPE = "eventType";
public static final String SCOPE = "scope";
static {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 3];
- System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, descriptors, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ descriptors = new IPropertyDescriptor[AbstractNodeWrapper.DESCRIPTORS.length + 3];
+ System.arraycopy(AbstractNodeWrapper.DESCRIPTORS, 0, descriptors, 0, AbstractNodeWrapper.DESCRIPTORS.length);
descriptors[descriptors.length - 3] =
new ComboBoxPropertyDescriptor(SCOPE, "Scope", new String[] { "internal", "external" });
descriptors[descriptors.length - 2] =
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/FaultNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/FaultNodeWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/FaultNodeWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -35,8 +35,8 @@
private static final long serialVersionUID = 4L;
private static IPropertyDescriptor[] descriptors;
static {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 2];
- System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, descriptors, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ descriptors = new IPropertyDescriptor[AbstractNodeWrapper.DESCRIPTORS.length + 2];
+ System.arraycopy(AbstractNodeWrapper.DESCRIPTORS, 0, descriptors, 0, AbstractNodeWrapper.DESCRIPTORS.length);
descriptors[descriptors.length - 2] =
new TextPropertyDescriptor(FAULT_NAME, "FaultName");
descriptors[descriptors.length - 1] =
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -54,8 +54,8 @@
}
private void setDescriptors() {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 1];
- System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, descriptors, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ descriptors = new IPropertyDescriptor[AbstractNodeWrapper.DESCRIPTORS.length + 1];
+ System.arraycopy(AbstractNodeWrapper.DESCRIPTORS, 0, descriptors, 0, AbstractNodeWrapper.DESCRIPTORS.length);
descriptors[descriptors.length - 1] =
new ComboBoxPropertyDescriptor(TYPE, "Type", new String[] { "", "AND", "XOR", "Discriminator", "n-of-m" });
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -88,8 +88,8 @@
}
private void setDescriptors() {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 1];
- System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, descriptors, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ descriptors = new IPropertyDescriptor[AbstractNodeWrapper.DESCRIPTORS.length + 1];
+ System.arraycopy(AbstractNodeWrapper.DESCRIPTORS, 0, descriptors, 0, AbstractNodeWrapper.DESCRIPTORS.length);
descriptors[descriptors.length - 1] =
new ComboBoxPropertyDescriptor(TYPE, "Type",
new String[] { "", "AND", "XOR", "OR" });
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/StateBasedNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/StateBasedNodeWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/StateBasedNodeWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -23,8 +23,8 @@
}
protected void initDescriptors() {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 1];
- System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, descriptors, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ descriptors = new IPropertyDescriptor[AbstractNodeWrapper.DESCRIPTORS.length + 1];
+ System.arraycopy(AbstractNodeWrapper.DESCRIPTORS, 0, descriptors, 0, AbstractNodeWrapper.DESCRIPTORS.length);
descriptors[descriptors.length - 1] =
new TimersPropertyDescriptor(TIMERS, "Timers", getStateBasedNode(),
(WorkflowProcess) getParent().getProcessWrapper().getProcess());
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/TimerWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/TimerWrapper.java 2010-07-02 13:54:36 UTC (rev 33734)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/TimerWrapper.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -44,8 +44,8 @@
}
private void setDescriptors() {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.DESCRIPTORS.length + 2];
- System.arraycopy(DefaultElementWrapper.DESCRIPTORS, 0, descriptors, 0, DefaultElementWrapper.DESCRIPTORS.length);
+ descriptors = new IPropertyDescriptor[AbstractNodeWrapper.DESCRIPTORS.length + 2];
+ System.arraycopy(AbstractNodeWrapper.DESCRIPTORS, 0, descriptors, 0, AbstractNodeWrapper.DESCRIPTORS.length);
descriptors[descriptors.length - 2] =
new TextPropertyDescriptor(TIMER_DELAY, "Timer Delay");
descriptors[descriptors.length - 1] =
Added: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataCellEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataCellEditor.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataCellEditor.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -0,0 +1,43 @@
+package org.drools.eclipse.flow.ruleflow.view.property.metadata;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.Map;
+
+import org.drools.eclipse.flow.common.view.property.BeanDialogCellEditor;
+import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Cell editor for meta data.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class MetaDataCellEditor extends BeanDialogCellEditor<Map<String, Object>> {
+
+ public MetaDataCellEditor(Composite parent) {
+ super(parent);
+ }
+
+ protected EditBeanDialog<Map<String, Object>> createDialog(Shell shell) {
+ return new MetaDataDialog(shell);
+ }
+
+ protected String getLabelText(Object value) {
+ return "";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataDialog.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataDialog.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -0,0 +1,245 @@
+package org.drools.eclipse.flow.ruleflow.view.property.metadata;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.TableEditor;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Dialog for editing meta data.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class MetaDataDialog extends EditBeanDialog<Map<String, Object>> implements FocusListener, MouseListener {
+
+ private Table table;
+ private Button removeButton;
+ private Text text;
+ private TableEditor editor;
+ private int selectedColumn = -1;
+
+ public MetaDataDialog(Shell parentShell) {
+ super(parentShell, "Meta Data");
+ }
+
+ protected Map<String, Object> updateValue(Map<String, Object> value) {
+ Map<String, Object> mapping = new HashMap<String, Object>();
+ for (TableItem item: table.getItems()) {
+ String name = item.getText();
+ String text = item.getText(1);
+ if ("x".equals(name) || "y".equals(name) || "width".equals(name) || "height".equals(name) || "color".equals(name)) {
+ mapping.put(name, new Integer(text));
+ } else {
+ mapping.put(item.getText(0), item.getText(1));
+ }
+ }
+ return mapping;
+ }
+
+ protected Point getInitialSize() {
+ return new Point(450, 300);
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite composite = (Composite) super.createDialogArea(parent);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+
+ table = new Table(composite, SWT.SINGLE);
+ GridData gd = new GridData();
+ gd.verticalSpan = 3;
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = true;
+ gd.verticalAlignment = GridData.FILL;
+ gd.horizontalAlignment = GridData.FILL;
+ table.setLayoutData(gd);
+ table.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ removeButton.setEnabled(table.getSelectionIndex() != -1);
+ }
+ public void widgetSelected(SelectionEvent e) {
+ removeButton.setEnabled(table.getSelectionIndex() != -1);
+ }
+ });
+ table.addMouseListener(this);
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+ TableColumn variableNameColumn = new TableColumn(table, SWT.LEFT);
+ variableNameColumn.setText("Name");
+ variableNameColumn.setWidth(150);
+ TableColumn parameterNameColumn = new TableColumn(table, SWT.LEFT);
+ parameterNameColumn.setText("Value");
+ parameterNameColumn.setWidth(225);
+
+ editor = new TableEditor(table);
+ text = new Text(table, SWT.NORMAL);
+ text.setVisible(false);
+ text.setText("");
+ editor.minimumWidth = text.getSize().x;
+ editor.horizontalAlignment = SWT.LEFT;
+ editor.grabHorizontal = true;
+
+ Button addButton = new Button(composite, SWT.PUSH);
+ addButton.setText("Add");
+ addButton.setFont(JFaceResources.getDialogFont());
+ addButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ addButtonPressed();
+ }
+ });
+ gd = new GridData();
+ gd.horizontalAlignment = SWT.FILL;
+ addButton.setLayoutData(gd);
+
+ removeButton = new Button(composite, SWT.PUSH);
+ removeButton.setText("Remove");
+ removeButton.setFont(JFaceResources.getDialogFont());
+ removeButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ removeButtonPressed();
+ }
+ });
+ gd = new GridData();
+ removeButton.setLayoutData(gd);
+ removeButton.setEnabled(false);
+
+ updateTable();
+
+ return composite;
+ }
+
+ private void updateTable() {
+ Map<String, Object> mapping = getValue();
+ if (mapping != null) {
+ for (Map.Entry<String, Object> entry: mapping.entrySet()) {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(new String[] { entry.getKey(),
+ entry.getValue() == null ? "" : entry.getValue().toString()} );
+ }
+ }
+ }
+
+ private void addButtonPressed() {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(0, "name");
+ item.setText(1, "value");
+ table.setSelection(item);
+ }
+
+ private void removeButtonPressed() {
+ int i = table.getSelectionIndex();
+ if (i == -1) {
+ return;
+ }
+ table.remove(i);
+ removeButton.setEnabled(table.getItemCount() == 0);
+ }
+
+ private void doEdit() {
+ if (text.isVisible()) {
+ endEdit();
+ }
+ if (table.getSelectionIndex() == -1 || selectedColumn == -1) return;
+ TableItem selection = table.getItem(table.getSelectionIndex());
+ String value = selection.getText(selectedColumn);
+ text.setText(value == null ? "" : value);
+ editor.setEditor(text, selection, selectedColumn);
+ text.setVisible(true);
+ text.selectAll();
+ text.setFocus();
+ text.addFocusListener(this);
+ }
+
+ private void endEdit() {
+ text.setVisible(false);
+ text.setText("");
+ text.removeFocusListener(this);
+ }
+
+ public void focusGained(FocusEvent e) {
+ }
+
+ public void focusLost(FocusEvent e) {
+ if (e.widget == text) {
+ applyValue();
+ endEdit();
+ }
+ }
+
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ public void mouseDown(MouseEvent e) {
+ selectedColumn = getSelectedColumn(e.x, e.y);
+ if (selectedColumn == -1) return;
+ doEdit();
+ }
+
+ public void mouseUp(MouseEvent e) {
+ }
+
+ private int getSelectedColumn(int x, int y) {
+ int columnToEdit = -1;
+ int columns = table.getColumnCount();
+ if (table.getSelection().length == 0) {
+ return -1;
+ }
+ for (int i = 0; i < columns; i++) {
+ Rectangle bounds = table.getSelection()[0].getBounds(i);
+ if (bounds.contains(x, y)) {
+ columnToEdit = i;
+ break;
+ }
+ }
+ return columnToEdit;
+ }
+
+
+ private void applyValue() {
+ int i = table.getSelectionIndex();
+ if (i == -1) {
+ return;
+ }
+ TableItem item = table.getItem(i);
+ item.setText(selectedColumn, text.getText());
+ }
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataPropertyDescriptor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataPropertyDescriptor.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/metadata/MetaDataPropertyDescriptor.java 2010-07-02 14:05:02 UTC (rev 33735)
@@ -0,0 +1,21 @@
+package org.drools.eclipse.flow.ruleflow.view.property.metadata;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.PropertyDescriptor;
+
+public class MetaDataPropertyDescriptor extends PropertyDescriptor {
+
+ public MetaDataPropertyDescriptor(Object id, String displayName) {
+ super(id, displayName);
+ }
+
+ public CellEditor createPropertyEditor(Composite parent) {
+ MetaDataCellEditor editor = new MetaDataCellEditor(parent);
+ if (getValidator() != null) {
+ editor.setValidator(getValidator());
+ }
+ return editor;
+ }
+
+}
More information about the jboss-svn-commits
mailing list