Changeset 1692 for branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation
- Timestamp:
- 08/23/14 17:19:39 (10 years ago)
- Location:
- branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/RuleUtils.java
r1690 r1692 15 15 package de.ugoe.cs.autoquest.tasktrees.temporalrelation; 16 16 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 18 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIterationInstance; 17 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship; 18 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional; … … 145 147 146 148 } else if (tempTask.getType() == "sequence") { 147 //System.out.println("Adding SequenceInstance " + parent.get(startIndex) + " to " + tempTask.getType()); 148 taskBuilder.addChild(subsequence,parent.get(startIndex)); 149 //ISequenceInstance sequence = taskFactory.createNewTaskInstance((ISequence) tempTask); 150 //taskBuilder.addChild(sequence, parent.get(i)); 151 //taskBuilder.addChild(subsequence,sequence); 152 taskBuilder.addChild(subsequence, parent.get(startIndex)); 149 153 } else if (tempTask.getType() == "iteration") { 154 //IIterationInstance iteration = taskFactory.createNewTaskInstance((IIteration) tempTask); 155 //taskBuilder.addChild(iteration, parent.get(startIndex)); 156 //taskBuilder.addChild(subsequence, iteration); 150 157 taskBuilder.addChild(subsequence, parent.get(startIndex)); 151 158 //System.out.println("Adding IterationInstance " + parent.get(startIndex) + " to " + tempTask.getType()); -
branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java
r1690 r1692 38 38 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional; 39 39 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 40 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelectionInstance; 40 41 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 41 42 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequenceInstance; … … 138 139 public RuleApplicationResult apply(List<IUserSession> sessions) { 139 140 RuleApplicationData appData = new RuleApplicationData(sessions); 141 140 142 harmonizeEventTaskInstancesModel(appData); 141 142 143 do { 143 144 iteration++; 145 144 146 appData.detectedAndReplacedTasks = false; 145 147 appData.getStopWatch().start("whole loop"); … … 364 366 } 365 367 } 366 } 368 369 for (Map.Entry<IIteration, List<IIterationInstance>> entry : iterationInstances.entrySet()) 370 { 371 harmonizeIterationInstancesModel(entry.getKey(), entry.getValue()); 372 } 373 } 374 375 376 /** 377 * <p> 378 * TODO clarify why this is done 379 * </p> 380 */ 381 private void harmonizeIterationInstancesModel(IIteration iteration, 382 List<IIterationInstance> iterationInstances) 383 { 384 List<ITask> iteratedTaskVariants = new LinkedList<ITask>(); 385 TaskInstanceComparator comparator = preparationTaskHandlingStrategy.getTaskComparator(); 386 387 // merge the lexically different variants of iterated task to a unique list 388 for (IIterationInstance iterationInstance : iterationInstances) { 389 for (ITaskInstance executionVariant : iterationInstance) { 390 ITask candidate = executionVariant.getTask(); 391 392 boolean found = false; 393 for (ITask taskVariant : iteratedTaskVariants) { 394 if (comparator.areLexicallyEqual(taskVariant, candidate)) { 395 taskBuilder.setTask(executionVariant, taskVariant); 396 found = true; 397 break; 398 } 399 } 400 401 if (!found) { 402 iteratedTaskVariants.add(candidate); 403 } 404 } 405 } 406 407 // if there are more than one lexically different variant of iterated tasks, adapt the 408 // iteration model to be a selection of different variants. In this case also adapt 409 // the generated iteration instances to correctly contain selection instances. If there 410 // is only one variant of an iterated task, simply set this as the marked task of the 411 // iteration. In this case, the instances can be preserved as is 412 if (iteratedTaskVariants.size() > 1) { 413 ISelection selection = taskFactory.createNewSelection(); 414 415 for (ITask variant : iteratedTaskVariants) { 416 taskBuilder.addChild(selection, variant); 417 } 418 419 taskBuilder.setMarkedTask(iteration, selection); 420 421 for (IIterationInstance instance : iterationInstances) { 422 for (int i = 0; i < instance.size(); i++) { 423 ISelectionInstance selectionInstance = 424 taskFactory.createNewTaskInstance(selection); 425 taskBuilder.setChild(selectionInstance, instance.get(i)); 426 taskBuilder.setTaskInstance(instance, i, selectionInstance); 427 } 428 } 429 } 430 else { 431 taskBuilder.setMarkedTask(iteration, iteratedTaskVariants.get(0)); 432 } 433 } 434 367 435 368 436 ISequence matchAsSequence(RuleApplicationData appData, Match m) {
Note: See TracChangeset
for help on using the changeset viewer.