Changeset 557 for trunk/quest-core-tasktrees/src/main/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultEventTargetSequenceDetectionRule.java
- Timestamp:
- 08/17/12 08:33:29 (12 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/quest-core-tasktrees/src/main/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultEventTargetSequenceDetectionRule.java
r498 r557 1 //-------------------------------------------------------------------------------------------------2 1 // Module : $RCSfile: DefaultSequenceDetectionRule.java,v $ 3 2 // Version : $Revision: 0.0 $ $Author: patrick $ $Date: 18.03.2012 $ … … 5 4 // Creation : 2012 by patrick 6 5 // Copyright : Patrick Harms, 2012 7 //------------------------------------------------------------------------------------------------- 6 8 7 package de.ugoe.cs.quest.tasktrees.temporalrelation; 9 8 10 import de.ugoe.cs.quest.eventcore. guimodel.GUIElement;11 import de.ugoe.cs.quest.tasktrees.treeifc.I nteractionTask;12 import de.ugoe.cs.quest.tasktrees.treeifc. Sequence;13 import de.ugoe.cs.quest.tasktrees.treeifc. TaskTreeBuilder;14 import de.ugoe.cs.quest.tasktrees.treeifc. TaskTreeNode;15 import de.ugoe.cs.quest.tasktrees.treeifc. TaskTreeNodeFactory;9 import de.ugoe.cs.quest.eventcore.IEventTarget; 10 import de.ugoe.cs.quest.tasktrees.treeifc.IEventTask; 11 import de.ugoe.cs.quest.tasktrees.treeifc.ISequence; 12 import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeBuilder; 13 import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNode; 14 import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNodeFactory; 16 15 17 //-------------------------------------------------------------------------------------------------18 16 /** 19 17 * TODO comment … … 22 20 * @author 2012, last modified by $Author: patrick$ 23 21 */ 24 //------------------------------------------------------------------------------------------------- 25 public class DefaultGUIElementSequenceDetectionRule implements TemporalRelationshipRule 26 { 22 public class DefaultEventTargetSequenceDetectionRule implements TemporalRelationshipRule { 27 23 28 //----------------------------------------------------------------------------------------------- 29 /* (non-Javadoc) 30 * @see de.ugoe.cs.tasktree.temporalrelation.TemporalRelationshipRule#apply(TaskTreeNode, TaskTreeBuilder, TaskTreeNodeFactory) 31 */ 32 //----------------------------------------------------------------------------------------------- 33 @Override 34 public RuleApplicationResult apply(TaskTreeNode parent, 35 TaskTreeBuilder builder, 36 TaskTreeNodeFactory nodeFactory, 37 boolean finalize) 38 { 39 if (!(parent instanceof Sequence)) 24 /* 25 * (non-Javadoc) 26 * 27 * @see de.ugoe.cs.tasktree.temporalrelation.TemporalRelationshipRule#apply(TaskTreeNode, 28 * TaskTreeBuilder, TaskTreeNodeFactory) 29 */ 30 @Override 31 public RuleApplicationResult apply(ITaskTreeNode parent, 32 ITaskTreeBuilder builder, 33 ITaskTreeNodeFactory nodeFactory, 34 boolean finalize) 40 35 { 41 return null; 36 if (!(parent instanceof ISequence)) { 37 return null; 38 } 39 40 RuleApplicationResult result = new RuleApplicationResult(); 41 42 IEventTarget currentEventTarget = null; 43 int startingIndex = -1; 44 45 int index = 0; 46 while (index < parent.getChildren().size()) { 47 ITaskTreeNode child = parent.getChildren().get(index); 48 49 IEventTarget eventTarget = determineEventTarget(child); 50 51 if ((eventTarget != null) && (!eventTarget.equals(currentEventTarget))) { 52 if (startingIndex < 0) { 53 startingIndex = index; 54 currentEventTarget = eventTarget; 55 } 56 else { 57 handleEventTargetSequence(parent, startingIndex, index - 1, builder, 58 nodeFactory, result); 59 60 return result; 61 } 62 } 63 64 index++; 65 } 66 67 if (startingIndex > -1) { 68 if (finalize && (startingIndex > 0)) { 69 handleEventTargetSequence(parent, startingIndex, parent.getChildren().size() - 1, 70 builder, nodeFactory, result); 71 } 72 else { 73 result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FEASIBLE); 74 } 75 } 76 77 return result; 42 78 } 43 44 RuleApplicationResult result = new RuleApplicationResult(); 45 46 GUIElement currentGUIElement = null; 47 int startingIndex = -1; 48 49 int index = 0; 50 while (index < parent.getChildren().size()) 79 80 /** 81 * TODO: comment 82 * 83 * @param child 84 * @return 85 */ 86 private IEventTarget determineEventTarget(ITaskTreeNode node) { 87 if (node instanceof IEventTask) { 88 return ((IEventTask) node).getEventTarget(); 89 } 90 else { 91 return null; 92 } 93 } 94 95 /** 96 * TODO: comment 97 * 98 */ 99 private void handleEventTargetSequence(ITaskTreeNode parent, 100 int startIndex, 101 int endIndex, 102 ITaskTreeBuilder builder, 103 ITaskTreeNodeFactory nodeFactory, 104 RuleApplicationResult result) 51 105 { 52 TaskTreeNode child = parent.getChildren().get(index); 53 54 GUIElement guiElement = determineGUIElement(child); 55 56 if ((guiElement != null) && (!guiElement.equals(currentGUIElement))) 57 { 58 if (startingIndex < 0) 59 { 60 startingIndex = index; 61 currentGUIElement = guiElement; 106 ISequence sequence = nodeFactory.createNewSequence(); 107 108 for (int i = startIndex; i <= endIndex; i++) { 109 builder.addChild(sequence, parent.getChildren().get(startIndex)); 110 builder.removeChild((ISequence) parent, startIndex); 62 111 } 63 else64 {65 handleGuiElementSequence(parent, startingIndex, index - 1, builder, nodeFactory, result);66 112 67 return result; 68 } 69 } 70 71 index++; 113 builder.addChild((ISequence) parent, startIndex, sequence); 114 115 result.addNewlyCreatedParentNode(sequence); 116 result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED); 72 117 } 73 74 if (startingIndex > -1)75 {76 if (finalize && (startingIndex > 0))77 {78 handleGuiElementSequence79 (parent, startingIndex, parent.getChildren().size() - 1, builder, nodeFactory, result);80 }81 else82 {83 result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FEASIBLE);84 }85 }86 87 return result;88 }89 90 //-----------------------------------------------------------------------------------------------91 /**92 * TODO: comment93 *94 * @param child95 * @return96 */97 //-----------------------------------------------------------------------------------------------98 private GUIElement determineGUIElement(TaskTreeNode node)99 {100 if (node instanceof InteractionTask)101 {102 return ((InteractionTask) node).getGUIElement();103 }104 else105 {106 return null;107 }108 }109 110 //-----------------------------------------------------------------------------------------------111 /**112 * TODO: comment113 *114 */115 //-----------------------------------------------------------------------------------------------116 private void handleGuiElementSequence(TaskTreeNode parent,117 int startIndex,118 int endIndex,119 TaskTreeBuilder builder,120 TaskTreeNodeFactory nodeFactory,121 RuleApplicationResult result)122 {123 Sequence sequence = nodeFactory.createNewSequence();124 125 for (int i = startIndex; i <= endIndex; i++)126 {127 builder.addChild(sequence, parent.getChildren().get(startIndex));128 builder.removeChild((Sequence) parent, startIndex);129 }130 131 builder.addChild((Sequence) parent, startIndex, sequence);132 133 result.addNewlyCreatedParentNode(sequence);134 result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED);135 }136 118 137 119 }
Note: See TracChangeset
for help on using the changeset viewer.