Changeset 1146
- Timestamp:
- 04/04/13 16:06:07 (12 years ago)
- Location:
- trunk
- Files:
-
- 15 added
- 25 deleted
- 29 edited
- 21 copied
- 12 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/autoquest-core-tasktrees-test/.classpath
r920 r1146 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 2 <classpath> 3 <classpathentry kind="src" output="target/test-classes" path="src/test/java">3 <classpathentry excluding="de/ugoe/cs/autoquest/tasktrees/temporalrelation/copy/" kind="src" output="target/test-classes" path="src/test/java"> 4 4 <attributes> 5 5 <attribute name="optional" value="true"/> -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/manager/TaskTreeManagerTest.java
r1132 r1146 29 29 import de.ugoe.cs.autoquest.test.DummyGUIElement; 30 30 import de.ugoe.cs.autoquest.test.DummyInteraction; 31 import de.ugoe.cs.util.console.Console; 31 32 import de.ugoe.cs.util.console.TextConsole; 32 33 … … 47 48 @Before 48 49 public void setUp() { 50 Console.reset(); 49 51 new TextConsole(Level.FINEST); 50 52 manager = new TaskTreeManager(); … … 66 68 public void testOneEventOnOneElement() { 67 69 simulateEvent(new DummyInteraction("bla", 1), new DummyGUIElement("elem1")); 68 new TaskTreeChecker().assertTaskTree 69 ("Sequence root {" + 70 " Sequence session {" + 71 " Event bla {}" + 72 " }" + 73 "}", manager.getTaskTree()); 70 new TaskTreeChecker().assertTaskInstanceList 71 ("UserSession session {" + 72 " Event bla {}" + 73 "}", manager.getTaskModel().getUserSessions().get(0)); 74 74 } 75 75 … … 84 84 simulateEvent(new DummyInteraction("blo", 1), eventTarget); 85 85 simulateEvent(new DummyInteraction("blu", 1), eventTarget); 86 simulateEvent(new DummyInteraction("bla", 1), eventTarget); 87 88 new TaskTreeChecker().assertTaskTree 89 ("Sequence root {" + 90 " Sequence session {" + 91 " Event bla {}" + 92 " Event bli {}" + 93 " Event blo {}" + 94 " Event blu {}" + 95 " Event bla {}" + 96 " }" + 97 "}", manager.getTaskTree()); 86 simulateEvent(new DummyInteraction("ble", 1), eventTarget); 87 88 new TaskTreeChecker().assertTaskInstanceList 89 ("UserSession session {" + 90 " Event bla {}" + 91 " Event bli {}" + 92 " Event blo {}" + 93 " Event blu {}" + 94 " Event ble {}" + 95 "}", manager.getTaskModel().getUserSessions().get(0)); 98 96 } 99 97 … … 111 109 simulateEvent(new DummyInteraction("bla", 1), eventTarget1); 112 110 simulateEvent(new DummyInteraction("bli", 1), eventTarget2); 113 simulateEvent(new DummyInteraction("bla", 1), eventTarget3); 114 simulateEvent(new DummyInteraction("bli", 1), eventTarget4); 115 simulateEvent(new DummyInteraction("blo", 1), eventTarget5); 116 simulateEvent(new DummyInteraction("bla", 1), eventTarget6); 117 118 new TaskTreeChecker().assertTaskTree 119 ("Sequence root {" + 120 " Sequence session {" + 121 " Event bla {}" + 122 " Event bli {}" + 123 " Event bla {}" + 124 " Event bli {}" + 125 " Event blo {}" + 126 " Event bla {}" + 127 " }" + 128 "}", manager.getTaskTree()); 111 simulateEvent(new DummyInteraction("blo", 1), eventTarget3); 112 simulateEvent(new DummyInteraction("blu", 1), eventTarget4); 113 simulateEvent(new DummyInteraction("ble", 1), eventTarget5); 114 simulateEvent(new DummyInteraction("blum", 1), eventTarget6); 115 116 new TaskTreeChecker(true).assertTaskInstanceList 117 ("UserSession session {" + 118 " Event bla {}" + 119 " Event bli {}" + 120 " Event blo {}" + 121 " Event blu {}" + 122 " Event ble {}" + 123 " Event blum {}" + 124 "}", manager.getTaskModel().getUserSessions().get(0)); 129 125 } 130 126 … … 142 138 simulateEvent(new DummyInteraction("bla", 1), eventTarget1); 143 139 simulateEvent(new DummyInteraction("bli", 1), eventTarget1); 144 simulateEvent(new DummyInteraction("bl a", 1), eventTarget1);145 simulateEvent(new DummyInteraction("bl i", 1), eventTarget2);140 simulateEvent(new DummyInteraction("blup", 1), eventTarget1); 141 simulateEvent(new DummyInteraction("ble", 1), eventTarget2); 146 142 simulateEvent(new DummyInteraction("blo", 1), eventTarget2); 147 simulateEvent(new DummyInteraction("bla", 1), eventTarget3); 148 simulateEvent(new DummyInteraction("bli", 1), eventTarget4); 149 simulateEvent(new DummyInteraction("bla", 1), eventTarget4); 150 simulateEvent(new DummyInteraction("bli", 1), eventTarget4); 151 simulateEvent(new DummyInteraction("blo", 1), eventTarget4); 152 simulateEvent(new DummyInteraction("bla", 1), eventTarget5); 153 simulateEvent(new DummyInteraction("bli", 1), eventTarget6); 154 simulateEvent(new DummyInteraction("bla", 1), eventTarget6); 155 simulateEvent(new DummyInteraction("bli", 1), eventTarget6); 156 simulateEvent(new DummyInteraction("blo", 1), eventTarget6); 157 158 new TaskTreeChecker().assertTaskTree 159 ("Sequence root {" + 160 " Sequence session {" + 161 " Event bla {}" + 162 " Event bli {}" + 163 " Event bla {}" + 164 " Event bli {}" + 165 " Event blo {}" + 166 " Event bla {}" + 167 " Event bli {}" + 168 " Event bla {}" + 169 " Event bli {}" + 170 " Event blo {}" + 171 " Event bla {}" + 172 " Event bli {}" + 173 " Event bla {}" + 174 " Event bli {}" + 175 " Event blo {}" + 176 " }" + 177 "}", manager.getTaskTree()); 143 simulateEvent(new DummyInteraction("blau", 1), eventTarget3); 144 simulateEvent(new DummyInteraction("blass", 1), eventTarget4); 145 simulateEvent(new DummyInteraction("blum", 1), eventTarget4); 146 simulateEvent(new DummyInteraction("blim", 1), eventTarget4); 147 simulateEvent(new DummyInteraction("blom", 1), eventTarget4); 148 simulateEvent(new DummyInteraction("blam", 1), eventTarget5); 149 simulateEvent(new DummyInteraction("blip", 1), eventTarget6); 150 simulateEvent(new DummyInteraction("blap", 1), eventTarget6); 151 simulateEvent(new DummyInteraction("blep", 1), eventTarget6); 152 simulateEvent(new DummyInteraction("blop", 1), eventTarget6); 153 154 new TaskTreeChecker().assertTaskInstanceList 155 ("UserSession session {" + 156 " Event bla {}" + 157 " Event bli {}" + 158 " Event blup {}" + 159 " Event ble {}" + 160 " Event blo {}" + 161 " Event blau {}" + 162 " Event blass {}" + 163 " Event blum {}" + 164 " Event blim {}" + 165 " Event blom {}" + 166 " Event blam {}" + 167 " Event blip {}" + 168 " Event blap {}" + 169 " Event blep {}" + 170 " Event blop {}" + 171 "}", manager.getTaskModel().getUserSessions().get(0)); 178 172 } 179 173 … … 187 181 simulateEvent(event1, eventTarget1); 188 182 simulateEvent(event1, eventTarget1); 189 new TaskTreeChecker().assertTaskTree 190 ("Sequence root {" + 191 " Sequence session {" + 192 " Iteration iteration1 {" + 193 " Event bla {}" + 194 " }" + 183 new TaskTreeChecker().assertTaskInstanceList 184 ("UserSession session {" + 185 " Iteration iteration1 {" + 186 " Event bla {}" + 187 " Event bla {}" + 195 188 " }" + 196 "}", manager.getTask Tree());189 "}", manager.getTaskModel().getUserSessions().get(0)); 197 190 } 198 191 … … 208 201 } 209 202 210 new TaskTreeChecker().assertTaskTree 211 ("Sequence root {" + 212 " Sequence session {" + 213 " Iteration iteration1 {" + 214 " Event bla {}" + 215 " }" + 203 new TaskTreeChecker().assertTaskInstanceList 204 ("UserSession session {" + 205 " Iteration iteration1 {" + 206 " Event bla {}" + 207 " Event bla {}" + 208 " Event bla {}" + 209 " Event bla {}" + 210 " Event bla {}" + 211 " Event bla {}" + 212 " Event bla {}" + 213 " Event bla {}" + 214 " Event bla {}" + 215 " Event bla {}" + 216 216 " }" + 217 "}", manager.getTask Tree());217 "}", manager.getTaskModel().getUserSessions().get(0)); 218 218 } 219 219 … … 229 229 IEventType event2 = new DummyInteraction("bli", 1); 230 230 IEventType event3 = new DummyInteraction("blup", 1); 231 IEventType event4 = new DummyInteraction("ble", 1); 232 IEventType event5 = new DummyInteraction("blo", 1); 231 233 232 234 simulateEvent(event2, eventTarget1); … … 235 237 simulateEvent(event1, eventTarget1); 236 238 } 237 simulateEvent(event3, eventTarget1); 238 simulateEvent(event2, eventTarget1); 239 240 new TaskTreeChecker().assertTaskTree 241 ("Sequence root {" + 242 " Sequence session {" + 243 " Event bli {}" + 244 " Event blup {}" + 245 " Iteration iteration2 {" + 246 " Event bla {}" + 247 " }" + 248 " Event blup {}" + 249 " Event bli {}" + 239 simulateEvent(event4, eventTarget1); 240 simulateEvent(event5, eventTarget1); 241 242 new TaskTreeChecker().assertTaskInstanceList 243 ("UserSession session {" + 244 " Event bli {}" + 245 " Event blup {}" + 246 " Iteration iteration2 {" + 247 " Event bla {}" + 248 " Event bla {}" + 249 " Event bla {}" + 250 " Event bla {}" + 251 " Event bla {}" + 252 " Event bla {}" + 253 " Event bla {}" + 254 " Event bla {}" + 255 " Event bla {}" + 256 " Event bla {}" + 250 257 " }" + 251 "}", manager.getTaskTree()); 258 " Event ble {}" + 259 " Event blo {}" + 260 "}", manager.getTaskModel().getUserSessions().get(0)); 252 261 253 262 } … … 264 273 265 274 // now test with iterations of iterations 266 for (int i = 0; i < 10; i++) {275 for (int i = 0; i < 5; i++) { 267 276 for (int j = 0; j < 5; j++) { 268 277 simulateEvent(event1, eventTarget1); … … 276 285 } 277 286 278 new TaskTreeChecker().assertTaskTree 279 ("Sequence root {" + 280 " Sequence session {" + 281 " Iteration iteration2 {" + 282 " Sequence sequence1 {" + 283 " Iteration iteration3 {" + 284 " Event bla {}" + 285 " }" + 286 " Iteration iteration4 {" + 287 " Event bli {}" + 288 " }" + 289 " Iteration iteration5 {" + 290 " Event blup {}" + 291 " }" + 287 new TaskTreeChecker().assertTaskInstanceList 288 ("UserSession session {" + 289 " Iteration iteration2 {" + 290 " Sequence sequence1 {" + 291 " Iteration iteration3 {" + 292 " Event bla {}" + 293 " Event bla {}" + 294 " Event bla {}" + 295 " Event bla {}" + 296 " Event bla {}" + 297 " }" + 298 " Iteration iteration4 {" + 299 " Event bli {}" + 300 " Event bli {}" + 301 " Event bli {}" + 302 " Event bli {}" + 303 " Event bli {}" + 304 " }" + 305 " Iteration iteration5 {" + 306 " Event blup {}" + 307 " Event blup {}" + 308 " Event blup {}" + 309 " Event blup {}" + 310 " Event blup {}" + 311 " }" + 312 " }" + 313 " Sequence sequence1 {" + 314 " Iteration iteration3 {" + 315 " Event bla {}" + 316 " Event bla {}" + 317 " Event bla {}" + 318 " Event bla {}" + 319 " Event bla {}" + 320 " }" + 321 " Iteration iteration4 {" + 322 " Event bli {}" + 323 " Event bli {}" + 324 " Event bli {}" + 325 " Event bli {}" + 326 " Event bli {}" + 327 " }" + 328 " Iteration iteration5 {" + 329 " Event blup {}" + 330 " Event blup {}" + 331 " Event blup {}" + 332 " Event blup {}" + 333 " Event blup {}" + 334 " }" + 335 " }" + 336 " Sequence sequence1 {" + 337 " Iteration iteration3 {" + 338 " Event bla {}" + 339 " Event bla {}" + 340 " Event bla {}" + 341 " Event bla {}" + 342 " Event bla {}" + 343 " }" + 344 " Iteration iteration4 {" + 345 " Event bli {}" + 346 " Event bli {}" + 347 " Event bli {}" + 348 " Event bli {}" + 349 " Event bli {}" + 350 " }" + 351 " Iteration iteration5 {" + 352 " Event blup {}" + 353 " Event blup {}" + 354 " Event blup {}" + 355 " Event blup {}" + 356 " Event blup {}" + 357 " }" + 358 " }" + 359 " Sequence sequence1 {" + 360 " Iteration iteration3 {" + 361 " Event bla {}" + 362 " Event bla {}" + 363 " Event bla {}" + 364 " Event bla {}" + 365 " Event bla {}" + 366 " }" + 367 " Iteration iteration4 {" + 368 " Event bli {}" + 369 " Event bli {}" + 370 " Event bli {}" + 371 " Event bli {}" + 372 " Event bli {}" + 373 " }" + 374 " Iteration iteration5 {" + 375 " Event blup {}" + 376 " Event blup {}" + 377 " Event blup {}" + 378 " Event blup {}" + 379 " Event blup {}" + 380 " }" + 381 " }" + 382 " Sequence sequence1 {" + 383 " Iteration iteration3 {" + 384 " Event bla {}" + 385 " Event bla {}" + 386 " Event bla {}" + 387 " Event bla {}" + 388 " Event bla {}" + 389 " }" + 390 " Iteration iteration4 {" + 391 " Event bli {}" + 392 " Event bli {}" + 393 " Event bli {}" + 394 " Event bli {}" + 395 " Event bli {}" + 396 " }" + 397 " Iteration iteration5 {" + 398 " Event blup {}" + 399 " Event blup {}" + 400 " Event blup {}" + 401 " Event blup {}" + 402 " Event blup {}" + 292 403 " }" + 293 404 " }" + 294 405 " }" + 295 "}", manager.getTask Tree());406 "}", manager.getTaskModel().getUserSessions().get(0)); 296 407 297 408 } … … 315 426 simulateEvent(event3, eventTarget1); 316 427 317 new TaskTreeChecker().assertTaskTree 318 ("Sequence root {" + 319 " Sequence session {" + 320 " Iteration iteration1 {" + 321 " Sequence sequence2 {" + 322 " Event bla {}" + 323 " Event bli {}" + 324 " Event blup {}" + 325 " }" + 428 new TaskTreeChecker().assertTaskInstanceList 429 ("UserSession session {" + 430 " Iteration iteration1 {" + 431 " Sequence sequence2 {" + 432 " Event bla {}" + 433 " Event bli {}" + 434 " Event blup {}" + 435 " }" + 436 " Sequence sequence2 {" + 437 " Event bla {}" + 438 " Event bli {}" + 439 " Event blup {}" + 326 440 " }" + 327 441 " }" + 328 "}", manager.getTask Tree());442 "}", manager.getTaskModel().getUserSessions().get(0)); 329 443 } 330 444 … … 345 459 } 346 460 347 new TaskTreeChecker().assertTaskTree 348 ("Sequence root {" + 349 " Sequence session {" + 350 " Iteration iteration1 {" + 351 " Sequence sequence2 {" + 352 " Event bla {}" + 353 " Event bli {}" + 354 " Event blup {}" + 355 " }" + 461 new TaskTreeChecker().assertTaskInstanceList 462 ("UserSession session {" + 463 " Iteration iteration1 {" + 464 " Sequence sequence2 {" + 465 " Event bla {}" + 466 " Event bli {}" + 467 " Event blup {}" + 468 " }" + 469 " Sequence sequence2 {" + 470 " Event bla {}" + 471 " Event bli {}" + 472 " Event blup {}" + 473 " }" + 474 " Sequence sequence2 {" + 475 " Event bla {}" + 476 " Event bli {}" + 477 " Event blup {}" + 478 " }" + 479 " Sequence sequence2 {" + 480 " Event bla {}" + 481 " Event bli {}" + 482 " Event blup {}" + 483 " }" + 484 " Sequence sequence2 {" + 485 " Event bla {}" + 486 " Event bli {}" + 487 " Event blup {}" + 488 " }" + 489 " Sequence sequence2 {" + 490 " Event bla {}" + 491 " Event bli {}" + 492 " Event blup {}" + 493 " }" + 494 " Sequence sequence2 {" + 495 " Event bla {}" + 496 " Event bli {}" + 497 " Event blup {}" + 498 " }" + 499 " Sequence sequence2 {" + 500 " Event bla {}" + 501 " Event bli {}" + 502 " Event blup {}" + 503 " }" + 504 " Sequence sequence2 {" + 505 " Event bla {}" + 506 " Event bli {}" + 507 " Event blup {}" + 508 " }" + 509 " Sequence sequence2 {" + 510 " Event bla {}" + 511 " Event bli {}" + 512 " Event blup {}" + 356 513 " }" + 357 514 " }" + 358 "}", manager.getTask Tree());515 "}", manager.getTaskModel().getUserSessions().get(0)); 359 516 } 360 517 … … 375 532 376 533 simulateEvent(event4, eventTarget1); 377 simulateEvent(event5, eventTarget1); 378 simulateEvent(event6, eventTarget1); 379 for (int i = 0; i < 10; i++) { 534 for (int i = 0; i < 5; i++) { 380 535 simulateEvent(event1, eventTarget1); 381 536 simulateEvent(event2, eventTarget1); 382 537 simulateEvent(event3, eventTarget1); 383 538 } 539 simulateEvent(event5, eventTarget1); 384 540 simulateEvent(event6, eventTarget1); 385 simulateEvent(event5, eventTarget1); 386 simulateEvent(event4, eventTarget1); 387 388 new TaskTreeChecker().assertTaskTree 389 ("Sequence root {" + 390 " Sequence session {" + 391 " Event ble {}" + 392 " Event blo {}" + 393 " Event blu {}" + 394 " Iteration iteration2 {" + 395 " Sequence sequence3 {" + 396 " Event bla {}" + 397 " Event bli {}" + 398 " Event blup {}" + 399 " }" + 400 " }" + 401 " Event blu {}" + 402 " Event blo {}" + 403 " Event ble {}" + 541 542 new TaskTreeChecker().assertTaskInstanceList 543 ("UserSession session {" + 544 " Event ble {}" + 545 " Iteration iteration2 {" + 546 " Sequence sequence3 {" + 547 " Event bla {}" + 548 " Event bli {}" + 549 " Event blup {}" + 550 " }" + 551 " Sequence sequence3 {" + 552 " Event bla {}" + 553 " Event bli {}" + 554 " Event blup {}" + 555 " }" + 556 " Sequence sequence3 {" + 557 " Event bla {}" + 558 " Event bli {}" + 559 " Event blup {}" + 560 " }" + 561 " Sequence sequence3 {" + 562 " Event bla {}" + 563 " Event bli {}" + 564 " Event blup {}" + 565 " }" + 566 " Sequence sequence3 {" + 567 " Event bla {}" + 568 " Event bli {}" + 569 " Event blup {}" + 570 " }" + 404 571 " }" + 405 "}", manager.getTaskTree()); 572 " Event blo {}" + 573 " Event blu {}" + 574 "}", manager.getTaskModel().getUserSessions().get(0)); 406 575 } 407 576 … … 418 587 IEventType event5 = new DummyInteraction("blau", 1); 419 588 IEventType event6 = new DummyInteraction("blass", 1); 589 IEventType event7 = new DummyInteraction("ble", 1); 590 IEventType event8 = new DummyInteraction("blum", 1); 591 IEventType event9 = new DummyInteraction("blop", 1); 420 592 421 593 // now test with iterations of iterations 422 for (int i = 0; i < 10; i++) {594 for (int i = 0; i < 5; i++) { 423 595 for (int j = 0; j < 5; j++) { 424 596 simulateEvent(event1, eventTarget1); … … 432 604 } 433 605 for (int j = 0; j < 5; j++) { 434 simulateEvent(event 1, eventTarget1);435 simulateEvent(event 3, eventTarget1);436 simulateEvent(event 5, eventTarget1);606 simulateEvent(event7, eventTarget1); 607 simulateEvent(event8, eventTarget1); 608 simulateEvent(event9, eventTarget1); 437 609 } 438 610 } 439 611 440 new TaskTreeChecker().assertTaskTree 441 ("Sequence root {" + 442 " Sequence session {" + 443 " Iteration iteration3 {" + 444 " Sequence sequence4 {" + 445 " Iteration iteration4 {" + 446 " Sequence sequence4 {" + 447 " Event bla {}" + 448 " Event bli {}" + 449 " Event blup {}" + 450 " }" + 451 " }" + 452 " Iteration iteration5 {" + 453 " Sequence sequence5 {" + 454 " Event blo {}" + 455 " Event blau {}" + 456 " Event blass {}" + 457 " }" + 458 " }" + 459 " Iteration iteration6 {" + 460 " Sequence sequence6 {" + 461 " Event bla {}" + 462 " Event blup {}" + 463 " Event blau {}" + 464 " }" + 612 new TaskTreeChecker().assertTaskInstanceList 613 ("UserSession session {" + 614 " Iteration iteration3 {" + 615 " Sequence sequence1 {" + 616 " Iteration iteration4 {" + 617 " Sequence sequence4 {" + 618 " Event bla {}" + 619 " Event bli {}" + 620 " Event blup {}" + 621 " }" + 622 " Sequence sequence4 {" + 623 " Event bla {}" + 624 " Event bli {}" + 625 " Event blup {}" + 626 " }" + 627 " Sequence sequence4 {" + 628 " Event bla {}" + 629 " Event bli {}" + 630 " Event blup {}" + 631 " }" + 632 " Sequence sequence4 {" + 633 " Event bla {}" + 634 " Event bli {}" + 635 " Event blup {}" + 636 " }" + 637 " Sequence sequence4 {" + 638 " Event bla {}" + 639 " Event bli {}" + 640 " Event blup {}" + 641 " }" + 642 " }" + 643 " Iteration iteration5 {" + 644 " Sequence sequence5 {" + 645 " Event blo {}" + 646 " Event blau {}" + 647 " Event blass {}" + 648 " }" + 649 " Sequence sequence5 {" + 650 " Event blo {}" + 651 " Event blau {}" + 652 " Event blass {}" + 653 " }" + 654 " Sequence sequence5 {" + 655 " Event blo {}" + 656 " Event blau {}" + 657 " Event blass {}" + 658 " }" + 659 " Sequence sequence5 {" + 660 " Event blo {}" + 661 " Event blau {}" + 662 " Event blass {}" + 663 " }" + 664 " Sequence sequence5 {" + 665 " Event blo {}" + 666 " Event blau {}" + 667 " Event blass {}" + 668 " }" + 669 " }" + 670 " Iteration iteration6 {" + 671 " Sequence sequence6 {" + 672 " Event ble {}" + 673 " Event blum {}" + 674 " Event blop {}" + 675 " }" + 676 " Sequence sequence6 {" + 677 " Event ble {}" + 678 " Event blum {}" + 679 " Event blop {}" + 680 " }" + 681 " Sequence sequence6 {" + 682 " Event ble {}" + 683 " Event blum {}" + 684 " Event blop {}" + 685 " }" + 686 " Sequence sequence6 {" + 687 " Event ble {}" + 688 " Event blum {}" + 689 " Event blop {}" + 690 " }" + 691 " Sequence sequence6 {" + 692 " Event ble {}" + 693 " Event blum {}" + 694 " Event blop {}" + 695 " }" + 696 " }" + 697 " }" + 698 " Sequence sequence1 {" + 699 " Iteration iteration4 {" + 700 " Sequence sequence4 {" + 701 " Event bla {}" + 702 " Event bli {}" + 703 " Event blup {}" + 704 " }" + 705 " Sequence sequence4 {" + 706 " Event bla {}" + 707 " Event bli {}" + 708 " Event blup {}" + 709 " }" + 710 " Sequence sequence4 {" + 711 " Event bla {}" + 712 " Event bli {}" + 713 " Event blup {}" + 714 " }" + 715 " Sequence sequence4 {" + 716 " Event bla {}" + 717 " Event bli {}" + 718 " Event blup {}" + 719 " }" + 720 " Sequence sequence4 {" + 721 " Event bla {}" + 722 " Event bli {}" + 723 " Event blup {}" + 724 " }" + 725 " }" + 726 " Iteration iteration5 {" + 727 " Sequence sequence5 {" + 728 " Event blo {}" + 729 " Event blau {}" + 730 " Event blass {}" + 731 " }" + 732 " Sequence sequence5 {" + 733 " Event blo {}" + 734 " Event blau {}" + 735 " Event blass {}" + 736 " }" + 737 " Sequence sequence5 {" + 738 " Event blo {}" + 739 " Event blau {}" + 740 " Event blass {}" + 741 " }" + 742 " Sequence sequence5 {" + 743 " Event blo {}" + 744 " Event blau {}" + 745 " Event blass {}" + 746 " }" + 747 " Sequence sequence5 {" + 748 " Event blo {}" + 749 " Event blau {}" + 750 " Event blass {}" + 751 " }" + 752 " }" + 753 " Iteration iteration6 {" + 754 " Sequence sequence6 {" + 755 " Event ble {}" + 756 " Event blum {}" + 757 " Event blop {}" + 758 " }" + 759 " Sequence sequence6 {" + 760 " Event ble {}" + 761 " Event blum {}" + 762 " Event blop {}" + 763 " }" + 764 " Sequence sequence6 {" + 765 " Event ble {}" + 766 " Event blum {}" + 767 " Event blop {}" + 768 " }" + 769 " Sequence sequence6 {" + 770 " Event ble {}" + 771 " Event blum {}" + 772 " Event blop {}" + 773 " }" + 774 " Sequence sequence6 {" + 775 " Event ble {}" + 776 " Event blum {}" + 777 " Event blop {}" + 778 " }" + 779 " }" + 780 " }" + 781 " Sequence sequence1 {" + 782 " Iteration iteration4 {" + 783 " Sequence sequence4 {" + 784 " Event bla {}" + 785 " Event bli {}" + 786 " Event blup {}" + 787 " }" + 788 " Sequence sequence4 {" + 789 " Event bla {}" + 790 " Event bli {}" + 791 " Event blup {}" + 792 " }" + 793 " Sequence sequence4 {" + 794 " Event bla {}" + 795 " Event bli {}" + 796 " Event blup {}" + 797 " }" + 798 " Sequence sequence4 {" + 799 " Event bla {}" + 800 " Event bli {}" + 801 " Event blup {}" + 802 " }" + 803 " Sequence sequence4 {" + 804 " Event bla {}" + 805 " Event bli {}" + 806 " Event blup {}" + 807 " }" + 808 " }" + 809 " Iteration iteration5 {" + 810 " Sequence sequence5 {" + 811 " Event blo {}" + 812 " Event blau {}" + 813 " Event blass {}" + 814 " }" + 815 " Sequence sequence5 {" + 816 " Event blo {}" + 817 " Event blau {}" + 818 " Event blass {}" + 819 " }" + 820 " Sequence sequence5 {" + 821 " Event blo {}" + 822 " Event blau {}" + 823 " Event blass {}" + 824 " }" + 825 " Sequence sequence5 {" + 826 " Event blo {}" + 827 " Event blau {}" + 828 " Event blass {}" + 829 " }" + 830 " Sequence sequence5 {" + 831 " Event blo {}" + 832 " Event blau {}" + 833 " Event blass {}" + 834 " }" + 835 " }" + 836 " Iteration iteration6 {" + 837 " Sequence sequence6 {" + 838 " Event ble {}" + 839 " Event blum {}" + 840 " Event blop {}" + 841 " }" + 842 " Sequence sequence6 {" + 843 " Event ble {}" + 844 " Event blum {}" + 845 " Event blop {}" + 846 " }" + 847 " Sequence sequence6 {" + 848 " Event ble {}" + 849 " Event blum {}" + 850 " Event blop {}" + 851 " }" + 852 " Sequence sequence6 {" + 853 " Event ble {}" + 854 " Event blum {}" + 855 " Event blop {}" + 856 " }" + 857 " Sequence sequence6 {" + 858 " Event ble {}" + 859 " Event blum {}" + 860 " Event blop {}" + 861 " }" + 862 " }" + 863 " }" + 864 " Sequence sequence1 {" + 865 " Iteration iteration4 {" + 866 " Sequence sequence4 {" + 867 " Event bla {}" + 868 " Event bli {}" + 869 " Event blup {}" + 870 " }" + 871 " Sequence sequence4 {" + 872 " Event bla {}" + 873 " Event bli {}" + 874 " Event blup {}" + 875 " }" + 876 " Sequence sequence4 {" + 877 " Event bla {}" + 878 " Event bli {}" + 879 " Event blup {}" + 880 " }" + 881 " Sequence sequence4 {" + 882 " Event bla {}" + 883 " Event bli {}" + 884 " Event blup {}" + 885 " }" + 886 " Sequence sequence4 {" + 887 " Event bla {}" + 888 " Event bli {}" + 889 " Event blup {}" + 890 " }" + 891 " }" + 892 " Iteration iteration5 {" + 893 " Sequence sequence5 {" + 894 " Event blo {}" + 895 " Event blau {}" + 896 " Event blass {}" + 897 " }" + 898 " Sequence sequence5 {" + 899 " Event blo {}" + 900 " Event blau {}" + 901 " Event blass {}" + 902 " }" + 903 " Sequence sequence5 {" + 904 " Event blo {}" + 905 " Event blau {}" + 906 " Event blass {}" + 907 " }" + 908 " Sequence sequence5 {" + 909 " Event blo {}" + 910 " Event blau {}" + 911 " Event blass {}" + 912 " }" + 913 " Sequence sequence5 {" + 914 " Event blo {}" + 915 " Event blau {}" + 916 " Event blass {}" + 917 " }" + 918 " }" + 919 " Iteration iteration6 {" + 920 " Sequence sequence6 {" + 921 " Event ble {}" + 922 " Event blum {}" + 923 " Event blop {}" + 924 " }" + 925 " Sequence sequence6 {" + 926 " Event ble {}" + 927 " Event blum {}" + 928 " Event blop {}" + 929 " }" + 930 " Sequence sequence6 {" + 931 " Event ble {}" + 932 " Event blum {}" + 933 " Event blop {}" + 934 " }" + 935 " Sequence sequence6 {" + 936 " Event ble {}" + 937 " Event blum {}" + 938 " Event blop {}" + 939 " }" + 940 " Sequence sequence6 {" + 941 " Event ble {}" + 942 " Event blum {}" + 943 " Event blop {}" + 944 " }" + 945 " }" + 946 " }" + 947 " Sequence sequence1 {" + 948 " Iteration iteration4 {" + 949 " Sequence sequence4 {" + 950 " Event bla {}" + 951 " Event bli {}" + 952 " Event blup {}" + 953 " }" + 954 " Sequence sequence4 {" + 955 " Event bla {}" + 956 " Event bli {}" + 957 " Event blup {}" + 958 " }" + 959 " Sequence sequence4 {" + 960 " Event bla {}" + 961 " Event bli {}" + 962 " Event blup {}" + 963 " }" + 964 " Sequence sequence4 {" + 965 " Event bla {}" + 966 " Event bli {}" + 967 " Event blup {}" + 968 " }" + 969 " Sequence sequence4 {" + 970 " Event bla {}" + 971 " Event bli {}" + 972 " Event blup {}" + 973 " }" + 974 " }" + 975 " Iteration iteration5 {" + 976 " Sequence sequence5 {" + 977 " Event blo {}" + 978 " Event blau {}" + 979 " Event blass {}" + 980 " }" + 981 " Sequence sequence5 {" + 982 " Event blo {}" + 983 " Event blau {}" + 984 " Event blass {}" + 985 " }" + 986 " Sequence sequence5 {" + 987 " Event blo {}" + 988 " Event blau {}" + 989 " Event blass {}" + 990 " }" + 991 " Sequence sequence5 {" + 992 " Event blo {}" + 993 " Event blau {}" + 994 " Event blass {}" + 995 " }" + 996 " Sequence sequence5 {" + 997 " Event blo {}" + 998 " Event blau {}" + 999 " Event blass {}" + 1000 " }" + 1001 " }" + 1002 " Iteration iteration6 {" + 1003 " Sequence sequence6 {" + 1004 " Event ble {}" + 1005 " Event blum {}" + 1006 " Event blop {}" + 1007 " }" + 1008 " Sequence sequence6 {" + 1009 " Event ble {}" + 1010 " Event blum {}" + 1011 " Event blop {}" + 1012 " }" + 1013 " Sequence sequence6 {" + 1014 " Event ble {}" + 1015 " Event blum {}" + 1016 " Event blop {}" + 1017 " }" + 1018 " Sequence sequence6 {" + 1019 " Event ble {}" + 1020 " Event blum {}" + 1021 " Event blop {}" + 1022 " }" + 1023 " Sequence sequence6 {" + 1024 " Event ble {}" + 1025 " Event blum {}" + 1026 " Event blop {}" + 465 1027 " }" + 466 1028 " }" + 467 1029 " }" + 468 1030 " }" + 469 "}", manager.getTask Tree());1031 "}", manager.getTaskModel().getUserSessions().get(0)); 470 1032 } 471 1033 -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/taskequality/EventTaskComparisonRuleTest.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import static org.junit.Assert.*; … … 22 22 import de.ugoe.cs.autoquest.eventcore.IEventType; 23 23 import de.ugoe.cs.autoquest.eventcore.StringEventType; 24 import de.ugoe.cs.autoquest.tasktrees. nodeequality.EventTaskComparisonRule;25 import de.ugoe.cs.autoquest.tasktrees. nodeequality.NodeEquality;26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNodeFactory;28 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeNodeFactory;24 import de.ugoe.cs.autoquest.tasktrees.taskequality.EventTaskComparisonRule; 25 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 28 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 29 29 import de.ugoe.cs.autoquest.test.DummyGUIElement; 30 30 … … 39 39 @Test 40 40 public void test_isApplicable_01() { 41 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();42 43 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 44 45 IEventType eventType1 = new StringEventType("eventType1"); 46 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 47 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);41 ITaskFactory taskFactory = new TaskFactory(); 42 43 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 44 45 IEventType eventType1 = new StringEventType("eventType1"); 46 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 47 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 48 48 49 49 assertTrue(rule.isApplicable(task1, task1)); … … 55 55 @Test 56 56 public void test_isApplicable_02() { 57 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();58 59 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 60 61 IEventType eventType1 = new StringEventType("eventType1"); 62 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 63 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);57 ITaskFactory taskFactory = new TaskFactory(); 58 59 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 60 61 IEventType eventType1 = new StringEventType("eventType1"); 62 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 63 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 64 64 65 65 IEventType eventType2 = new StringEventType("eventType2"); 66 66 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 67 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);67 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 68 68 69 69 assertTrue(rule.isApplicable(task1, task2)); … … 76 76 @Test 77 77 public void test_isApplicable_03() { 78 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();79 80 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 81 82 IEventType eventType1 = new StringEventType("eventType1"); 83 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 84 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);78 ITaskFactory taskFactory = new TaskFactory(); 79 80 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 81 82 IEventType eventType1 = new StringEventType("eventType1"); 83 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 84 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 85 85 86 ITask TreeNode selection = treeNodeFactory.createNewSelection();86 ITask selection = taskFactory.createNewSelection(); 87 87 88 88 assertFalse(rule.isApplicable(task1, selection)); … … 95 95 @Test 96 96 public void test_isApplicable_04() { 97 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();98 99 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 100 101 IEventType eventType1 = new StringEventType("eventType1"); 102 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 103 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);104 105 ITask TreeNode sequence = treeNodeFactory.createNewSequence();97 ITaskFactory taskFactory = new TaskFactory(); 98 99 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 100 101 IEventType eventType1 = new StringEventType("eventType1"); 102 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 103 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 104 105 ITask sequence = taskFactory.createNewSequence(); 106 106 107 107 assertFalse(rule.isApplicable(task1, sequence)); … … 114 114 @Test 115 115 public void test_isApplicable_05() { 116 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();117 118 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 119 120 IEventType eventType1 = new StringEventType("eventType1"); 121 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 122 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);123 124 ITask TreeNode iteration = treeNodeFactory.createNewIteration();116 ITaskFactory taskFactory = new TaskFactory(); 117 118 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 119 120 IEventType eventType1 = new StringEventType("eventType1"); 121 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 122 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 123 124 ITask iteration = taskFactory.createNewIteration(); 125 125 126 126 assertFalse(rule.isApplicable(task1, iteration)); … … 133 133 @Test 134 134 public void test_isApplicable_06() { 135 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();136 137 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 138 139 IEventType eventType1 = new StringEventType("eventType1"); 140 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 141 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);142 143 ITask TreeNode optional = treeNodeFactory.createNewOptional();135 ITaskFactory taskFactory = new TaskFactory(); 136 137 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 138 139 IEventType eventType1 = new StringEventType("eventType1"); 140 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 141 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 142 143 ITask optional = taskFactory.createNewOptional(); 144 144 145 145 assertFalse(rule.isApplicable(task1, optional)); … … 152 152 @Test 153 153 public void test_compare_01() { 154 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();155 156 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 157 158 IEventType eventType1 = new StringEventType("eventType1"); 159 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 160 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);161 162 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, task1));154 ITaskFactory taskFactory = new TaskFactory(); 155 156 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 157 158 IEventType eventType1 = new StringEventType("eventType1"); 159 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 160 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 161 162 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task1, task1)); 163 163 assertTrue(rule.areLexicallyEqual(task1, task1)); 164 164 assertTrue(rule.areSyntacticallyEqual(task1, task1)); … … 171 171 @Test 172 172 public void test_compare_02() { 173 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();174 175 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 176 177 IEventType eventType1 = new StringEventType("eventType1"); 178 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 179 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);180 181 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);182 183 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, task2));173 ITaskFactory taskFactory = new TaskFactory(); 174 175 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 176 177 IEventType eventType1 = new StringEventType("eventType1"); 178 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 179 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 180 181 ITask task2 = taskFactory.createNewEventTask(eventType1, eventTarget1); 182 183 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task1, task2)); 184 184 assertTrue(rule.areLexicallyEqual(task1, task2)); 185 185 assertTrue(rule.areSyntacticallyEqual(task1, task2)); 186 186 assertTrue(rule.areSemanticallyEqual(task1, task2)); 187 187 188 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task2, task1));188 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task2, task1)); 189 189 assertTrue(rule.areLexicallyEqual(task2, task1)); 190 190 assertTrue(rule.areSyntacticallyEqual(task2, task1)); … … 197 197 @Test 198 198 public void test_compare_03() { 199 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();200 201 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 202 203 IEventType eventType1 = new StringEventType("eventType1"); 204 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 205 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);199 ITaskFactory taskFactory = new TaskFactory(); 200 201 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 202 203 IEventType eventType1 = new StringEventType("eventType1"); 204 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 205 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 206 206 207 207 IEventType eventType2 = new StringEventType("eventType2"); 208 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);209 210 assertEquals( NodeEquality.UNEQUAL, rule.compare(task1, task2));208 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 209 210 assertEquals(TaskEquality.UNEQUAL, rule.compare(task1, task2)); 211 211 assertFalse(rule.areLexicallyEqual(task1, task2)); 212 212 assertFalse(rule.areSyntacticallyEqual(task1, task2)); 213 213 assertFalse(rule.areSemanticallyEqual(task1, task2)); 214 214 215 assertEquals( NodeEquality.UNEQUAL, rule.compare(task2, task1));215 assertEquals(TaskEquality.UNEQUAL, rule.compare(task2, task1)); 216 216 assertFalse(rule.areLexicallyEqual(task2, task1)); 217 217 assertFalse(rule.areSyntacticallyEqual(task2, task1)); … … 224 224 @Test 225 225 public void test_compare_04() { 226 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();227 228 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 229 230 IEventType eventType1 = new StringEventType("eventType1"); 231 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 232 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);226 ITaskFactory taskFactory = new TaskFactory(); 227 228 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 229 230 IEventType eventType1 = new StringEventType("eventType1"); 231 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 232 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 233 233 234 234 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 235 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget2);236 237 assertEquals( NodeEquality.UNEQUAL, rule.compare(task1, task2));235 ITask task2 = taskFactory.createNewEventTask(eventType1, eventTarget2); 236 237 assertEquals(TaskEquality.UNEQUAL, rule.compare(task1, task2)); 238 238 assertFalse(rule.areLexicallyEqual(task1, task2)); 239 239 assertFalse(rule.areSyntacticallyEqual(task1, task2)); 240 240 assertFalse(rule.areSemanticallyEqual(task1, task2)); 241 241 242 assertEquals( NodeEquality.UNEQUAL, rule.compare(task2, task1));242 assertEquals(TaskEquality.UNEQUAL, rule.compare(task2, task1)); 243 243 assertFalse(rule.areLexicallyEqual(task2, task1)); 244 244 assertFalse(rule.areSyntacticallyEqual(task2, task1)); … … 252 252 @Test 253 253 public void test_compare_05() { 254 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();255 256 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 257 258 IEventType eventType1 = new StringEventType("eventType1"); 259 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 260 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);254 ITaskFactory taskFactory = new TaskFactory(); 255 256 EventTaskComparisonRule rule = new EventTaskComparisonRule(); 257 258 IEventType eventType1 = new StringEventType("eventType1"); 259 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 260 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 261 261 262 262 IEventType eventType2 = new StringEventType("eventType2"); 263 263 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 264 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);265 266 assertEquals( NodeEquality.UNEQUAL, rule.compare(task1, task2));264 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 265 266 assertEquals(TaskEquality.UNEQUAL, rule.compare(task1, task2)); 267 267 assertFalse(rule.areLexicallyEqual(task1, task2)); 268 268 assertFalse(rule.areSyntacticallyEqual(task1, task2)); 269 269 assertFalse(rule.areSemanticallyEqual(task1, task2)); 270 270 271 assertEquals( NodeEquality.UNEQUAL, rule.compare(task2, task1));271 assertEquals(TaskEquality.UNEQUAL, rule.compare(task2, task1)); 272 272 assertFalse(rule.areLexicallyEqual(task2, task1)); 273 273 assertFalse(rule.areSyntacticallyEqual(task2, task1)); -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/taskequality/GUIEventTaskComparisonRuleTest.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import static org.junit.Assert.*; … … 41 41 import de.ugoe.cs.autoquest.eventcore.gui.ValueSelection; 42 42 import de.ugoe.cs.autoquest.keyboardmaps.VirtualKey; 43 import de.ugoe.cs.autoquest.tasktrees.nodeequality.GUIEventTaskComparisonRule; 44 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 45 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 46 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 47 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeNodeFactory; 43 import de.ugoe.cs.autoquest.tasktrees.taskequality.EventTaskComparisonRule; 44 import de.ugoe.cs.autoquest.tasktrees.taskequality.GUIEventTaskComparisonRule; 45 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 46 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 47 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 48 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 48 49 import de.ugoe.cs.autoquest.test.DummyGUIElement; 49 50 … … 58 59 @Test 59 60 public void test_isApplicable_01() { 60 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();61 ITaskFactory taskFactory = new TaskFactory(); 61 62 62 63 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 64 65 IEventType eventType1 = new StringEventType("eventType1"); 65 66 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 66 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);67 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 67 68 68 69 assertTrue(rule.isApplicable(task1, task1)); … … 74 75 @Test 75 76 public void test_isApplicable_02() { 76 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();77 ITaskFactory taskFactory = new TaskFactory(); 77 78 78 79 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 80 81 IEventType eventType1 = new StringEventType("eventType1"); 81 82 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 82 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);83 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 83 84 84 85 IEventType eventType2 = new StringEventType("eventType2"); 85 86 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 86 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);87 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 87 88 88 89 assertTrue(rule.isApplicable(task1, task2)); … … 95 96 @Test 96 97 public void test_isApplicable_03() { 97 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();98 ITaskFactory taskFactory = new TaskFactory(); 98 99 99 100 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 101 102 IEventType eventType1 = new KeyboardFocusChange(); 102 103 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 103 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);104 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 104 105 105 106 IEventType eventType2 = new KeyboardFocusChange(); 106 107 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 107 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);108 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 108 109 109 110 assertTrue(rule.isApplicable(task1, task2)); … … 116 117 @Test 117 118 public void test_isApplicable_04() { 118 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();119 ITaskFactory taskFactory = new TaskFactory(); 119 120 120 121 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 122 123 IEventType eventType1 = new KeyPressed(VirtualKey.LETTER_A); 123 124 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 124 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);125 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 125 126 126 127 IEventType eventType2 = new KeyReleased(VirtualKey.LETTER_B); 127 128 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 128 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);129 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 129 130 130 131 assertTrue(rule.isApplicable(task1, task2)); … … 137 138 @Test 138 139 public void test_isApplicable_05() { 139 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();140 ITaskFactory taskFactory = new TaskFactory(); 140 141 141 142 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 143 144 IEventType eventType1 = new KeyTyped(VirtualKey.LETTER_C); 144 145 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 145 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);146 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 146 147 147 148 IEventType eventType2 = new KeyTyped(VirtualKey.LETTER_D); 148 149 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 149 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);150 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 150 151 151 152 assertTrue(rule.isApplicable(task1, task2)); … … 158 159 @Test 159 160 public void test_isApplicable_06() { 160 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();161 ITaskFactory taskFactory = new TaskFactory(); 161 162 162 163 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 164 165 IEventType eventType1 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 5, 6); 165 166 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 166 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);167 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 167 168 168 169 IEventType eventType2 = new MouseButtonUp(MouseButtonInteraction.Button.MIDDLE, 3, 1); 169 170 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 170 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);171 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 171 172 172 173 assertTrue(rule.isApplicable(task1, task2)); … … 179 180 @Test 180 181 public void test_isApplicable_07() { 181 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();182 ITaskFactory taskFactory = new TaskFactory(); 182 183 183 184 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 185 186 IEventType eventType1 = new MouseClick(MouseButtonInteraction.Button.RIGHT, 4, 7); 186 187 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 187 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);188 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 188 189 189 190 IEventType eventType2 = new MouseDoubleClick(MouseButtonInteraction.Button.X, 9, 12); 190 191 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 191 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);192 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 192 193 193 194 assertTrue(rule.isApplicable(task1, task2)); … … 200 201 @Test 201 202 public void test_isApplicable_08() { 202 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();203 ITaskFactory taskFactory = new TaskFactory(); 203 204 204 205 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 206 207 IEventType eventType1 = new MouseDragAndDrop(1, 2, 3, 4); 207 208 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 208 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);209 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 209 210 210 211 IEventType eventType2 = new MouseDragAndDrop(5, 6, 7, 8); 211 212 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 212 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);213 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 213 214 214 215 assertTrue(rule.isApplicable(task1, task2)); … … 221 222 @Test 222 223 public void test_isApplicable_09() { 223 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();224 ITaskFactory taskFactory = new TaskFactory(); 224 225 225 226 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 227 228 IEventType eventType1 = new Scroll(1, 2); 228 229 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 229 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);230 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 230 231 231 232 IEventType eventType2 = new Scroll(3, 4); 232 233 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 233 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);234 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 234 235 235 236 assertTrue(rule.isApplicable(task1, task2)); … … 242 243 @Test 243 244 public void test_isApplicable_10() { 244 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();245 ITaskFactory taskFactory = new TaskFactory(); 245 246 246 247 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 249 250 IEventType eventType1 = new TextInput("text1", inputEvents); 250 251 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 251 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);252 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 252 253 253 254 IEventType eventType2 = new TextInput("text2", inputEvents); 254 255 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 255 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);256 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 256 257 257 258 assertTrue(rule.isApplicable(task1, task2)); … … 264 265 @Test 265 266 public void test_isApplicable_11() { 266 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();267 ITaskFactory taskFactory = new TaskFactory(); 267 268 268 269 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 270 271 IEventType eventType1 = new TextSelection(); 271 272 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 272 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);273 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 273 274 274 275 IEventType eventType2 = new ValueSelection<String>("value"); 275 276 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 276 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);277 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 277 278 278 279 assertTrue(rule.isApplicable(task1, task2)); … … 285 286 @Test 286 287 public void test_isApplicable_12() { 287 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();288 ITaskFactory taskFactory = new TaskFactory(); 288 289 289 290 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 291 292 IEventType eventType1 = new StringEventType("eventType1"); 292 293 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 293 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);294 295 ITask TreeNode selection = treeNodeFactory.createNewSelection();294 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 295 296 ITask selection = taskFactory.createNewSelection(); 296 297 297 298 assertFalse(rule.isApplicable(task1, selection)); … … 304 305 @Test 305 306 public void test_isApplicable_13() { 306 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();307 ITaskFactory taskFactory = new TaskFactory(); 307 308 308 309 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 310 311 IEventType eventType1 = new StringEventType("eventType1"); 311 312 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 312 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);313 314 ITask TreeNode sequence = treeNodeFactory.createNewSequence();313 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 314 315 ITask sequence = taskFactory.createNewSequence(); 315 316 316 317 assertFalse(rule.isApplicable(task1, sequence)); … … 323 324 @Test 324 325 public void test_isApplicable_14() { 325 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();326 ITaskFactory taskFactory = new TaskFactory(); 326 327 327 328 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 329 330 IEventType eventType1 = new StringEventType("eventType1"); 330 331 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 331 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);332 333 ITask TreeNode iteration = treeNodeFactory.createNewIteration();332 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 333 334 ITask iteration = taskFactory.createNewIteration(); 334 335 335 336 assertFalse(rule.isApplicable(task1, iteration)); … … 342 343 @Test 343 344 public void test_isApplicable_15() { 344 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();345 ITaskFactory taskFactory = new TaskFactory(); 345 346 346 347 EventTaskComparisonRule rule = new EventTaskComparisonRule(); … … 348 349 IEventType eventType1 = new StringEventType("eventType1"); 349 350 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 350 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);351 352 ITask TreeNode optional = treeNodeFactory.createNewOptional();351 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 352 353 ITask optional = taskFactory.createNewOptional(); 353 354 354 355 assertFalse(rule.isApplicable(task1, optional)); … … 361 362 @Test 362 363 public void test_compare_KeyboardFocusChange_01() { 363 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();364 ITaskFactory taskFactory = new TaskFactory(); 364 365 365 366 IEventType eventType1 = new KeyboardFocusChange(); 366 367 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 367 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);368 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 368 369 369 370 assertLexicallyEqual(task1, task1); … … 375 376 @Test 376 377 public void test_compare_KeyboardFocusChange_02() { 377 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();378 ITaskFactory taskFactory = new TaskFactory(); 378 379 379 380 IEventType eventType1 = new KeyboardFocusChange(); 380 381 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 381 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);382 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 382 383 383 384 IEventType eventType2 = new KeyboardFocusChange(); 384 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);385 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 385 386 386 387 assertLexicallyEqual(task1, task2); … … 392 393 @Test 393 394 public void test_compare_KeyboardFocusChange_03() { 394 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();395 ITaskFactory taskFactory = new TaskFactory(); 395 396 396 397 IEventType eventType1 = new KeyboardFocusChange(); 397 398 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 398 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);399 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 399 400 400 401 IEventType eventType2 = new KeyboardFocusChange(); 401 402 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 402 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);403 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 403 404 404 405 assertUnequal(task1, task2); … … 410 411 @Test 411 412 public void test_compare_KeyPressed_01() { 412 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();413 ITaskFactory taskFactory = new TaskFactory(); 413 414 414 415 IEventType eventType1 = new KeyPressed(VirtualKey.LETTER_A); 415 416 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 416 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);417 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 417 418 418 419 assertLexicallyEqual(task1, task1); … … 424 425 @Test 425 426 public void test_compare_KeyPressed_02() { 426 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();427 ITaskFactory taskFactory = new TaskFactory(); 427 428 428 429 IEventType eventType1 = new KeyPressed(VirtualKey.LETTER_A); 429 430 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 430 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);431 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 431 432 432 433 IEventType eventType2 = new KeyPressed(VirtualKey.LETTER_A); 433 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);434 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 434 435 435 436 assertLexicallyEqual(task1, task2); … … 441 442 @Test 442 443 public void test_compare_KeyPressed_03() { 443 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();444 ITaskFactory taskFactory = new TaskFactory(); 444 445 445 446 IEventType eventType1 = new KeyPressed(VirtualKey.LETTER_A); 446 447 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 447 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);448 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 448 449 449 450 IEventType eventType2 = new KeyPressed(VirtualKey.LETTER_B); 450 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);451 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 451 452 452 453 assertSemanticallyEqual(task1, task2); … … 458 459 @Test 459 460 public void test_compare_KeyPressed_04() { 460 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();461 ITaskFactory taskFactory = new TaskFactory(); 461 462 462 463 IEventType eventType1 = new KeyPressed(VirtualKey.LETTER_A); 463 464 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 464 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);465 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 465 466 466 467 IEventType eventType2 = new KeyPressed(VirtualKey.LETTER_A); 467 468 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 468 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);469 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 469 470 470 471 assertUnequal(task1, task2); … … 476 477 @Test 477 478 public void test_compare_KeyReleased_01() { 478 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();479 ITaskFactory taskFactory = new TaskFactory(); 479 480 480 481 IEventType eventType1 = new KeyReleased(VirtualKey.LETTER_A); 481 482 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 482 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);483 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 483 484 484 485 assertLexicallyEqual(task1, task1); … … 490 491 @Test 491 492 public void test_compare_KeyReleased_02() { 492 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();493 ITaskFactory taskFactory = new TaskFactory(); 493 494 494 495 IEventType eventType1 = new KeyReleased(VirtualKey.LETTER_A); 495 496 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 496 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);497 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 497 498 498 499 IEventType eventType2 = new KeyReleased(VirtualKey.LETTER_A); 499 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);500 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 500 501 501 502 assertLexicallyEqual(task1, task2); … … 507 508 @Test 508 509 public void test_compare_KeyReleased_03() { 509 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();510 ITaskFactory taskFactory = new TaskFactory(); 510 511 511 512 IEventType eventType1 = new KeyReleased(VirtualKey.LETTER_A); 512 513 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 513 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);514 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 514 515 515 516 IEventType eventType2 = new KeyReleased(VirtualKey.LETTER_B); 516 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);517 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 517 518 518 519 assertSemanticallyEqual(task1, task2); … … 524 525 @Test 525 526 public void test_compare_KeyReleased_04() { 526 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();527 ITaskFactory taskFactory = new TaskFactory(); 527 528 528 529 IEventType eventType1 = new KeyReleased(VirtualKey.LETTER_A); 529 530 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 530 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);531 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 531 532 532 533 IEventType eventType2 = new KeyReleased(VirtualKey.LETTER_A); 533 534 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 534 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);535 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 535 536 536 537 assertUnequal(task1, task2); … … 542 543 @Test 543 544 public void test_compare_KeyTyped_01() { 544 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();545 ITaskFactory taskFactory = new TaskFactory(); 545 546 546 547 IEventType eventType1 = new KeyTyped(VirtualKey.LETTER_A); 547 548 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 548 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);549 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 549 550 550 551 assertLexicallyEqual(task1, task1); … … 556 557 @Test 557 558 public void test_compare_KeyTyped_02() { 558 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();559 ITaskFactory taskFactory = new TaskFactory(); 559 560 560 561 IEventType eventType1 = new KeyTyped(VirtualKey.LETTER_A); 561 562 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 562 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);563 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 563 564 564 565 IEventType eventType2 = new KeyTyped(VirtualKey.LETTER_A); 565 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);566 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 566 567 567 568 assertLexicallyEqual(task1, task2); … … 573 574 @Test 574 575 public void test_compare_KeyTyped_03() { 575 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();576 ITaskFactory taskFactory = new TaskFactory(); 576 577 577 578 IEventType eventType1 = new KeyTyped(VirtualKey.LETTER_A); 578 579 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 579 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);580 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 580 581 581 582 IEventType eventType2 = new KeyTyped(VirtualKey.LETTER_B); 582 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);583 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 583 584 584 585 assertSemanticallyEqual(task1, task2); … … 590 591 @Test 591 592 public void test_compare_KeyTyped_04() { 592 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();593 ITaskFactory taskFactory = new TaskFactory(); 593 594 594 595 IEventType eventType1 = new KeyTyped(VirtualKey.LETTER_A); 595 596 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 596 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);597 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 597 598 598 599 IEventType eventType2 = new KeyTyped(VirtualKey.LETTER_A); 599 600 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 600 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);601 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 601 602 602 603 assertUnequal(task1, task2); … … 608 609 @Test 609 610 public void test_compare_MouseButtonDown_01() { 610 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();611 ITaskFactory taskFactory = new TaskFactory(); 611 612 612 613 IEventType eventType1 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 2); 613 614 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 614 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);615 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 615 616 616 617 assertLexicallyEqual(task1, task1); … … 622 623 @Test 623 624 public void test_compare_MouseButtonDown_02() { 624 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();625 ITaskFactory taskFactory = new TaskFactory(); 625 626 626 627 IEventType eventType1 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 2); 627 628 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 628 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);629 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 629 630 630 631 IEventType eventType2 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 2); 631 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);632 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 632 633 633 634 assertLexicallyEqual(task1, task2); … … 639 640 @Test 640 641 public void test_compare_MouseButtonDown_03() { 641 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();642 ITaskFactory taskFactory = new TaskFactory(); 642 643 643 644 IEventType eventType1 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 2); 644 645 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 645 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);646 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 646 647 647 648 IEventType eventType2 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 3); 648 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);649 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 649 650 650 651 assertSemanticallyEqual(task1, task2); … … 656 657 @Test 657 658 public void test_compare_MouseButtonDown_04() { 658 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();659 ITaskFactory taskFactory = new TaskFactory(); 659 660 660 661 IEventType eventType1 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 2); 661 662 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 662 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);663 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 663 664 664 665 IEventType eventType2 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 3, 2); 665 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);666 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 666 667 667 668 assertSemanticallyEqual(task1, task2); … … 673 674 @Test 674 675 public void test_compare_MouseButtonDown_05() { 675 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();676 ITaskFactory taskFactory = new TaskFactory(); 676 677 677 678 IEventType eventType1 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 2); 678 679 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 679 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);680 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 680 681 681 682 IEventType eventType2 = new MouseButtonDown(MouseButtonInteraction.Button.RIGHT, 1, 2); 682 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);683 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 683 684 684 685 assertUnequal(task1, task2); … … 690 691 @Test 691 692 public void test_compare_MouseButtonDown_06() { 692 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();693 ITaskFactory taskFactory = new TaskFactory(); 693 694 694 695 IEventType eventType1 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 2); 695 696 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 696 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);697 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 697 698 698 699 IEventType eventType2 = new MouseButtonDown(MouseButtonInteraction.Button.LEFT, 1, 2); 699 700 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 700 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);701 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 701 702 702 703 assertUnequal(task1, task2); … … 708 709 @Test 709 710 public void test_compare_MouseButtonUp_01() { 710 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();711 ITaskFactory taskFactory = new TaskFactory(); 711 712 712 713 IEventType eventType1 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 2); 713 714 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 714 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);715 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 715 716 716 717 assertLexicallyEqual(task1, task1); … … 722 723 @Test 723 724 public void test_compare_MouseButtonUp_02() { 724 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();725 ITaskFactory taskFactory = new TaskFactory(); 725 726 726 727 IEventType eventType1 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 2); 727 728 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 728 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);729 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 729 730 730 731 IEventType eventType2 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 2); 731 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);732 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 732 733 733 734 assertLexicallyEqual(task1, task2); … … 739 740 @Test 740 741 public void test_compare_MouseButtonUp_03() { 741 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();742 ITaskFactory taskFactory = new TaskFactory(); 742 743 743 744 IEventType eventType1 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 2); 744 745 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 745 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);746 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 746 747 747 748 IEventType eventType2 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 3); 748 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);749 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 749 750 750 751 assertSemanticallyEqual(task1, task2); … … 756 757 @Test 757 758 public void test_compare_MouseButtonUp_04() { 758 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();759 ITaskFactory taskFactory = new TaskFactory(); 759 760 760 761 IEventType eventType1 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 2); 761 762 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 762 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);763 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 763 764 764 765 IEventType eventType2 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 3, 2); 765 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);766 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 766 767 767 768 assertSemanticallyEqual(task1, task2); … … 773 774 @Test 774 775 public void test_compare_MouseButtonUp_05() { 775 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();776 ITaskFactory taskFactory = new TaskFactory(); 776 777 777 778 IEventType eventType1 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 2); 778 779 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 779 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);780 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 780 781 781 782 IEventType eventType2 = new MouseButtonUp(MouseButtonInteraction.Button.RIGHT, 1, 2); 782 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);783 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 783 784 784 785 assertUnequal(task1, task2); … … 790 791 @Test 791 792 public void test_compare_MouseButtonUp_06() { 792 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();793 ITaskFactory taskFactory = new TaskFactory(); 793 794 794 795 IEventType eventType1 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 2); 795 796 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 796 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);797 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 797 798 798 799 IEventType eventType2 = new MouseButtonUp(MouseButtonInteraction.Button.LEFT, 1, 2); 799 800 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 800 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);801 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 801 802 802 803 assertUnequal(task1, task2); … … 808 809 @Test 809 810 public void test_compare_MouseClick_01() { 810 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();811 ITaskFactory taskFactory = new TaskFactory(); 811 812 812 813 IEventType eventType1 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 2); 813 814 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 814 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);815 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 815 816 816 817 assertLexicallyEqual(task1, task1); … … 822 823 @Test 823 824 public void test_compare_MouseClick_02() { 824 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();825 ITaskFactory taskFactory = new TaskFactory(); 825 826 826 827 IEventType eventType1 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 2); 827 828 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 828 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);829 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 829 830 830 831 IEventType eventType2 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 2); 831 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);832 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 832 833 833 834 assertLexicallyEqual(task1, task2); … … 839 840 @Test 840 841 public void test_compare_MouseClick_03() { 841 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();842 ITaskFactory taskFactory = new TaskFactory(); 842 843 843 844 IEventType eventType1 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 2); 844 845 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 845 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);846 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 846 847 847 848 IEventType eventType2 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 3); 848 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);849 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 849 850 850 851 assertSemanticallyEqual(task1, task2); … … 856 857 @Test 857 858 public void test_compare_MouseClick_04() { 858 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();859 ITaskFactory taskFactory = new TaskFactory(); 859 860 860 861 IEventType eventType1 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 2); 861 862 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 862 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);863 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 863 864 864 865 IEventType eventType2 = new MouseClick(MouseButtonInteraction.Button.LEFT, 3, 2); 865 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);866 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 866 867 867 868 assertSemanticallyEqual(task1, task2); … … 873 874 @Test 874 875 public void test_compare_MouseClick_05() { 875 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();876 ITaskFactory taskFactory = new TaskFactory(); 876 877 877 878 IEventType eventType1 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 2); 878 879 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 879 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);880 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 880 881 881 882 IEventType eventType2 = new MouseClick(MouseButtonInteraction.Button.RIGHT, 1, 2); 882 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);883 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 883 884 884 885 assertUnequal(task1, task2); … … 890 891 @Test 891 892 public void test_compare_MouseClick_06() { 892 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();893 ITaskFactory taskFactory = new TaskFactory(); 893 894 894 895 IEventType eventType1 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 2); 895 896 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 896 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);897 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 897 898 898 899 IEventType eventType2 = new MouseClick(MouseButtonInteraction.Button.LEFT, 1, 2); 899 900 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 900 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);901 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 901 902 902 903 assertUnequal(task1, task2); … … 908 909 @Test 909 910 public void test_compare_MouseDoubleClick_01() { 910 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();911 ITaskFactory taskFactory = new TaskFactory(); 911 912 912 913 IEventType eventType1 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 2); 913 914 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 914 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);915 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 915 916 916 917 assertLexicallyEqual(task1, task1); … … 922 923 @Test 923 924 public void test_compare_MouseDoubleClick_02() { 924 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();925 ITaskFactory taskFactory = new TaskFactory(); 925 926 926 927 IEventType eventType1 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 2); 927 928 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 928 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);929 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 929 930 930 931 IEventType eventType2 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 2); 931 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);932 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 932 933 933 934 assertLexicallyEqual(task1, task2); … … 939 940 @Test 940 941 public void test_compare_MouseDoubleClick_03() { 941 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();942 ITaskFactory taskFactory = new TaskFactory(); 942 943 943 944 IEventType eventType1 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 2); 944 945 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 945 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);946 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 946 947 947 948 IEventType eventType2 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 3); 948 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);949 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 949 950 950 951 assertSemanticallyEqual(task1, task2); … … 956 957 @Test 957 958 public void test_compare_MouseDoubleClick_04() { 958 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();959 ITaskFactory taskFactory = new TaskFactory(); 959 960 960 961 IEventType eventType1 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 2); 961 962 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 962 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);963 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 963 964 964 965 IEventType eventType2 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 3, 2); 965 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);966 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 966 967 967 968 assertSemanticallyEqual(task1, task2); … … 973 974 @Test 974 975 public void test_compare_MouseDoubleClick_05() { 975 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();976 ITaskFactory taskFactory = new TaskFactory(); 976 977 977 978 IEventType eventType1 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 2); 978 979 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 979 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);980 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 980 981 981 982 IEventType eventType2 = new MouseDoubleClick(MouseButtonInteraction.Button.RIGHT, 1, 2); 982 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);983 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 983 984 984 985 assertUnequal(task1, task2); … … 990 991 @Test 991 992 public void test_compare_MouseDoubleClick_06() { 992 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();993 ITaskFactory taskFactory = new TaskFactory(); 993 994 994 995 IEventType eventType1 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 2); 995 996 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 996 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);997 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 997 998 998 999 IEventType eventType2 = new MouseDoubleClick(MouseButtonInteraction.Button.LEFT, 1, 2); 999 1000 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 1000 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);1001 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 1001 1002 1002 1003 assertUnequal(task1, task2); … … 1008 1009 @Test 1009 1010 public void test_compare_MouseDragAndDrop_01() { 1010 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1011 ITaskFactory taskFactory = new TaskFactory(); 1011 1012 1012 1013 IEventType eventType1 = new MouseDragAndDrop(1, 2, 3, 4); 1013 1014 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1014 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1015 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1015 1016 1016 1017 assertLexicallyEqual(task1, task1); … … 1022 1023 @Test 1023 1024 public void test_compare_MouseDragAndDrop_02() { 1024 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1025 ITaskFactory taskFactory = new TaskFactory(); 1025 1026 1026 1027 IEventType eventType1 = new MouseDragAndDrop(1, 2, 3, 4); 1027 1028 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1028 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1029 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1029 1030 1030 1031 IEventType eventType2 = new MouseDragAndDrop(1, 2, 3, 4); 1031 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1032 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1032 1033 1033 1034 assertLexicallyEqual(task1, task2); … … 1039 1040 @Test 1040 1041 public void test_compare_MouseDragAndDrop_03() { 1041 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1042 ITaskFactory taskFactory = new TaskFactory(); 1042 1043 1043 1044 IEventType eventType1 = new MouseDragAndDrop(1, 2, 3, 4); 1044 1045 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1045 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1046 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1046 1047 1047 1048 IEventType eventType2 = new MouseDragAndDrop(5, 2, 3, 4); 1048 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1049 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1049 1050 1050 1051 assertSemanticallyEqual(task1, task2); … … 1056 1057 @Test 1057 1058 public void test_compare_MouseDragAndDrop_04() { 1058 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1059 ITaskFactory taskFactory = new TaskFactory(); 1059 1060 1060 1061 IEventType eventType1 = new MouseDragAndDrop(1, 2, 3, 4); 1061 1062 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1062 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1063 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1063 1064 1064 1065 IEventType eventType2 = new MouseDragAndDrop(1, 5, 3, 4); 1065 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1066 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1066 1067 1067 1068 assertSemanticallyEqual(task1, task2); … … 1073 1074 @Test 1074 1075 public void test_compare_MouseDragAndDrop_05() { 1075 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1076 ITaskFactory taskFactory = new TaskFactory(); 1076 1077 1077 1078 IEventType eventType1 = new MouseDragAndDrop(1, 2, 3, 4); 1078 1079 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1079 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1080 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1080 1081 1081 1082 IEventType eventType2 = new MouseDragAndDrop(1, 2, 5, 4); 1082 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1083 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1083 1084 1084 1085 assertSemanticallyEqual(task1, task2); … … 1090 1091 @Test 1091 1092 public void test_compare_MouseDragAndDrop_06() { 1092 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1093 ITaskFactory taskFactory = new TaskFactory(); 1093 1094 1094 1095 IEventType eventType1 = new MouseDragAndDrop(1, 2, 3, 4); 1095 1096 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1096 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1097 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1097 1098 1098 1099 IEventType eventType2 = new MouseDragAndDrop(1, 2, 3, 5); 1099 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1100 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1100 1101 1101 1102 assertSemanticallyEqual(task1, task2); … … 1107 1108 @Test 1108 1109 public void test_compare_MouseDragAndDrop_07() { 1109 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1110 ITaskFactory taskFactory = new TaskFactory(); 1110 1111 1111 1112 IEventType eventType1 = new MouseDragAndDrop(1, 2, 3, 4); 1112 1113 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1113 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1114 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1114 1115 1115 1116 IEventType eventType2 = new MouseDragAndDrop(1, 2, 3, 4); 1116 1117 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 1117 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);1118 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 1118 1119 1119 1120 assertUnequal(task1, task2); … … 1125 1126 @Test 1126 1127 public void test_compare_Scroll_01() { 1127 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1128 ITaskFactory taskFactory = new TaskFactory(); 1128 1129 1129 1130 IEventType eventType1 = new Scroll(1, 2); 1130 1131 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1131 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1132 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1132 1133 1133 1134 assertLexicallyEqual(task1, task1); … … 1139 1140 @Test 1140 1141 public void test_compare_Scroll_02() { 1141 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1142 ITaskFactory taskFactory = new TaskFactory(); 1142 1143 1143 1144 IEventType eventType1 = new Scroll(1, 2); 1144 1145 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1145 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1146 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1146 1147 1147 1148 IEventType eventType2 = new Scroll(1, 2); 1148 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1149 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1149 1150 1150 1151 assertLexicallyEqual(task1, task2); … … 1156 1157 @Test 1157 1158 public void test_compare_Scroll_03() { 1158 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1159 ITaskFactory taskFactory = new TaskFactory(); 1159 1160 1160 1161 IEventType eventType1 = new Scroll(1, 2); 1161 1162 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1162 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1163 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1163 1164 1164 1165 IEventType eventType2 = new Scroll(3, 2); 1165 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1166 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1166 1167 1167 1168 assertSemanticallyEqual(task1, task2); … … 1173 1174 @Test 1174 1175 public void test_compare_Scroll_04() { 1175 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1176 ITaskFactory taskFactory = new TaskFactory(); 1176 1177 1177 1178 IEventType eventType1 = new Scroll(1, 2); 1178 1179 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1179 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1180 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1180 1181 1181 1182 IEventType eventType2 = new Scroll(1, 3); 1182 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1183 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1183 1184 1184 1185 assertSemanticallyEqual(task1, task2); … … 1190 1191 @Test 1191 1192 public void test_compare_Scroll_05() { 1192 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1193 ITaskFactory taskFactory = new TaskFactory(); 1193 1194 1194 1195 IEventType eventType1 = new Scroll(1, 2); 1195 1196 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1196 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1197 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1197 1198 1198 1199 IEventType eventType2 = new Scroll(1, 2); 1199 1200 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 1200 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);1201 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 1201 1202 1202 1203 assertUnequal(task1, task2); … … 1208 1209 @Test 1209 1210 public void test_compare_TextInput_01() { 1210 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1211 ITaskFactory taskFactory = new TaskFactory(); 1211 1212 1212 1213 IEventType eventType1 = new StringEventType("eventType1"); … … 1215 1216 textInputEvents1.add(new Event(eventType1, eventTarget1)); 1216 1217 eventType1 = new TextInput("enteredText1", textInputEvents1); 1217 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1218 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1218 1219 1219 1220 assertLexicallyEqual(task1, task1); … … 1225 1226 @Test 1226 1227 public void test_compare_TextInput_02() { 1227 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1228 ITaskFactory taskFactory = new TaskFactory(); 1228 1229 1229 1230 IEventType eventType1 = new StringEventType("eventType1"); … … 1232 1233 textInputEvents1.add(new Event(eventType1, eventTarget1)); 1233 1234 eventType1 = new TextInput("enteredText1", textInputEvents1); 1234 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1235 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1235 1236 1236 1237 IEventType eventType2 = new TextInput("enteredText1", textInputEvents1); 1237 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1238 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1238 1239 1239 1240 assertLexicallyEqual(task1, task2); … … 1245 1246 @Test 1246 1247 public void test_compare_TextInput_03() { 1247 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1248 ITaskFactory taskFactory = new TaskFactory(); 1248 1249 1249 1250 IEventType eventType1 = new StringEventType("eventType1"); … … 1252 1253 textInputEvents1.add(new Event(eventType1, eventTarget1)); 1253 1254 eventType1 = new TextInput("enteredText1", textInputEvents1); 1254 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1255 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1255 1256 1256 1257 IEventType eventType2 = new StringEventType("eventType2"); … … 1258 1259 textInputEvents2.add(new Event(eventType2, eventTarget1)); 1259 1260 eventType2 = new TextInput("enteredText1", textInputEvents2); 1260 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1261 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1261 1262 1262 1263 assertSyntacticallyEqual(task1, task2); … … 1268 1269 @Test 1269 1270 public void test_compare_TextInput_04() { 1270 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1271 ITaskFactory taskFactory = new TaskFactory(); 1271 1272 1272 1273 IEventType eventType1 = new StringEventType("eventType1"); … … 1275 1276 textInputEvents1.add(new Event(eventType1, eventTarget1)); 1276 1277 eventType1 = new TextInput("enteredText1", textInputEvents1); 1277 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1278 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1278 1279 1279 1280 IEventType eventType2 = new StringEventType("eventType2"); … … 1281 1282 textInputEvents2.add(new Event(eventType2, eventTarget1)); 1282 1283 eventType2 = new TextInput("enteredText2", textInputEvents2); 1283 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1284 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1284 1285 1285 1286 assertSemanticallyEqual(task1, task2); … … 1291 1292 @Test 1292 1293 public void test_compare_TextInput_05() { 1293 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1294 ITaskFactory taskFactory = new TaskFactory(); 1294 1295 1295 1296 IEventType eventType1 = new StringEventType("eventType1"); … … 1298 1299 textInputEvents1.add(new Event(eventType1, eventTarget1)); 1299 1300 eventType1 = new TextInput("enteredText1", textInputEvents1); 1300 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1301 1302 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 1303 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget2);1301 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1302 1303 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 1304 ITask task2 = taskFactory.createNewEventTask(eventType1, eventTarget2); 1304 1305 1305 1306 assertUnequal(task1, task2); … … 1311 1312 @Test 1312 1313 public void test_compare_TextSelection_01() { 1313 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1314 ITaskFactory taskFactory = new TaskFactory(); 1314 1315 1315 1316 IEventType eventType1 = new TextSelection(); 1316 1317 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1317 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1318 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1318 1319 1319 1320 assertLexicallyEqual(task1, task1); … … 1325 1326 @Test 1326 1327 public void test_compare_TextSelection_02() { 1327 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1328 ITaskFactory taskFactory = new TaskFactory(); 1328 1329 1329 1330 IEventType eventType1 = new TextSelection(); 1330 1331 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1331 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1332 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1332 1333 1333 1334 IEventType eventType2 = new TextSelection(); 1334 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1335 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1335 1336 1336 1337 assertLexicallyEqual(task1, task2); … … 1342 1343 @Test 1343 1344 public void test_compare_TextSelection_03() { 1344 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1345 ITaskFactory taskFactory = new TaskFactory(); 1345 1346 1346 1347 IEventType eventType1 = new TextSelection(); 1347 1348 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1348 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1349 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1349 1350 1350 1351 IEventType eventType2 = new TextSelection(); 1351 1352 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 1352 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);1353 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 1353 1354 1354 1355 assertUnequal(task1, task2); … … 1360 1361 @Test 1361 1362 public void test_compare_ValueSelection_01() { 1362 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1363 ITaskFactory taskFactory = new TaskFactory(); 1363 1364 1364 1365 IEventType eventType1 = new ValueSelection<String>("value1"); 1365 1366 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1366 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1367 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1367 1368 1368 1369 assertLexicallyEqual(task1, task1); … … 1374 1375 @Test 1375 1376 public void test_compare_ValueSelection_02() { 1376 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1377 ITaskFactory taskFactory = new TaskFactory(); 1377 1378 1378 1379 IEventType eventType1 = new ValueSelection<String>("value1"); 1379 1380 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1380 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1381 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1381 1382 1382 1383 IEventType eventType2 = new ValueSelection<String>("value1"); 1383 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1384 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1384 1385 1385 1386 assertLexicallyEqual(task1, task2); … … 1391 1392 @Test 1392 1393 public void test_compare_ValueSelection_03() { 1393 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1394 ITaskFactory taskFactory = new TaskFactory(); 1394 1395 1395 1396 IEventType eventType1 = new ValueSelection<String>("value1"); 1396 1397 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1397 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1398 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1398 1399 1399 1400 IEventType eventType2 = new ValueSelection<String>("value2"); 1400 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);1401 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget1); 1401 1402 1402 1403 assertSemanticallyEqual(task1, task2); … … 1408 1409 @Test 1409 1410 public void test_compare_ValueSelection_04() { 1410 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();1411 ITaskFactory taskFactory = new TaskFactory(); 1411 1412 1412 1413 IEventType eventType1 = new ValueSelection<String>("value1"); 1413 1414 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 1414 ITask TreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);1415 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 1415 1416 1416 1417 IEventType eventType2 = new ValueSelection<String>("value1"); 1417 1418 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 1418 ITask TreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);1419 1420 assertUnequal(task1, task2); 1421 } 1422 1423 /** 1424 * 1425 */ 1426 private void assertLexicallyEqual(ITask TreeNode task1, ITaskTreeNodetask2) {1419 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 1420 1421 assertUnequal(task1, task2); 1422 } 1423 1424 /** 1425 * 1426 */ 1427 private void assertLexicallyEqual(ITask task1, ITask task2) { 1427 1428 GUIEventTaskComparisonRule rule = new GUIEventTaskComparisonRule(); 1428 1429 1429 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, task2));1430 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task1, task2)); 1430 1431 assertTrue(rule.areLexicallyEqual(task1, task2)); 1431 1432 assertTrue(rule.areSyntacticallyEqual(task1, task2)); 1432 1433 assertTrue(rule.areSemanticallyEqual(task1, task2)); 1433 1434 1434 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task2, task1));1435 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task2, task1)); 1435 1436 assertTrue(rule.areLexicallyEqual(task2, task1)); 1436 1437 assertTrue(rule.areSyntacticallyEqual(task2, task1)); … … 1441 1442 * 1442 1443 */ 1443 private void assertSyntacticallyEqual(ITask TreeNode task1, ITaskTreeNodetask2) {1444 private void assertSyntacticallyEqual(ITask task1, ITask task2) { 1444 1445 GUIEventTaskComparisonRule rule = new GUIEventTaskComparisonRule(); 1445 1446 1446 assertEquals( NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task1, task2));1447 assertEquals(TaskEquality.SYNTACTICALLY_EQUAL, rule.compare(task1, task2)); 1447 1448 assertFalse(rule.areLexicallyEqual(task1, task2)); 1448 1449 assertTrue(rule.areSyntacticallyEqual(task1, task2)); 1449 1450 assertTrue(rule.areSemanticallyEqual(task1, task2)); 1450 1451 1451 assertEquals( NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task2, task1));1452 assertEquals(TaskEquality.SYNTACTICALLY_EQUAL, rule.compare(task2, task1)); 1452 1453 assertFalse(rule.areLexicallyEqual(task2, task1)); 1453 1454 assertTrue(rule.areSyntacticallyEqual(task2, task1)); … … 1458 1459 * 1459 1460 */ 1460 private void assertSemanticallyEqual(ITask TreeNode task1, ITaskTreeNodetask2) {1461 private void assertSemanticallyEqual(ITask task1, ITask task2) { 1461 1462 GUIEventTaskComparisonRule rule = new GUIEventTaskComparisonRule(); 1462 1463 1463 assertEquals( NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task1, task2));1464 assertEquals(TaskEquality.SEMANTICALLY_EQUAL, rule.compare(task1, task2)); 1464 1465 assertFalse(rule.areLexicallyEqual(task1, task2)); 1465 1466 assertFalse(rule.areSyntacticallyEqual(task1, task2)); 1466 1467 assertTrue(rule.areSemanticallyEqual(task1, task2)); 1467 1468 1468 assertEquals( NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task2, task1));1469 assertEquals(TaskEquality.SEMANTICALLY_EQUAL, rule.compare(task2, task1)); 1469 1470 assertFalse(rule.areLexicallyEqual(task2, task1)); 1470 1471 assertFalse(rule.areSyntacticallyEqual(task2, task1)); … … 1475 1476 * 1476 1477 */ 1477 private void assertUnequal(ITask TreeNode task1, ITaskTreeNodetask2) {1478 private void assertUnequal(ITask task1, ITask task2) { 1478 1479 GUIEventTaskComparisonRule rule = new GUIEventTaskComparisonRule(); 1479 1480 1480 assertEquals( NodeEquality.UNEQUAL, rule.compare(task1, task2));1481 assertEquals(TaskEquality.UNEQUAL, rule.compare(task1, task2)); 1481 1482 assertFalse(rule.areLexicallyEqual(task1, task2)); 1482 1483 assertFalse(rule.areSyntacticallyEqual(task1, task2)); 1483 1484 assertFalse(rule.areSemanticallyEqual(task1, task2)); 1484 1485 1485 assertEquals( NodeEquality.UNEQUAL, rule.compare(task2, task1));1486 assertEquals(TaskEquality.UNEQUAL, rule.compare(task2, task1)); 1486 1487 assertFalse(rule.areLexicallyEqual(task2, task1)); 1487 1488 assertFalse(rule.areSyntacticallyEqual(task2, task1)); -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/taskequality/IterationComparisonRuleTest.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import static org.junit.Assert.*; … … 19 19 import org.junit.Test; 20 20 21 import de.ugoe.cs.autoquest.tasktrees.nodeequality.IterationComparisonRule; 22 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 23 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 21 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 22 import de.ugoe.cs.autoquest.eventcore.IEventType; 23 import de.ugoe.cs.autoquest.eventcore.StringEventType; 24 import de.ugoe.cs.autoquest.tasktrees.taskequality.IterationComparisonRule; 25 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 26 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 24 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 25 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeBuilder;27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNodeFactory;29 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeBuilder;30 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeNode;31 import de.ugoe.cs.autoquest.t asktrees.treeimpl.TaskTreeNodeFactory;29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 32 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 33 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 34 import de.ugoe.cs.autoquest.test.DummyGUIElement; 32 35 33 36 /** … … 41 44 @Test 42 45 public void test() { 43 NodeEqualityRuleManager manager = new NodeEqualityRuleManager();46 TaskEqualityRuleManager manager = new TaskEqualityRuleManager(); 44 47 manager.init(); 45 48 46 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();47 ITask TreeBuilder treeBuilder = new TaskTreeBuilder();49 ITaskFactory taskFactory = new TaskFactory(); 50 ITaskBuilder treeBuilder = new TaskBuilder(); 48 51 49 52 IterationComparisonRule rule = new IterationComparisonRule(manager); 50 53 51 ITaskTreeNode task1 = new TaskTreeNode("task1"); 52 ITaskTreeNode task2 = new TaskTreeNode("task2"); 54 IEventType eventType1 = new StringEventType("eventType1"); 55 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 56 57 IEventType eventType2 = new StringEventType("eventType2"); 58 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 59 60 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 61 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 53 62 54 63 assertFalse(rule.isApplicable(task1, task2)); 55 64 56 IIteration iteration1 = t reeNodeFactory.createNewIteration();57 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration1));65 IIteration iteration1 = taskFactory.createNewIteration(); 66 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration1)); 58 67 59 IIteration iteration2 = t reeNodeFactory.createNewIteration();68 IIteration iteration2 = taskFactory.createNewIteration(); 60 69 61 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));62 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));70 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2)); 71 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1)); 63 72 64 treeBuilder.set Child(iteration1, task1);73 treeBuilder.setMarkedTask(iteration1, task1); 65 74 66 assertEquals( NodeEquality.UNEQUAL, rule.compare(iteration1, iteration2));67 assertEquals( NodeEquality.UNEQUAL, rule.compare(iteration2, iteration1));75 assertEquals(TaskEquality.UNEQUAL, rule.compare(iteration1, iteration2)); 76 assertEquals(TaskEquality.UNEQUAL, rule.compare(iteration2, iteration1)); 68 77 69 treeBuilder.set Child(iteration2, task1);78 treeBuilder.setMarkedTask(iteration2, task1); 70 79 71 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));72 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));80 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2)); 81 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1)); 73 82 74 treeBuilder.set Child(iteration1, task2);83 treeBuilder.setMarkedTask(iteration1, task2); 75 84 76 assertEquals( NodeEquality.UNEQUAL, rule.compare(iteration1, iteration2));77 assertEquals( NodeEquality.UNEQUAL, rule.compare(iteration2, iteration1));85 assertEquals(TaskEquality.UNEQUAL, rule.compare(iteration1, iteration2)); 86 assertEquals(TaskEquality.UNEQUAL, rule.compare(iteration2, iteration1)); 78 87 79 treeBuilder.set Child(iteration2, task2);88 treeBuilder.setMarkedTask(iteration2, task2); 80 89 81 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));82 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));90 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2)); 91 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1)); 83 92 84 ISelection selection1 = t reeNodeFactory.createNewSelection();93 ISelection selection1 = taskFactory.createNewSelection(); 85 94 treeBuilder.addChild(selection1, task2); 86 treeBuilder.set Child(iteration1, selection1);95 treeBuilder.setMarkedTask(iteration1, selection1); 87 96 88 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));89 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));97 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2)); 98 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1)); 90 99 91 ISelection selection2 = t reeNodeFactory.createNewSelection();100 ISelection selection2 = taskFactory.createNewSelection(); 92 101 treeBuilder.addChild(selection2, task2); 93 treeBuilder.set Child(iteration2, selection2);102 treeBuilder.setMarkedTask(iteration2, selection2); 94 103 95 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));96 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));104 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2)); 105 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1)); 97 106 98 107 assertFalse(rule.isApplicable(iteration1, selection1)); -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/taskequality/SelectionComparisonRuleTest.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import static org.junit.Assert.*; … … 19 19 import org.junit.Test; 20 20 21 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 22 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 23 import de.ugoe.cs.autoquest.tasktrees.nodeequality.SelectionComparisonRule; 21 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 22 import de.ugoe.cs.autoquest.eventcore.IEventType; 23 import de.ugoe.cs.autoquest.eventcore.StringEventType; 24 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 25 import de.ugoe.cs.autoquest.tasktrees.taskequality.SelectionComparisonRule; 26 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 24 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 25 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeBuilder;27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNodeFactory;29 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeBuilder;30 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeNode;31 import de.ugoe.cs.autoquest.t asktrees.treeimpl.TaskTreeNodeFactory;29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 32 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 33 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 34 import de.ugoe.cs.autoquest.test.DummyGUIElement; 32 35 33 36 /** … … 41 44 @Test 42 45 public void test() { 43 NodeEqualityRuleManager manager = new NodeEqualityRuleManager();46 TaskEqualityRuleManager manager = new TaskEqualityRuleManager(); 44 47 manager.init(); 45 48 46 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();47 ITask TreeBuilder treeBuilder = new TaskTreeBuilder();49 ITaskFactory taskFactory = new TaskFactory(); 50 ITaskBuilder treeBuilder = new TaskBuilder(); 48 51 49 52 SelectionComparisonRule rule = new SelectionComparisonRule(manager); 50 53 51 ITaskTreeNode task1 = new TaskTreeNode("task1"); 52 ITaskTreeNode task2 = new TaskTreeNode("task2"); 54 IEventType eventType1 = new StringEventType("eventType1"); 55 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 56 57 IEventType eventType2 = new StringEventType("eventType2"); 58 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 59 60 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 61 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 53 62 54 63 assertFalse(rule.isApplicable(task1, task2)); 55 64 56 ISelection selection1 = t reeNodeFactory.createNewSelection();57 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection1));65 ISelection selection1 = taskFactory.createNewSelection(); 66 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection1)); 58 67 59 ISelection selection2 = t reeNodeFactory.createNewSelection();68 ISelection selection2 = taskFactory.createNewSelection(); 60 69 61 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2));62 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1));70 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2)); 71 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1)); 63 72 64 73 treeBuilder.addChild(selection1, task1); 65 74 66 assertEquals( NodeEquality.UNEQUAL, rule.compare(selection1, selection2));67 assertEquals( NodeEquality.UNEQUAL, rule.compare(selection2, selection1));75 assertEquals(TaskEquality.UNEQUAL, rule.compare(selection1, selection2)); 76 assertEquals(TaskEquality.UNEQUAL, rule.compare(selection2, selection1)); 68 77 69 78 treeBuilder.addChild(selection2, task1); 70 79 71 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2));72 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1));80 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2)); 81 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1)); 73 82 74 83 treeBuilder.addChild(selection1, task2); 75 84 76 assertEquals( NodeEquality.UNEQUAL, rule.compare(selection1, selection2));77 assertEquals( NodeEquality.UNEQUAL, rule.compare(selection2, selection1));85 assertEquals(TaskEquality.UNEQUAL, rule.compare(selection1, selection2)); 86 assertEquals(TaskEquality.UNEQUAL, rule.compare(selection2, selection1)); 78 87 79 88 treeBuilder.addChild(selection2, task2); 80 89 81 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2));82 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1));90 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2)); 91 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1)); 83 92 84 ISelection selection3 = t reeNodeFactory.createNewSelection();93 ISelection selection3 = taskFactory.createNewSelection(); 85 94 treeBuilder.addChild(selection3, task2); 86 95 treeBuilder.addChild(selection3, task1); 87 96 88 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection3));89 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection3, selection1));97 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection3)); 98 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection3, selection1)); 90 99 91 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection3));92 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection3, selection2));100 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection3)); 101 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection3, selection2)); 93 102 94 ISequence sequence = t reeNodeFactory.createNewSequence();103 ISequence sequence = taskFactory.createNewSequence(); 95 104 assertFalse(rule.isApplicable(selection1, sequence)); 96 105 assertFalse(rule.isApplicable(sequence, selection1)); -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/taskequality/SequenceComparisonRuleTest.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import static org.junit.Assert.*; … … 19 19 import org.junit.Test; 20 20 21 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 22 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 23 import de.ugoe.cs.autoquest.tasktrees.nodeequality.SequenceComparisonRule; 21 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 22 import de.ugoe.cs.autoquest.eventcore.IEventType; 23 import de.ugoe.cs.autoquest.eventcore.StringEventType; 24 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 25 import de.ugoe.cs.autoquest.tasktrees.taskequality.SequenceComparisonRule; 26 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 24 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 25 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeBuilder;27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNodeFactory;29 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeBuilder;30 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeNode;31 import de.ugoe.cs.autoquest.t asktrees.treeimpl.TaskTreeNodeFactory;29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 32 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 33 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 34 import de.ugoe.cs.autoquest.test.DummyGUIElement; 32 35 33 36 /** … … 41 44 @Test 42 45 public void test() { 43 NodeEqualityRuleManager manager = new NodeEqualityRuleManager();46 TaskEqualityRuleManager manager = new TaskEqualityRuleManager(); 44 47 manager.init(); 45 48 46 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();47 ITask TreeBuilder treeBuilder = new TaskTreeBuilder();49 ITaskFactory taskFactory = new TaskFactory(); 50 ITaskBuilder treeBuilder = new TaskBuilder(); 48 51 49 52 SequenceComparisonRule rule = new SequenceComparisonRule(manager); 50 53 51 ITaskTreeNode task1 = new TaskTreeNode("task1"); 52 ITaskTreeNode task2 = new TaskTreeNode("task2"); 54 IEventType eventType1 = new StringEventType("eventType1"); 55 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 56 57 IEventType eventType2 = new StringEventType("eventType2"); 58 IEventTarget eventTarget2 = new DummyGUIElement("elem2"); 59 60 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 61 ITask task2 = taskFactory.createNewEventTask(eventType2, eventTarget2); 53 62 54 63 assertFalse(rule.isApplicable(task1, task2)); 55 64 56 ISequence sequence1 = t reeNodeFactory.createNewSequence();57 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence1));65 ISequence sequence1 = taskFactory.createNewSequence(); 66 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence1)); 58 67 59 ISequence sequence2 = t reeNodeFactory.createNewSequence();68 ISequence sequence2 = taskFactory.createNewSequence(); 60 69 61 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence2));62 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(sequence2, sequence1));70 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence2)); 71 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(sequence2, sequence1)); 63 72 64 73 treeBuilder.addChild(sequence1, task1); 65 74 66 assertEquals( NodeEquality.UNEQUAL, rule.compare(sequence1, sequence2));67 assertEquals( NodeEquality.UNEQUAL, rule.compare(sequence2, sequence1));75 assertEquals(TaskEquality.UNEQUAL, rule.compare(sequence1, sequence2)); 76 assertEquals(TaskEquality.UNEQUAL, rule.compare(sequence2, sequence1)); 68 77 69 78 treeBuilder.addChild(sequence2, task1); 70 79 71 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence2));72 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(sequence2, sequence1));80 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence2)); 81 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(sequence2, sequence1)); 73 82 74 83 treeBuilder.addChild(sequence1, task2); 75 84 76 assertEquals( NodeEquality.UNEQUAL, rule.compare(sequence1, sequence2));77 assertEquals( NodeEquality.UNEQUAL, rule.compare(sequence2, sequence1));85 assertEquals(TaskEquality.UNEQUAL, rule.compare(sequence1, sequence2)); 86 assertEquals(TaskEquality.UNEQUAL, rule.compare(sequence2, sequence1)); 78 87 79 88 treeBuilder.addChild(sequence2, task2); 80 89 81 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence2));82 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(sequence2, sequence1));90 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence2)); 91 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(sequence2, sequence1)); 83 92 84 ISequence sequence3 = t reeNodeFactory.createNewSequence();93 ISequence sequence3 = taskFactory.createNewSequence(); 85 94 treeBuilder.addChild(sequence3, task2); 86 95 treeBuilder.addChild(sequence3, task1); 87 96 88 assertEquals( NodeEquality.UNEQUAL, rule.compare(sequence1, sequence3));89 assertEquals( NodeEquality.UNEQUAL, rule.compare(sequence3, sequence1));90 assertEquals( NodeEquality.UNEQUAL, rule.compare(sequence2, sequence3));91 assertEquals( NodeEquality.UNEQUAL, rule.compare(sequence3, sequence2));97 assertEquals(TaskEquality.UNEQUAL, rule.compare(sequence1, sequence3)); 98 assertEquals(TaskEquality.UNEQUAL, rule.compare(sequence3, sequence1)); 99 assertEquals(TaskEquality.UNEQUAL, rule.compare(sequence2, sequence3)); 100 assertEquals(TaskEquality.UNEQUAL, rule.compare(sequence3, sequence2)); 92 101 93 ISelection selection = t reeNodeFactory.createNewSelection();102 ISelection selection = taskFactory.createNewSelection(); 94 103 assertFalse(rule.isApplicable(sequence1, selection)); 95 104 assertFalse(rule.isApplicable(selection, sequence1)); -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskAndIterationComparisonRuleTest.java
r927 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import static org.junit.Assert.*; … … 19 19 import org.junit.Test; 20 20 21 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeAndIterationComparisonRule; 22 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 23 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 21 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 22 import de.ugoe.cs.autoquest.eventcore.IEventType; 23 import de.ugoe.cs.autoquest.eventcore.StringEventType; 24 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskAndIterationComparisonRule; 25 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 26 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 24 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 25 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeBuilder;27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNodeFactory;29 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeBuilder;30 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeNode;31 import de.ugoe.cs.autoquest.t asktrees.treeimpl.TaskTreeNodeFactory;29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 32 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 33 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 34 import de.ugoe.cs.autoquest.test.DummyGUIElement; 32 35 33 36 /** 34 37 * @author Patrick Harms 35 38 */ 36 public class NodeAndIterationComparisonRuleTest {39 public class TaskAndIterationComparisonRuleTest { 37 40 38 41 /** … … 41 44 @Test 42 45 public void test() { 43 NodeEqualityRuleManager manager = new NodeEqualityRuleManager();46 TaskEqualityRuleManager manager = new TaskEqualityRuleManager(); 44 47 manager.init(); 45 48 46 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();47 ITask TreeBuilder treeBuilder = new TaskTreeBuilder();49 ITaskFactory taskFactory = new TaskFactory(); 50 ITaskBuilder treeBuilder = new TaskBuilder(); 48 51 49 NodeAndIterationComparisonRule rule = new NodeAndIterationComparisonRule(manager);52 TaskAndIterationComparisonRule rule = new TaskAndIterationComparisonRule(manager); 50 53 51 ITaskTreeNode task1 = new TaskTreeNode("task1"); 54 IEventType eventType1 = new StringEventType("eventType1"); 55 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 56 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 52 57 53 58 assertNull(rule.compare(task1, task1)); 54 59 55 IIteration iteration1 = t reeNodeFactory.createNewIteration();60 IIteration iteration1 = taskFactory.createNewIteration(); 56 61 assertNull(rule.compare(iteration1, iteration1)); 57 62 assertNull(rule.compare(task1, iteration1)); 58 63 assertNull(rule.compare(iteration1, task1)); 59 64 60 treeBuilder.set Child(iteration1, task1);65 treeBuilder.setMarkedTask(iteration1, task1); 61 66 62 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, task1));63 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, iteration1));67 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration1, task1)); 68 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task1, iteration1)); 64 69 65 ISelection selection1 = t reeNodeFactory.createNewSelection();70 ISelection selection1 = taskFactory.createNewSelection(); 66 71 treeBuilder.addChild(selection1, task1); 67 treeBuilder.set Child(iteration1, selection1);72 treeBuilder.setMarkedTask(iteration1, selection1); 68 73 69 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, task1));70 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, iteration1));74 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(iteration1, task1)); 75 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task1, iteration1)); 71 76 } 72 77 -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskAndSelectionComparisonRuleTest.java
r927 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import static org.junit.Assert.*; … … 19 19 import org.junit.Test; 20 20 21 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeAndSelectionComparisonRule; 22 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 23 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 21 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 22 import de.ugoe.cs.autoquest.eventcore.IEventType; 23 import de.ugoe.cs.autoquest.eventcore.StringEventType; 24 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskAndSelectionComparisonRule; 25 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 26 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 24 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeBuilder;26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNodeFactory;28 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeBuilder;29 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeNode;30 import de.ugoe.cs.autoquest.t asktrees.treeimpl.TaskTreeNodeFactory;28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 31 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 32 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 33 import de.ugoe.cs.autoquest.test.DummyGUIElement; 31 34 32 35 /** 33 36 * @author Patrick Harms 34 37 */ 35 public class NodeAndSelectionComparisonRuleTest {38 public class TaskAndSelectionComparisonRuleTest { 36 39 37 40 /** … … 40 43 @Test 41 44 public void test() { 42 NodeEqualityRuleManager manager = new NodeEqualityRuleManager();45 TaskEqualityRuleManager manager = new TaskEqualityRuleManager(); 43 46 manager.init(); 44 47 45 ITask TreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();46 ITask TreeBuilder treeBuilder = new TaskTreeBuilder();48 ITaskFactory taskFactory = new TaskFactory(); 49 ITaskBuilder treeBuilder = new TaskBuilder(); 47 50 48 NodeAndSelectionComparisonRule rule = new NodeAndSelectionComparisonRule(manager);51 TaskAndSelectionComparisonRule rule = new TaskAndSelectionComparisonRule(manager); 49 52 50 ITaskTreeNode task1 = new TaskTreeNode("task1"); 53 IEventType eventType1 = new StringEventType("eventType1"); 54 IEventTarget eventTarget1 = new DummyGUIElement("elem1"); 55 ITask task1 = taskFactory.createNewEventTask(eventType1, eventTarget1); 51 56 52 57 assertNull(rule.compare(task1, task1)); 53 58 54 ISelection selection1 = t reeNodeFactory.createNewSelection();59 ISelection selection1 = taskFactory.createNewSelection(); 55 60 assertNull(rule.compare(selection1, selection1)); 56 61 assertNull(rule.compare(task1, selection1)); … … 59 64 treeBuilder.addChild(selection1, task1); 60 65 61 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, task1));62 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, selection1));66 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection1, task1)); 67 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task1, selection1)); 63 68 64 selection1 = t reeNodeFactory.createNewSelection();65 ISelection selection2 = t reeNodeFactory.createNewSelection();69 selection1 = taskFactory.createNewSelection(); 70 ISelection selection2 = taskFactory.createNewSelection(); 66 71 treeBuilder.addChild(selection2, task1); 67 72 treeBuilder.addChild(selection1, selection2); 68 73 69 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, task1));70 assertEquals( NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, selection1));74 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(selection1, task1)); 75 assertEquals(TaskEquality.LEXICALLY_EQUAL, rule.compare(task1, selection1)); 71 76 } 72 77 -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskEqualityTest.java
r927 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import static org.junit.Assert.*; … … 19 19 import org.junit.Test; 20 20 21 import de.ugoe.cs.autoquest.tasktrees. nodeequality.NodeEquality;21 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 22 22 23 23 /** 24 24 * @author Patrick Harms 25 25 */ 26 public class NodeEqualityTest {26 public class TaskEqualityTest { 27 27 28 28 /** … … 31 31 @Test 32 32 public void test() { 33 assertTrue( NodeEquality.IDENTICAL.isAtLeast(NodeEquality.IDENTICAL));34 assertTrue( NodeEquality.IDENTICAL.isAtLeast(NodeEquality.LEXICALLY_EQUAL));35 assertTrue( NodeEquality.IDENTICAL.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL));36 assertTrue( NodeEquality.IDENTICAL.isAtLeast(NodeEquality.SEMANTICALLY_EQUAL));37 assertFalse( NodeEquality.IDENTICAL.isAtLeast(NodeEquality.UNEQUAL));33 assertTrue(TaskEquality.IDENTICAL.isAtLeast(TaskEquality.IDENTICAL)); 34 assertTrue(TaskEquality.IDENTICAL.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 35 assertTrue(TaskEquality.IDENTICAL.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 36 assertTrue(TaskEquality.IDENTICAL.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 37 assertFalse(TaskEquality.IDENTICAL.isAtLeast(TaskEquality.UNEQUAL)); 38 38 39 assertFalse( NodeEquality.LEXICALLY_EQUAL.isAtLeast(NodeEquality.IDENTICAL));40 assertTrue( NodeEquality.LEXICALLY_EQUAL.isAtLeast(NodeEquality.LEXICALLY_EQUAL));41 assertTrue( NodeEquality.LEXICALLY_EQUAL.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL));42 assertTrue( NodeEquality.LEXICALLY_EQUAL.isAtLeast(NodeEquality.SEMANTICALLY_EQUAL));43 assertFalse( NodeEquality.LEXICALLY_EQUAL.isAtLeast(NodeEquality.UNEQUAL));39 assertFalse(TaskEquality.LEXICALLY_EQUAL.isAtLeast(TaskEquality.IDENTICAL)); 40 assertTrue(TaskEquality.LEXICALLY_EQUAL.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 41 assertTrue(TaskEquality.LEXICALLY_EQUAL.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 42 assertTrue(TaskEquality.LEXICALLY_EQUAL.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 43 assertFalse(TaskEquality.LEXICALLY_EQUAL.isAtLeast(TaskEquality.UNEQUAL)); 44 44 45 assertFalse( NodeEquality.SYNTACTICALLY_EQUAL.isAtLeast(NodeEquality.IDENTICAL));46 assertFalse( NodeEquality.SYNTACTICALLY_EQUAL.isAtLeast(NodeEquality.LEXICALLY_EQUAL));47 assertTrue( NodeEquality.SYNTACTICALLY_EQUAL.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL));48 assertTrue( NodeEquality.SYNTACTICALLY_EQUAL.isAtLeast(NodeEquality.SEMANTICALLY_EQUAL));49 assertFalse( NodeEquality.SYNTACTICALLY_EQUAL.isAtLeast(NodeEquality.UNEQUAL));45 assertFalse(TaskEquality.SYNTACTICALLY_EQUAL.isAtLeast(TaskEquality.IDENTICAL)); 46 assertFalse(TaskEquality.SYNTACTICALLY_EQUAL.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 47 assertTrue(TaskEquality.SYNTACTICALLY_EQUAL.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 48 assertTrue(TaskEquality.SYNTACTICALLY_EQUAL.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 49 assertFalse(TaskEquality.SYNTACTICALLY_EQUAL.isAtLeast(TaskEquality.UNEQUAL)); 50 50 51 assertFalse( NodeEquality.SEMANTICALLY_EQUAL.isAtLeast(NodeEquality.IDENTICAL));52 assertFalse( NodeEquality.SEMANTICALLY_EQUAL.isAtLeast(NodeEquality.LEXICALLY_EQUAL));53 assertFalse( NodeEquality.SEMANTICALLY_EQUAL.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL));54 assertTrue( NodeEquality.SEMANTICALLY_EQUAL.isAtLeast(NodeEquality.SEMANTICALLY_EQUAL));55 assertFalse( NodeEquality.SEMANTICALLY_EQUAL.isAtLeast(NodeEquality.UNEQUAL));51 assertFalse(TaskEquality.SEMANTICALLY_EQUAL.isAtLeast(TaskEquality.IDENTICAL)); 52 assertFalse(TaskEquality.SEMANTICALLY_EQUAL.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 53 assertFalse(TaskEquality.SEMANTICALLY_EQUAL.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 54 assertTrue(TaskEquality.SEMANTICALLY_EQUAL.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 55 assertFalse(TaskEquality.SEMANTICALLY_EQUAL.isAtLeast(TaskEquality.UNEQUAL)); 56 56 57 assertFalse( NodeEquality.UNEQUAL.isAtLeast(NodeEquality.IDENTICAL));58 assertFalse( NodeEquality.UNEQUAL.isAtLeast(NodeEquality.LEXICALLY_EQUAL));59 assertFalse( NodeEquality.UNEQUAL.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL));60 assertFalse( NodeEquality.UNEQUAL.isAtLeast(NodeEquality.SEMANTICALLY_EQUAL));61 assertTrue( NodeEquality.UNEQUAL.isAtLeast(NodeEquality.UNEQUAL));57 assertFalse(TaskEquality.UNEQUAL.isAtLeast(TaskEquality.IDENTICAL)); 58 assertFalse(TaskEquality.UNEQUAL.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 59 assertFalse(TaskEquality.UNEQUAL.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 60 assertFalse(TaskEquality.UNEQUAL.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 61 assertTrue(TaskEquality.UNEQUAL.isAtLeast(TaskEquality.UNEQUAL)); 62 62 } 63 63 -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/AbstractTemporalRelationshipTC.java
r1132 r1146 21 21 import java.lang.reflect.Constructor; 22 22 import java.lang.reflect.InvocationTargetException; 23 import java.util.ArrayList;24 23 import java.util.LinkedList; 25 24 import java.util.List; … … 29 28 import org.junit.Before; 30 29 31 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 32 import de.ugoe.cs.autoquest.eventcore.IEventType; 33 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 34 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 30 import de.ugoe.cs.autoquest.tasktrees.TaskTreeChecker; 31 import de.ugoe.cs.autoquest.tasktrees.TaskTreeDecoder; 32 import de.ugoe.cs.autoquest.tasktrees.TaskTreeEncoder; 33 import de.ugoe.cs.autoquest.tasktrees.TaskTreeValidator; 34 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 35 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 35 36 import de.ugoe.cs.autoquest.tasktrees.testutils.Utilities; 36 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 37 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 38 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 39 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder; 40 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 41 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 42 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeBuilder; 43 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeNodeFactory; 37 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 38 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 39 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 40 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 41 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 42 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 44 43 import de.ugoe.cs.util.console.Console; 45 44 import de.ugoe.cs.util.console.TextConsole; … … 52 51 53 52 /** */ 54 private List<IEventTask> events; 55 56 /** */ 57 private ITaskTreeBuilder taskTreeBuilder = new TaskTreeBuilder(); 58 59 /** */ 60 private ITaskTreeNodeFactory taskTreeNodeFactory = new TaskTreeNodeFactory(); 61 62 /** */ 63 private NodeEqualityRuleManager nodeEqualityRuleManager = 64 Utilities.getNodeEqualityRuleManagerForTests(); 53 private ITaskBuilder taskBuilder = new TaskBuilder(); 54 55 /** */ 56 private ITaskFactory taskFactory = new TaskFactory(); 57 58 /** */ 59 private TaskTreeDecoder decoder = null; 60 61 /** */ 62 private TaskTreeEncoder encoder = new TaskTreeEncoder(); 63 64 /** */ 65 private TaskEqualityRuleManager taskEqualityRuleManager = 66 Utilities.getTaskEqualityRuleManagerForTests(); 65 67 66 68 /** … … 69 71 @Before 70 72 public void setUp() { 73 Console.reset(); 71 74 new TextConsole(Level.FINEST); 72 events = new ArrayList<IEventTask>(); 75 76 decoder = new TaskTreeDecoder(taskFactory, taskBuilder); 73 77 } 74 78 … … 76 80 * 77 81 */ 78 protected void simulateEvent(IEventType eventType, IEventTarget eventTarget) { 79 events.add(taskTreeNodeFactory.createNewEventTask(eventType, eventTarget)); 80 Console.reset(); 82 protected void applyRule(Class<? extends ITaskInstanceListScopeRule> ruleClass, 83 String inputSpec, 84 String expectedOutputSpec) 85 { 86 ITaskInstanceListScopeRule rule = null; 87 88 CONSTRUCTOR_ITERATION: 89 for (Constructor<?> constructor : ruleClass.getDeclaredConstructors()) { 90 List<Object> parameters = new LinkedList<Object>(); 91 92 for (Class<?> type : constructor.getParameterTypes()) { 93 if (ITaskFactory.class.equals(type)) { 94 parameters.add(taskFactory); 95 } 96 else if (ITaskBuilder.class.equals(type)) { 97 parameters.add(taskBuilder); 98 } 99 else if (TaskEqualityRuleManager.class.equals(type)) { 100 parameters.add(taskEqualityRuleManager); 101 } 102 else if (TaskEquality.class.equals(type)) { 103 parameters.add(TaskEquality.LEXICALLY_EQUAL); 104 } 105 else { 106 continue CONSTRUCTOR_ITERATION; 107 } 108 } 109 110 try { 111 rule = (ITaskInstanceListScopeRule) constructor.newInstance(parameters.toArray()); 112 } 113 catch (IllegalArgumentException e) { 114 e.printStackTrace(); 115 fail("could not invoke the constructor " + constructor); 116 } 117 catch (InstantiationException e) { 118 e.printStackTrace(); 119 fail("could not invoke the constructor " + constructor); 120 } 121 catch (IllegalAccessException e) { 122 e.printStackTrace(); 123 fail("could not invoke the constructor " + constructor); 124 } 125 catch (InvocationTargetException e) { 126 e.printStackTrace(); 127 fail("could not invoke the constructor " + constructor); 128 } 129 } 130 131 if (rule == null) { 132 fail("no matching constructor found to instantiate rule " + ruleClass); 133 } 134 135 RuleApplicationResult result; 136 RuleApplicationStatus status; 137 138 ITaskInstanceList inputList = decoder.decode(inputSpec); 139 140 Stack<ITaskInstanceList> toBeAppliedOn = new Stack<ITaskInstanceList>(); 141 toBeAppliedOn.push(inputList); 142 143 do { 144 result = rule.apply(toBeAppliedOn.peek()); 145 146 if (result != null) { 147 status = result.getRuleApplicationStatus(); 148 assertNotNull(status); 149 } 150 else { 151 status = RuleApplicationStatus.NOT_APPLIED; 152 } 153 154 assertTrue(status != RuleApplicationStatus.FEASIBLE); 155 156 if ((result != null) && (result.getNewlyCreatedTaskInstances() != null)) { 157 for (int i = result.getNewlyCreatedTaskInstances().size() - 1; i >= 0; i--) { 158 toBeAppliedOn.push(result.getNewlyCreatedTaskInstances().get(i)); 159 } 160 } 161 162 if (status == RuleApplicationStatus.NOT_APPLIED) { 163 toBeAppliedOn.pop(); 164 } 165 166 } 167 while ((!toBeAppliedOn.isEmpty()) || (status == RuleApplicationStatus.FINISHED)); 168 169 ITaskInstanceList expectedList = decoder.decode(expectedOutputSpec); 170 171 new TaskTreeChecker().assertTaskInstanceListsEqual(expectedList, inputList); 81 172 } 82 173 … … 84 175 * 85 176 */ 86 protected ITaskTree getTaskTree() { 87 ISequence sequence = taskTreeNodeFactory.createNewSequence(); 88 89 for (IEventTask task : events) { 90 taskTreeBuilder.addChild(sequence, task); 91 } 92 93 TemporalRelationshipRuleManager ruleManager = new TemporalRelationshipRuleManager 94 (nodeEqualityRuleManager, taskTreeNodeFactory, taskTreeBuilder); 95 96 ruleManager.init(); 97 ruleManager.applyRules(sequence); 98 99 return taskTreeNodeFactory.createTaskTree(sequence); 100 } 101 102 /** 103 * 104 */ 105 protected ITaskTree getTaskTree(Class<? extends TemporalRelationshipRule> ruleClass, 106 NodeEquality nodeEquality) 177 protected void applySessionScopeRule(Class<? extends ISessionScopeRule> ruleClass, 178 String inputSpec, 179 String expectedOutputSpec) 107 180 { 108 return getTaskTree(ruleClass, nodeEquality, false); 109 } 110 111 /** 112 * 113 */ 114 protected ITaskTree getTaskTree(Class<? extends TemporalRelationshipRule> ruleClass, 115 NodeEquality nodeEquality, 116 boolean explicitSessionSeq) 117 { 118 ISequence sequence = taskTreeNodeFactory.createNewSequence(); 119 120 for (IEventTask task : events) { 121 taskTreeBuilder.addChild(sequence, task); 122 } 123 124 if (explicitSessionSeq) { 125 ISequence root = taskTreeNodeFactory.createNewSequence(); 126 taskTreeBuilder.addChild(root, sequence); 127 sequence = root; 128 } 129 130 TemporalRelationshipRule rule = null; 181 ISessionScopeRule rule = null; 131 182 132 183 CONSTRUCTOR_ITERATION: … … 135 186 136 187 for (Class<?> type : constructor.getParameterTypes()) { 137 if (ITaskTreeNodeFactory.class.equals(type)) { 138 parameters.add(taskTreeNodeFactory); 139 } 140 else if (ITaskTreeBuilder.class.equals(type)) { 141 parameters.add(taskTreeBuilder); 142 } 143 else if (NodeEqualityRuleManager.class.equals(type)) { 144 parameters.add(nodeEqualityRuleManager); 145 } 146 else if (NodeEquality.class.equals(type)) { 147 if (nodeEquality != null) { 148 parameters.add(nodeEquality); 149 } 150 else { 151 parameters.add(NodeEquality.LEXICALLY_EQUAL); 152 } 188 if (ITaskFactory.class.equals(type)) { 189 parameters.add(taskFactory); 190 } 191 else if (ITaskBuilder.class.equals(type)) { 192 parameters.add(taskBuilder); 193 } 194 else if (TaskEqualityRuleManager.class.equals(type)) { 195 parameters.add(taskEqualityRuleManager); 196 } 197 else if (TaskEquality.class.equals(type)) { 198 parameters.add(TaskEquality.LEXICALLY_EQUAL); 153 199 } 154 200 else { … … 158 204 159 205 try { 160 rule = ( TemporalRelationshipRule) constructor.newInstance(parameters.toArray());206 rule = (ISessionScopeRule) constructor.newInstance(parameters.toArray()); 161 207 } 162 208 catch (IllegalArgumentException e) { … … 182 228 } 183 229 184 RuleApplicationResult result; 185 RuleApplicationStatus status; 186 187 Stack<ITaskTreeNode> toBeAppliedOn = new Stack<ITaskTreeNode>(); 188 toBeAppliedOn.push(sequence); 189 190 do { 191 result = rule.apply(toBeAppliedOn.peek(), true); 192 193 if (result != null) { 194 status = result.getRuleApplicationStatus(); 195 assertNotNull(status); 196 } 197 else { 198 status = RuleApplicationStatus.NOT_APPLIED; 199 } 200 201 assertTrue(status != RuleApplicationStatus.FEASIBLE); 202 203 if ((result != null) && (result.getNewlyCreatedParentNodes() != null)) { 204 for (int i = result.getNewlyCreatedParentNodes().size() - 1; i >= 0; i--) { 205 toBeAppliedOn.push(result.getNewlyCreatedParentNodes().get(i)); 206 } 207 } 208 209 if (status == RuleApplicationStatus.NOT_APPLIED) { 210 toBeAppliedOn.pop(); 211 } 212 213 } 214 while ((!toBeAppliedOn.isEmpty()) || (status == RuleApplicationStatus.FINISHED)); 215 216 return taskTreeNodeFactory.createTaskTree(sequence); 230 ITaskInstanceList inputList = decoder.decode(inputSpec); 231 232 assertTrue(inputList instanceof IUserSession); 233 234 List<IUserSession> sessionList = new LinkedList<IUserSession>(); 235 sessionList.add((IUserSession) inputList); 236 237 System.out.println("Input:"); 238 encoder.encode(inputList, System.out); 239 240 RuleApplicationResult result = rule.apply(sessionList); 241 242 assertNotNull(result); 243 assertNotNull(result.getRuleApplicationStatus()); 244 assertTrue(result.getRuleApplicationStatus() != RuleApplicationStatus.FEASIBLE); 245 246 ITaskInstanceList expectedList = decoder.decode(expectedOutputSpec); 247 248 System.out.println("\nExpected Result:"); 249 encoder.encode(expectedList, System.out); 250 System.out.println("\nResult:"); 251 encoder.encode(inputList, System.out); 252 253 new TaskTreeChecker().assertTaskInstanceListsEqual(expectedList, inputList); 254 new TaskTreeValidator().validate(inputList); 217 255 } 218 256 -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleTest.java
r1132 r1146 17 17 import org.junit.Test; 18 18 19 import de.ugoe.cs.autoquest.eventcore.IEventTarget;20 import de.ugoe.cs.autoquest.eventcore.gui.IInteraction;21 import de.ugoe.cs.autoquest.tasktrees.TaskTreeChecker;22 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality;23 import de.ugoe.cs.autoquest.test.DummyGUIElement;24 import de.ugoe.cs.autoquest.test.DummyInteraction;25 26 19 /** 27 20 * TODO comment … … 36 29 */ 37 30 @Test 38 public void testTaskDetection() throws Exception { 39 IEventTarget element1 = new DummyGUIElement("elem1"); 40 41 IInteraction action1 = new DummyInteraction("action1", 1); 42 IInteraction action2 = new DummyInteraction("action2", 1); 43 IInteraction action3 = new DummyInteraction("action3", 1); 44 IInteraction action4 = new DummyInteraction("action4", 1); 45 46 simulateEvent(new DummyInteraction("noise0", 1), element1); 47 simulateEvent(action1, element1); 48 simulateEvent(action2, element1); 49 simulateEvent(action3, element1); 50 simulateEvent(action4, element1); 51 simulateEvent(new DummyInteraction("noise1", 1), element1); 52 simulateEvent(new DummyInteraction("noise2", 1), element1); 53 simulateEvent(action1, element1); 54 simulateEvent(action2, element1); 55 simulateEvent(action3, element1); 56 simulateEvent(action4, element1); 57 simulateEvent(new DummyInteraction("noise3", 1), element1); 58 simulateEvent(new DummyInteraction("noise4", 1), element1); 59 simulateEvent(new DummyInteraction("noise5", 1), element1); 60 simulateEvent(new DummyInteraction("noise6", 1), element1); 61 simulateEvent(action1, element1); 62 simulateEvent(action2, element1); 63 simulateEvent(action3, element1); 64 simulateEvent(action4, element1); 65 simulateEvent(new DummyInteraction("noise7", 1), element1); 66 simulateEvent(new DummyInteraction("noise8", 1), element1); 67 68 new TaskTreeChecker().assertTaskTree 69 ("Sequence root {" + 70 " Sequence session1 {" + 71 " Event noise0 {}" + 72 " Sequence sequence2 {" + 73 " Event action1 {}" + 74 " Event action2 {}" + 75 " Event action3 {}" + 76 " Event action4 {}" + 77 " }" + 78 " Event noise1 {}" + 79 " Event noise2 {}" + 80 " Sequence sequence2 {" + 81 " Event action1 {}" + 82 " Event action2 {}" + 83 " Event action3 {}" + 84 " Event action4 {}" + 85 " }" + 86 " Event noise3 {}" + 87 " Event noise4 {}" + 88 " Event noise5 {}" + 89 " Event noise6 {}" + 90 " Sequence sequence2 {" + 91 " Event action1 {}" + 92 " Event action2 {}" + 93 " Event action3 {}" + 94 " Event action4 {}" + 95 " }" + 96 " Event noise7 {}" + 97 " Event noise8 {}" + 98 " }" + 99 "}", getTaskTree(SequenceForTaskDetectionRule.class, NodeEquality.LEXICALLY_EQUAL, true)); 31 public void test_TaskDetection_01() throws Exception { 32 String input = 33 "UserSession {" + 34 " Event noise0 {}" + 35 " Event action1 {}" + 36 " Event action2 {}" + 37 " Event action3 {}" + 38 " Event action4 {}" + 39 " Event noise1 {}" + 40 " Event noise2 {}" + 41 " Event action1 {}" + 42 " Event action2 {}" + 43 " Event action3 {}" + 44 " Event action4 {}" + 45 " Event noise3 {}" + 46 " Event noise4 {}" + 47 " Event noise5 {}" + 48 " Event noise6 {}" + 49 " Event action1 {}" + 50 " Event action2 {}" + 51 " Event action3 {}" + 52 " Event action4 {}" + 53 " Event action1 {}" + 54 " Event action2 {}" + 55 " Event action3 {}" + 56 " Event action4 {}" + 57 " Event noise7 {}" + 58 "}"; 100 59 60 String output = 61 "UserSession {" + 62 " Event noise0 {}" + 63 " Iteration iteration1 {" + 64 " Sequence sequence1 {" + 65 " Event action1 {}" + 66 " Event action2 {}" + 67 " Event action3 {}" + 68 " Event action4 {}" + 69 " }" + 70 " }" + 71 " Event noise1 {}" + 72 " Event noise2 {}" + 73 " Iteration iteration1 {" + 74 " Sequence sequence1 {" + 75 " Event action1 {}" + 76 " Event action2 {}" + 77 " Event action3 {}" + 78 " Event action4 {}" + 79 " }" + 80 " }" + 81 " Event noise3 {}" + 82 " Event noise4 {}" + 83 " Event noise5 {}" + 84 " Event noise6 {}" + 85 " Iteration iteration1 {" + 86 " Sequence sequence1 {" + 87 " Event action1 {}" + 88 " Event action2 {}" + 89 " Event action3 {}" + 90 " Event action4 {}" + 91 " }" + 92 " Sequence sequence1 {" + 93 " Event action1 {}" + 94 " Event action2 {}" + 95 " Event action3 {}" + 96 " Event action4 {}" + 97 " }" + 98 " }" + 99 " Event noise7 {}" + 100 "}"; 101 102 applySessionScopeRule(SequenceForTaskDetectionRule.class, input, output); 103 } 104 105 /** 106 * 107 */ 108 @Test 109 public void test_TaskDetection_02() throws Exception { 110 String input = 111 "UserSession {" + 112 " Event noise0 {}" + 113 " Event action1 {}" + 114 " Event action2 {}" + 115 " Event noise1 {}" + 116 " Event noise2 {}" + 117 " Event action3 {}" + 118 " Event action1 {}" + 119 " Event action2 {}" + 120 " Event action4 {}" + 121 " Event noise3 {}" + 122 " Event noise4 {}" + 123 " Event noise5 {}" + 124 " Event noise6 {}" + 125 " Event action1 {}" + 126 " Event action2 {}" + 127 " Event action3 {}" + 128 " Event action4 {}" + 129 " Event action1 {}" + 130 " Event action2 {}" + 131 " Event action3 {}" + 132 " Event action4 {}" + 133 " Event noise7 {}" + 134 "}"; 135 136 String output = 137 "UserSession {" + 138 " Event noise0 {}" + 139 " Sequence sequence1 {" + 140 " Event action1 {}" + 141 " Event action2 {}" + 142 " }" + 143 " Event noise1 {}" + 144 " Event noise2 {}" + 145 " Event action3 {}" + 146 " Sequence sequence1 {" + 147 " Event action1 {}" + 148 " Event action2 {}" + 149 " }" + 150 " Event action4 {}" + 151 " Event noise3 {}" + 152 " Event noise4 {}" + 153 " Event noise5 {}" + 154 " Event noise6 {}" + 155 " Iteration iteration1 {" + 156 " Sequence sequence3 {" + 157 " Sequence sequence1 {" + 158 " Event action1 {}" + 159 " Event action2 {}" + 160 " }" + 161 " Event action3 {}" + 162 " Event action4 {}" + 163 " }" + 164 " Sequence sequence3 {" + 165 " Sequence sequence1 {" + 166 " Event action1 {}" + 167 " Event action2 {}" + 168 " }" + 169 " Event action3 {}" + 170 " Event action4 {}" + 171 " }" + 172 " }" + 173 " Event noise7 {}" + 174 "}"; 175 176 applySessionScopeRule(SequenceForTaskDetectionRule.class, input, output); 101 177 } 102 178 -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/testutils/Utilities.java
r927 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.testutils; 16 16 17 import de.ugoe.cs.autoquest.tasktrees. nodeequality.NodeEqualityRuleManager;17 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 18 18 19 19 /** … … 26 26 27 27 /** */ 28 private static final NodeEqualityRuleManager NODE_EQUALITY_RULE_MANAGER =29 new NodeEqualityRuleManager();28 private static final TaskEqualityRuleManager NODE_EQUALITY_RULE_MANAGER = 29 new TaskEqualityRuleManager(); 30 30 31 /** */ 31 32 static { 32 33 NODE_EQUALITY_RULE_MANAGER.init(); … … 38 39 * @return 39 40 */ 40 public static NodeEqualityRuleManager getNodeEqualityRuleManagerForTests() {41 public static TaskEqualityRuleManager getTaskEqualityRuleManagerForTests() { 41 42 return NODE_EQUALITY_RULE_MANAGER; 42 43 } -
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/TaskModelTest.java
r1132 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.treeimpl; 16 16 17 import static org.junit.Assert.assertEquals; 18 import static org.junit.Assert.assertNotNull; 19 import static org.junit.Assert.assertNull; 17 import static org.junit.Assert.*; 20 18 21 19 import java.util.HashMap; 20 import java.util.LinkedList; 21 import java.util.List; 22 22 import java.util.Map; 23 23 24 24 import org.junit.Test; 25 25 26 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 27 import de.ugoe.cs.autoquest.eventcore.IEventType; 26 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 27 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional; 28 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 29 32 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder; 32 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 33 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 34 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeInfo; 35 import de.ugoe.cs.autoquest.tasktrees.treeimpl.NodeInfo; 36 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeBuilder; 37 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeNodeFactory; 33 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 34 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 35 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 36 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 37 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 38 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInfo; 39 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 40 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskInfo; 41 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 42 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 38 43 import de.ugoe.cs.autoquest.test.DummyGUIElement; 39 44 import de.ugoe.cs.autoquest.test.DummyInteraction; … … 45 50 * @author 2012, last modified by $Author: patrick$ 46 51 */ 47 public class Task TreeImplTest {52 public class TaskModelTest { 48 53 49 54 /** */ … … 51 56 52 57 /** */ 53 private ITask TreeBuilder taskTreeBuilder = new TaskTreeBuilder();58 private ITaskBuilder taskBuilder = new TaskBuilder(); 54 59 55 60 /** */ 56 private ITaskTreeNodeFactory taskTreeNodeFactory = new TaskTreeNodeFactory(); 57 58 /** 59 * @throws Exception 60 * 61 private ITaskFactory taskFactory = new TaskFactory(); 62 63 /** 64 * 65 */ 66 @Test 67 public void test_EventTask_01() throws Exception { 68 IEventType eventType = new DummyInteraction("interaction", 1); 69 IEventTarget eventTarget = new DummyGUIElement("elem"); 70 71 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 72 73 assertNotNull(task); 74 assertNotNull(task.getDescription()); 75 assertNotNull(task.getId()); 76 assertTrue(task.equals(task)); 77 78 assertEquals(eventType, task.getEventType()); 79 assertEquals(eventTarget, task.getEventTarget()); 80 } 81 82 /** 83 * 84 */ 85 @Test 86 public void test_EventTask_02() throws Exception { 87 IEventType eventType = new DummyInteraction("interaction", 1); 88 IEventTarget eventTarget = new DummyGUIElement("elem"); 89 90 IEventTask task1 = taskFactory.createNewEventTask(eventType, eventTarget); 91 IEventTask task2 = taskFactory.createNewEventTask(eventType, eventTarget); 92 93 // the tasks will not be equal as they should have a different id 94 assertFalse(task1.equals(task2)); 95 } 96 97 /** 98 * 99 */ 100 @Test 101 public void test_EventTask_03() throws Exception { 102 IEventType eventType = new DummyInteraction("interaction", 1); 103 IEventTarget eventTarget = new DummyGUIElement("elem"); 104 105 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 106 ITaskInstance taskInstance1 = taskFactory.createNewTaskInstance(task); 107 ITaskInstance taskInstance2 = taskFactory.createNewTaskInstance(task); 108 109 assertFalse(taskInstance1.equals(taskInstance2)); 110 } 111 112 /** 113 * 114 */ 115 @Test 116 public void test_Sequence_01() throws Exception { 117 ISequence task = taskFactory.createNewSequence(); 118 119 assertNotNull(task); 120 assertNotNull(task.getDescription()); 121 assertNotNull(task.getId()); 122 assertNotNull(task.getChildren()); 123 assertEquals(0, task.getChildren().size()); 124 assertTrue(task.equals(task)); 125 } 126 127 /** 128 * 129 */ 130 @Test 131 public void test_Sequence_02() throws Exception { 132 IEventType eventType = new DummyInteraction("interaction", 1); 133 IEventTarget eventTarget = new DummyGUIElement("elem"); 134 135 IEventTask child = taskFactory.createNewEventTask(eventType, eventTarget); 136 137 ISequence task = taskFactory.createNewSequence(); 138 139 taskBuilder.addChild(task, child); 140 141 assertNotNull(task.getChildren()); 142 assertEquals(1, task.getChildren().size()); 143 assertEquals(child, task.getChildren().get(0)); 144 } 145 146 /** 147 * 148 */ 149 @Test 150 public void test_Sequence_03() throws Exception { 151 IEventType eventType = new DummyInteraction("interaction", 1); 152 IEventTarget eventTarget = new DummyGUIElement("elem"); 153 154 IEventTask child1 = taskFactory.createNewEventTask(eventType, eventTarget); 155 IEventTask child2 = taskFactory.createNewEventTask(eventType, eventTarget); 156 IEventTask child3 = taskFactory.createNewEventTask(eventType, eventTarget); 157 IEventTask child4 = taskFactory.createNewEventTask(eventType, eventTarget); 158 IEventTask child5 = taskFactory.createNewEventTask(eventType, eventTarget); 159 160 ISequence task = taskFactory.createNewSequence(); 161 162 taskBuilder.addChild(task, child1); 163 taskBuilder.addChild(task, child2); 164 taskBuilder.addChild(task, child3); 165 taskBuilder.addChild(task, child4); 166 taskBuilder.addChild(task, child5); 167 168 assertNotNull(task.getChildren()); 169 assertEquals(5, task.getChildren().size()); 170 assertEquals(child1, task.getChildren().get(0)); 171 assertEquals(child2, task.getChildren().get(1)); 172 assertEquals(child3, task.getChildren().get(2)); 173 assertEquals(child4, task.getChildren().get(3)); 174 assertEquals(child5, task.getChildren().get(4)); 175 } 176 177 /** 178 * 179 */ 180 @Test 181 public void test_Selection_01() throws Exception { 182 ISelection task = taskFactory.createNewSelection(); 183 184 assertNotNull(task); 185 assertNotNull(task.getDescription()); 186 assertNotNull(task.getId()); 187 assertNotNull(task.getChildren()); 188 assertEquals(0, task.getChildren().size()); 189 assertTrue(task.equals(task)); 190 } 191 192 /** 193 * 194 */ 195 @Test 196 public void test_Selection_02() throws Exception { 197 IEventType eventType = new DummyInteraction("interaction", 1); 198 IEventTarget eventTarget = new DummyGUIElement("elem"); 199 200 IEventTask child = taskFactory.createNewEventTask(eventType, eventTarget); 201 202 ISelection task = taskFactory.createNewSelection(); 203 204 taskBuilder.addChild(task, child); 205 206 assertNotNull(task.getChildren()); 207 assertEquals(1, task.getChildren().size()); 208 assertEquals(child, task.getChildren().get(0)); 209 } 210 211 /** 212 * 213 */ 214 @Test 215 public void test_Selection_03() throws Exception { 216 IEventType eventType = new DummyInteraction("interaction", 1); 217 IEventTarget eventTarget = new DummyGUIElement("elem"); 218 219 IEventTask child1 = taskFactory.createNewEventTask(eventType, eventTarget); 220 IEventTask child2 = taskFactory.createNewEventTask(eventType, eventTarget); 221 IEventTask child3 = taskFactory.createNewEventTask(eventType, eventTarget); 222 IEventTask child4 = taskFactory.createNewEventTask(eventType, eventTarget); 223 IEventTask child5 = taskFactory.createNewEventTask(eventType, eventTarget); 224 225 ISelection task = taskFactory.createNewSelection(); 226 227 taskBuilder.addChild(task, child1); 228 taskBuilder.addChild(task, child2); 229 taskBuilder.addChild(task, child3); 230 taskBuilder.addChild(task, child4); 231 taskBuilder.addChild(task, child5); 232 233 assertNotNull(task.getChildren()); 234 assertEquals(5, task.getChildren().size()); 235 assertEquals(child1, task.getChildren().get(0)); 236 assertEquals(child2, task.getChildren().get(1)); 237 assertEquals(child3, task.getChildren().get(2)); 238 assertEquals(child4, task.getChildren().get(3)); 239 assertEquals(child5, task.getChildren().get(4)); 240 } 241 242 /** 243 * 244 */ 245 @Test 246 public void test_Iteration_01() throws Exception { 247 IIteration task = taskFactory.createNewIteration(); 248 249 assertNotNull(task); 250 assertNotNull(task.getDescription()); 251 assertNotNull(task.getId()); 252 assertNull(task.getMarkedTask()); 253 assertTrue(task.equals(task)); 254 } 255 256 /** 257 * 258 */ 259 @Test 260 public void test_Iteration_02() throws Exception { 261 IEventType eventType = new DummyInteraction("interaction", 1); 262 IEventTarget eventTarget = new DummyGUIElement("elem"); 263 264 IEventTask child = taskFactory.createNewEventTask(eventType, eventTarget); 265 266 IIteration task = taskFactory.createNewIteration(); 267 268 taskBuilder.setMarkedTask(task, child); 269 270 assertEquals(child, task.getMarkedTask()); 271 } 272 273 /** 274 * 275 */ 276 @Test 277 public void test_Iteration_03() throws Exception { 278 IEventType eventType = new DummyInteraction("interaction", 1); 279 IEventTarget eventTarget = new DummyGUIElement("elem"); 280 281 IEventTask child1 = taskFactory.createNewEventTask(eventType, eventTarget); 282 IEventTask child2 = taskFactory.createNewEventTask(eventType, eventTarget); 283 284 IIteration task = taskFactory.createNewIteration(); 285 286 taskBuilder.setMarkedTask(task, child1); 287 taskBuilder.setMarkedTask(task, child2); 288 289 assertEquals(child2, task.getMarkedTask()); 290 } 291 292 /** 293 * 294 */ 295 @Test 296 public void test_Optional_01() throws Exception { 297 IOptional task = taskFactory.createNewOptional(); 298 299 assertNotNull(task); 300 assertNotNull(task.getDescription()); 301 assertNotNull(task.getId()); 302 assertNull(task.getMarkedTask()); 303 assertTrue(task.equals(task)); 304 } 305 306 /** 307 * 308 */ 309 @Test 310 public void test_Optional_02() throws Exception { 311 IEventType eventType = new DummyInteraction("interaction", 1); 312 IEventTarget eventTarget = new DummyGUIElement("elem"); 313 314 IEventTask child = taskFactory.createNewEventTask(eventType, eventTarget); 315 316 IOptional task = taskFactory.createNewOptional(); 317 318 taskBuilder.setMarkedTask(task, child); 319 320 assertEquals(child, task.getMarkedTask()); 321 } 322 323 /** 324 * 325 */ 326 @Test 327 public void test_Optional_03() throws Exception { 328 IEventType eventType = new DummyInteraction("interaction", 1); 329 IEventTarget eventTarget = new DummyGUIElement("elem"); 330 331 IEventTask child1 = taskFactory.createNewEventTask(eventType, eventTarget); 332 IEventTask child2 = taskFactory.createNewEventTask(eventType, eventTarget); 333 334 IOptional task = taskFactory.createNewOptional(); 335 336 taskBuilder.setMarkedTask(task, child1); 337 taskBuilder.setMarkedTask(task, child2); 338 339 assertEquals(child2, task.getMarkedTask()); 340 } 341 342 /** 343 * 344 */ 345 @Test 346 public void test_EventTaskInstance_01() throws Exception { 347 IEventType eventType = new DummyInteraction("interaction", 1); 348 IEventTarget eventTarget = new DummyGUIElement("elem"); 349 350 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 351 352 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 353 354 assertNotNull(taskInstance); 355 assertEquals(task, taskInstance.getTask()); 356 assertTrue(taskInstance.equals(taskInstance)); 357 assertFalse(taskInstance.equals(task)); 358 assertNotNull(taskInstance.getChildren()); 359 assertEquals(0, taskInstance.getChildren().size()); 360 } 361 362 /** 363 * 364 */ 365 @Test 366 public void test_EventTaskInstance_02() throws Exception { 367 IEventType eventType = new DummyInteraction("interaction", 1); 368 IEventTarget eventTarget = new DummyGUIElement("elem"); 369 370 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 371 372 ITaskInstance taskInstance1 = taskFactory.createNewTaskInstance(task); 373 ITaskInstance taskInstance2 = taskFactory.createNewTaskInstance(task); 374 375 assertFalse(taskInstance1.equals(taskInstance2)); 376 } 377 378 /** 379 * 380 */ 381 @Test(expected=IllegalArgumentException.class) 382 public void test_EventTaskInstance_03() throws Exception { 383 IEventType eventType = new DummyInteraction("interaction", 1); 384 IEventTarget eventTarget = new DummyGUIElement("elem"); 385 386 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 387 388 ITaskInstance taskInstance1 = taskFactory.createNewTaskInstance(task); 389 ITaskInstance taskInstance2 = taskFactory.createNewTaskInstance(task); 390 391 taskBuilder.addChild(taskInstance1, taskInstance2); 392 } 393 394 /** 395 * 396 */ 397 @Test(expected=IllegalArgumentException.class) 398 public void test_SequenceInstance_01() throws Exception { 399 IEventType eventType = new DummyInteraction("interaction", 1); 400 IEventTarget eventTarget = new DummyGUIElement("elem"); 401 402 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 403 404 ISequence sequence = taskFactory.createNewSequence(); 405 406 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 407 ITaskInstance sequenceInstance = taskFactory.createNewTaskInstance(sequence); 408 409 taskBuilder.addChild(sequenceInstance, taskInstance); 410 } 411 412 /** 413 * 414 */ 415 @Test 416 public void test_SequenceInstance_02() throws Exception { 417 IEventType eventType = new DummyInteraction("interaction", 1); 418 IEventTarget eventTarget = new DummyGUIElement("elem"); 419 420 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 421 422 ISequence sequence = taskFactory.createNewSequence(); 423 taskBuilder.addChild(sequence, task); 424 425 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 426 ITaskInstance sequenceInstance = taskFactory.createNewTaskInstance(sequence); 427 428 taskBuilder.addChild(sequenceInstance, taskInstance); 429 430 assertNotNull(sequenceInstance.getChildren()); 431 assertEquals(1, sequenceInstance.getChildren().size()); 432 assertEquals(taskInstance, sequenceInstance.getChildren().get(0)); 433 } 434 435 /** 436 * 437 */ 438 @Test 439 public void test_SequenceInstance_03() throws Exception { 440 IEventType eventType = new DummyInteraction("interaction", 1); 441 IEventTarget eventTarget = new DummyGUIElement("elem"); 442 443 IEventTask task1 = taskFactory.createNewEventTask(eventType, eventTarget); 444 IEventTask task2 = taskFactory.createNewEventTask(eventType, eventTarget); 445 IEventTask task3 = taskFactory.createNewEventTask(eventType, eventTarget); 446 IEventTask task4 = taskFactory.createNewEventTask(eventType, eventTarget); 447 IEventTask task5 = taskFactory.createNewEventTask(eventType, eventTarget); 448 449 ISequence sequence = taskFactory.createNewSequence(); 450 taskBuilder.addChild(sequence, task1); 451 taskBuilder.addChild(sequence, task2); 452 taskBuilder.addChild(sequence, task3); 453 taskBuilder.addChild(sequence, task4); 454 taskBuilder.addChild(sequence, task5); 455 456 ITaskInstance taskInstance1 = taskFactory.createNewTaskInstance(task1); 457 ITaskInstance taskInstance2 = taskFactory.createNewTaskInstance(task2); 458 ITaskInstance taskInstance3 = taskFactory.createNewTaskInstance(task3); 459 ITaskInstance taskInstance4 = taskFactory.createNewTaskInstance(task4); 460 ITaskInstance taskInstance5 = taskFactory.createNewTaskInstance(task5); 461 ITaskInstance sequenceInstance = taskFactory.createNewTaskInstance(sequence); 462 463 taskBuilder.addChild(sequenceInstance, taskInstance1); 464 taskBuilder.addChild(sequenceInstance, taskInstance2); 465 taskBuilder.addChild(sequenceInstance, taskInstance3); 466 taskBuilder.addChild(sequenceInstance, taskInstance4); 467 taskBuilder.addChild(sequenceInstance, taskInstance5); 468 469 assertNotNull(sequenceInstance.getChildren()); 470 assertEquals(5, sequenceInstance.getChildren().size()); 471 assertEquals(taskInstance1, sequenceInstance.getChildren().get(0)); 472 assertEquals(taskInstance2, sequenceInstance.getChildren().get(1)); 473 assertEquals(taskInstance3, sequenceInstance.getChildren().get(2)); 474 assertEquals(taskInstance4, sequenceInstance.getChildren().get(3)); 475 assertEquals(taskInstance5, sequenceInstance.getChildren().get(4)); 476 } 477 478 /** 479 * 480 */ 481 @Test(expected=IllegalArgumentException.class) 482 public void test_SelectionInstance_01() throws Exception { 483 IEventType eventType = new DummyInteraction("interaction", 1); 484 IEventTarget eventTarget = new DummyGUIElement("elem"); 485 486 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 487 488 ISelection selection = taskFactory.createNewSelection(); 489 490 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 491 ITaskInstance selectionInstance = taskFactory.createNewTaskInstance(selection); 492 493 taskBuilder.addChild(selectionInstance, taskInstance); 494 } 495 496 /** 497 * 498 */ 499 @Test 500 public void test_SelectionInstance_02() throws Exception { 501 IEventType eventType = new DummyInteraction("interaction", 1); 502 IEventTarget eventTarget = new DummyGUIElement("elem"); 503 504 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 505 506 ISelection selection = taskFactory.createNewSelection(); 507 taskBuilder.addChild(selection, task); 508 509 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 510 ITaskInstance selectionInstance = taskFactory.createNewTaskInstance(selection); 511 512 taskBuilder.addChild(selectionInstance, taskInstance); 513 514 assertNotNull(selectionInstance.getChildren()); 515 assertEquals(1, selectionInstance.getChildren().size()); 516 assertEquals(taskInstance, selectionInstance.getChildren().get(0)); 517 } 518 519 /** 520 * 521 */ 522 @Test(expected=IllegalArgumentException.class) 523 public void test_SelectionInstance_03() throws Exception { 524 IEventType eventType = new DummyInteraction("interaction", 1); 525 IEventTarget eventTarget = new DummyGUIElement("elem"); 526 527 IEventTask task1 = taskFactory.createNewEventTask(eventType, eventTarget); 528 IEventTask task2 = taskFactory.createNewEventTask(eventType, eventTarget); 529 IEventTask task3 = taskFactory.createNewEventTask(eventType, eventTarget); 530 IEventTask task4 = taskFactory.createNewEventTask(eventType, eventTarget); 531 IEventTask task5 = taskFactory.createNewEventTask(eventType, eventTarget); 532 533 ISelection selection = taskFactory.createNewSelection(); 534 taskBuilder.addChild(selection, task1); 535 taskBuilder.addChild(selection, task2); 536 taskBuilder.addChild(selection, task3); 537 taskBuilder.addChild(selection, task4); 538 taskBuilder.addChild(selection, task5); 539 540 ITaskInstance taskInstance1 = taskFactory.createNewTaskInstance(task1); 541 ITaskInstance taskInstance2 = taskFactory.createNewTaskInstance(task2); 542 ITaskInstance selectionInstance = taskFactory.createNewTaskInstance(selection); 543 544 taskBuilder.addChild(selectionInstance, taskInstance1); 545 taskBuilder.addChild(selectionInstance, taskInstance2); 546 } 547 548 /** 549 * 550 */ 551 @Test(expected=IllegalArgumentException.class) 552 public void test_IterationInstance_01() throws Exception { 553 IEventType eventType = new DummyInteraction("interaction", 1); 554 IEventTarget eventTarget = new DummyGUIElement("elem"); 555 556 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 557 558 IIteration iteration = taskFactory.createNewIteration(); 559 560 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 561 ITaskInstance iterationInstance = taskFactory.createNewTaskInstance(iteration); 562 563 taskBuilder.addChild(iterationInstance, taskInstance); 564 } 565 566 /** 567 * 568 */ 569 @Test 570 public void test_IterationInstance_02() throws Exception { 571 IEventType eventType = new DummyInteraction("interaction", 1); 572 IEventTarget eventTarget = new DummyGUIElement("elem"); 573 574 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 575 576 IIteration iteration = taskFactory.createNewIteration(); 577 taskBuilder.setMarkedTask(iteration, task); 578 579 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 580 ITaskInstance iterationInstance = taskFactory.createNewTaskInstance(iteration); 581 582 taskBuilder.addChild(iterationInstance, taskInstance); 583 584 assertNotNull(iterationInstance.getChildren()); 585 assertEquals(1, iterationInstance.getChildren().size()); 586 assertEquals(taskInstance, iterationInstance.getChildren().get(0)); 587 } 588 589 /** 590 * 591 */ 592 @Test(expected=IllegalArgumentException.class) 593 public void test_IterationInstance_03() throws Exception { 594 IEventType eventType = new DummyInteraction("interaction", 1); 595 IEventTarget eventTarget = new DummyGUIElement("elem"); 596 597 IEventTask task1 = taskFactory.createNewEventTask(eventType, eventTarget); 598 IEventTask task2 = taskFactory.createNewEventTask(eventType, eventTarget); 599 600 IIteration iteration = taskFactory.createNewIteration(); 601 taskBuilder.setMarkedTask(iteration, task1); 602 taskBuilder.setMarkedTask(iteration, task2); 603 604 ITaskInstance taskInstance1 = taskFactory.createNewTaskInstance(task1); 605 ITaskInstance iterationInstance = taskFactory.createNewTaskInstance(iteration); 606 607 taskBuilder.addChild(iterationInstance, taskInstance1); 608 } 609 610 /** 611 * 612 */ 613 @Test 614 public void test_IterationInstance_04() throws Exception { 615 IEventType eventType = new DummyInteraction("interaction", 1); 616 IEventTarget eventTarget = new DummyGUIElement("elem"); 617 618 IEventTask task1 = taskFactory.createNewEventTask(eventType, eventTarget); 619 IEventTask task2 = taskFactory.createNewEventTask(eventType, eventTarget); 620 621 IIteration iteration = taskFactory.createNewIteration(); 622 taskBuilder.setMarkedTask(iteration, task1); 623 taskBuilder.setMarkedTask(iteration, task2); 624 625 ITaskInstance taskInstance2 = taskFactory.createNewTaskInstance(task2); 626 ITaskInstance iterationInstance = taskFactory.createNewTaskInstance(iteration); 627 628 taskBuilder.addChild(iterationInstance, taskInstance2); 629 630 assertNotNull(iterationInstance.getChildren()); 631 assertEquals(1, iterationInstance.getChildren().size()); 632 assertEquals(taskInstance2, iterationInstance.getChildren().get(0)); 633 } 634 635 /** 636 * 637 */ 638 @Test(expected=IllegalArgumentException.class) 639 public void test_OptionalInstance_01() throws Exception { 640 IEventType eventType = new DummyInteraction("interaction", 1); 641 IEventTarget eventTarget = new DummyGUIElement("elem"); 642 643 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 644 645 IOptional optional = taskFactory.createNewOptional(); 646 647 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 648 ITaskInstance optionalInstance = taskFactory.createNewTaskInstance(optional); 649 650 taskBuilder.addChild(optionalInstance, taskInstance); 651 } 652 653 /** 654 * 655 */ 656 @Test 657 public void test_OptionalInstance_02() throws Exception { 658 IEventType eventType = new DummyInteraction("interaction", 1); 659 IEventTarget eventTarget = new DummyGUIElement("elem"); 660 661 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 662 663 IOptional optional = taskFactory.createNewOptional(); 664 taskBuilder.setMarkedTask(optional, task); 665 666 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 667 ITaskInstance optionalInstance = taskFactory.createNewTaskInstance(optional); 668 669 taskBuilder.addChild(optionalInstance, taskInstance); 670 671 assertNotNull(optionalInstance.getChildren()); 672 assertEquals(1, optionalInstance.getChildren().size()); 673 assertEquals(taskInstance, optionalInstance.getChildren().get(0)); 674 } 675 676 /** 677 * 678 */ 679 @Test(expected=IllegalArgumentException.class) 680 public void test_OptionalInstance_03() throws Exception { 681 IEventType eventType = new DummyInteraction("interaction", 1); 682 IEventTarget eventTarget = new DummyGUIElement("elem"); 683 684 IEventTask task1 = taskFactory.createNewEventTask(eventType, eventTarget); 685 IEventTask task2 = taskFactory.createNewEventTask(eventType, eventTarget); 686 687 IOptional optional = taskFactory.createNewOptional(); 688 taskBuilder.setMarkedTask(optional, task1); 689 taskBuilder.setMarkedTask(optional, task2); 690 691 ITaskInstance taskInstance1 = taskFactory.createNewTaskInstance(task1); 692 ITaskInstance optionalInstance = taskFactory.createNewTaskInstance(optional); 693 694 taskBuilder.addChild(optionalInstance, taskInstance1); 695 } 696 697 /** 698 * 699 */ 700 @Test 701 public void test_OptionalInstance_04() throws Exception { 702 IEventType eventType = new DummyInteraction("interaction", 1); 703 IEventTarget eventTarget = new DummyGUIElement("elem"); 704 705 IEventTask task1 = taskFactory.createNewEventTask(eventType, eventTarget); 706 IEventTask task2 = taskFactory.createNewEventTask(eventType, eventTarget); 707 708 IOptional optional = taskFactory.createNewOptional(); 709 taskBuilder.setMarkedTask(optional, task1); 710 taskBuilder.setMarkedTask(optional, task2); 711 712 ITaskInstance taskInstance2 = taskFactory.createNewTaskInstance(task2); 713 ITaskInstance optionalInstance = taskFactory.createNewTaskInstance(optional); 714 715 taskBuilder.addChild(optionalInstance, taskInstance2); 716 717 assertNotNull(optionalInstance.getChildren()); 718 assertEquals(1, optionalInstance.getChildren().size()); 719 assertEquals(taskInstance2, optionalInstance.getChildren().get(0)); 720 } 721 722 /** 723 * 724 */ 725 @Test 726 public void test_UserSession_01() throws Exception { 727 IUserSession userSession = taskFactory.createUserSession(); 728 729 assertNotNull(userSession); 730 assertNotNull(userSession.getExecutedTasks()); 731 assertEquals(0, userSession.getExecutedTasks().size()); 732 } 733 734 /** 735 * 736 */ 737 @Test 738 public void test_UserSession_02() throws Exception { 739 IEventType eventType = new DummyInteraction("interaction", 1); 740 IEventTarget eventTarget = new DummyGUIElement("elem"); 741 742 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 743 744 IUserSession userSession = taskFactory.createUserSession(); 745 746 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 747 748 taskBuilder.addExecutedTask(userSession, taskInstance); 749 750 assertNotNull(userSession.getExecutedTasks()); 751 assertEquals(1, userSession.getExecutedTasks().size()); 752 assertEquals(taskInstance, userSession.getExecutedTasks().get(0)); 753 } 754 755 /** 756 * 757 */ 758 @Test 759 public void test_UserSession_03() throws Exception { 760 IEventType eventType = new DummyInteraction("interaction", 1); 761 IEventTarget eventTarget = new DummyGUIElement("elem"); 762 763 IEventTask task = taskFactory.createNewEventTask(eventType, eventTarget); 764 ISequence sequence = taskFactory.createNewSequence(); 765 ISelection selection = taskFactory.createNewSelection(); 766 IIteration iteration = taskFactory.createNewIteration(); 767 IOptional optional = taskFactory.createNewOptional(); 768 769 taskBuilder.addChild(sequence, task); 770 taskBuilder.addChild(selection, task); 771 taskBuilder.setMarkedTask(iteration, task); 772 taskBuilder.setMarkedTask(optional, task); 773 774 ITaskInstance taskInstance = taskFactory.createNewTaskInstance(task); 775 ITaskInstance sequenceInstance = taskFactory.createNewTaskInstance(sequence); 776 ITaskInstance selectionInstance = taskFactory.createNewTaskInstance(selection); 777 ITaskInstance iterationInstance = taskFactory.createNewTaskInstance(iteration); 778 ITaskInstance optionalInstance = taskFactory.createNewTaskInstance(optional); 779 780 taskBuilder.addChild(sequenceInstance, taskFactory.createNewTaskInstance(task)); 781 taskBuilder.addChild(selectionInstance, taskFactory.createNewTaskInstance(task)); 782 taskBuilder.addChild(iterationInstance, taskFactory.createNewTaskInstance(task)); 783 taskBuilder.addChild(optionalInstance, taskFactory.createNewTaskInstance(task)); 784 785 IUserSession userSession = taskFactory.createUserSession(); 786 787 taskBuilder.addExecutedTask(userSession, taskInstance); 788 taskBuilder.addExecutedTask(userSession, sequenceInstance); 789 taskBuilder.addExecutedTask(userSession, selectionInstance); 790 taskBuilder.addExecutedTask(userSession, iterationInstance); 791 taskBuilder.addExecutedTask(userSession, optionalInstance); 792 793 assertNotNull(userSession.getExecutedTasks()); 794 assertEquals(5, userSession.getExecutedTasks().size()); 795 assertEquals(taskInstance, userSession.getExecutedTasks().get(0)); 796 assertEquals(sequenceInstance, userSession.getExecutedTasks().get(1)); 797 assertEquals(selectionInstance, userSession.getExecutedTasks().get(2)); 798 assertEquals(iterationInstance, userSession.getExecutedTasks().get(3)); 799 assertEquals(optionalInstance, userSession.getExecutedTasks().get(4)); 800 } 801 802 /** 803 * 61 804 */ 62 805 @Test … … 67 810 68 811 for (int i = 0; i < noOfTrees; i++) { 69 System.err.println("iteration " + (i + 1) + ":"); 70 System.err.println(" creating tree"); 71 Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos = 72 new HashMap<ITaskTreeNode, ITaskTreeNodeInfo>(); 73 ITaskTreeNode rootNode = createTree(noOfMaxChildren, maxDepth, treeInfos); 74 System.err.println(" creating task tree"); 75 ITaskTree taskTree = taskTreeNodeFactory.createTaskTree(rootNode); 812 System.err.println("\niteration " + (i + 1) + ":"); 813 System.err.println(" creating tasks"); 814 Map<ITask, ITaskInfo> expectedTaskInfos = new HashMap<ITask, ITaskInfo>(); 815 ITask task = createTaskTree(noOfMaxChildren, maxDepth, expectedTaskInfos); 816 if (!(task instanceof ISequence)) { 817 ISequence sequence = taskFactory.createNewSequence(); 818 taskBuilder.addChild(sequence, task); 819 task = sequence; 820 } 821 else { 822 expectedTaskInfos.remove(task); 823 } 824 825 ITaskInstance taskInstance = instantiateTask(task, noOfMaxChildren); 826 827 System.err.println(" creating user session"); 828 829 IUserSession session = taskFactory.createUserSession(); 830 831 for (ITaskInstance child : taskInstance.getChildren()) { 832 taskBuilder.addExecutedTask(session, child); 833 } 834 835 List<IUserSession> sessions = new LinkedList<IUserSession>(); 836 sessions.add(session); 837 838 ITaskModel taskTree = taskFactory.createTaskModel(sessions); 76 839 77 840 System.err.println(" validating task tree"); 78 assertEquals(rootNode, taskTree.getRoot()); 79 assertMapsEqual(treeInfos, taskTree.getTaskMap()); 80 } 81 } 82 83 /** 84 * TODO: comment 85 * 86 * @param treeInfos 87 * @param taskMap 88 */ 89 private void assertMapsEqual(Map<ITaskTreeNode, ITaskTreeNodeInfo> map1, 90 Map<ITaskTreeNode, ITaskTreeNodeInfo> map2) 841 Map<ITask, ITaskInfo> actualTaskInfos = new HashMap<ITask, ITaskInfo>(); 842 843 for (ITask currentTask : taskTree.getTasks()) { 844 actualTaskInfos.put(currentTask, taskTree.getTaskInfo(currentTask)); 845 } 846 847 assertMapsEqual(expectedTaskInfos, actualTaskInfos); 848 } 849 } 850 851 /** 852 * 853 */ 854 private void assertMapsEqual(Map<ITask, ITaskInfo> map1, 855 Map<ITask, ITaskInfo> map2) 91 856 { 92 857 try { … … 98 863 assertEquals(map1.size(), map2.size()); 99 864 100 for (Map.Entry<ITask TreeNode, ITaskTreeNodeInfo> entry : map1.entrySet()) {101 ITask TreeNodeInfo value2 = map2.get(entry.getKey());865 for (Map.Entry<ITask, ITaskInfo> entry : map1.entrySet()) { 866 ITaskInfo value2 = map2.get(entry.getKey()); 102 867 assertNotNull(value2); 103 868 assertEquals(entry.getValue().getTask(), value2.getTask()); … … 114 879 115 880 /** 116 * TODO: comment 117 * 118 * @param map2 119 */ 120 private void dumpMap(Map<ITaskTreeNode, ITaskTreeNodeInfo> map) { 881 * 882 */ 883 private void dumpMap(Map<ITask, ITaskInfo> map) { 121 884 System.err.println(); 122 885 … … 126 889 else { 127 890 System.err.println("map:"); 128 for (Map.Entry<ITask TreeNode, ITaskTreeNodeInfo> entry : map.entrySet()) {891 for (Map.Entry<ITask, ITaskInfo> entry : map.entrySet()) { 129 892 System.err.print(" "); 130 893 System.err.print(entry.getKey()); 131 for (int i = entry.getKey().toString().length(); i < 49; i++) {894 for (int i = entry.getKey().toString().length(); i < 60; i++) { 132 895 System.err.print(" "); 133 896 } … … 141 904 142 905 /** 143 * TODO: comment 144 * 145 * @param noOfMaxChildren 146 * @param maxDepth 147 * @param treeInfos 148 * @return 149 */ 150 private ITaskTreeNode createTree(int maxNoOfChildren, 151 int maxDepth, 152 Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 906 * 907 */ 908 private ITask createTaskTree(int maxNoOfChildren, 909 int maxDepth, 910 Map<ITask, ITaskInfo> taskInfos) 153 911 throws Exception 154 912 { 155 /* 156 * for (int i = 0; i < (MAX_TREE_DEPTH + 1 - maxDepth); i++) { System.err.print(" "); } 157 */ 158 159 ITaskTreeNode tree; 913 914 ITask task; 160 915 161 916 // integrating the maximum depth here assures, that either something between 0 and 8 will 162 917 // be the type, or if the max depth decreases near 0 only event tasks will be created 163 918 // to finish the tree creation 164 int type = (int) (Math.random() * (Math.min(8, maxDepth)));919 int type = randomize(Math.min(10, maxDepth)); 165 920 166 921 switch (type) … … 168 923 case 0: { 169 924 // System.err.print("creating new event task "); 170 t ree = createNewEventTask(treeInfos);925 task = createNewEventTask(taskInfos); 171 926 break; 172 927 } 173 928 case 1: { 174 929 // System.err.print("reusing event task "); 175 t ree = reuseEventTask(treeInfos);930 task = reuseEventTask(taskInfos); 176 931 break; 177 932 } 178 933 case 2: { 179 934 // System.err.println("creating new sequence {"); 180 t ree = createNewSequence(maxNoOfChildren, maxDepth, treeInfos);935 task = createNewSequence(maxNoOfChildren, maxDepth, taskInfos); 181 936 break; 182 937 } 183 938 case 3: { 184 939 // System.err.println("reusing sequence {"); 185 t ree = reuseSequence(maxNoOfChildren, maxDepth, treeInfos);940 task = reuseSequence(maxNoOfChildren, maxDepth, taskInfos); 186 941 break; 187 942 } 188 943 case 4: { 189 944 // System.err.println("creating new selection {"); 190 t ree = createNewSelection(maxNoOfChildren, maxDepth, treeInfos);945 task = createNewSelection(maxNoOfChildren, maxDepth, taskInfos); 191 946 break; 192 947 } 193 948 case 5: { 194 949 // System.err.println("reusing selection {"); 195 t ree = reuseSelection(maxNoOfChildren, maxDepth, treeInfos);950 task = reuseSelection(maxNoOfChildren, maxDepth, taskInfos); 196 951 break; 197 952 } 198 953 case 6: { 199 954 // System.err.println("creating new iteration {"); 200 t ree = createNewIteration(maxNoOfChildren, maxDepth, treeInfos);955 task = createNewIteration(maxNoOfChildren, maxDepth, taskInfos); 201 956 break; 202 957 } 203 958 case 7: { 204 959 // System.err.println("reusing iteration {"); 205 tree = reuseIteration(maxNoOfChildren, maxDepth, treeInfos); 960 task = reuseIteration(maxNoOfChildren, maxDepth, taskInfos); 961 break; 962 } 963 case 8: { 964 // System.err.println("creating new optional {"); 965 task = createNewOptional(maxNoOfChildren, maxDepth, taskInfos); 966 break; 967 } 968 case 9: { 969 // System.err.println("reusing optional {"); 970 task = reuseOptional(maxNoOfChildren, maxDepth, taskInfos); 206 971 break; 207 972 } 208 973 default: { 209 974 // System.err.print("creating new event task per default "); 210 tree = createNewEventTask(treeInfos); 211 } 212 } 213 214 /* 215 * if (!(tree instanceof InteractionTask)) { for (int i = 0; i < (MAX_TREE_DEPTH + 1 - 216 * maxDepth); i++) { System.err.print(" "); } 217 * 218 * System.err.print("} "); } 219 * 220 * System.err.println(tree); 221 */ 222 223 return tree; 224 } 225 226 /** 227 * TODO: comment 228 * 229 * @param treeInfos 230 * @return 231 */ 232 private IEventTask createNewEventTask(Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 975 task = createNewEventTask(taskInfos); 976 } 977 } 978 979 return task; 980 } 981 982 /** 983 * 984 */ 985 private ITask createNewEventTask(Map<ITask, ITaskInfo> taskInfos) 233 986 throws Exception 234 987 { 235 988 Thread.sleep(2); 236 989 long id = System.currentTimeMillis(); 237 IEventTask task = 238 taskTreeNodeFactory.createNewEventTask(new DummyInteraction("interaction" + id, 1), 239 new DummyGUIElement("elem" + id)); 240 241 treeInfos.put(task, new NodeInfo(task)); 990 IEventTask task = taskFactory.createNewEventTask 991 (new DummyInteraction("interaction" + id, 1), new DummyGUIElement("elem" + id)); 992 993 taskInfos.put(task, new TaskInfo(task)); 242 994 243 995 return task; … … 245 997 246 998 /** 247 * TODO: comment 248 * 249 * @param treeInfos 250 * @return 251 */ 252 private IEventTask reuseEventTask(Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 999 * 1000 */ 1001 private ITask reuseEventTask(Map<ITask, ITaskInfo> taskInfos) 253 1002 throws Exception 254 1003 { 255 int noOfEventTasks = 0; 256 257 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : treeInfos.entrySet()) { 258 if (entry.getKey() instanceof IEventTask) { 259 noOfEventTasks++; 260 } 261 } 262 263 if (noOfEventTasks > 0) { 264 noOfEventTasks = (int) (Math.random() * noOfEventTasks); 265 266 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : treeInfos.entrySet()) { 267 if (entry.getKey() instanceof IEventTask) { 268 if (--noOfEventTasks <= 0) { 269 return (IEventTask) entry.getKey(); 1004 ITask eventTask = reuseTask(taskInfos, IEventTask.class); 1005 1006 if (eventTask == null) { 1007 eventTask = createNewEventTask(taskInfos); 1008 } 1009 1010 return eventTask; 1011 } 1012 1013 /** 1014 * 1015 */ 1016 private ITask createNewSequence(int maxNoOfChildren, 1017 int maxDepth, 1018 Map<ITask, ITaskInfo> taskInfos) 1019 throws Exception 1020 { 1021 ISequence sequence = taskFactory.createNewSequence(); 1022 1023 // ensure at the minimum 2 children 1024 int noOfChildren = randomize(2, maxNoOfChildren); 1025 1026 for (int i = 0; i < noOfChildren; i++) { 1027 ITask child = createTaskTree(maxNoOfChildren, maxDepth - 1, taskInfos); 1028 taskBuilder.addChild(sequence, child); 1029 } 1030 1031 taskInfos.put(sequence, new TaskInfo(sequence)); 1032 return sequence; 1033 } 1034 1035 /** 1036 * 1037 */ 1038 private ITask reuseSequence(int maxNoOfChildren, 1039 int maxDepth, 1040 Map<ITask, ITaskInfo> taskInfos) 1041 throws Exception 1042 { 1043 ITask sequence = reuseTask(taskInfos, ISequence.class); 1044 1045 if (sequence == null) { 1046 sequence = createNewSequence(maxNoOfChildren, maxDepth, taskInfos); 1047 } 1048 1049 return sequence; 1050 } 1051 1052 /** 1053 * 1054 */ 1055 private ITask createNewSelection(int maxNoOfChildren, 1056 int maxDepth, 1057 Map<ITask, ITaskInfo> taskInfos) 1058 throws Exception 1059 { 1060 ISelection selection = taskFactory.createNewSelection(); 1061 1062 // ensure at the minimum 1 child 1063 int noOfChildren = randomize(1, maxNoOfChildren); 1064 1065 for (int i = 0; i < noOfChildren; i++) { 1066 ITask child = createTaskTree(maxNoOfChildren, maxDepth - 1, taskInfos); 1067 taskBuilder.addChild(selection, child); 1068 } 1069 1070 taskInfos.put(selection, new TaskInfo(selection)); 1071 return selection; 1072 } 1073 1074 /** 1075 * 1076 */ 1077 private ITask reuseSelection(int maxNoOfChildren, 1078 int maxDepth, 1079 Map<ITask, ITaskInfo> taskInfos) 1080 throws Exception 1081 { 1082 ITask selection = reuseTask(taskInfos, ISelection.class); 1083 1084 if (selection == null) { 1085 selection = createNewSelection(maxNoOfChildren, maxDepth, taskInfos); 1086 } 1087 1088 return selection; 1089 } 1090 1091 /** 1092 * 1093 */ 1094 private ITask createNewIteration(int maxNoOfChildren, 1095 int maxDepth, 1096 Map<ITask, ITaskInfo> taskInfos) 1097 throws Exception 1098 { 1099 IIteration iteration = taskFactory.createNewIteration(); 1100 1101 ITask child = createTaskTree(maxNoOfChildren, maxDepth - 1, taskInfos); 1102 taskBuilder.setMarkedTask(iteration, child); 1103 1104 taskInfos.put(iteration, new TaskInfo(iteration)); 1105 return iteration; 1106 } 1107 1108 /** 1109 * 1110 */ 1111 private ITask reuseIteration(int maxNoOfChildren, 1112 int maxDepth, 1113 Map<ITask, ITaskInfo> taskInfos) 1114 throws Exception 1115 { 1116 ITask iteration = reuseTask(taskInfos, IIteration.class); 1117 1118 if (iteration == null) { 1119 iteration = createNewIteration(maxNoOfChildren, maxDepth, taskInfos); 1120 } 1121 1122 return iteration; 1123 } 1124 1125 /** 1126 * 1127 */ 1128 private ITask createNewOptional(int maxNoOfChildren, 1129 int maxDepth, 1130 Map<ITask, ITaskInfo> taskInfos) 1131 throws Exception 1132 { 1133 IOptional optional = taskFactory.createNewOptional(); 1134 1135 ITask child = createTaskTree(maxNoOfChildren, maxDepth - 1, taskInfos); 1136 taskBuilder.setMarkedTask(optional, child); 1137 1138 taskInfos.put(optional, new TaskInfo(optional)); 1139 return optional; 1140 } 1141 1142 /** 1143 * 1144 */ 1145 private ITask reuseOptional(int maxNoOfChildren, 1146 int maxDepth, 1147 Map<ITask, ITaskInfo> taskInfos) 1148 throws Exception 1149 { 1150 ITask optional = reuseTask(taskInfos, IOptional.class); 1151 1152 if (optional == null) { 1153 optional = createNewOptional(maxNoOfChildren, maxDepth, taskInfos); 1154 } 1155 1156 return optional; 1157 } 1158 1159 /** 1160 * 1161 */ 1162 private ITask reuseTask(Map<ITask, ITaskInfo> taskInfos, Class<? extends ITask> type) 1163 throws Exception 1164 { 1165 int noOfTasks = 0; 1166 1167 for (Map.Entry<ITask, ITaskInfo> entry : taskInfos.entrySet()) { 1168 if (type.isInstance(entry.getKey())) { 1169 noOfTasks++; 1170 } 1171 } 1172 1173 if (noOfTasks > 0) { 1174 noOfTasks = randomize(noOfTasks); 1175 1176 for (Map.Entry<ITask, ITaskInfo> entry : taskInfos.entrySet()) { 1177 if (type.isInstance(entry.getKey())) { 1178 if (--noOfTasks <= 0) { 1179 return entry.getKey(); 270 1180 } 271 1181 } … … 273 1183 } 274 1184 else { 275 return createNewEventTask(treeInfos);1185 return null; 276 1186 } 277 1187 … … 280 1190 281 1191 /** 282 * TODO: comment 283 * 284 * @param treeInfos 285 * @return 286 */ 287 private ISequence createNewSequence(int maxNoOfChildren, 288 int maxDepth, 289 Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 290 throws Exception 291 { 292 ISequence sequence = taskTreeNodeFactory.createNewSequence(); 293 294 int noOfChildren = (int) (Math.random() * maxNoOfChildren); 295 296 for (int i = 0; i < noOfChildren; i++) { 297 ITaskTreeNode child = createTree(maxNoOfChildren, maxDepth - 1, treeInfos); 298 299 // through first removing an existing parent it is assured, that a parent is recorded 300 // only once. This is needed, because parent may be reused in a tree as well, but we 301 // always 302 // iterate the whole tree 303 ((NodeInfo) treeInfos.get(child)).removeParent(sequence); 304 ((NodeInfo) treeInfos.get(child)).addParent(sequence); 305 taskTreeBuilder.addChild(sequence, child); 306 } 307 308 treeInfos.put(sequence, new NodeInfo(sequence)); 309 return sequence; 310 } 311 312 /** 313 * TODO: comment 314 * 315 * @param treeInfos 316 * @return 317 */ 318 private ISequence reuseSequence(int maxNoOfChildren, 319 int maxDepth, 320 Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 321 throws Exception 322 { 323 int noOfSequences = 0; 324 325 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : treeInfos.entrySet()) { 326 if (entry.getKey() instanceof ISequence) { 327 noOfSequences++; 328 } 329 } 330 331 if (noOfSequences > 0) { 332 noOfSequences = (int) (Math.random() * noOfSequences); 333 334 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : treeInfos.entrySet()) { 335 if (entry.getKey() instanceof ISequence) { 336 if (--noOfSequences <= 0) { 337 return (ISequence) entry.getKey(); 338 } 339 } 340 } 341 } 342 else { 343 return createNewSequence(maxNoOfChildren, maxDepth, treeInfos); 344 } 345 346 throw new RuntimeException("this is an implementation error"); 347 } 348 349 /** 350 * TODO: comment 351 * 352 * @param treeInfos 353 * @return 354 */ 355 private ISelection createNewSelection(int maxNoOfChildren, 356 int maxDepth, 357 Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 358 throws Exception 359 { 360 ISelection selection = taskTreeNodeFactory.createNewSelection(); 361 362 int noOfChildren = (int) (Math.random() * maxNoOfChildren); 363 364 for (int i = 0; i < noOfChildren; i++) { 365 ITaskTreeNode child = createTree(maxNoOfChildren, maxDepth - 1, treeInfos); 366 367 // through first removing an existing parent it is assured, that a parent is recorded 368 // only once. This is needed, because parent may be reused in a tree as well, but we 369 // always 370 // iterate the whole tree 371 ((NodeInfo) treeInfos.get(child)).removeParent(selection); 372 ((NodeInfo) treeInfos.get(child)).addParent(selection); 373 taskTreeBuilder.addChild(selection, child); 374 } 375 376 treeInfos.put(selection, new NodeInfo(selection)); 377 return selection; 378 } 379 380 /** 381 * TODO: comment 382 * 383 * @param treeInfos 384 * @return 385 */ 386 private ISelection reuseSelection(int maxNoOfChildren, 387 int maxDepth, 388 Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 389 throws Exception 390 { 391 int noOfSelections = 0; 392 393 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : treeInfos.entrySet()) { 394 if (entry.getKey() instanceof ISelection) { 395 noOfSelections++; 396 } 397 } 398 399 if (noOfSelections > 0) { 400 noOfSelections = (int) (Math.random() * noOfSelections); 401 402 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : treeInfos.entrySet()) { 403 if (entry.getKey() instanceof ISelection) { 404 if (--noOfSelections <= 0) { 405 return (ISelection) entry.getKey(); 406 } 407 } 408 } 409 } 410 else { 411 return createNewSelection(maxNoOfChildren, maxDepth, treeInfos); 412 } 413 414 throw new RuntimeException("this is an implementation error"); 415 } 416 417 /** 418 * TODO: comment 419 * 420 * @param treeInfos 421 * @return 422 */ 423 private IIteration createNewIteration(int maxNoOfChildren, 424 int maxDepth, 425 Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 426 throws Exception 427 { 428 IIteration iteration = taskTreeNodeFactory.createNewIteration(); 429 430 ITaskTreeNode child = createTree(maxNoOfChildren, maxDepth - 1, treeInfos); 431 432 // through first removing an existing parent it is assured, that a parent is recorded 433 // only once. This is needed, because parent may be reused in a tree as well, but we always 434 // iterate the whole tree 435 ((NodeInfo) treeInfos.get(child)).removeParent(iteration); 436 ((NodeInfo) treeInfos.get(child)).addParent(iteration); 437 taskTreeBuilder.setChild(iteration, child); 438 439 treeInfos.put(iteration, new NodeInfo(iteration)); 440 return iteration; 441 } 442 443 /** 444 * TODO: comment 445 * 446 * @param treeInfos 447 * @return 448 */ 449 private IIteration reuseIteration(int maxNoOfChildren, 450 int maxDepth, 451 Map<ITaskTreeNode, ITaskTreeNodeInfo> treeInfos) 452 throws Exception 453 { 454 int noOfIterations = 0; 455 456 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : treeInfos.entrySet()) { 457 if (entry.getKey() instanceof IIteration) { 458 noOfIterations++; 459 } 460 } 461 462 if (noOfIterations > 0) { 463 noOfIterations = (int) (Math.random() * noOfIterations); 464 465 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : treeInfos.entrySet()) { 466 if (entry.getKey() instanceof IIteration) { 467 if (--noOfIterations <= 0) { 468 return (IIteration) entry.getKey(); 469 } 470 } 471 } 472 } 473 else { 474 return createNewIteration(maxNoOfChildren, maxDepth, treeInfos); 475 } 476 477 throw new RuntimeException("this is an implementation error"); 478 } 479 1192 * 1193 */ 1194 private ITaskInstance instantiateTask(ITask task, int maxIterationCount) throws Exception { 1195 ITaskInstance instance = taskFactory.createNewTaskInstance(task); 1196 1197 if (task instanceof ISequence) { 1198 for (ITask child : ((ISequence) task).getChildren()) { 1199 taskBuilder.addChild(instance, instantiateTask(child, maxIterationCount)); 1200 } 1201 } 1202 else if (task instanceof ISelection) { 1203 List<ITask> children = ((ISelection) task).getChildren(); 1204 int index = randomize(children.size()); 1205 taskBuilder.addChild(instance, instantiateTask(children.get(index), maxIterationCount)); 1206 } 1207 else if (task instanceof IIteration) { 1208 int count = randomize(maxIterationCount); 1209 ITask child = ((IIteration) task).getMarkedTask(); 1210 1211 for (int i = 0; i < count; i++) { 1212 taskBuilder.addChild(instance, instantiateTask(child, maxIterationCount)); 1213 } 1214 } 1215 else if (task instanceof IOptional) { 1216 ITask child = ((IOptional) task).getMarkedTask(); 1217 1218 if (randomize(1) == 0) { 1219 taskBuilder.addChild(instance, instantiateTask(child, maxIterationCount)); 1220 } 1221 } 1222 1223 return instance; 1224 } 1225 1226 /** 1227 * 1228 */ 1229 private int randomize(int max) throws Exception { 1230 return randomize(0, max); 1231 } 1232 1233 /** 1234 * 1235 */ 1236 private int randomize(int min, int max) throws Exception { 1237 if (min > max) { 1238 throw new IllegalArgumentException("min must always be smaller or equal than max"); 1239 } 1240 1241 int deviation = max - min; 1242 int value = (int) (Math.random() * deviation); 1243 1244 return value + min; 1245 } 480 1246 } -
trunk/autoquest-core-tasktrees/.classpath
r548 r1146 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 2 <classpath> 3 <classpathentry kind="src" output="target/classes" path="src/main/java">3 <classpathentry excluding="de/ugoe/cs/autoquest/tasktrees/temporalrelation/copy/|de/ugoe/cs/autoquest/tasktrees/query/" kind="src" output="target/classes" path="src/main/java"> 4 4 <attributes> 5 5 <attribute name="optional" value="true"/> -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/manager/ComponentManager.java
r1113 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.manager; 16 16 17 import de.ugoe.cs.autoquest.tasktrees. nodeequality.NodeEqualityRuleManager;17 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 18 18 import de.ugoe.cs.autoquest.tasktrees.temporalrelation.TemporalRelationshipRuleManager; 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeBuilder;20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNodeFactory;21 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeBuilder;22 import de.ugoe.cs.autoquest.tasktrees.treeimpl.Task TreeNodeFactory;19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 21 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 22 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 23 23 24 24 /** … … 37 37 38 38 /** */ 39 private NodeEqualityRuleManager nodeEqualityRuleManager;39 private TaskEqualityRuleManager taskEqualityRuleManager; 40 40 41 41 /** */ 42 private ITask TreeBuilder taskTreeBuilder;42 private ITaskBuilder taskBuilder; 43 43 44 44 /** */ 45 private ITask TreeNodeFactory taskTreeNodeFactory;45 private ITaskFactory taskFactory; 46 46 47 47 /** … … 55 55 * 56 56 */ 57 public static NodeEqualityRuleManager getNodeEqualityRuleManager() {58 return getInstance(). nodeEqualityRuleManager;57 public static TaskEqualityRuleManager getTaskEqualityRuleManager() { 58 return getInstance().taskEqualityRuleManager; 59 59 } 60 60 … … 62 62 * 63 63 */ 64 public static ITask TreeBuilder getDefaultTaskTreeBuilder() {65 return getInstance().task TreeBuilder;64 public static ITaskBuilder getDefaultTaskBuilder() { 65 return getInstance().taskBuilder; 66 66 } 67 67 … … 69 69 * 70 70 */ 71 public static ITask TreeNodeFactory getDefaultTaskTreeNodeFactory() {72 return getInstance().task TreeNodeFactory;71 public static ITaskFactory getDefaultTaskFactory() { 72 return getInstance().taskFactory; 73 73 } 74 74 … … 95 95 */ 96 96 private void init() { 97 nodeEqualityRuleManager = new NodeEqualityRuleManager();98 nodeEqualityRuleManager.init();97 taskEqualityRuleManager = new TaskEqualityRuleManager(); 98 taskEqualityRuleManager.init(); 99 99 100 task TreeBuilder = new TaskTreeBuilder();101 task TreeNodeFactory = new TaskTreeNodeFactory();100 taskBuilder = new TaskBuilder(); 101 taskFactory = new TaskFactory(); 102 102 103 103 temporalRelationshipRuleManager = new TemporalRelationshipRuleManager 104 ( nodeEqualityRuleManager, taskTreeNodeFactory, taskTreeBuilder);104 (taskEqualityRuleManager, taskFactory, taskBuilder); 105 105 temporalRelationshipRuleManager.init(); 106 106 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/manager/TaskTreeManager.java
r1113 r1146 21 21 22 22 import de.ugoe.cs.autoquest.eventcore.Event; 23 import de.ugoe.cs.autoquest.tasktrees.treeifc.I EventTask;24 import de.ugoe.cs.autoquest.tasktrees.treeifc.I Sequence;25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask Tree;26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeBuilder;27 import de.ugoe.cs.autoquest.tasktrees.treeifc.I TaskTreeNodeFactory;23 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 28 28 import de.ugoe.cs.util.console.Console; 29 29 … … 37 37 38 38 /** */ 39 private ITask TreeBuilder taskTreeBuilder = ComponentManager.getDefaultTaskTreeBuilder();39 private ITaskBuilder taskBuilder = ComponentManager.getDefaultTaskBuilder(); 40 40 41 41 /** */ 42 private ITaskTreeNodeFactory taskTreeNodeFactory = 43 ComponentManager.getDefaultTaskTreeNodeFactory(); 42 private ITaskFactory taskFactory = ComponentManager.getDefaultTaskFactory(); 44 43 45 44 /** */ 46 private List< List<IEventTask>> sessions = null;45 private List<IUserSession> sessions = null; 47 46 48 47 /** */ 49 private List<IEventTask>currentSession = null;48 private IUserSession currentSession = null; 50 49 51 50 /** … … 53 52 */ 54 53 public TaskTreeManager() { 55 sessions = new LinkedList< List<IEventTask>>();54 sessions = new LinkedList<IUserSession>(); 56 55 } 57 56 … … 59 58 * 60 59 */ 61 public synchronized ITask Tree createTaskTree(Collection<List<Event>> newSessions) {60 public synchronized ITaskModel createTaskModel(Collection<List<Event>> newSessions) { 62 61 if ((currentSession != null) || (sessions.size() > 0)) { 63 62 throw new IllegalStateException("do not mix calls to this method with calls to the " + … … 75 74 } 76 75 77 return getTask Tree();76 return getTaskModel(); 78 77 } 79 78 … … 83 82 public void handleNewEvent(Event event) { 84 83 assertSessionSequence(); 85 currentSession.add86 (taskTreeNodeFactory.createNewEventTask(event.getType(), event.getTarget()));84 ITask eventTask = taskFactory.createNewEventTask(event.getType(), event.getTarget()); 85 taskBuilder.addExecutedTask(currentSession, taskFactory.createNewTaskInstance(eventTask)); 87 86 } 88 87 … … 91 90 */ 92 91 public void finishSession() { 93 if ((currentSession != null) && (currentSession. size() > 0)) {92 if ((currentSession != null) && (currentSession.getExecutedTasks().size() > 0)) { 94 93 sessions.add(currentSession); 95 94 currentSession = null; … … 100 99 * 101 100 */ 102 public synchronized ITask Tree getTaskTree() {101 public synchronized ITaskModel getTaskModel() { 103 102 finishSession(); 104 103 105 104 Console.traceln(Level.INFO, "applying temporal relationship generation rules"); 106 105 107 ISequence rootSequence = taskTreeNodeFactory.createNewSequence(); 108 taskTreeBuilder.setDescription(rootSequence, "root"); 109 110 for (List<IEventTask> session : sessions) { 111 ISequence sequence = taskTreeNodeFactory.createNewSequence(); 112 taskTreeBuilder.setDescription(sequence, "session"); 113 114 for (IEventTask eventTask : session) { 115 taskTreeBuilder.addChild(sequence, eventTask); 116 } 117 118 taskTreeBuilder.addChild(rootSequence, sequence); 119 } 120 121 122 ComponentManager.getTemporalRelationshipRuleManager().applyRules(rootSequence); 106 ComponentManager.getTemporalRelationshipRuleManager().applyRules(sessions); 123 107 124 return task TreeNodeFactory.createTaskTree(rootSequence);108 return taskFactory.createTaskModel(sessions); 125 109 } 126 110 … … 130 114 private void assertSessionSequence() { 131 115 if (currentSession == null) { 132 currentSession = new LinkedList<IEventTask>();116 currentSession = taskFactory.createUserSession(); 133 117 } 134 118 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/EventTaskComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 19 19 20 20 /** 21 21 * <p> 22 * This rule identifies two task tree nodes as lexically equal, if they are both event tasks and22 * This rule identifies two tasks as lexically equal, if they are both event tasks and 23 23 * if their respective event types and targets equal. 24 24 * </p> … … 26 26 * @author Patrick Harms 27 27 */ 28 public class EventTaskComparisonRule implements NodeComparisonRule {28 public class EventTaskComparisonRule implements TaskComparisonRule { 29 29 30 30 /* (non-Javadoc) 31 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)31 * @see NodeComparisonRule#isApplicable(ITask, ITask) 32 32 */ 33 33 @Override 34 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {35 return ( node1 instanceof IEventTask) && (node2 instanceof IEventTask);34 public boolean isApplicable(ITask task1, ITask task2) { 35 return (task1 instanceof IEventTask) && (task2 instanceof IEventTask); 36 36 } 37 37 38 38 /* (non-Javadoc) 39 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)39 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 40 40 */ 41 41 @Override 42 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {43 IEventTask task1 = (IEventTask) node1;44 IEventTask task2 = (IEventTask) node2;42 public boolean areLexicallyEqual(ITask task1, ITask task2) { 43 IEventTask eventTask1 = (IEventTask) task1; 44 IEventTask eventTask2 = (IEventTask) task2; 45 45 46 return ( task1.getEventType().equals(task2.getEventType()) &&47 task1.getEventTarget().equals(task2.getEventTarget()));46 return (eventTask1.getEventType().equals(eventTask2.getEventType()) && 47 eventTask1.getEventTarget().equals(eventTask2.getEventTarget())); 48 48 } 49 49 50 50 /* (non-Javadoc) 51 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)51 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 52 52 */ 53 53 @Override 54 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {55 return areLexicallyEqual( node1, node2);54 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 55 return areLexicallyEqual(task1, task2); 56 56 } 57 57 58 58 /* (non-Javadoc) 59 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)59 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 60 60 */ 61 61 @Override 62 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {63 return areLexicallyEqual( node1, node2);62 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 63 return areLexicallyEqual(task1, task2); 64 64 } 65 65 66 66 @Override 67 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) {68 if (areLexicallyEqual( node1, node2)) {69 return NodeEquality.LEXICALLY_EQUAL;67 public TaskEquality compare(ITask task1, ITask task2) { 68 if (areLexicallyEqual(task1, task2)) { 69 return TaskEquality.LEXICALLY_EQUAL; 70 70 } 71 71 else { 72 return NodeEquality.UNEQUAL;72 return TaskEquality.UNEQUAL; 73 73 } 74 74 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/GUIEventTaskComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import de.ugoe.cs.autoquest.eventcore.IEventTarget; … … 42 42 import de.ugoe.cs.autoquest.eventcore.guimodel.IToolTip; 43 43 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 44 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;44 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 45 45 46 46 /** … … 58 58 * @author Patrick Harms 59 59 */ 60 public class GUIEventTaskComparisonRule implements NodeComparisonRule {60 public class GUIEventTaskComparisonRule implements TaskComparisonRule { 61 61 62 62 /* (non-Javadoc) 63 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)63 * @see NodeComparisonRule#isApplicable(ITask, ITask) 64 64 */ 65 65 @Override 66 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {66 public boolean isApplicable(ITask task1, ITask task2) { 67 67 return 68 (( node1 instanceof IEventTask) && (node2 instanceof IEventTask) &&69 (((IEventTask) node1).getEventType() instanceof IInteraction) &&70 (((IEventTask) node2).getEventType() instanceof IInteraction));68 ((task1 instanceof IEventTask) && (task2 instanceof IEventTask) && 69 (((IEventTask) task1).getEventType() instanceof IInteraction) && 70 (((IEventTask) task2).getEventType() instanceof IInteraction)); 71 71 } 72 72 73 73 /* (non-Javadoc) 74 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)74 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 75 75 */ 76 76 @Override 77 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {78 NodeEquality equality = getEquality(node1, node2, NodeEquality.LEXICALLY_EQUAL);79 return (equality != null) && (equality.isAtLeast( NodeEquality.LEXICALLY_EQUAL));77 public boolean areLexicallyEqual(ITask task1, ITask task2) { 78 TaskEquality equality = getEquality(task1, task2, TaskEquality.LEXICALLY_EQUAL); 79 return (equality != null) && (equality.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 80 80 } 81 81 82 82 /* (non-Javadoc) 83 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)83 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 84 84 */ 85 85 @Override 86 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {87 NodeEquality equality = getEquality(node1, node2, NodeEquality.SYNTACTICALLY_EQUAL);88 return (equality != null) && (equality.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL));86 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 87 TaskEquality equality = getEquality(task1, task2, TaskEquality.SYNTACTICALLY_EQUAL); 88 return (equality != null) && (equality.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 89 89 } 90 90 91 91 /* (non-Javadoc) 92 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)92 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 93 93 */ 94 94 @Override 95 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {96 NodeEquality equality = getEquality(node1, node2, NodeEquality.SEMANTICALLY_EQUAL);97 return (equality != null) && (equality.isAtLeast( NodeEquality.SEMANTICALLY_EQUAL));95 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 96 TaskEquality equality = getEquality(task1, task2, TaskEquality.SEMANTICALLY_EQUAL); 97 return (equality != null) && (equality.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 98 98 } 99 99 100 100 /* (non-Javadoc) 101 * @see NodeComparisonRule#compare(ITask TreeNode, ITaskTreeNode)101 * @see NodeComparisonRule#compare(ITask, ITask) 102 102 */ 103 103 @Override 104 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) { 105 return getEquality(node1, node2, null); 106 } 107 108 /** 109 * 110 */ 111 private NodeEquality getEquality(ITaskTreeNode node1, 112 ITaskTreeNode node2, 113 NodeEquality requiredEqualityLevel) 114 { 115 IEventTask task1 = (IEventTask) node1; 116 IEventTask task2 = (IEventTask) node2; 117 118 if (!task1.getEventTarget().equals(task2.getEventTarget())) { 119 return NodeEquality.UNEQUAL; 120 } 121 122 IInteraction interaction1 = (IInteraction) task1.getEventType(); 123 IInteraction interaction2 = (IInteraction) task2.getEventType(); 104 public TaskEquality compare(ITask task1, ITask task2) { 105 return getEquality(task1, task2, null); 106 } 107 108 /** 109 * 110 */ 111 private TaskEquality getEquality(ITask task1, ITask task2, TaskEquality requiredEqualityLevel) { 112 IEventTask eventTask1 = (IEventTask) task1; 113 IEventTask eventTask2 = (IEventTask) task2; 114 115 if (!eventTask1.getEventTarget().equals(eventTask2.getEventTarget())) { 116 return TaskEquality.UNEQUAL; 117 } 118 119 IInteraction interaction1 = (IInteraction) eventTask1.getEventType(); 120 IInteraction interaction2 = (IInteraction) eventTask2.getEventType(); 124 121 125 122 return compareInteractions 126 (interaction1, interaction2, task1.getEventTarget(), requiredEqualityLevel);123 (interaction1, interaction2, eventTask1.getEventTarget(), requiredEqualityLevel); 127 124 } 128 125 … … 145 142 * @return as described 146 143 */ 147 private NodeEquality compareInteractions(IInteraction interaction1,144 private TaskEquality compareInteractions(IInteraction interaction1, 148 145 IInteraction interaction2, 149 146 IEventTarget eventTarget, 150 NodeEquality equalityLevel)151 { 152 NodeEquality level = equalityLevel;147 TaskEquality equalityLevel) 148 { 149 TaskEquality level = equalityLevel; 153 150 154 151 if (level == null) { 155 level = NodeEquality.LEXICALLY_EQUAL;152 level = TaskEquality.LEXICALLY_EQUAL; 156 153 } 157 154 158 155 if (interaction1 == interaction2) { 159 return NodeEquality.LEXICALLY_EQUAL;156 return TaskEquality.LEXICALLY_EQUAL; 160 157 } 161 158 else if ((interaction1 instanceof KeyInteraction) && … … 186 183 } 187 184 else if (interaction1.equals(interaction2)) { 188 return NodeEquality.LEXICALLY_EQUAL;185 return TaskEquality.LEXICALLY_EQUAL; 189 186 } 190 187 else { 191 return NodeEquality.UNEQUAL;188 return TaskEquality.UNEQUAL; 192 189 } 193 190 } … … 204 201 * @return 205 202 */ 206 private NodeEquality compareKeyInteractions(KeyInteraction interaction1,203 private TaskEquality compareKeyInteractions(KeyInteraction interaction1, 207 204 KeyInteraction interaction2, 208 NodeEquality equalityLevel)205 TaskEquality equalityLevel) 209 206 { 210 207 if (((interaction1 instanceof KeyPressed) && (interaction2 instanceof KeyPressed)) || … … 212 209 ((interaction1 instanceof KeyTyped) && (interaction2 instanceof KeyTyped))) 213 210 { 214 if ((equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL)) &&211 if ((equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) && 215 212 (interaction1.getKey() == interaction2.getKey())) 216 213 { 217 return NodeEquality.LEXICALLY_EQUAL;214 return TaskEquality.LEXICALLY_EQUAL; 218 215 } 219 216 else { 220 return NodeEquality.SEMANTICALLY_EQUAL;221 } 222 } 223 224 return NodeEquality.UNEQUAL;217 return TaskEquality.SEMANTICALLY_EQUAL; 218 } 219 } 220 221 return TaskEquality.UNEQUAL; 225 222 } 226 223 … … 236 233 * @return as described 237 234 */ 238 private NodeEquality compareMouseDragAndDrops(MouseDragAndDrop interaction1,235 private TaskEquality compareMouseDragAndDrops(MouseDragAndDrop interaction1, 239 236 MouseDragAndDrop interaction2, 240 NodeEquality equalityLevel)237 TaskEquality equalityLevel) 241 238 { 242 239 if (interaction1.getButton() != interaction2.getButton()) { 243 return NodeEquality.UNEQUAL;244 } 245 246 if (equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL)) {240 return TaskEquality.UNEQUAL; 241 } 242 243 if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 247 244 int x1 = interaction1.getX(); 248 245 int x1Start = interaction1.getXStart(); … … 255 252 256 253 if ((x1Start == x2Start) && (x1 == x2) && (y1Start == y2Start) && (y1 == y2)) { 257 return NodeEquality.LEXICALLY_EQUAL;258 } 259 } 260 261 return NodeEquality.SEMANTICALLY_EQUAL;254 return TaskEquality.LEXICALLY_EQUAL; 255 } 256 } 257 258 return TaskEquality.SEMANTICALLY_EQUAL; 262 259 } 263 260 … … 279 276 * @return as described 280 277 */ 281 private NodeEquality compareMouseButtonInteractions(MouseButtonInteraction interaction1,278 private TaskEquality compareMouseButtonInteractions(MouseButtonInteraction interaction1, 282 279 MouseButtonInteraction interaction2, 283 280 IEventTarget eventTarget, 284 NodeEquality equalityLevel)281 TaskEquality equalityLevel) 285 282 { 286 283 boolean coordinatesMatch = true; … … 293 290 } 294 291 else if (interaction1.getButton() != interaction2.getButton()) { 295 return NodeEquality.UNEQUAL;296 } 297 else if (equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL) &&292 return TaskEquality.UNEQUAL; 293 } 294 else if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL) && 298 295 clickCoordinatesMakeLexicalDifference(eventTarget)) 299 296 { … … 319 316 { 320 317 if (coordinatesMatch) { 321 return NodeEquality.LEXICALLY_EQUAL;318 return TaskEquality.LEXICALLY_EQUAL; 322 319 } 323 320 else { 324 return NodeEquality.SEMANTICALLY_EQUAL;325 } 326 } 327 328 return NodeEquality.UNEQUAL;321 return TaskEquality.SEMANTICALLY_EQUAL; 322 } 323 } 324 325 return TaskEquality.UNEQUAL; 329 326 } 330 327 … … 346 343 * @return as described 347 344 */ 348 private NodeEquality compareScrolls(Scroll interaction1,345 private TaskEquality compareScrolls(Scroll interaction1, 349 346 Scroll interaction2, 350 NodeEquality equalityLevel)351 { 352 if (equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL)) {347 TaskEquality equalityLevel) 348 { 349 if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 353 350 int x1 = interaction1.getXPosition(); 354 351 int x2 = interaction2.getXPosition(); … … 357 354 358 355 if ((x1 == x2) && (y1 == y2)) { 359 return NodeEquality.LEXICALLY_EQUAL;360 } 361 } 362 363 return NodeEquality.SEMANTICALLY_EQUAL;356 return TaskEquality.LEXICALLY_EQUAL; 357 } 358 } 359 360 return TaskEquality.SEMANTICALLY_EQUAL; 364 361 } 365 362 … … 377 374 * @return as described 378 375 */ 379 private NodeEquality compareTextInputs(TextInput interaction1,376 private TaskEquality compareTextInputs(TextInput interaction1, 380 377 TextInput interaction2, 381 NodeEquality equalityLevel)378 TaskEquality equalityLevel) 382 379 { 383 380 switch (equalityLevel) { 384 381 case LEXICALLY_EQUAL: 385 382 if (interaction1.getTextInputEvents().equals(interaction2.getTextInputEvents())) { 386 return NodeEquality.LEXICALLY_EQUAL;383 return TaskEquality.LEXICALLY_EQUAL; 387 384 } 388 385 // fall through 389 386 case SYNTACTICALLY_EQUAL: 390 387 if (interaction1.getEnteredText().equals(interaction2.getEnteredText())) { 391 return NodeEquality.SYNTACTICALLY_EQUAL;388 return TaskEquality.SYNTACTICALLY_EQUAL; 392 389 } 393 390 // fall through 394 391 case SEMANTICALLY_EQUAL: 395 return NodeEquality.SEMANTICALLY_EQUAL;392 return TaskEquality.SEMANTICALLY_EQUAL; 396 393 default: 397 return NodeEquality.UNEQUAL;394 return TaskEquality.UNEQUAL; 398 395 } 399 396 } … … 411 408 * @return as described 412 409 */ 413 private NodeEquality compareValueSelections(ValueSelection<?> interaction1,410 private TaskEquality compareValueSelections(ValueSelection<?> interaction1, 414 411 ValueSelection<?> interaction2, 415 NodeEquality equalityLevel)416 { 417 if (equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL)) {412 TaskEquality equalityLevel) 413 { 414 if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 418 415 Object value1 = interaction1.getSelectedValue(); 419 416 Object value2 = interaction2.getSelectedValue(); 420 417 421 418 if ((value1 == value2) || ((value1 != null) && (value1.equals(value2)))) { 422 return NodeEquality.LEXICALLY_EQUAL;423 } 424 } 425 426 return NodeEquality.SEMANTICALLY_EQUAL;419 return TaskEquality.LEXICALLY_EQUAL; 420 } 421 } 422 423 return TaskEquality.SEMANTICALLY_EQUAL; 427 424 } 428 425 -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/IterationComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees.nodeequality; 16 17 import java.util.List; 15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 18 16 19 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; … … 21 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 22 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 23 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;21 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 24 22 25 23 /** … … 81 79 * @author 2012, last modified by $Author: patrick$ 82 80 */ 83 public class IterationComparisonRule implements NodeComparisonRule {81 public class IterationComparisonRule implements TaskComparisonRule { 84 82 85 /** the rule manager for internally comparing task tree nodes */86 private NodeEqualityRuleManager mRuleManager;83 /** the rule manager for internally comparing tasks */ 84 private TaskEqualityRuleManager mRuleManager; 87 85 88 86 /** 89 87 * <p> 90 * simple constructor to provide the rule with the nodeequality rule manager to be able91 * to perform comparisons of the children of provided task tree nodes88 * simple constructor to provide the rule with the task equality rule manager to be able 89 * to perform comparisons of the children of provided tasks 92 90 * </p> 93 91 * 94 * @param ruleManager the rule manager for comparing task tree nodes95 */ 96 IterationComparisonRule( NodeEqualityRuleManager ruleManager) {92 * @param ruleManager the rule manager for comparing tasks 93 */ 94 IterationComparisonRule(TaskEqualityRuleManager ruleManager) { 97 95 super(); 98 96 mRuleManager = ruleManager; … … 100 98 101 99 /* (non-Javadoc) 102 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)103 */ 104 @Override 105 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {106 return ( node1 instanceof IIteration) && (node2 instanceof IIteration);107 } 108 109 /* (non-Javadoc) 110 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)111 */ 112 @Override 113 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {114 List<ITaskTreeNode> children1 = node1.getChildren();115 List<ITaskTreeNode> children2 = node2.getChildren();116 117 if (child ren1.size() == children2.size()) {118 if (child ren1.size() == 0) {119 return true;100 * @see NodeComparisonRule#isApplicable(ITask, ITask) 101 */ 102 @Override 103 public boolean isApplicable(ITask task1, ITask task2) { 104 return (task1 instanceof IIteration) && (task2 instanceof IIteration); 105 } 106 107 /* (non-Javadoc) 108 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 109 */ 110 @Override 111 public boolean areLexicallyEqual(ITask task1, ITask task2) { 112 ITask child1 = ((IIteration) task1).getMarkedTask(); 113 ITask child2 = ((IIteration) task2).getMarkedTask(); 114 115 if (child1 != null) { 116 if (child2 == null) { 117 return false; 120 118 } 121 119 else { 122 ITaskTreeNode child1 = children1.get(0);123 ITaskTreeNode child2 = children2.get(0);124 125 120 // iterations may have 3 different structures. 126 121 // 1. they have one child, which is the iterated one … … 136 131 { 137 132 return getNodeEquality 138 (child1, child2).isAtLeast( NodeEquality.LEXICALLY_EQUAL);133 (child1, child2).isAtLeast(TaskEquality.LEXICALLY_EQUAL); 139 134 } 140 135 } 141 136 } 137 else if (child2 == null) { 138 return true; 139 } 142 140 143 141 return false; … … 145 143 146 144 /* (non-Javadoc) 147 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)148 */ 149 @Override 150 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {151 List<ITaskTreeNode> children1 = node1.getChildren();152 List<ITaskTreeNode> children2 = node2.getChildren();153 154 if (child ren1.size() == children2.size()) {155 if (child ren1.size() == 0) {156 return true;145 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 146 */ 147 @Override 148 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 149 ITask child1 = ((IIteration) task1).getMarkedTask(); 150 ITask child2 = ((IIteration) task2).getMarkedTask(); 151 152 if (child1 != null) { 153 if (child2 == null) { 154 return false; 157 155 } 158 156 else { 159 ITaskTreeNode child1 = children1.get(0);160 ITaskTreeNode child2 = children2.get(0);161 162 157 // iterations may have 3 different structures. 163 158 // 1. they have one child, which is the iterated one … … 167 162 // ignore the type of the children but check them for equality. 168 163 169 return getNodeEquality(child1, child2).isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL); 170 } 164 return getNodeEquality(child1, child2).isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL); 165 } 166 } 167 else if (child2 == null) { 168 return true; 171 169 } 172 170 … … 175 173 176 174 /* (non-Javadoc) 177 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)178 */ 179 @Override 180 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {181 return compare( node1, node2).isAtLeast(NodeEquality.SEMANTICALLY_EQUAL);182 } 183 184 /* (non-Javadoc) 185 * @see NodeComparisonRule#compare(ITask TreeNode, ITaskTreeNode)186 */ 187 @Override 188 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) {189 List<ITaskTreeNode> children1 = node1.getChildren();190 List<ITaskTreeNode> children2 = node2.getChildren();175 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 176 */ 177 @Override 178 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 179 return compare(task1, task2).isAtLeast(TaskEquality.SEMANTICALLY_EQUAL); 180 } 181 182 /* (non-Javadoc) 183 * @see NodeComparisonRule#compare(ITask, ITask) 184 */ 185 @Override 186 public TaskEquality compare(ITask task1, ITask task2) { 187 ITask child1 = ((IIteration) task1).getMarkedTask(); 188 ITask child2 = ((IIteration) task2).getMarkedTask(); 191 189 192 190 // if both iterations do not have children, they are equal although this doesn't make sense 193 if ((children1.size() == 0) && (children2.size() == 0)) { 194 return NodeEquality.LEXICALLY_EQUAL; 195 } 196 else if ((children1.size() == 0) || (children2.size() == 0)) { 197 return NodeEquality.UNEQUAL; 198 } 199 200 ITaskTreeNode child1 = children1.get(0); 201 ITaskTreeNode child2 = children2.get(0); 191 if ((child1 == null) && (child2 == null)) { 192 return TaskEquality.LEXICALLY_EQUAL; 193 } 194 else if ((child1 == null) || (child2 == null)) { 195 return TaskEquality.UNEQUAL; 196 } 202 197 203 198 // iterations may have 3 different structures. … … 209 204 // the permutations of the three variants in combination must be checked 210 205 211 // check if both nodes are the same variants of iterations and if their children are equal.206 // check if both tasks are the same variants of iterations and if their children are equal. 212 207 // This condition matches, if both iterations are the same variants of iteration. I.e. three 213 208 // combinations of the permutation are handled herewith. 214 NodeEquality nodeEquality = getNodeEquality(child1, child2);215 216 if ( nodeEquality != null) {217 return nodeEquality;218 } 219 220 // compare one iteration with a single nodeas a child and another one with a selection of221 // semantically equal nodes209 TaskEquality taskEquality = getNodeEquality(child1, child2); 210 211 if (taskEquality != null) { 212 return taskEquality; 213 } 214 215 // compare one iteration with a single task as a child and another one with a selection of 216 // semantically equal tasks 222 217 return selectionChildrenSemanticallyEqualNode(child1, child2); 223 218 … … 229 224 * TODO update comment 230 225 */ 231 private NodeEquality getNodeEquality(ITaskTreeNode child1, ITaskTreeNodechild2) {232 NodeEquality nodeEquality = callRuleManager(child1, child2, null);233 234 if ( nodeEquality.isAtLeast(NodeEquality.SEMANTICALLY_EQUAL)) {226 private TaskEquality getNodeEquality(ITask child1, ITask child2) { 227 TaskEquality taskEquality = callRuleManager(child1, child2, null); 228 229 if (taskEquality.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)) { 235 230 // prevent, that identical is returned, because the iterations itself are not identical 236 231 // although the iterated tasks are 237 if ( nodeEquality == NodeEquality.IDENTICAL) {238 return NodeEquality.LEXICALLY_EQUAL;232 if (taskEquality == TaskEquality.IDENTICAL) { 233 return TaskEquality.LEXICALLY_EQUAL; 239 234 } 240 235 else { 241 return nodeEquality;242 } 243 } 244 245 return NodeEquality.UNEQUAL;236 return taskEquality; 237 } 238 } 239 240 return TaskEquality.UNEQUAL; 246 241 } 247 242 248 243 /** 249 244 * <p> 250 * compares two task tree nodes. One of them must be a selection, the other one can be any task251 * tree node. The method returns a nodeequality that is not <code>NodeEquality.UNEQUAL</code>252 * if the other nodeis at least semantically equal to the children of the selection. It253 * returns more concrete equalities, if the equality between the other nodeand the children245 * compares two tasks. One of them must be a selection, the other one can be any task 246 * tree task. The method returns a task equality that is not <code>NodeEquality.UNEQUAL</code> 247 * if the other task is at least semantically equal to the children of the selection. It 248 * returns more concrete equalities, if the equality between the other task and the children 254 249 * of the selection is more concrete. 255 250 * </p> 256 251 * 257 * @param taskTreeNode the first task t ree node to compare258 * @param taskTreeNode2 the second task t ree node to compare252 * @param taskTreeNode the first task to compare 253 * @param taskTreeNode2 the second task to compare 259 254 * 260 255 * @return as described 261 256 */ 262 private NodeEquality selectionChildrenSemanticallyEqualNode(ITaskTreeNode taskTreeNode, 263 ITaskTreeNode taskTreeNode2) 264 { 257 private TaskEquality selectionChildrenSemanticallyEqualNode(ITask task1, ITask task2) { 265 258 ISelection selection = null; 266 ITask TreeNode node= null;267 if (task TreeNodeinstanceof ISelection) {268 selection = (ISelection) task TreeNode;269 node = taskTreeNode2;270 } 271 else if (task TreeNode2 instanceof ISelection) {272 selection = (ISelection) task TreeNode2;273 node = taskTreeNode;259 ITask task = null; 260 if (task1 instanceof ISelection) { 261 selection = (ISelection) task1; 262 task = task2; 263 } 264 else if (task2 instanceof ISelection) { 265 selection = (ISelection) task2; 266 task = task1; 274 267 } 275 268 else { 276 return NodeEquality.UNEQUAL;269 return TaskEquality.UNEQUAL; 277 270 } 278 271 279 272 // Iterations, where one has a selection and the other one not can at most be syntactically 280 273 // equal but not identical 281 NodeEquality commonDenominatorForAllComparisons = NodeEquality.SYNTACTICALLY_EQUAL;282 283 for (ITask TreeNodechild : selection.getChildren()) {284 NodeEquality nodeEquality =285 callRuleManager( node, child, commonDenominatorForAllComparisons);286 287 if (( nodeEquality == null) || (nodeEquality == NodeEquality.UNEQUAL))274 TaskEquality commonDenominatorForAllComparisons = TaskEquality.SYNTACTICALLY_EQUAL; 275 276 for (ITask child : selection.getChildren()) { 277 TaskEquality taskEquality = 278 callRuleManager(task, child, commonDenominatorForAllComparisons); 279 280 if ((taskEquality == null) || (taskEquality == TaskEquality.UNEQUAL)) 288 281 { 289 return NodeEquality.UNEQUAL;282 return TaskEquality.UNEQUAL; 290 283 } 291 284 292 285 commonDenominatorForAllComparisons = 293 commonDenominatorForAllComparisons.getCommonDenominator( nodeEquality);286 commonDenominatorForAllComparisons.getCommonDenominator(taskEquality); 294 287 } 295 288 … … 307 300 * @return 308 301 */ 309 private NodeEquality callRuleManager(ITaskTreeNodechild1,310 ITask TreeNodechild2,311 NodeEqualityrequiredEqualityLevel)302 private TaskEquality callRuleManager(ITask child1, 303 ITask child2, 304 TaskEquality requiredEqualityLevel) 312 305 { 313 306 if (requiredEqualityLevel == null) { … … 318 311 } 319 312 else { 320 return NodeEquality.UNEQUAL;313 return TaskEquality.UNEQUAL; 321 314 } 322 315 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/SelectionComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import java.util.List; 18 18 19 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 21 21 22 22 /** 23 23 * <p> 24 * this nodecomparison rule is capable of comparing selections. If both selections do not have25 * children, they are treated as identical. If they have children, each child of both selections26 * is compared to each child of the respective other selection. The resulting equality is the most27 * concrete one of all these comparisons. I.e. if all children are at least lexically equal, then28 * the selections are lexically equal. If all children are at least syntactically equal, then the29 * selections are syntactically equal. If all children are at least semantically equal, then the30 * selections are semantically equal. If only one of the selections has children, then the31 * selections are unequal.24 * this task comparison rule is capable of comparing selections. If both selections do not have 25 * children, they are treated as lexically equal. If they have children, each child of both 26 * selections is compared to each child of the respective other selection. The resulting equality 27 * is the most concrete one of all these comparisons. I.e. if all children are at least lexically 28 * equal, then the selections are lexically equal. If all children are at least syntactically 29 * equal, then the selections are syntactically equal. If all children are at least semantically 30 * equal, then the selections are semantically equal. If only one of the selections has children, 31 * then the selections are unequal. 32 32 * </p> 33 33 * … … 35 35 * @author 2012, last modified by $Author: patrick$ 36 36 */ 37 public class SelectionComparisonRule implements NodeComparisonRule {38 39 /** the rule manager for internally comparing task tree nodes */40 private NodeEqualityRuleManager mRuleManager;41 42 /** 43 * <p> 44 * simple constructor to provide the rule with the nodeequality rule manager to be able45 * to perform comparisons of the children of provided task tree nodes37 public class SelectionComparisonRule implements TaskComparisonRule { 38 39 /** the rule manager for internally comparing tasks */ 40 private TaskEqualityRuleManager mRuleManager; 41 42 /** 43 * <p> 44 * simple constructor to provide the rule with the task equality rule manager to be able 45 * to perform comparisons of the children of provided tasks 46 46 * </p> 47 47 * 48 * @param ruleManager the rule manager for comparing task tree nodes49 */ 50 SelectionComparisonRule( NodeEqualityRuleManager ruleManager) {48 * @param ruleManager the rule manager for comparing tasks 49 */ 50 SelectionComparisonRule(TaskEqualityRuleManager ruleManager) { 51 51 super(); 52 52 mRuleManager = ruleManager; … … 54 54 55 55 /* (non-Javadoc) 56 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)57 */ 58 @Override 59 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {60 return ( node1 instanceof ISelection) && (node2 instanceof ISelection);61 } 62 63 /* (non-Javadoc) 64 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)65 */ 66 @Override 67 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {68 NodeEquality equality = getEquality(node1, node2, NodeEquality.LEXICALLY_EQUAL);69 return (equality != null) && (equality.isAtLeast( NodeEquality.LEXICALLY_EQUAL));70 } 71 72 /* (non-Javadoc) 73 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)74 */ 75 @Override 76 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {77 NodeEquality equality = getEquality(node1, node2, NodeEquality.SYNTACTICALLY_EQUAL);78 return (equality != null) && (equality.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL));79 } 80 81 /* (non-Javadoc) 82 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)83 */ 84 @Override 85 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {86 NodeEquality equality = getEquality(node1, node2, NodeEquality.SEMANTICALLY_EQUAL);87 return (equality != null) && (equality.isAtLeast( NodeEquality.SEMANTICALLY_EQUAL));88 } 89 90 /* (non-Javadoc) 91 * @see NodeComparisonRule#compare(ITask TreeNode, ITaskTreeNode)92 */ 93 @Override 94 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) {95 return getEquality( node1, node2, null);56 * @see NodeComparisonRule#isApplicable(ITask, ITask) 57 */ 58 @Override 59 public boolean isApplicable(ITask task1, ITask task2) { 60 return (task1 instanceof ISelection) && (task2 instanceof ISelection); 61 } 62 63 /* (non-Javadoc) 64 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 65 */ 66 @Override 67 public boolean areLexicallyEqual(ITask task1, ITask task2) { 68 TaskEquality equality = getEquality(task1, task2, TaskEquality.LEXICALLY_EQUAL); 69 return (equality != null) && (equality.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 70 } 71 72 /* (non-Javadoc) 73 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 74 */ 75 @Override 76 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 77 TaskEquality equality = getEquality(task1, task2, TaskEquality.SYNTACTICALLY_EQUAL); 78 return (equality != null) && (equality.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 79 } 80 81 /* (non-Javadoc) 82 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 83 */ 84 @Override 85 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 86 TaskEquality equality = getEquality(task1, task2, TaskEquality.SEMANTICALLY_EQUAL); 87 return (equality != null) && (equality.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 88 } 89 90 /* (non-Javadoc) 91 * @see NodeComparisonRule#compare(ITask, ITask) 92 */ 93 @Override 94 public TaskEquality compare(ITask task1, ITask task2) { 95 return getEquality(task1, task2, null); 96 96 } 97 97 … … 99 99 * 100 100 */ 101 private NodeEquality getEquality(ITaskTreeNode node1, 102 ITaskTreeNode node2, 103 NodeEquality requiredEqualityLevel) 104 { 105 List<ITaskTreeNode> children1 = node1.getChildren(); 106 List<ITaskTreeNode> children2 = node2.getChildren(); 101 private TaskEquality getEquality(ITask task1, ITask task2, TaskEquality requiredEqualityLevel) { 102 List<ITask> children1 = ((ISelection) task1).getChildren(); 103 List<ITask> children2 = ((ISelection) task2).getChildren(); 107 104 108 105 // if both selections do not have children, they are lexically equal. If only one of them 109 106 // has children, they are unequal. 110 107 if ((children1.size() == 0) && (children2.size() == 0)) { 111 return NodeEquality.LEXICALLY_EQUAL;108 return TaskEquality.LEXICALLY_EQUAL; 112 109 } 113 110 else if ((children1.size() == 0) || (children2.size() == 0)) { 114 return NodeEquality.UNEQUAL;115 } 116 117 NodeEquality selectionEquality;111 return TaskEquality.UNEQUAL; 112 } 113 114 TaskEquality selectionEquality; 118 115 119 116 if (requiredEqualityLevel == null) { … … 121 118 // do it in both directions to ensure commutative comparison 122 119 selectionEquality = getCommonEqualityLevel(children1, children2); 123 if (selectionEquality != NodeEquality.UNEQUAL) {120 if (selectionEquality != TaskEquality.UNEQUAL) { 124 121 return selectionEquality.getCommonDenominator 125 122 (getCommonEqualityLevel(children2, children1)); 126 123 } 127 124 else { 128 return NodeEquality.UNEQUAL;125 return TaskEquality.UNEQUAL; 129 126 } 130 127 } … … 137 134 } 138 135 else { 139 return NodeEquality.UNEQUAL;136 return TaskEquality.UNEQUAL; 140 137 } 141 138 } … … 151 148 * @param requiredEqualityLevel 152 149 */ 153 private NodeEquality getCommonEqualityLevel(List<ITaskTreeNode> children1, 154 List<ITaskTreeNode> children2) 155 { 156 NodeEquality listEquality = NodeEquality.LEXICALLY_EQUAL; 150 private TaskEquality getCommonEqualityLevel(List<ITask> children1, List<ITask> children2) { 151 TaskEquality listEquality = TaskEquality.LEXICALLY_EQUAL; 157 152 158 NodeEquality childEquality;159 NodeEquality currentEquality;160 for (ITask TreeNodechild1 : children1) {153 TaskEquality childEquality; 154 TaskEquality currentEquality; 155 for (ITask child1 : children1) { 161 156 childEquality = null; 162 for (ITask TreeNodechild2 : children2) {157 for (ITask child2 : children2) { 163 158 currentEquality = callRuleManager(child1, child2, null); 164 if ((currentEquality != null) && (currentEquality != NodeEquality.UNEQUAL)) {159 if ((currentEquality != null) && (currentEquality != TaskEquality.UNEQUAL)) { 165 160 if (childEquality == null) { 166 161 childEquality = currentEquality; … … 170 165 } 171 166 172 if (childEquality == NodeEquality.SEMANTICALLY_EQUAL) {167 if (childEquality == TaskEquality.SEMANTICALLY_EQUAL) { 173 168 // as we calculate only the common denominator, we can break up here for 174 169 // the current child. We will not improve the denominator anymore … … 181 176 // we did not find any child in the second list, that is equal to the searched 182 177 // child 183 return NodeEquality.UNEQUAL;178 return TaskEquality.UNEQUAL; 184 179 } 185 180 else { … … 200 195 * @param requiredEqualityLevel 201 196 */ 202 private boolean checkEqualityLevel(List<ITask TreeNode>children1,203 List<ITask TreeNode>children2,204 NodeEqualityrequiredEqualityLevel)197 private boolean checkEqualityLevel(List<ITask> children1, 198 List<ITask> children2, 199 TaskEquality requiredEqualityLevel) 205 200 { 206 NodeEquality childEquality;207 NodeEquality currentEquality;208 for (ITask TreeNodechild1 : children1) {201 TaskEquality childEquality; 202 TaskEquality currentEquality; 203 for (ITask child1 : children1) { 209 204 childEquality = null; 210 for (ITask TreeNodechild2 : children2) {205 for (ITask child2 : children2) { 211 206 currentEquality = callRuleManager(child1, child2, requiredEqualityLevel); 212 207 if ((currentEquality != null) && (currentEquality.isAtLeast(requiredEqualityLevel))) … … 240 235 * @return 241 236 */ 242 private NodeEquality callRuleManager(ITaskTreeNodechild1,243 ITask TreeNodechild2,244 NodeEqualityrequiredEqualityLevel)237 private TaskEquality callRuleManager(ITask child1, 238 ITask child2, 239 TaskEquality requiredEqualityLevel) 245 240 { 246 241 if (requiredEqualityLevel == null) { … … 251 246 } 252 247 else { 253 return NodeEquality.UNEQUAL;248 return TaskEquality.UNEQUAL; 254 249 } 255 250 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/SequenceComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import java.util.List; 18 18 19 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 21 21 22 22 /** … … 31 31 * @author 2012, last modified by $Author: patrick$ 32 32 */ 33 public class SequenceComparisonRule implements NodeComparisonRule {33 public class SequenceComparisonRule implements TaskComparisonRule { 34 34 35 /** the rule manager for internally comparing task tree nodes */36 private NodeEqualityRuleManager mRuleManager;35 /** the rule manager for internally comparing tasks */ 36 private TaskEqualityRuleManager mRuleManager; 37 37 38 38 /** 39 39 * <p> 40 * simple constructor to provide the rule with the nodeequality rule manager to be able41 * to perform comparisons of the children of provided task tree nodes40 * simple constructor to provide the rule with the task equality rule manager to be able 41 * to perform comparisons of the children of provided tasks 42 42 * </p> 43 43 * 44 * @param ruleManager the rule manager for comparing task tree nodes44 * @param ruleManager the rule manager for comparing tasks 45 45 */ 46 SequenceComparisonRule( NodeEqualityRuleManager ruleManager) {46 SequenceComparisonRule(TaskEqualityRuleManager ruleManager) { 47 47 super(); 48 48 mRuleManager = ruleManager; … … 50 50 51 51 /* (non-Javadoc) 52 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)52 * @see NodeComparisonRule#isApplicable(ITask, ITask) 53 53 */ 54 54 @Override 55 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {56 return ( node1 instanceof ISequence) && (node2 instanceof ISequence);55 public boolean isApplicable(ITask task1, ITask task2) { 56 return (task1 instanceof ISequence) && (task2 instanceof ISequence); 57 57 } 58 58 59 59 /* (non-Javadoc) 60 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)60 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 61 61 */ 62 62 @Override 63 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {64 NodeEquality equality = getEquality(node1, node2, NodeEquality.LEXICALLY_EQUAL);65 return (equality != null) && (equality.isAtLeast( NodeEquality.LEXICALLY_EQUAL));63 public boolean areLexicallyEqual(ITask task1, ITask task2) { 64 TaskEquality equality = getEquality(task1, task2, TaskEquality.LEXICALLY_EQUAL); 65 return (equality != null) && (equality.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 66 66 } 67 67 68 68 /* (non-Javadoc) 69 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)69 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 70 70 */ 71 71 @Override 72 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {73 NodeEquality equality = getEquality(node1, node2, NodeEquality.SYNTACTICALLY_EQUAL);74 return (equality != null) && (equality.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL));72 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 73 TaskEquality equality = getEquality(task1, task2, TaskEquality.SYNTACTICALLY_EQUAL); 74 return (equality != null) && (equality.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 75 75 } 76 76 77 77 /* (non-Javadoc) 78 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)78 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 79 79 */ 80 80 @Override 81 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {82 NodeEquality equality = getEquality(node1, node2, NodeEquality.SEMANTICALLY_EQUAL);83 return (equality != null) && (equality.isAtLeast( NodeEquality.SEMANTICALLY_EQUAL));81 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 82 TaskEquality equality = getEquality(task1, task2, TaskEquality.SEMANTICALLY_EQUAL); 83 return (equality != null) && (equality.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 84 84 } 85 85 86 86 /* (non-Javadoc) 87 * @see NodeComparisonRule#compare(ITask TreeNode, ITaskTreeNode)87 * @see NodeComparisonRule#compare(ITask, ITask) 88 88 */ 89 89 @Override 90 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) {91 return getEquality( node1, node2, null);90 public TaskEquality compare(ITask task1, ITask task2) { 91 return getEquality(task1, task2, null); 92 92 } 93 93 … … 95 95 * 96 96 */ 97 private NodeEquality getEquality(ITaskTreeNode node1, 98 ITaskTreeNode node2, 99 NodeEquality requiredEqualityLevel) 100 { 101 List<ITaskTreeNode> children1 = node1.getChildren(); 102 List<ITaskTreeNode> children2 = node2.getChildren(); 97 private TaskEquality getEquality(ITask task1, ITask task2, TaskEquality requiredEqualityLevel) { 98 List<ITask> children1 = ((ISequence) task1).getChildren(); 99 List<ITask> children2 = ((ISequence) task2).getChildren(); 103 100 104 101 // if both sequences do not have children, they are equal although this doesn't make sense 105 102 if ((children1.size() == 0) && (children2.size() == 0)) { 106 return NodeEquality.LEXICALLY_EQUAL;103 return TaskEquality.LEXICALLY_EQUAL; 107 104 } 108 105 109 106 if (children1.size() != children2.size()) { 110 return NodeEquality.UNEQUAL;107 return TaskEquality.UNEQUAL; 111 108 } 112 109 113 NodeEquality resultingEquality = NodeEquality.LEXICALLY_EQUAL;110 TaskEquality resultingEquality = TaskEquality.LEXICALLY_EQUAL; 114 111 for (int i = 0; i < children1.size(); i++) { 115 ITask TreeNodechild1 = children1.get(i);116 ITask TreeNodechild2 = children2.get(i);112 ITask child1 = children1.get(i); 113 ITask child2 = children2.get(i); 117 114 118 NodeEquality nodeEquality = callRuleManager(child1, child2, requiredEqualityLevel);115 TaskEquality taskEquality = callRuleManager(child1, child2, requiredEqualityLevel); 119 116 120 if (( nodeEquality == null) || (nodeEquality == NodeEquality.UNEQUAL)) {121 return NodeEquality.UNEQUAL;117 if ((taskEquality == null) || (taskEquality == TaskEquality.UNEQUAL)) { 118 return TaskEquality.UNEQUAL; 122 119 } 123 120 124 resultingEquality = resultingEquality.getCommonDenominator( nodeEquality);121 resultingEquality = resultingEquality.getCommonDenominator(taskEquality); 125 122 } 126 123 … … 138 135 * @return 139 136 */ 140 private NodeEquality callRuleManager(ITaskTreeNodechild1,141 ITask TreeNodechild2,142 NodeEqualityrequiredEqualityLevel)137 private TaskEquality callRuleManager(ITask child1, 138 ITask child2, 139 TaskEquality requiredEqualityLevel) 143 140 { 144 141 if (requiredEqualityLevel == null) { … … 149 146 } 150 147 else { 151 return NodeEquality.UNEQUAL;148 return TaskEquality.UNEQUAL; 152 149 } 153 150 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskAndIterationComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees.nodeequality; 16 17 import java.util.List; 15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 18 16 19 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 21 19 22 20 /** 23 21 * <p> 24 * This class is capable of comparing any task tree nodewhich is not an iteration with an25 * iteration. This is needed, because iterations may iterate exactly that node. In this26 * case, the iteration would be equal to that nodeif it was executed exactly once. The rule27 * returns lexically equal, it the child of the iteration is lexically equal to the node22 * This class is capable of comparing any task which is not an iteration with an 23 * iteration. This is needed, because iterations may iterate exactly that task. In this 24 * case, the iteration would be equal to that task if it was executed exactly once. The rule 25 * returns lexically equal, it the child of the iteration is lexically equal to the task 28 26 * or if the child of the iteration is a selection and this selections contains a lexically equal 29 * node. The same applies for syntactical and semantical equality.27 * task. The same applies for syntactical and semantical equality. 30 28 * </p> 31 29 32 30 * @author Patrick Harms 33 31 */ 34 public class NodeAndIterationComparisonRule implements NodeComparisonRule {32 public class TaskAndIterationComparisonRule implements TaskComparisonRule { 35 33 36 /** the rule manager for internally comparing task tree nodes */37 private NodeEqualityRuleManager mRuleManager;34 /** the rule manager for internally comparing tasks */ 35 private TaskEqualityRuleManager mRuleManager; 38 36 39 37 /** 40 38 * <p> 41 * simple constructor to provide the rule with the nodeequality rule manager to be able42 * to perform comparisons of the children of provided task tree nodes39 * simple constructor to provide the rule with the task equality rule manager to be able 40 * to perform comparisons of the children of provided tasks 43 41 * </p> 44 42 * 45 * @param ruleManager the rule manager for comparing task tree nodes43 * @param ruleManager the rule manager for comparing tasks 46 44 */ 47 NodeAndIterationComparisonRule(NodeEqualityRuleManager ruleManager) {45 TaskAndIterationComparisonRule(TaskEqualityRuleManager ruleManager) { 48 46 super(); 49 47 mRuleManager = ruleManager; … … 51 49 52 50 /* (non-Javadoc) 53 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)51 * @see NodeComparisonRule#isApplicable(ITask, ITask) 54 52 */ 55 53 @Override 56 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {57 return (( node1 instanceof IIteration) && (!(node2 instanceof IIteration))) ||58 (( node2 instanceof IIteration) && (!(node1 instanceof IIteration)));54 public boolean isApplicable(ITask task1, ITask task2) { 55 return ((task1 instanceof IIteration) && (!(task2 instanceof IIteration))) || 56 ((task2 instanceof IIteration) && (!(task1 instanceof IIteration))); 59 57 } 60 58 61 59 /* (non-Javadoc) 62 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)60 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 63 61 */ 64 62 @Override 65 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {66 NodeEquality equality = getEquality(node1, node2, NodeEquality.LEXICALLY_EQUAL);67 return (equality != null) && (equality.isAtLeast( NodeEquality.LEXICALLY_EQUAL));63 public boolean areLexicallyEqual(ITask task1, ITask task2) { 64 TaskEquality equality = getEquality(task1, task2, TaskEquality.LEXICALLY_EQUAL); 65 return (equality != null) && (equality.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 68 66 } 69 67 70 68 /* (non-Javadoc) 71 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)69 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 72 70 */ 73 71 @Override 74 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {75 NodeEquality equality = getEquality(node1, node2, NodeEquality.SYNTACTICALLY_EQUAL);76 return (equality != null) && (equality.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL));72 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 73 TaskEquality equality = getEquality(task1, task2, TaskEquality.SYNTACTICALLY_EQUAL); 74 return (equality != null) && (equality.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 77 75 } 78 76 79 77 /* (non-Javadoc) 80 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)78 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 81 79 */ 82 80 @Override 83 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {84 NodeEquality equality = getEquality(node1, node2, NodeEquality.SEMANTICALLY_EQUAL);85 return (equality != null) && (equality.isAtLeast( NodeEquality.SEMANTICALLY_EQUAL));81 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 82 TaskEquality equality = getEquality(task1, task2, TaskEquality.SEMANTICALLY_EQUAL); 83 return (equality != null) && (equality.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 86 84 } 87 85 88 86 /* (non-Javadoc) 89 * @see NodeComparisonRule#compare(ITask TreeNode, ITaskTreeNode)87 * @see NodeComparisonRule#compare(ITask, ITask) 90 88 */ 91 89 @Override 92 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) {93 return getEquality( node1, node2, null);90 public TaskEquality compare(ITask task1, ITask task2) { 91 return getEquality(task1, task2, null); 94 92 } 95 93 … … 97 95 * 98 96 */ 99 private NodeEquality getEquality(ITaskTreeNode node1, 100 ITaskTreeNode node2, 101 NodeEquality requiredEqualityLevel) 102 { 97 private TaskEquality getEquality(ITask task1, ITask task2, TaskEquality requiredEqualityLevel) { 103 98 IIteration iteration = null; 104 ITask TreeNode node= null;99 ITask task = null; 105 100 106 if ( node1 instanceof IIteration) {107 if ( node2 instanceof IIteration) {101 if (task1 instanceof IIteration) { 102 if (task2 instanceof IIteration) { 108 103 // the rule is not responsible for two iterations 109 104 return null; 110 105 } 111 106 112 iteration = (IIteration) node1;113 node = node2;107 iteration = (IIteration) task1; 108 task = task2; 114 109 } 115 else if ( node2 instanceof IIteration) {116 if ( node1 instanceof IIteration) {110 else if (task2 instanceof IIteration) { 111 if (task1 instanceof IIteration) { 117 112 // the rule is not responsible for two iterations 118 113 return null; 119 114 } 120 115 121 iteration = (IIteration) node2;122 node = node1;116 iteration = (IIteration) task2; 117 task = task1; 123 118 } 124 119 else { … … 126 121 } 127 122 128 List<ITaskTreeNode> children = iteration.getChildren();123 ITask child = iteration.getMarkedTask(); 129 124 130 // now, that we found the iteration and the node, lets compare the child of the iteration131 // with the node.132 if (child ren.size() < 1) {125 // now, that we found the iteration and the task, lets compare the child of the iteration 126 // with the task. 127 if (child == null) { 133 128 return null; 134 129 } 135 130 136 NodeEquality nodeEquality = callRuleManager(children.get(0), node, requiredEqualityLevel);131 TaskEquality taskEquality = callRuleManager(child, task, requiredEqualityLevel); 137 132 138 // although the subtask may be identical to the node, we can not return identical, as139 // the iteration is not identical to the node, but at most lexically equal140 if ( nodeEquality == NodeEquality.IDENTICAL) {141 return NodeEquality.LEXICALLY_EQUAL;133 // although the subtask may be identical to the task, we can not return identical, as 134 // the iteration is not identical to the task, but at most lexically equal 135 if (taskEquality == TaskEquality.IDENTICAL) { 136 return TaskEquality.LEXICALLY_EQUAL; 142 137 } 143 138 else { 144 return nodeEquality;139 return taskEquality; 145 140 } 146 141 … … 157 152 * @return 158 153 */ 159 private NodeEquality callRuleManager(ITaskTreeNodechild1,160 ITask TreeNodechild2,161 NodeEqualityrequiredEqualityLevel)154 private TaskEquality callRuleManager(ITask child1, 155 ITask child2, 156 TaskEquality requiredEqualityLevel) 162 157 { 163 158 if (requiredEqualityLevel == null) { … … 168 163 } 169 164 else { 170 return NodeEquality.UNEQUAL;165 return TaskEquality.UNEQUAL; 171 166 } 172 167 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskAndSelectionComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import java.util.List; 18 18 19 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 21 21 22 22 /** 23 23 * <p> 24 * This class is capable of comparing any task tree nodewhich is not a selection with a25 * selection. This is needed, because selections may contain exactly that node. Therefore, if26 * this node is selected out of a selection the selection is equal to the nodeitself.27 * The rule returns lexically equal, i t the selection contains a lexically equal node. The same24 * This class is capable of comparing any task which is not a selection with a 25 * selection. This is needed, because selections may contain exactly that task. Therefore, if 26 * this task is selected out of a selection the selection is equal to the task itself. 27 * The rule returns lexically equal, if the selection contains a lexically equal task. The same 28 28 * applies for syntactical and semantical equality. 29 29 * </p> … … 31 31 * @author Patrick Harms 32 32 */ 33 public class NodeAndSelectionComparisonRule implements NodeComparisonRule {33 public class TaskAndSelectionComparisonRule implements TaskComparisonRule { 34 34 35 /** the rule manager for internally comparing task tree nodes */36 private NodeEqualityRuleManager mRuleManager;35 /** the rule manager for internally comparing tasks */ 36 private TaskEqualityRuleManager mRuleManager; 37 37 38 38 /** 39 39 * <p> 40 * simple constructor to provide the rule with the nodeequality rule manager to be able41 * to perform comparisons of the children of provided task tree nodes40 * simple constructor to provide the rule with the task equality rule manager to be able 41 * to perform comparisons of the children of provided tasks 42 42 * </p> 43 43 * 44 * @param ruleManager the rule manager for comparing task tree nodes44 * @param ruleManager the rule manager for comparing tasks 45 45 */ 46 NodeAndSelectionComparisonRule(NodeEqualityRuleManager ruleManager) {46 TaskAndSelectionComparisonRule(TaskEqualityRuleManager ruleManager) { 47 47 super(); 48 48 mRuleManager = ruleManager; … … 50 50 51 51 /* (non-Javadoc) 52 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)52 * @see NodeComparisonRule#isApplicable(ITask, ITask) 53 53 */ 54 54 @Override 55 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {56 return (( node1 instanceof ISelection) && (!(node2 instanceof ISelection))) ||57 (( node2 instanceof ISelection) && (!(node1 instanceof ISelection)));55 public boolean isApplicable(ITask task1, ITask task2) { 56 return ((task1 instanceof ISelection) && (!(task2 instanceof ISelection))) || 57 ((task2 instanceof ISelection) && (!(task1 instanceof ISelection))); 58 58 } 59 59 60 60 /* (non-Javadoc) 61 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)61 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 62 62 */ 63 63 @Override 64 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {65 NodeEquality equality = getEquality(node1, node2, NodeEquality.LEXICALLY_EQUAL);66 return (equality != null) && (equality.isAtLeast( NodeEquality.LEXICALLY_EQUAL));64 public boolean areLexicallyEqual(ITask task1, ITask task2) { 65 TaskEquality equality = getEquality(task1, task2, TaskEquality.LEXICALLY_EQUAL); 66 return (equality != null) && (equality.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 67 67 } 68 68 69 69 /* (non-Javadoc) 70 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)70 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 71 71 */ 72 72 @Override 73 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {74 NodeEquality equality = getEquality(node1, node2, NodeEquality.SYNTACTICALLY_EQUAL);75 return (equality != null) && (equality.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL));73 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 74 TaskEquality equality = getEquality(task1, task2, TaskEquality.SYNTACTICALLY_EQUAL); 75 return (equality != null) && (equality.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 76 76 } 77 77 78 78 /* (non-Javadoc) 79 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)79 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 80 80 */ 81 81 @Override 82 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {83 NodeEquality equality = getEquality(node1, node2, NodeEquality.SEMANTICALLY_EQUAL);84 return (equality != null) && (equality.isAtLeast( NodeEquality.SEMANTICALLY_EQUAL));82 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 83 TaskEquality equality = getEquality(task1, task2, TaskEquality.SEMANTICALLY_EQUAL); 84 return (equality != null) && (equality.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 85 85 } 86 86 87 87 /* (non-Javadoc) 88 * @see NodeComparisonRule#compare(ITask TreeNode, ITaskTreeNode)88 * @see NodeComparisonRule#compare(ITask, ITask) 89 89 */ 90 90 @Override 91 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) {92 return getEquality( node1, node2, null);91 public TaskEquality compare(ITask task1, ITask task2) { 92 return getEquality(task1, task2, null); 93 93 } 94 94 … … 96 96 * 97 97 */ 98 private NodeEquality getEquality(ITaskTreeNode node1, 99 ITaskTreeNode node2, 100 NodeEquality requiredEqualityLevel) 101 { 98 private TaskEquality getEquality(ITask task1, ITask task2, TaskEquality requiredEqualityLevel) { 102 99 ISelection selection = null; 103 ITask TreeNode node= null;100 ITask task = null; 104 101 105 if ( node1 instanceof ISelection) {106 if ( node2 instanceof ISelection) {102 if (task1 instanceof ISelection) { 103 if (task2 instanceof ISelection) { 107 104 // the rule is not responsible for two selections 108 105 return null; 109 106 } 110 107 111 selection = (ISelection) node1;112 node = node2;108 selection = (ISelection) task1; 109 task = task2; 113 110 } 114 else if ( node2 instanceof ISelection) {115 if ( node1 instanceof ISelection) {111 else if (task2 instanceof ISelection) { 112 if (task1 instanceof ISelection) { 116 113 // the rule is not responsible for two selections 117 114 return null; 118 115 } 119 116 120 selection = (ISelection) node2;121 node = node1;117 selection = (ISelection) task2; 118 task = task1; 122 119 } 123 120 else { … … 125 122 } 126 123 127 // now, that we found the selection and the node, lets compare the children of the selection128 // with the node.129 List<ITask TreeNode> children = selection.getChildren();124 // now, that we found the selection and the task, lets compare the children of the selection 125 // with the task. 126 List<ITask> children = selection.getChildren(); 130 127 131 128 if (children.size() < 1) { … … 133 130 } 134 131 135 NodeEquality mostConcreteNodeEquality = null;132 TaskEquality mostConcreteNodeEquality = null; 136 133 137 for (ITask TreeNodechild : children) {138 NodeEquality nodeEquality = callRuleManager(child, node, requiredEqualityLevel);134 for (ITask child : children) { 135 TaskEquality taskEquality = callRuleManager(child, task, requiredEqualityLevel); 139 136 140 if ( nodeEquality != NodeEquality.UNEQUAL) {137 if (taskEquality != TaskEquality.UNEQUAL) { 141 138 if (mostConcreteNodeEquality == null) { 142 mostConcreteNodeEquality = nodeEquality;139 mostConcreteNodeEquality = taskEquality; 143 140 } 144 else if (mostConcreteNodeEquality.isAtLeast( nodeEquality)) {145 mostConcreteNodeEquality = nodeEquality;141 else if (mostConcreteNodeEquality.isAtLeast(taskEquality)) { 142 mostConcreteNodeEquality = taskEquality; 146 143 147 144 } … … 151 148 { 152 149 // if we found one child of the selection that is as equal as required, then 153 // we can consider the selection to be sufficiently equal to the other node.150 // we can consider the selection to be sufficiently equal to the other task. 154 151 // So we break up checking further children. 155 152 break; … … 158 155 } 159 156 160 // although the subtask may be identical to the node, we can not return identical, as161 // the selection is not identical to the node, but at most lexically equal162 if (mostConcreteNodeEquality == NodeEquality.IDENTICAL) {163 return NodeEquality.LEXICALLY_EQUAL;157 // although the subtask may be identical to the task, we can not return identical, as 158 // the selection is not identical to the task, but at most lexically equal 159 if (mostConcreteNodeEquality == TaskEquality.IDENTICAL) { 160 return TaskEquality.LEXICALLY_EQUAL; 164 161 } 165 162 else { … … 179 176 * @return 180 177 */ 181 private NodeEquality callRuleManager(ITaskTreeNodechild1,182 ITask TreeNodechild2,183 NodeEqualityrequiredEqualityLevel)178 private TaskEquality callRuleManager(ITask child1, 179 ITask child2, 180 TaskEquality requiredEqualityLevel) 184 181 { 185 182 if (requiredEqualityLevel == null) { … … 190 187 } 191 188 else { 192 return NodeEquality.UNEQUAL;189 return TaskEquality.UNEQUAL; 193 190 } 194 191 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskComparator.java
r1129 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees.t emporalrelation;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import java.util.HashMap; 18 18 19 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 20 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 21 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 22 21 import de.ugoe.cs.autoquest.usageprofiles.SymbolComparator; 23 22 import de.ugoe.cs.util.StopWatch; … … 30 29 * @author Patrick Harms 31 30 */ 32 public class Task TreeNodeComparator implements SymbolComparator<ITaskTreeNode> {31 public class TaskComparator implements SymbolComparator<ITaskInstance> { 33 32 34 33 /** 35 34 * <p> 36 * the node equality manager needed for comparing task tree nodes with each other35 * the task equality manager needed for comparing tasks with each other 37 36 * </p> 38 37 */ 39 private NodeEqualityRuleManager nodeEqualityRuleManager;38 private TaskEqualityRuleManager taskEqualityRuleManager; 40 39 41 40 /** 42 41 * <p> 43 * the minimal node equality two identified sublists need to have to consider them as equal 44 * and to create an iteration for 42 * the minimal task equality two identified sublists need to have to consider them as equal 45 43 * </p> 46 44 */ 47 private NodeEquality minimalNodeEquality; 48 45 private TaskEquality minimalNodeEquality; 46 47 /** */ 49 48 private Comparer comparer; 50 49 50 /** */ 51 51 private Comparer lexicalComparer; 52 52 53 /** */ 53 54 private StopWatch stopWatch = new StopWatch(); 54 55 56 /** */ 55 57 private HashMap<Long, Boolean> equalityBuffer = new HashMap<Long, Boolean>(); 56 58 59 /** */ 57 60 private HashMap<Long, Boolean> lexicalEqualityBuffer; 58 61 59 62 /** 60 * <p> 61 * TODO: comment 62 * </p> 63 * 64 * @param nodeEqualityRuleManager 65 * @param minimalNodeEquality 66 */ 67 public TaskTreeNodeComparator(NodeEqualityRuleManager nodeEqualityRuleManager, 68 NodeEquality minimalNodeEquality) 63 * 64 */ 65 public TaskComparator(TaskEqualityRuleManager taskEqualityRuleManager, 66 TaskEquality minimalNodeEquality) 69 67 { 70 68 super(); 71 this. nodeEqualityRuleManager = nodeEqualityRuleManager;69 this.taskEqualityRuleManager = taskEqualityRuleManager; 72 70 this.minimalNodeEquality = minimalNodeEquality; 73 71 74 if (minimalNodeEquality == NodeEquality.LEXICALLY_EQUAL) {72 if (minimalNodeEquality == TaskEquality.LEXICALLY_EQUAL) { 75 73 comparer = new LexicalComparer(); 76 74 } 77 else if (minimalNodeEquality == NodeEquality.SYNTACTICALLY_EQUAL) {75 else if (minimalNodeEquality == TaskEquality.SYNTACTICALLY_EQUAL) { 78 76 comparer = new SyntacticalComparer(); 79 77 } 80 else if (minimalNodeEquality == NodeEquality.SEMANTICALLY_EQUAL) {78 else if (minimalNodeEquality == TaskEquality.SEMANTICALLY_EQUAL) { 81 79 comparer = new SemanticalComparer(); 82 80 } … … 85 83 } 86 84 87 if (minimalNodeEquality == NodeEquality.LEXICALLY_EQUAL) {85 if (minimalNodeEquality == TaskEquality.LEXICALLY_EQUAL) { 88 86 lexicalComparer = comparer; 89 87 lexicalEqualityBuffer = equalityBuffer; … … 99 97 */ 100 98 @Override 101 public boolean equals(ITaskTreeNode symbol1, ITaskTreeNode symbol2) { 102 //String id = "compare " + symbol1.getClass().getSimpleName() + " " + 103 // symbol2.getClass().getSimpleName(); 99 public boolean equals(ITaskInstance taskInstance1, ITaskInstance taskInstance2) { 100 return equals(taskInstance1.getTask(), taskInstance2.getTask()); 101 } 102 103 /** 104 * 105 */ 106 public boolean equals(ITask task1, ITask task2) { 107 //String id = "compare " + taskInstance1.getClass().getSimpleName() + " " + 108 // taskInstance2.getClass().getSimpleName(); 104 109 //String id = "compare"; 105 110 //stopWatch.start(id); … … 107 112 Boolean result; 108 113 109 if ( symbol1 != symbol2) {110 long key = ((long) System.identityHashCode( symbol1)) << 32;111 key += System.identityHashCode( symbol2);114 if (task1 != task2) { 115 long key = ((long) System.identityHashCode(task1)) << 32; 116 key += System.identityHashCode(task2); 112 117 113 118 result = equalityBuffer.get(key); 114 119 115 120 if (result == null) { 116 result = comparer.compare( symbol1, symbol2);121 result = comparer.compare(task1, task2); 117 122 equalityBuffer.put(key, result); 118 123 } … … 123 128 //stopWatch.stop(id); 124 129 125 /*boolean result2 = nodeEqualityRuleManager.areAtLeastEqual(symbol1, symbol2, minimalNodeEquality);130 /*boolean result2 = taskEqualityRuleManager.areAtLeastEqual(symbol1, symbol2, minimalNodeEquality); 126 131 if (result != result2) { 127 132 throw new IllegalStateException("implementation error"); … … 132 137 133 138 /** 134 * <p> 135 * TODO: comment 136 * </p> 137 * 138 * @return 139 * 140 */ 141 public boolean haveLexicallyEqualTasks(ITaskInstance taskInstance1, 142 ITaskInstance taskInstance2) 143 { 144 return areLexicallyEqual(taskInstance1.getTask(), taskInstance2.getTask()); 145 } 146 147 148 /** 149 * 150 */ 151 public boolean areLexicallyEqual(ITask task1, ITask task2) { 152 Boolean result; 153 154 if (task1 != task2) { 155 long key = ((long) System.identityHashCode(task1)) << 32; 156 key += System.identityHashCode(task2); 157 158 result = lexicalEqualityBuffer.get(key); 159 160 if (result == null) { 161 result = lexicalComparer.compare(task1, task2); 162 lexicalEqualityBuffer.put(key, result); 163 } 164 } 165 else { 166 result = true; 167 } 168 169 return result; 170 } 171 172 /** 173 * 139 174 */ 140 175 StopWatch getStopWatch() { … … 143 178 144 179 /** 145 * <p> 146 * TODO: comment 147 * </p> 148 * 149 * @param node1 150 * @param node2 151 * @return 152 */ 153 boolean areLexicallyEqual(ITaskTreeNode symbol1, ITaskTreeNode symbol2) { 154 Boolean result; 155 156 if (symbol1 != symbol2) { 157 long key = ((long) System.identityHashCode(symbol1)) << 32; 158 key += System.identityHashCode(symbol2); 159 160 result = lexicalEqualityBuffer.get(key); 161 162 if (result == null) { 163 result = lexicalComparer.compare(symbol1, symbol2); 164 lexicalEqualityBuffer.put(key, result); 165 } 166 } 167 else { 168 result = true; 169 } 170 171 return result; 172 } 173 174 /** 175 * <p> 176 * TODO: comment 177 * </p> 178 * 179 * @return 180 */ 181 NodeEquality getConsideredNodeEquality() { 180 * 181 */ 182 TaskEquality getConsideredNodeEquality() { 182 183 return minimalNodeEquality; 183 184 } … … 190 191 * 191 192 */ 192 boolean compare(ITask TreeNode node1, ITaskTreeNode node2);193 boolean compare(ITask task1, ITask task2); 193 194 } 194 195 … … 201 202 * 202 203 */ 203 public boolean compare(ITask TreeNode node1, ITaskTreeNode node2) {204 return nodeEqualityRuleManager.areLexicallyEqual(node1, node2);204 public boolean compare(ITask task1, ITask task2) { 205 return taskEqualityRuleManager.areLexicallyEqual(task1, task2); 205 206 } 206 207 } … … 214 215 * 215 216 */ 216 public boolean compare(ITask TreeNode node1, ITaskTreeNode node2) {217 return nodeEqualityRuleManager.areSyntacticallyEqual(node1, node2);217 public boolean compare(ITask task1, ITask task2) { 218 return taskEqualityRuleManager.areSyntacticallyEqual(task1, task2); 218 219 } 219 220 } … … 227 228 * 228 229 */ 229 public boolean compare(ITask TreeNode node1, ITaskTreeNode node2) {230 return nodeEqualityRuleManager.areSemanticallyEqual(node1, node2);230 public boolean compare(ITask task1, ITask task2) { 231 return taskEqualityRuleManager.areSemanticallyEqual(task1, task2); 231 232 } 232 233 } … … 240 241 * 241 242 */ 242 public boolean compare(ITask TreeNode node1, ITaskTreeNode node2) {243 return nodeEqualityRuleManager.areAtLeastEqual(node1, node2, minimalNodeEquality);243 public boolean compare(ITask task1, ITask task2) { 244 return taskEqualityRuleManager.areAtLeastEqual(task1, task2, minimalNodeEquality); 244 245 } 245 246 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 18 18 19 19 /** 20 20 * <p> 21 * A node comparison rule is used by the {@link NodeEqualityRuleManager} to compare task tree22 * nodes with each other. It provides one methodto be called for a comparison.21 * A task comparison rule is used by the {@link TaskEqualityRuleManager} to compare tasks with 22 * each other. It provides several methods to be called for a comparison. 23 23 * </p> 24 24 * … … 26 26 * @author 2012, last modified by $Author: patrick$ 27 27 */ 28 public interface NodeComparisonRule {28 public interface TaskComparisonRule { 29 29 30 30 /** 31 31 * <p> 32 * checks if the rule is applicable for comparing the two provided nodes32 * checks if the rule is applicable for comparing the two provided tasks 33 33 * </p> 34 34 * 35 * @param node1 the first task tree nodeto compare36 * @param node2 the second task tree nodeto compare35 * @param task1 the first task to compare 36 * @param task2 the second task to compare 37 37 * 38 38 * @return true, if the rule is applicable, false else 39 39 */ 40 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2);40 public boolean isApplicable(ITask task1, ITask task2); 41 41 42 42 /** 43 43 * <p> 44 * checks, if the provided nodes are lexically equal44 * checks, if the provided tasks are lexically equal 45 45 * </p> 46 46 * 47 * @param node1 the first task tree nodeto compare48 * @param node2 the second task tree nodeto compare47 * @param task1 the first task to compare 48 * @param task2 the second task to compare 49 49 * 50 * @return true, if the nodes are equal, false else50 * @return true, if the tasks are equal, false else 51 51 */ 52 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2);52 public boolean areLexicallyEqual(ITask task1, ITask task2); 53 53 54 54 /** 55 55 * <p> 56 * checks, if the provided nodes are syntactically equal56 * checks, if the provided tasks are syntactically equal 57 57 * </p> 58 58 * 59 * @param node1 the first task tree nodeto compare60 * @param node2 the second task tree nodeto compare59 * @param task1 the first task to compare 60 * @param task2 the second task to compare 61 61 * 62 * @return true, if the nodes are equal, false else62 * @return true, if the tasks are equal, false else 63 63 */ 64 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2);64 public boolean areSyntacticallyEqual(ITask task1, ITask task2); 65 65 66 66 /** 67 67 * <p> 68 * checks, if the provided nodes are semantically equal68 * checks, if the provided tasks are semantically equal 69 69 * </p> 70 70 * 71 * @param node1 the first task tree nodeto compare72 * @param node2 the second task tree nodeto compare71 * @param task1 the first task to compare 72 * @param task2 the second task to compare 73 73 * 74 * @return true, if the nodes are equal, false else74 * @return true, if the tasks are equal, false else 75 75 */ 76 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2);76 public boolean areSemanticallyEqual(ITask task1, ITask task2); 77 77 78 78 /** 79 79 * <p> 80 * compares two nodes with each other. The result of the method is either a nodeequality or80 * compares two tasks with each other. The result of the method is either a task equality or 81 81 * null. If it is null, it means, that the rule is not able to correctly compare the two given 82 * nodes82 * tasks 83 83 * </p> 84 84 * 85 * @param node1 the first task tree nodeto compare86 * @param node2 the second task tree nodeto compare85 * @param task1 the first task to compare 86 * @param task2 the second task to compare 87 87 * 88 88 * @return as described 89 89 */ 90 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2);90 public TaskEquality compare(ITask task1, ITask task2); 91 91 92 92 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskEquality.java
r1113 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 /** 18 18 * <p> 19 * A node equality denotes, how equal two task tree nodes are. There are different equality levels19 * A task equality denotes, how equal two tasks are. There are different equality levels 20 20 * which are similar to the usual design levels of GUI design. These levels are 21 21 * <ul> … … 26 26 * can be performed</li> 27 27 * </ul> 28 * It is not possible to compare two task nodes conceptually. But the other design levels can be28 * It is not possible to compare two tasks conceptually. But the other design levels can be 29 29 * identified and compared. 30 30 * </p> 31 31 * <p> 32 * Nodes can be identical. This is the case if in the java virtual machine, their comparison32 * Tasks can be identical. This is the case if in the java virtual machine, their comparison 33 33 * using the <code>==</code> operator or the equals method return true. 34 34 * </p> 35 35 * <p> 36 * Nodes are lexically equal, if they represent the same events on a key stroke level to be37 * carried out to execute the task. Identical nodes are also syntactically equal.36 * Tasks are lexically equal, if they represent the same events on a key stroke level to be 37 * carried out to execute the task. Identical tasks are also syntactically equal. 38 38 * </p> 39 39 * <p> … … 41 41 * syntactical result is the same. For example, entering the text "hello" into a text field can 42 42 * be done by entering the letters in their correct order, but also by copying the text into the 43 * text field. The syntactical result is the same: The text hellowas entered. But the tasks43 * text field. The syntactical result is the same: The text "hello" was entered. But the tasks 44 44 * lexically differ because the events on key stroke level are different. On the other hand, 45 * lexically equal nodes are also syntactically equal.45 * lexically equal tasks are also syntactically equal. 46 46 * </p> 47 47 * <p> 48 * Task tree nodes are semantically equal, if they execute the same function for editing the49 * concepts. An example are a click on a button and a short cut, both executing the same function.50 * These task tree nodes are syntactically and, therefore, also lexically different, but51 * semantically equal. Syntactically equal task tree nodes are always also semantically equal.48 * Tasks are semantically equal, if they execute the same function for editing the concepts. An 49 * example are a click on a button and a short cut, both executing the same function. These tasks 50 * are syntactically and, therefore, also lexically different, but semantically equal. 51 * Syntactically equal tasks are always also semantically equal. 52 52 * </p> 53 53 * … … 55 55 * @author 2012, last modified by $Author: patrick$ 56 56 */ 57 public enum NodeEquality {57 public enum TaskEquality { 58 58 IDENTICAL, 59 59 LEXICALLY_EQUAL, … … 64 64 /** 65 65 * <p> 66 * Checks for the current nodeequality, if it is at least identical to the67 * provided one or even more concrete. As an example, the nodeequality identical also68 * indicates, that the nodes are e.g. lexically, syntactically and semantically equal.66 * Checks for the current task equality, if it is at least identical to the 67 * provided one or even more concrete. As an example, the task equality identical also 68 * indicates, that the tasks are e.g. lexically, syntactically and semantically equal. 69 69 * Therefore, the method called on <code>IDENTICAL</code> with <code>SEMANTICALLY_EQUAL</code> 70 70 * as parameter will return true. If this method is called on <code>SYNTACTICALLY_EQUAL</code> … … 72 72 * </p> 73 73 * 74 * @param nodeEquality the nodeequality to compare with.74 * @param taskEquality the task equality to compare with. 75 75 * 76 76 * @return as described 77 77 */ 78 public boolean isAtLeast( NodeEquality nodeEquality)78 public boolean isAtLeast(TaskEquality taskEquality) 79 79 { 80 switch ( nodeEquality) {80 switch (taskEquality) { 81 81 case IDENTICAL: 82 82 return … … 107 107 /** 108 108 * <p> 109 * returns the common denominator of this nodeequality and the provided one. I.e. if one109 * returns the common denominator of this task equality and the provided one. I.e. if one 110 110 * equality is e.g. syntactical and the other one only semantical, then semantical is returned. 111 111 * </p> 112 112 * 113 113 * @param equality the equality, to compare this with 114 * @return 114 * 115 * @return as described 115 116 */ 116 public NodeEquality getCommonDenominator(NodeEquality otherEquality) {117 public TaskEquality getCommonDenominator(TaskEquality otherEquality) { 117 118 if (this.isAtLeast(otherEquality)) { 118 119 return otherEquality; … … 122 123 } 123 124 else { 124 return NodeEquality.UNEQUAL;125 return TaskEquality.UNEQUAL; 125 126 } 126 127 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskEqualityRuleManager.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import java.util.ArrayList; 18 18 import java.util.List; 19 19 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 21 21 22 22 /** 23 23 * <p> 24 * The node equality rule manager is capable of comparing task tree nodes based on its internal list25 * of comparison rules. The current list of rules contains the {@link NodeIdentityRule}, the24 * The task equality rule manager is capable of comparing tasks based on its internal list 25 * of comparison rules. The current list of rules contains the {@link TaskIdentityRule}, the 26 26 * {@link IterationComparisonRule}, the {@link SequenceComparisonRule}, and 27 * {@link SelectionComparisonRule}. These rules are asked for comparing the two provided task tree28 * nodes in the mentioned order. If a rule returns a nodeequality other than null, this equality is27 * {@link SelectionComparisonRule}. These rules are asked for comparing the two provided tasks 28 * in the mentioned order. If a rule returns a task equality other than null, this equality is 29 29 * returned. Otherwise the next rule is asked. 30 30 * </p> … … 33 33 * @author 2012, last modified by $Author: patrick$ 34 34 */ 35 public class NodeEqualityRuleManager {35 public class TaskEqualityRuleManager { 36 36 37 37 /** */ 38 private List< NodeComparisonRule> mRuleIndex = null;39 40 /** 41 * <p> 42 * initializes the nodeequality rule manager by filling the internal list of comparison rules.38 private List<TaskComparisonRule> mRuleIndex = null; 39 40 /** 41 * <p> 42 * initializes the task equality rule manager by filling the internal list of comparison rules. 43 43 * This method must be called before any other method is called on the rule manager. 44 44 * </p> 45 45 */ 46 46 public void init() { 47 mRuleIndex = new ArrayList< NodeComparisonRule>();48 mRuleIndex.add(new NodeIdentityRule());47 mRuleIndex = new ArrayList<TaskComparisonRule>(); 48 mRuleIndex.add(new TaskIdentityRule()); 49 49 mRuleIndex.add(new GUIEventTaskComparisonRule()); 50 50 mRuleIndex.add(new EventTaskComparisonRule()); … … 52 52 mRuleIndex.add(new SequenceComparisonRule(this)); 53 53 mRuleIndex.add(new SelectionComparisonRule(this)); 54 mRuleIndex.add(new NodeAndIterationComparisonRule(this));55 mRuleIndex.add(new NodeAndSelectionComparisonRule(this));56 } 57 58 /** 59 * <p> 60 * this method performs a comparison of the two provided task tree nodes. It iterates its61 * internal comparison rules. If the first rule returns a nodeequality other than null,54 mRuleIndex.add(new TaskAndIterationComparisonRule(this)); 55 mRuleIndex.add(new TaskAndSelectionComparisonRule(this)); 56 } 57 58 /** 59 * <p> 60 * this method performs a comparison of the two provided tasks. It iterates its internal 61 * comparison rules. If the first rule returns a task equality other than null, 62 62 * this equality is returned. Otherwise the next rule is tried. If no rule returns an equality 63 63 * <code>NodeEquality.UNEQUAL</code> is returned. 64 64 * </p> 65 65 * 66 * @param node1 the first task tree nodeto be compared67 * @param node2 the second task tree nodeto be compared66 * @param task1 the first task to be compared 67 * @param task2 the second task to be compared 68 68 * 69 69 * @return as described … … 72 72 * manager before a call to this method. 73 73 */ 74 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2)74 public TaskEquality compare(ITask task1, ITask task2) 75 75 throws IllegalStateException 76 76 { … … 79 79 } 80 80 81 // LOG.info("checking for equality of " + node1 + " and " + node2);82 NodeEquality nodeEquality = null;83 84 for ( NodeComparisonRule rule : mRuleIndex) {85 if (rule.isApplicable( node1, node2)) {86 nodeEquality = rule.compare(node1, node2);87 if ( nodeEquality != null) {81 // LOG.info("checking for equality of " + task1 + " and " + task2); 82 TaskEquality taskEquality = null; 83 84 for (TaskComparisonRule rule : mRuleIndex) { 85 if (rule.isApplicable(task1, task2)) { 86 taskEquality = rule.compare(task1, task2); 87 if (taskEquality != null) { 88 88 // LOG.warning("used rule " + rule + " for equality check"); 89 return nodeEquality;89 return taskEquality; 90 90 } 91 91 } 92 92 } 93 93 94 // LOG.warning("no rule could be applied --> handling nodes as unequal");95 96 return NodeEquality.UNEQUAL;94 // LOG.warning("no rule could be applied --> handling tasks as unequal"); 95 96 return TaskEquality.UNEQUAL; 97 97 } 98 98 … … 107 107 * @return 108 108 */ 109 public boolean areAtLeastEqual(ITaskTreeNode node1, 110 ITaskTreeNode node2, 111 NodeEquality equalityLevel) 112 { 109 public boolean areAtLeastEqual(ITask task1, ITask task2, TaskEquality equalityLevel) { 113 110 if (equalityLevel == null) { 114 111 throw new IllegalArgumentException("required equality level must not be null"); … … 117 114 switch (equalityLevel) { 118 115 case IDENTICAL: 119 return areIdentical( node1, node2);116 return areIdentical(task1, task2); 120 117 case LEXICALLY_EQUAL: 121 return areLexicallyEqual( node1, node2);118 return areLexicallyEqual(task1, task2); 122 119 case SYNTACTICALLY_EQUAL: 123 return areSyntacticallyEqual( node1, node2);120 return areSyntacticallyEqual(task1, task2); 124 121 case SEMANTICALLY_EQUAL: 125 return areSemanticallyEqual( node1, node2);122 return areSemanticallyEqual(task1, task2); 126 123 case UNEQUAL: 127 return !areSemanticallyEqual( node1, node2);124 return !areSemanticallyEqual(task1, task2); 128 125 default: 129 126 throw new IllegalArgumentException("unknown required equality: " + equalityLevel); … … 140 137 * @return 141 138 */ 142 public boolean areIdentical(ITask TreeNode node1, ITaskTreeNode node2) {143 if (mRuleIndex == null) { 144 throw new IllegalStateException("not initialized"); 145 } 146 147 for ( NodeComparisonRule rule : mRuleIndex) {148 if (rule.isApplicable( node1, node2) && rule.areLexicallyEqual(node1, node2)) {149 return true; 150 } 151 } 152 153 return false; 154 } 155 156 /** 157 * <p> 158 * TODO: comment 159 * </p> 160 * 161 * @param child1 162 * @param child2 163 * @return 164 */ 165 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {166 if (mRuleIndex == null) { 167 throw new IllegalStateException("not initialized"); 168 } 169 170 for ( NodeComparisonRule rule : mRuleIndex) {171 if (rule.isApplicable( node1, node2) && rule.areLexicallyEqual(node1, node2)) {172 return true; 173 } 174 } 175 176 return false; 177 } 178 179 /** 180 * <p> 181 * TODO: comment 182 * </p> 183 * 184 * @param child1 185 * @param child2 186 * @return 187 */ 188 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {189 if (mRuleIndex == null) { 190 throw new IllegalStateException("not initialized"); 191 } 192 193 for ( NodeComparisonRule rule : mRuleIndex) {194 if (rule.isApplicable( node1, node2) && rule.areSyntacticallyEqual(node1, node2)) {195 return true; 196 } 197 } 198 199 return false; 200 } 201 202 /** 203 * <p> 204 * TODO: comment 205 * </p> 206 * 207 * @param child1 208 * @param child2 209 * @return 210 */ 211 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {212 if (mRuleIndex == null) { 213 throw new IllegalStateException("not initialized"); 214 } 215 216 for ( NodeComparisonRule rule : mRuleIndex) {217 if (rule.isApplicable( node1, node2) && rule.areSemanticallyEqual(node1, node2)) {139 public boolean areIdentical(ITask task1, ITask task2) { 140 if (mRuleIndex == null) { 141 throw new IllegalStateException("not initialized"); 142 } 143 144 for (TaskComparisonRule rule : mRuleIndex) { 145 if (rule.isApplicable(task1, task2) && rule.areLexicallyEqual(task1, task2)) { 146 return true; 147 } 148 } 149 150 return false; 151 } 152 153 /** 154 * <p> 155 * TODO: comment 156 * </p> 157 * 158 * @param child1 159 * @param child2 160 * @return 161 */ 162 public boolean areLexicallyEqual(ITask task1, ITask task2) { 163 if (mRuleIndex == null) { 164 throw new IllegalStateException("not initialized"); 165 } 166 167 for (TaskComparisonRule rule : mRuleIndex) { 168 if (rule.isApplicable(task1, task2) && rule.areLexicallyEqual(task1, task2)) { 169 return true; 170 } 171 } 172 173 return false; 174 } 175 176 /** 177 * <p> 178 * TODO: comment 179 * </p> 180 * 181 * @param child1 182 * @param child2 183 * @return 184 */ 185 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 186 if (mRuleIndex == null) { 187 throw new IllegalStateException("not initialized"); 188 } 189 190 for (TaskComparisonRule rule : mRuleIndex) { 191 if (rule.isApplicable(task1, task2) && rule.areSyntacticallyEqual(task1, task2)) { 192 return true; 193 } 194 } 195 196 return false; 197 } 198 199 /** 200 * <p> 201 * TODO: comment 202 * </p> 203 * 204 * @param child1 205 * @param child2 206 * @return 207 */ 208 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 209 if (mRuleIndex == null) { 210 throw new IllegalStateException("not initialized"); 211 } 212 213 for (TaskComparisonRule rule : mRuleIndex) { 214 if (rule.isApplicable(task1, task2) && rule.areSemanticallyEqual(task1, task2)) { 218 215 return true; 219 216 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/TaskIdentityRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 18 18 19 19 /** 20 20 * <p> 21 * This comparison rule returns <code> NodeEquality.IDENTICAL</code> if the comparison of the two22 * task tree nodes using the <code>==</code> operator or the <code>equals</code> method return true.23 * Else it returns null to denote, that it can not compare the nodes.21 * This comparison rule returns <code>TaskEquality.IDENTICAL</code> if the comparison of the two 22 * tasks using the <code>==</code> operator or the <code>equals</code> method return true. 23 * Else it returns null to denote, that it can not compare the tasks. 24 24 * </p> 25 25 * … … 27 27 * @author 2012, last modified by $Author: patrick$ 28 28 */ 29 public class NodeIdentityRule implements NodeComparisonRule {29 public class TaskIdentityRule implements TaskComparisonRule { 30 30 31 31 /* (non-Javadoc) 32 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)32 * @see NodeComparisonRule#isApplicable(ITask, ITask) 33 33 */ 34 34 @Override 35 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {36 return ( node1 == node2);35 public boolean isApplicable(ITask task1, ITask task2) { 36 return (task1 == task2); 37 37 } 38 38 39 39 /* (non-Javadoc) 40 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)40 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 41 41 */ 42 42 @Override 43 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {44 return ( node1 == node2);43 public boolean areLexicallyEqual(ITask task1, ITask task2) { 44 return (task1 == task2); 45 45 } 46 46 47 47 /* (non-Javadoc) 48 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)48 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 49 49 */ 50 50 @Override 51 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {52 return ( node1 == node2);51 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 52 return (task1 == task2); 53 53 } 54 54 55 55 /* (non-Javadoc) 56 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)56 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 57 57 */ 58 58 @Override 59 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {60 return ( node1 == node2);59 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 60 return (task1 == task2); 61 61 } 62 62 63 63 /* (non-Javadoc) 64 * @see NodeComparisonRule#compare(ITask TreeNode, ITaskTreeNode)64 * @see NodeComparisonRule#compare(ITask, ITask) 65 65 */ 66 66 @Override 67 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) {68 if (isApplicable( node1, node2)) {69 return NodeEquality.IDENTICAL;67 public TaskEquality compare(ITask task1, ITask task2) { 68 if (isApplicable(task1, task2)) { 69 return TaskEquality.IDENTICAL; 70 70 } 71 71 else { -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/ITaskInstanceListScopeRule.java
r1113 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.temporalrelation; 16 16 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 18 18 19 19 /** 20 20 * <p> 21 * a temporal relationship rule is able to detected temporal relationships between the child nodes 22 * of the parent node provided to the {@link #apply(ITaskTreeNode, boolean)} method. A rule 23 * creates temporal relationships between the child nodes, i.e. substructures in the task tree, if 24 * it detects a temporal relationship and it can be sure that it is complete. Incomplete but 25 * detected temporal relationships may occur, if there can be more children expected to be added 26 * to the provided parent node. This could be the case during parsing a interaction log file of 27 * a GUI. 21 * a task instance list scope rule is able to detected temporal relationships between a list of task 22 * instances provided to the {@link #apply(ITaskInstanceList)} method. A rule creates temporal 23 * relationships between the task instances, i.e. substructures in the task tree, if 24 * it detects a temporal relationship and instantiates the temporal relationships accordingly. 28 25 * </p> 29 26 * 30 27 * @author Patrick Harms 31 28 */ 32 interface TemporalRelationshipRule {29 interface ITaskInstanceListScopeRule extends ITemporalRelationshipRule { 33 30 34 31 /** 35 32 * <p> 36 * applies the rule to the given parent node. The finalize parameter is used to command the rule 37 * to finish rule applications, in the case it is known that no further data will be available. 38 * </p> 39 * <p> 40 * The returned rule application result is null, if the rule can not be applied, i.e. it does not 41 * detect a temporal relationship. It returns a rule application result with a status 42 * {@link RuleApplicationStatus#RULE_APPLICATION_FINISHED} if the rule was applied. The result 43 * contains all newly created parent nodes. It returns a rule application result with status 44 * {@link RuleApplicationStatus#RULE_APPLICATION_FEASIBLE} if the rule would be applicable if 45 * further children would be available in the parent node. This status MUST not be returned if 46 * the finalize parameter is true. In this case the rule must be applied or not. 33 * applies the rule to the given task instance list. The returned rule application result is null, 34 * if the rule can not be applied, i.e. it does not detect a temporal relationship. It returns a 35 * rule application result with a status {@link RuleApplicationStatus#RULE_APPLICATION_FINISHED} 36 * if the rule was applied. The result contains all newly created parent tasks and task instances. 47 37 * </p> 48 38 * 49 * @param parent the parent node with the children to apply the rule on 50 * @param finalize true, if the rule shall not expect further children to come and that it 51 * should therefore be applied in any case 39 * @param taskInstances the list of task instances to apply the rule on 52 40 * 53 41 * @return the rule application result as described. 54 42 */ 55 RuleApplicationResult apply(ITaskTreeNode parent, 56 boolean finalize); 43 RuleApplicationResult apply(ITaskInstanceList taskInstances); 57 44 58 45 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/RuleApplicationResult.java
r1127 r1146 18 18 import java.util.List; 19 19 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 21 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 21 22 22 23 /** 23 24 * <p> 24 * The rule application result describes the result of applying a {@link TemporalRelationshipRule}25 * on a task tree node. It contains a {@link RuleApplicationStatus} and a list of all parent26 * t ask tree nodes that were created during a rule application. See the description of27 * {@link TemporalRelationshipRule} for more details.25 * The rule application result describes the result of applying a {@link ITemporalRelationshipRule}. 26 * It contains a {@link RuleApplicationStatus} and a list of all parent task instances and tasks 27 * that were created during a rule application. See the description of 28 * {@link ITemporalRelationshipRule} for more details. 28 29 * </p> 29 30 * … … 36 37 37 38 /** */ 38 private List<ITaskTreeNode> newParents = new ArrayList<ITaskTreeNode>(); 39 private List<ITask> newParentTasks = new ArrayList<ITask>(); 40 41 /** */ 42 private List<ITaskInstance> newParentInstances = new ArrayList<ITaskInstance>(); 39 43 40 44 /** … … 67 71 /** 68 72 * <p> 69 * add a further parent nodecreated during the rule application73 * add a further parent task created during the rule application 70 74 * </p> 71 75 */ 72 void addNewlyCreated ParentNode(ITaskTreeNodenewParent) {73 newParent s.add(newParent);76 void addNewlyCreatedTask(ITask newParent) { 77 newParentTasks.add(newParent); 74 78 } 75 79 76 80 /** 77 81 * <p> 78 * return all parent nodes created during the rule application82 * return all parent tasks created during the rule application 79 83 * </p> 80 84 */ 81 List<ITaskTreeNode> getNewlyCreatedParentNodes() { 82 return newParents; 85 List<ITask> getNewlyCreatedTasks() { 86 return newParentTasks; 87 } 88 89 /** 90 * <p> 91 * add a further parent task instance created during the rule application 92 * </p> 93 */ 94 void addNewlyCreatedTaskInstance(ITaskInstance newParent) { 95 newParentInstances.add(newParent); 96 } 97 98 /** 99 * <p> 100 * return all parent task instances created during the rule application 101 * </p> 102 */ 103 List<ITaskInstance> getNewlyCreatedTaskInstances() { 104 return newParentInstances; 83 105 } 84 106 -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/RuleApplicationStatus.java
r1127 r1146 17 17 /** 18 18 * <p> 19 * The rule application status describes the result of applying a {@link TemporalRelationshipRule}20 * on a task tree node. See the description of {@linkTemporalRelationshipRule} for more details.19 * The rule application status describes the result of applying a {@link ITemporalRelationshipRule}. 20 * See the description of {@link ITemporalRelationshipRule} for more details. 21 21 * </p> 22 22 * … … 25 25 enum RuleApplicationStatus { 26 26 FINISHED, 27 // TODO drop feasible 27 28 FEASIBLE, 28 29 NOT_APPLIED; -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/RuleUtils.java
r1127 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.temporalrelation; 16 16 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder; 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 21 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 21 22 22 23 /** … … 35 36 * 36 37 */ 37 static I Sequence getSubSequenceInRange(ITaskTreeNodeparent,38 intstartIndex,39 intendIndex,40 String description,41 ITaskTreeNodeFactory nodeFactory,42 ITaskTreeBuilder builder)38 static ITaskInstance getSubSequenceInRange(ITaskInstanceList parent, 39 int startIndex, 40 int endIndex, 41 ITask model, 42 ITaskFactory taskFactory, 43 ITaskBuilder taskBuilder) 43 44 { 44 ISequence sequence = nodeFactory.createNewSequence(); 45 if (description != null) { 46 builder.setDescription(sequence, description); 45 ITaskInstance subsequence = taskFactory.createNewTaskInstance(model); 46 47 for (int i = startIndex; i <= endIndex; i++) { 48 taskBuilder.addChild(subsequence, parent.get(i)); 47 49 } 48 50 49 for (int i = startIndex; i <= endIndex; i++) { 50 builder.addChild(sequence, parent.getChildren().get(i)); 51 } 52 53 return sequence; 51 return subsequence; 54 52 } 55 53 … … 57 55 * 58 56 */ 59 static I Sequence createNewSubSequenceInRange(ITaskTreeNodeparent,60 intstartIndex,61 intendIndex,62 String description,63 ITaskTreeNodeFactory nodeFactory,64 ITaskTreeBuilder builder)57 static ITaskInstance createNewSubSequenceInRange(ITaskInstanceList parent, 58 int startIndex, 59 int endIndex, 60 ITask model, 61 ITaskFactory taskFactory, 62 ITaskBuilder taskBuilder) 65 63 { 66 ISequence sequence = nodeFactory.createNewSequence(); 67 if (description != null) { 68 builder.setDescription(sequence, description); 64 ITaskInstance subsequence = taskFactory.createNewTaskInstance(model); 65 66 for (int i = startIndex; i <= endIndex; i++) { 67 taskBuilder.addChild(subsequence, parent.get(startIndex)); 68 taskBuilder.removeTaskInstance(parent, startIndex); 69 69 } 70 70 71 for (int i = startIndex; i <= endIndex; i++) {72 builder.addChild(sequence, parent.getChildren().get(startIndex));73 builder.removeChild((ISequence) parent, startIndex);74 }75 71 76 builder.addChild((ISequence) parent, startIndex,sequence);72 taskBuilder.addTaskInstance(parent, startIndex, subsequence); 77 73 78 return s equence;74 return subsequence; 79 75 } 80 76 -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRule.java
r1133 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.temporalrelation; 16 16 17 import java.util.HashMap; 17 18 import java.util.Iterator; 18 19 import java.util.LinkedList; 19 20 import java.util.List; 20 21 21 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 22 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 22 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 23 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 23 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 24 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 25 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 32 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 33 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 34 import de.ugoe.cs.autoquest.usageprofiles.SymbolComparator; 29 35 import de.ugoe.cs.autoquest.usageprofiles.Trie; 30 36 import de.ugoe.cs.autoquest.usageprofiles.TrieProcessor; 31 37 import de.ugoe.cs.util.StopWatch; 32 import de.ugoe.cs.util.console.Console;33 38 34 39 /** … … 39 44 * @author Patrick Harms 40 45 */ 41 class SequenceForTaskDetectionRule implements TemporalRelationshipRule {46 class SequenceForTaskDetectionRule implements ISessionScopeRule { 42 47 43 48 /** 44 49 * <p> 45 * the task tree nodefactory to be used for creating substructures for the temporal50 * the task factory to be used for creating substructures for the temporal 46 51 * relationships identified during rule 47 52 * </p> 48 53 */ 49 private ITask TreeNodeFactory taskTreeNodeFactory;54 private ITaskFactory taskFactory; 50 55 /** 51 56 * <p> 52 * the task treebuilder to be used for creating substructures for the temporal relationships57 * the task builder to be used for creating substructures for the temporal relationships 53 58 * identified during rule application 54 59 * </p> 55 60 */ 56 private ITask TreeBuilder taskTreeBuilder;61 private ITaskBuilder taskBuilder; 57 62 58 63 /** 59 64 * <p> 60 * the node comparator to be used for comparing task tree nodes65 * the task comparator to be used for comparing tasks 61 66 * </p> 62 67 */ 63 private Task TreeNodeComparator nodeComparator;68 private TaskComparator taskComparator; 64 69 65 70 /** 66 71 * <p> 67 * instantiates the rule and initializes it with a nodeequality rule manager and the minimal68 * nodeequality identified sublist must have to consider them as iterated.72 * instantiates the rule and initializes it with a task equality rule manager and the minimal 73 * task equality identified sublist must have to consider them as iterated. 69 74 * </p> 70 75 */ 71 SequenceForTaskDetectionRule( NodeEqualityRuleManager nodeEqualityRuleManager,72 NodeEquality minimalNodeEquality,73 ITask TreeNodeFactory taskTreeNodeFactory,74 ITask TreeBuilder taskTreeBuilder)76 SequenceForTaskDetectionRule(TaskEqualityRuleManager taskEqualityRuleManager, 77 TaskEquality minimalTaskEquality, 78 ITaskFactory taskFactory, 79 ITaskBuilder taskBuilder) 75 80 { 76 this.taskTreeNodeFactory = taskTreeNodeFactory; 77 this.taskTreeBuilder = taskTreeBuilder; 78 79 this.nodeComparator = 80 new TaskTreeNodeComparator(nodeEqualityRuleManager, minimalNodeEquality); 81 this.taskFactory = taskFactory; 82 this.taskBuilder = taskBuilder; 83 84 this.taskComparator = new TaskComparator(taskEqualityRuleManager, minimalTaskEquality); 81 85 } 82 86 … … 89 93 } 90 94 91 /* 92 * (non-Javadoc) 93 * 94 * @see de.ugoe.cs.tasktree.temporalrelation.TemporalRelationshipRule#apply(TaskTreeNode, 95 * boolean) 95 /* (non-Javadoc) 96 * @see de.ugoe.cs.autoquest.tasktrees.temporalrelation.ISessionScopeRule#apply(java.util.List) 96 97 */ 97 98 @Override 98 public RuleApplicationResult apply(ITaskTreeNode parent, boolean finalize) { 99 if (!(parent instanceof ISequence)) { 100 return null; 101 } 102 103 if (!finalize) { 104 // the rule is always feasible as tasks may occur at any time 105 RuleApplicationResult result = new RuleApplicationResult(); 106 result.setRuleApplicationStatus(RuleApplicationStatus.FEASIBLE); 107 return result; 108 } 109 110 List<ITaskTreeNode> children = parent.getChildren(); 111 List<ISequence> sessions = new LinkedList<ISequence>(); 112 113 for (ITaskTreeNode child : children) { 114 if (child instanceof ISequence) { 115 sessions.add((ISequence) child); 116 } 117 else { 118 Console.println("provided parent is no parent of sessions"); 119 return null; 120 } 121 } 122 99 public RuleApplicationResult apply(List<IUserSession> sessions) { 123 100 RuleApplicationData appData = new RuleApplicationData(sessions); 124 101 125 boolean finished = false;126 127 102 // this is the real rule application. Loop while something is replaced. 128 103 do { … … 137 112 appData.getStopWatch().stop("whole loop"); 138 113 139 //((TaskTreeNodeComparator) nodeComparator).getStopWatch().dumpStatistics(System.out);140 //((TaskTreeNodeComparator) nodeComparator).getStopWatch().reset();114 //((TaskTreeNodeComparator) taskComparator).getStopWatch().dumpStatistics(System.out); 115 //((TaskTreeNodeComparator) taskComparator).getStopWatch().reset(); 141 116 142 117 appData.getStopWatch().dumpStatistics(System.out); 143 118 appData.getStopWatch().reset(); 144 119 145 finished = (appData.getReplacementCounter() == 0); 146 } 147 while (!finished); 148 149 System.out.println("created " + appData.getResult().getNewlyCreatedParentNodes().size() + 150 " new parent nodes\n"); 151 152 if (appData.getResult().getNewlyCreatedParentNodes().size() > 0) { 120 } 121 while (appData.detectedAndReplacedTasks()); 122 123 System.out.println 124 ("created " + appData.getResult().getNewlyCreatedTasks().size() + 125 " new tasks and " + appData.getResult().getNewlyCreatedTaskInstances().size() + 126 " appropriate instances\n"); 127 128 if ((appData.getResult().getNewlyCreatedTasks().size() > 0) || 129 (appData.getResult().getNewlyCreatedTaskInstances().size() > 0)) 130 { 153 131 appData.getResult().setRuleApplicationStatus(RuleApplicationStatus.FINISHED); 154 132 } … … 164 142 appData.getStopWatch().start("detecting iterations"); 165 143 166 List<ISequence> sessions = appData.getSessions(); 167 int foundIterations = 0; 168 169 for (ISequence session : sessions) { 170 foundIterations += detectAndReplaceIterations(session, appData); 171 } 144 List<IUserSession> sessions = appData.getSessions(); 145 int iteratedTasks = 0; 146 147 ITask iteratedTask = null; 148 149 do { 150 iteratedTask = searchIteratedTask(sessions); 151 152 if (iteratedTask != null) { 153 replaceIterationsOf(iteratedTask, sessions, appData); 154 iteratedTasks++; 155 } 156 } 157 while (iteratedTask != null); 172 158 173 159 appData.getStopWatch().stop("detecting iterations"); 174 System.out.println(" --> found " + foundIterations); 175 } 176 177 /** 178 * @param appData 179 */ 180 private int detectAndReplaceIterations(ISequence session, 181 RuleApplicationData appData) 160 System.out.println(" --> found " + iteratedTasks + " iterated tasks"); 161 } 162 163 /** 164 * 165 */ 166 private ITask searchIteratedTask(List<IUserSession> sessions) { 167 for (IUserSession session : sessions) { 168 for (int i = 0; i < (session.size() - 1); i++) { 169 if (taskComparator.equals(session.get(i).getTask(), session.get(i + 1).getTask())) { 170 return session.get(i).getTask(); 171 } 172 } 173 } 174 175 return null; 176 } 177 178 /** 179 * 180 */ 181 private void replaceIterationsOf(ITask iteratedTask, 182 List<IUserSession> sessions, 183 RuleApplicationData appData) 182 184 { 183 int count = 0; 184 185 TemporalRelationshipRule rule = new SimpleIterationDetectionRule 186 (nodeComparator, taskTreeNodeFactory, taskTreeBuilder); 187 188 RuleApplicationResult result = rule.apply(session, true); 189 190 if ((result != null) && (result.getNewlyCreatedParentNodes() != null)) { 191 for (ITaskTreeNode newParent : result.getNewlyCreatedParentNodes()) { 192 appData.getResult().addNewlyCreatedParentNode(newParent); 193 if (newParent instanceof IIteration) { 194 count++; 195 } 196 } 197 } 198 199 return count; 185 IIteration iteration = taskFactory.createNewIteration(); 186 ITaskInstance iterationInstance = null; 187 188 List<ITaskInstance> iterationInstances = new LinkedList<ITaskInstance>(); 189 190 for (IUserSession session : sessions) { 191 int index = 0; 192 while (index < session.size()) { 193 if (taskComparator.equals(iteratedTask, session.get(index).getTask())) { 194 if (iterationInstance == null) { 195 iterationInstance = taskFactory.createNewTaskInstance(iteration); 196 iterationInstances.add(iterationInstance); 197 taskBuilder.addTaskInstance(session, index, iterationInstance); 198 index++; 199 } 200 201 taskBuilder.addChild(iterationInstance, session.get(index)); 202 taskBuilder.removeTaskInstance(session, index); 203 } 204 else { 205 if (iterationInstance != null) { 206 iterationInstance = null; 207 } 208 index++; 209 } 210 } 211 } 212 213 harmonizeIterationInstancesModel(iteration, iterationInstances); 214 } 215 216 /** 217 * <p> 218 * TODO: comment 219 * </p> 220 * 221 * @param iteratedTaskVariants 222 */ 223 private void harmonizeIterationInstancesModel(IIteration iteration, 224 List<ITaskInstance> iterationInstances) 225 { 226 List<ITask> iteratedTaskVariants = new LinkedList<ITask>(); 227 228 // merge the lexically different variants of iterated task to a unique list 229 for (ITaskInstance iterationInstance : iterationInstances) { 230 for (ITaskInstance executionVariant : iterationInstance) { 231 ITask candidate = executionVariant.getTask(); 232 233 boolean found = false; 234 for (ITask taskVariant : iteratedTaskVariants) { 235 if (taskComparator.areLexicallyEqual(taskVariant, candidate)) { 236 taskBuilder.setTask(executionVariant, taskVariant); 237 found = true; 238 break; 239 } 240 } 241 242 if (!found) { 243 iteratedTaskVariants.add(candidate); 244 } 245 } 246 } 247 248 // if there are more than one lexically different variant of iterated tasks, adapt the 249 // iteration model to be a selection of different variants. In this case also adapt 250 // the generated iteration instances to correctly contain selection instances. If there 251 // is only one variant of an iterated task, simply set this as the marked task of the 252 // iteration. In this case, the instances can be preserved as is 253 if (iteratedTaskVariants.size() > 1) { 254 ISelection selection = taskFactory.createNewSelection(); 255 256 for (ITask variant : iteratedTaskVariants) { 257 taskBuilder.addChild(selection, variant); 258 } 259 260 taskBuilder.setMarkedTask(iteration, selection); 261 262 for (ITaskInstance instance : iterationInstances) { 263 for (int i = 0; i < instance.size(); i++) { 264 ITaskInstance selectionInstance = taskFactory.createNewTaskInstance(selection); 265 taskBuilder.addChild(selectionInstance, instance.get(i)); 266 taskBuilder.setTaskInstance(instance, i, selectionInstance); 267 } 268 } 269 } 270 else { 271 taskBuilder.setMarkedTask(iteration, iteratedTaskVariants.get(0)); 272 } 200 273 } 201 274 … … 226 299 Tasks tasks; 227 300 boolean createNewTrie = (appData.getLastTrie() == null) || 228 appData. getReplacementCounter() > 0; // tree has changed301 appData.detectedAndReplacedTasks(); // tree has changed 229 302 230 303 do { … … 240 313 createNewTrie = false; 241 314 242 for (List<ITask TreeNode> task : tasks) {315 for (List<ITaskInstance> task : tasks) { 243 316 if (task.size() >= appData.getTrainedSequenceLength()) { 244 317 // Trie must be recreated with a longer sequence length to be sure that … … 267 340 268 341 appData.getStopWatch().start("training trie"); 269 appData.setLastTrie(new Trie<ITask TreeNode>(nodeComparator));342 appData.setLastTrie(new Trie<ITaskInstance>(taskComparator)); 270 343 271 List<I Sequence> sessions = appData.getSessions();272 273 for (I Sequencesession : sessions) {344 List<IUserSession> sessions = appData.getSessions(); 345 346 for (IUserSession session : sessions) { 274 347 trainTrie(session, appData); 275 348 } … … 282 355 * @param parent 283 356 */ 284 private void trainTrie(I Sequencesession, RuleApplicationData appData) {285 List<ITask TreeNode> children = session.getChildren();357 private void trainTrie(IUserSession session, RuleApplicationData appData) { 358 List<ITaskInstance> children = session.getExecutedTasks(); 286 359 287 360 if ((children != null) && (children.size() > 0)) { … … 294 367 */ 295 368 private void replaceSequencesOccurringMostOften(RuleApplicationData appData) { 296 appData. resetReplacementCounter();369 appData.detectedAndReplacedTasks(false); 297 370 298 371 if ((appData.getLastFoundTasks().size() > 0) && 299 372 (appData.getLastFoundTasks().getOccurrenceCount() > 1)) 300 373 { 301 System.out.println("replacing tasks occurrences with merged variants of all versions"); 302 303 for (List<ITaskTreeNode> task : appData.getLastFoundTasks()) { 304 String taskId = "task " + RuleUtils.getNewId(); 305 System.out.println("replacing " + taskId + ": " + task); 306 307 appData.clearTaskOccurrences(); 308 determineVariantsOfTaskOccurrences(task, appData.getSessions(), appData); 309 310 appData.getStopWatch().start("merging task nodes"); 311 ITaskTreeNode taskReplacement = mergeVariantsOfTaskOccurrence(taskId, appData); 312 appData.getStopWatch().stop("merging task nodes"); 313 314 appData.resetReplacementCounter(); 315 replaceTaskOccurrences(task, taskReplacement, appData.getSessions(), appData); 316 317 if (appData.getReplacementCounter() > 0) { 318 appData.getResult().addNewlyCreatedParentNode(taskReplacement); 319 } 320 321 if (appData.getReplacementCounter() < 322 appData.getLastFoundTasks().getOccurrenceCount()) 323 { 324 System.out.println(taskId + ": replaced task only " + 325 appData.getReplacementCounter() + 326 " times instead of expected " + 374 System.out.println("replacing tasks occurrences"); 375 376 for (List<ITaskInstance> task : appData.getLastFoundTasks()) { 377 ISequence sequence = taskFactory.createNewSequence(); 378 379 System.out.println("replacing " + sequence.getId() + ": " + task); 380 381 List<ITaskInstance> sequenceInstances = 382 replaceTaskOccurrences(task, appData.getSessions(), sequence); 383 384 harmonizeSequenceInstancesModel(sequence, sequenceInstances,task.size()); 385 appData.detectedAndReplacedTasks(sequenceInstances.size() > 0); 386 387 if (sequenceInstances.size() < appData.getLastFoundTasks().getOccurrenceCount()) { 388 System.out.println(sequence.getId() + ": replaced task only " + 389 sequenceInstances.size() + " times instead of expected " + 327 390 appData.getLastFoundTasks().getOccurrenceCount()); 328 391 } … … 333 396 334 397 /** 335 * @param tree336 */ 337 private void determineVariantsOfTaskOccurrences(List<ITaskTreeNode> task,338 List<ISequence> sessions,339 RuleApplicationData appData)398 * 399 */ 400 private void harmonizeSequenceInstancesModel(ISequence sequence, 401 List<ITaskInstance> sequenceInstances, 402 int sequenceLength) 340 403 { 341 for (ISequence session : sessions) { 342 int index = -1; 343 344 List<ITaskTreeNode> children = session.getChildren(); 345 346 do { 347 index = getSubListIndex(children, task, ++index); 348 349 if (index > -1) { 350 ISequence taskOccurrence = RuleUtils.getSubSequenceInRange 351 (session, index, index + task.size() - 1, null, 352 taskTreeNodeFactory, taskTreeBuilder); 353 354 appData.addTaskOccurrence(taskOccurrence); 355 356 // let the index point to the last element the belongs the identified occurrence 357 index += task.size() - 1; 358 } 359 } 360 while (index > -1); 361 } 362 } 363 364 /** 365 * @param appData 366 * @return 367 */ 368 private ITaskTreeNode mergeVariantsOfTaskOccurrence(String taskId, 369 RuleApplicationData appData) 370 { 371 return mergeVariantsOfTasks(taskId, appData.getTaskOccurrences()); 372 } 373 374 /** 375 * @param appData 376 * @return 377 */ 378 private ITaskTreeNode mergeVariantsOfTasks(String description, List<ITaskTreeNode> variants) { 379 // merge but preserve lexically distinct variants 380 TaskTreeNodeMerger merger = new TaskTreeNodeMerger 381 (taskTreeNodeFactory, taskTreeBuilder, nodeComparator); 382 383 merger.mergeTaskNodes(variants); 384 385 if (variants.size() == 1) { 386 ITaskTreeNode replacement = variants.get(0); 387 taskTreeBuilder.setDescription(replacement, description); 388 return replacement; 389 } 390 else { 391 ISelection selection = taskTreeNodeFactory.createNewSelection(); 392 taskTreeBuilder.setDescription(selection, "variants of task " + description); 393 394 for (ITaskTreeNode variant : variants) { 395 taskTreeBuilder.addChild(selection, variant); 396 } 397 398 return selection; 399 } 400 } 401 402 /** 403 * @param task 404 * @param parent 405 * @param treeBuilder 406 * @param nodeFactory 407 * @param result 408 */ 409 private void replaceTaskOccurrences(List<ITaskTreeNode> task, 410 ITaskTreeNode replacement, 411 List<ISequence> sessions, 412 RuleApplicationData appData) 413 { 414 // now check the children themselves for an occurrence of the task 415 for (int i = 0; i < sessions.size(); i++) { 416 ISequence session = sessions.get(i); 417 418 int index = -1; 419 420 List<ITaskTreeNode> children = session.getChildren(); 421 422 do { 423 index = getSubListIndex(children, task, ++index); 424 425 if (index > -1) { 426 if ((!(replacement instanceof ISequence)) || 427 (task.size() < children.size())) 428 { 429 for (int j = index; j < index + task.size(); j++) { 430 taskTreeBuilder.removeChild(session, index); 431 } 432 433 taskTreeBuilder.addChild(session, index, replacement); 434 appData.incrementReplacementCounter(); 435 436 children = session.getChildren(); 437 } 438 else { 439 // the whole list of children is an occurrence of this task. So ask the 440 // caller of the method to replace the whole node 441 sessions.set(i, (ISequence) replacement); 442 appData.incrementReplacementCounter(); 404 405 // ensure for each subtask that lexically different variants are preserved 406 for (int subTaskIndex = 0; subTaskIndex < sequenceLength; subTaskIndex++) { 407 List<ITask> subTaskVariants = new LinkedList<ITask>(); 408 409 for (ITaskInstance sequenceInstance : sequenceInstances) { 410 ITask candidate = sequenceInstance.get(subTaskIndex).getTask(); 411 412 boolean found = false; 413 414 for (int i = 0; i < subTaskVariants.size(); i++) { 415 if (taskComparator.areLexicallyEqual(subTaskVariants.get(i), candidate)) { 416 taskBuilder.setTask 417 (sequenceInstance.get(subTaskIndex), subTaskVariants.get(i)); 418 419 found = true; 443 420 break; 444 421 } 445 422 } 423 424 if (!found) { 425 subTaskVariants.add(candidate); 426 } 427 } 428 429 // if there are more than one lexically different variant of the sub task at 430 // the considered position, adapt the sequence model at that position to have 431 // a selection of the different variants. In this case also adapt the 432 // generated sequence instances to correctly contain selection instances. If 433 // there is only one variant of sub tasks at the given position, simply set 434 // this variant as the sub task of the selection. In this case, the instances 435 // can be preserved as is 436 if (subTaskVariants.size() > 1) { 437 ISelection selection = taskFactory.createNewSelection(); 438 439 for (ITask variant : subTaskVariants) { 440 taskBuilder.addChild(selection, variant); 441 } 442 443 taskBuilder.addChild(sequence, selection); 444 445 for (ITaskInstance instance : sequenceInstances) { 446 ITaskInstance selectionInstance = 447 taskFactory.createNewTaskInstance(selection); 448 taskBuilder.addChild(selectionInstance, instance.get(subTaskIndex)); 449 taskBuilder.setTaskInstance(instance, subTaskIndex, selectionInstance); 450 } 451 } 452 else if (subTaskVariants.size() == 1) { 453 taskBuilder.addChild(sequence, subTaskVariants.get(0)); 454 } 455 } 456 } 457 458 /** 459 * @param tree 460 */ 461 private List<ITaskInstance> replaceTaskOccurrences(List<ITaskInstance> task, 462 List<IUserSession> sessions, 463 ISequence temporalTaskModel) 464 { 465 List<ITaskInstance> sequenceInstances = new LinkedList<ITaskInstance>(); 466 467 for (IUserSession session : sessions) { 468 int index = -1; 469 470 do { 471 index = getSubListIndex(session, task, ++index); 472 473 if (index > -1) { 474 sequenceInstances.add 475 (RuleUtils.createNewSubSequenceInRange 476 (session, index, index + task.size() - 1, temporalTaskModel, 477 taskFactory, taskBuilder)); 478 } 446 479 } 447 480 while (index > -1); 448 481 } 482 483 return sequenceInstances; 449 484 } 450 485 … … 454 489 * @return 455 490 */ 456 private int getSubListIndex( List<ITaskTreeNode>list,457 List<ITask TreeNode> subList,491 private int getSubListIndex(ITaskInstanceList list, 492 List<ITaskInstance> subList, 458 493 int startIndex) 459 494 { … … 465 500 466 501 for (int j = 0; j < subList.size(); j++) { 467 if (! nodeComparator.equals(list.get(i + j), subList.get(j))) {502 if (!taskComparator.equals(list.get(i + j), subList.get(j))) { 468 503 matchFound = false; 469 504 break; … … 479 514 return result; 480 515 } 516 517 /** 518 * @param trie 519 * @param object 520 * @return 521 */ 522 private int getSubListIndex(List<ITaskInstance> list, 523 List<ITaskInstance> subList, 524 int startIndex) 525 { 526 boolean matchFound; 527 int result = -1; 528 529 for (int i = startIndex; i <= list.size() - subList.size(); i++) { 530 matchFound = true; 531 532 for (int j = 0; j < subList.size(); j++) { 533 if (!taskComparator.equals(list.get(i + j), subList.get(j))) { 534 matchFound = false; 535 break; 536 } 537 } 538 539 if (matchFound) { 540 result = i; 541 break; 542 } 543 } 544 545 return result; 546 } 481 547 482 548 /** 483 549 * @author Patrick Harms 484 550 */ 485 private class MaxCountAndLongestTasksFinder implements TrieProcessor<ITask TreeNode> {551 private class MaxCountAndLongestTasksFinder implements TrieProcessor<ITaskInstance> { 486 552 487 553 /** … … 493 559 * 494 560 */ 495 private List<List<ITask TreeNode>> foundTasks = new LinkedList<List<ITaskTreeNode>>();561 private List<List<ITaskInstance>> foundTasks = new LinkedList<List<ITaskInstance>>(); 496 562 497 563 /** … … 507 573 */ 508 574 @Override 509 public TrieProcessor.Result process(List<ITask TreeNode> task, int count) {510 if ( task.size() < 2) {511 // ignore single nodes575 public TrieProcessor.Result process(List<ITaskInstance> foundTask, int count) { 576 if (foundTask.size() < 2) { 577 // ignore single tasks 512 578 return TrieProcessor.Result.CONTINUE; 513 579 } … … 519 585 520 586 if (this.currentCount > count) { 521 // ignore this children of this node, as they may have only smaller counts than587 // ignore this children of this task, as they may have only smaller counts than 522 588 // the already found tasks 523 589 return TrieProcessor.Result.SKIP_NODE; … … 536 602 boolean added = false; 537 603 for (int i = 0; i < foundTasks.size(); i++) { 538 if (foundTasks.get(i).size() < task.size()) {604 if (foundTasks.get(i).size() < foundTask.size()) { 539 605 // defensive copy 540 foundTasks.add(i, new LinkedList<ITask TreeNode>(task)); // defensive copy606 foundTasks.add(i, new LinkedList<ITaskInstance>(foundTask)); // defensive copy 541 607 added = true; 542 608 break; … … 545 611 546 612 if (!added) { 547 foundTasks.add(new LinkedList<ITask TreeNode>(task)); // defensive copy613 foundTasks.add(new LinkedList<ITaskInstance>(foundTask)); // defensive copy 548 614 } 549 615 } … … 571 637 // found a task that is a potential subtask. Check for this and remove the 572 638 // subtask if needed 573 List<ITask TreeNode> longTask = foundTasks.get(i);574 List<ITask TreeNode> shortTask = foundTasks.get(j);639 List<ITaskInstance> longTask = foundTasks.get(i); 640 List<ITaskInstance> shortTask = foundTasks.get(j); 575 641 576 642 if (getSubListIndex(longTask, shortTask, 0) > -1) { … … 598 664 * 599 665 */ 600 private List<I Sequence> sessions;601 602 /** 603 * 604 */ 605 private Trie<ITask TreeNode> lastTrie;666 private List<IUserSession> sessions; 667 668 /** 669 * 670 */ 671 private Trie<ITaskInstance> lastTrie; 606 672 607 673 /** … … 618 684 * 619 685 */ 620 private List<ITaskTreeNode> taskOccurrences = new LinkedList<ITaskTreeNode>(); 621 622 /** 623 * 624 */ 625 private int replacementCounter; 686 private boolean detectedAndReplacedTasks; 626 687 627 688 /** … … 638 699 * 639 700 */ 640 private RuleApplicationData(List<I Sequence> sessions) {701 private RuleApplicationData(List<IUserSession> sessions) { 641 702 this.sessions = sessions; 642 703 } … … 645 706 * @return the tree 646 707 */ 647 private List<I Sequence> getSessions() {708 private List<IUserSession> getSessions() { 648 709 return sessions; 649 710 } … … 652 713 * @param lastTrie the lastTrie to set 653 714 */ 654 private void setLastTrie(Trie<ITask TreeNode> lastTrie) {715 private void setLastTrie(Trie<ITaskInstance> lastTrie) { 655 716 this.lastTrie = lastTrie; 656 717 } … … 659 720 * @return the lastTrie 660 721 */ 661 private Trie<ITask TreeNode> getLastTrie() {722 private Trie<ITaskInstance> getLastTrie() { 662 723 return lastTrie; 663 724 } … … 692 753 693 754 /** 694 * @return the taskOccurrences695 */696 private void clearTaskOccurrences() {697 taskOccurrences.clear();698 }699 700 /**701 * @return the taskOccurrences702 */703 private void addTaskOccurrence(ITaskTreeNode taskOccurrence) {704 taskOccurrences.add(taskOccurrence);705 }706 707 /**708 * @return the taskOccurrences709 */710 private List<ITaskTreeNode> getTaskOccurrences() {711 return taskOccurrences;712 }713 714 /**715 755 * 716 756 */ 717 private void resetReplacementCounter() {718 replacementCounter = 0;757 private void detectedAndReplacedTasks(boolean detectedAndReplacedTasks) { 758 this.detectedAndReplacedTasks = detectedAndReplacedTasks; 719 759 } 720 760 … … 722 762 * 723 763 */ 724 private void incrementReplacementCounter() { 725 replacementCounter++; 726 } 727 728 /** 729 * 730 */ 731 private int getReplacementCounter() { 732 return replacementCounter; 764 private boolean detectedAndReplacedTasks() { 765 return detectedAndReplacedTasks; 733 766 } 734 767 … … 753 786 * @author Patrick Harms 754 787 */ 755 private static class Tasks implements Iterable<List<ITask TreeNode>> {788 private static class Tasks implements Iterable<List<ITaskInstance>> { 756 789 757 790 /** … … 763 796 * 764 797 */ 765 private List<List<ITask TreeNode>> sequences;798 private List<List<ITaskInstance>> sequences; 766 799 767 800 /** … … 769 802 * @param sequences 770 803 */ 771 private Tasks(int occurrenceCount, List<List<ITask TreeNode>> sequences) {804 private Tasks(int occurrenceCount, List<List<ITaskInstance>> sequences) { 772 805 super(); 773 806 this.occurrenceCount = occurrenceCount; … … 797 830 */ 798 831 @Override 799 public Iterator<List<ITask TreeNode>> iterator() {832 public Iterator<List<ITaskInstance>> iterator() { 800 833 return this.sequences.iterator(); 801 834 } … … 803 836 } 804 837 838 /** 839 * 840 */ 841 private class TaskComparator implements SymbolComparator<ITaskInstance> { 842 843 /** */ 844 private Comparer comparer; 845 846 /** */ 847 private Comparer lexicalComparer; 848 849 /** */ 850 private HashMap<Long, Boolean> equalityBuffer = new HashMap<Long, Boolean>(); 851 852 /** */ 853 private HashMap<Long, Boolean> lexicalEqualityBuffer; 854 855 /** 856 * 857 */ 858 public TaskComparator(TaskEqualityRuleManager taskEqualityRuleManager, 859 TaskEquality minimalNodeEquality) 860 { 861 super(); 862 863 if (minimalNodeEquality == TaskEquality.LEXICALLY_EQUAL) { 864 comparer = new LexicalComparer(taskEqualityRuleManager); 865 } 866 else if (minimalNodeEquality == TaskEquality.SYNTACTICALLY_EQUAL) { 867 comparer = new SyntacticalComparer(taskEqualityRuleManager); 868 } 869 else if (minimalNodeEquality == TaskEquality.SEMANTICALLY_EQUAL) { 870 comparer = new SemanticalComparer(taskEqualityRuleManager); 871 } 872 else { 873 comparer = new DefaultComparer(taskEqualityRuleManager, minimalNodeEquality); 874 } 875 876 if (minimalNodeEquality == TaskEquality.LEXICALLY_EQUAL) { 877 lexicalComparer = comparer; 878 lexicalEqualityBuffer = equalityBuffer; 879 } 880 else { 881 lexicalComparer = new LexicalComparer(taskEqualityRuleManager); 882 lexicalEqualityBuffer = new HashMap<Long, Boolean>(); 883 } 884 } 885 886 /* (non-Javadoc) 887 * @see de.ugoe.cs.autoquest.tasktrees.temporalrelation.SymbolComparator#equals(java.lang.Object, java.lang.Object) 888 */ 889 @Override 890 public boolean equals(ITaskInstance taskInstance1, ITaskInstance taskInstance2) { 891 return equals(taskInstance1.getTask(), taskInstance2.getTask()); 892 } 893 894 /** 895 * 896 */ 897 public boolean equals(ITask task1, ITask task2) { 898 Boolean result; 899 900 if (task1 != task2) { 901 if ((task1 instanceof IEventTask) && (task2 instanceof IEventTask)) { 902 long key = ((long) System.identityHashCode(task1)) << 32; 903 key += System.identityHashCode(task2); 904 905 result = equalityBuffer.get(key); 906 907 if (result == null) { 908 result = comparer.compare(task1, task2); 909 equalityBuffer.put(key, result); 910 } 911 } 912 else { 913 result = false; 914 } 915 } 916 else { 917 result = true; 918 } 919 920 return result; 921 } 922 923 /** 924 * 925 */ 926 public boolean areLexicallyEqual(ITask task1, ITask task2) { 927 Boolean result; 928 929 if (task1 != task2) { 930 long key = ((long) System.identityHashCode(task1)) << 32; 931 key += System.identityHashCode(task2); 932 933 result = lexicalEqualityBuffer.get(key); 934 935 if (result == null) { 936 result = lexicalComparer.compare(task1, task2); 937 lexicalEqualityBuffer.put(key, result); 938 } 939 } 940 else { 941 result = true; 942 } 943 944 return result; 945 } 946 } 947 948 /** 949 * 950 */ 951 private interface Comparer { 952 953 /** 954 * 955 */ 956 boolean compare(ITask task1, ITask task2); 957 } 958 959 /** 960 * 961 */ 962 private class LexicalComparer implements Comparer { 963 964 /** 965 * <p> 966 * the task equality manager needed for comparing tasks with each other 967 * </p> 968 */ 969 private TaskEqualityRuleManager taskEqualityRuleManager; 970 971 /** 972 * 973 */ 974 public LexicalComparer(TaskEqualityRuleManager taskEqualityRuleManager) { 975 this.taskEqualityRuleManager = taskEqualityRuleManager; 976 } 977 978 /** 979 * 980 */ 981 public boolean compare(ITask task1, ITask task2) { 982 return taskEqualityRuleManager.areLexicallyEqual(task1, task2); 983 } 984 } 985 986 /** 987 * 988 */ 989 private class SyntacticalComparer implements Comparer { 990 991 /** 992 * <p> 993 * the task equality manager needed for comparing tasks with each other 994 * </p> 995 */ 996 private TaskEqualityRuleManager taskEqualityRuleManager; 997 998 /** 999 * 1000 */ 1001 public SyntacticalComparer(TaskEqualityRuleManager taskEqualityRuleManager) { 1002 this.taskEqualityRuleManager = taskEqualityRuleManager; 1003 } 1004 1005 /** 1006 * 1007 */ 1008 public boolean compare(ITask task1, ITask task2) { 1009 return taskEqualityRuleManager.areSyntacticallyEqual(task1, task2); 1010 } 1011 } 1012 1013 /** 1014 * 1015 */ 1016 private class SemanticalComparer implements Comparer { 1017 1018 /** 1019 * <p> 1020 * the task equality manager needed for comparing tasks with each other 1021 * </p> 1022 */ 1023 private TaskEqualityRuleManager taskEqualityRuleManager; 1024 1025 /** 1026 * 1027 */ 1028 public SemanticalComparer(TaskEqualityRuleManager taskEqualityRuleManager) { 1029 this.taskEqualityRuleManager = taskEqualityRuleManager; 1030 } 1031 1032 /** 1033 * 1034 */ 1035 public boolean compare(ITask task1, ITask task2) { 1036 return taskEqualityRuleManager.areSemanticallyEqual(task1, task2); 1037 } 1038 } 1039 1040 /** 1041 * 1042 */ 1043 private class DefaultComparer implements Comparer { 1044 1045 /** 1046 * <p> 1047 * the task equality manager needed for comparing tasks with each other 1048 * </p> 1049 */ 1050 private TaskEqualityRuleManager taskEqualityRuleManager; 1051 1052 /** 1053 * <p> 1054 * the minimal task equality two identified sublists need to have to consider them as equal 1055 * </p> 1056 */ 1057 private TaskEquality minimalNodeEquality; 1058 1059 /** 1060 * 1061 */ 1062 public DefaultComparer(TaskEqualityRuleManager taskEqualityRuleManager, 1063 TaskEquality minimalNodeEquality) 1064 { 1065 this.taskEqualityRuleManager = taskEqualityRuleManager; 1066 this.minimalNodeEquality = minimalNodeEquality; 1067 } 1068 1069 /** 1070 * 1071 */ 1072 public boolean compare(ITask task1, ITask task2) { 1073 return taskEqualityRuleManager.areAtLeastEqual(task1, task2, minimalNodeEquality); 1074 } 1075 } 805 1076 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TemporalRelationshipRuleManager.java
r1131 r1146 22 22 import de.ugoe.cs.autoquest.eventcore.guimodel.IFrame; 23 23 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement; 24 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 25 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 24 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 25 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 29 31 import de.ugoe.cs.util.console.Console; 30 32 31 33 /** 34 * TODO update comment 35 * 32 36 * <p> 33 37 * This class is responsible for applying temporal relationship rules on a task tree. Through this, 34 38 * a flat task tree is restructured to have more depth but to include more temporal relationships 35 * between task tree nodes which are not only a major sequence. I.e. through the application of36 * rule iterations and selections of task tree nodes are detected. Which kind of temporal relations37 * between task tree nodes are detected depends on the {@link TemporalRelationshipRule}s known to39 * between tasks which are not only a major sequence. I.e. through the application of the 40 * rules iterations and selections of tasks are detected. Which kind of temporal relations 41 * between tasks are detected depends on the {@link ITaskInstanceListScopeRule}s known to 38 42 * this class. 39 43 * </p> 40 * <p>The class holds references to the appropriate {@link TemporalRelationshipRule}s and calls41 * their {@link TemporalRelationshipRule#apply(ITaskTreeNode, ITaskTreeBuilder, ITaskTreeNodeFactory, boolean)}42 * method for each nodein the task tree it is needed for. The general behavior of this class is44 * <p>The class holds references to the appropriate {@link ITaskInstanceListScopeRule}s and calls 45 * their {@link ITaskInstanceListScopeRule#apply(ITask, ITaskBuilder, ITaskFactory, boolean)} 46 * method for each task in the task tree it is needed for. The general behavior of this class is 43 47 * the following: 44 48 * <ol> … … 48 52 * </li> 49 53 * <li> 50 * then the {@link #applyRules(ITask TreeNode, ITaskTreeBuilder, ITaskTreeNodeFactory, boolean)}51 * method is called for a so far unstructured task tree node54 * then the {@link #applyRules(ITask, ITaskBuilder, ITaskFactory, boolean)} 55 * method is called for a so far unstructured task 52 56 * </li> 53 57 * <li> 54 58 * the class iterates its internal list of rules and calls their 55 * {@link TemporalRelationshipRule#apply(ITaskTreeNode, ITaskTreeBuilder, ITaskTreeNodeFactory, boolean)}59 * {@link ITaskInstanceListScopeRule#apply(ITask, ITaskBuilder, ITaskFactory, boolean)} 56 60 * method. 57 61 * </li> … … 69 73 * <li> 70 74 * if a rule returns, that it was applied, the same rule is applied again until it returns 71 * null or feasible. For each newly created parent nodeprovided in the rule application72 * result, the {@link #applyRules(ITask TreeNode, ITaskTreeBuilder, ITaskTreeNodeFactory, boolean)}75 * null or feasible. For each newly created parent task provided in the rule application 76 * result, the {@link #applyRules(ITask, ITaskBuilder, ITaskFactory, boolean)} 73 77 * method is called. 74 78 * </li> … … 76 80 * </li> 77 81 * </ol> 78 * Through this, all rules are tried to be applied at least once to the provided parent nodeand79 * all parent nodes created during the rule application.82 * Through this, all rules are tried to be applied at least once to the provided parent task and 83 * all parent tasks created during the rule application. 80 84 * </p> 81 85 * … … 86 90 /** 87 91 * <p> 88 * the node equality manager needed by the rules to compare task tree nodes with each other 89 * </p> 90 */ 91 private NodeEqualityRuleManager nodeEqualityRuleManager; 92 93 /** 94 * <p> 95 * the task tree node factory to be used during rule application 96 * </p> 97 */ 98 private ITaskTreeNodeFactory taskTreeNodeFactory; 99 100 /** 101 * <p> 102 * the task tree builder to be used during rule application 103 * </p> 104 */ 105 private ITaskTreeBuilder taskTreeBuilder; 92 * the task equality manager needed by the rules to compare tasks with each other 93 * </p> 94 */ 95 private TaskEqualityRuleManager taskEqualityRuleManager; 96 97 /** 98 * <p> 99 * the task factory to be used during rule application 100 * </p> 101 */ 102 private ITaskFactory taskFactory; 103 104 /** 105 * <p> 106 * the task builder to be used during rule application 107 * </p> 108 */ 109 private ITaskBuilder taskBuilder; 110 111 /** 112 * <p> 113 * the temporal relationship rules known to the manager that are executed on whole sessions. 114 * The rules are applied in the order they occur in this list. 115 * </p> 116 */ 117 private ISessionScopeRule[] sessionScopeRules; 106 118 107 119 /** … … 111 123 * </p> 112 124 */ 113 private TemporalRelationshipRule[] treeScopeRules; 114 115 /** 116 * <p> 117 * the temporal relationship rules known to the manager that are executed on whole sub trees. 118 * The rules are applied in the order they occur in this list. 119 * </p> 120 */ 121 private TemporalRelationshipRule[] nodeScopeRules; 125 private ITaskInstanceListScopeRule[] taskScopeRules; 122 126 123 127 /** … … 126 130 * </p> 127 131 * 128 * @param nodeEqualityRuleManager the nodeequality rule manager to be used by the known rules129 * for task tree nodecomparison during rule application130 * @param task TreeNodeFactory the nodefactory to be used for instantiating new task tree131 * nodes during rule application132 * @param task TreeBuilder the task tree builder to be used for linking task tree nodes132 * @param taskEqualityRuleManager the task equality rule manager to be used by the known rules 133 * for task comparison during rule application 134 * @param taskFactory the task factory to be used for instantiating new task tree 135 * tasks during rule application 136 * @param taskBuilder the task builder to be used for linking tasks 133 137 * with each other during rule application 134 138 */ 135 public TemporalRelationshipRuleManager( NodeEqualityRuleManager nodeEqualityRuleManager,136 ITask TreeNodeFactory taskTreeNodeFactory,137 ITask TreeBuilder taskTreeBuilder)139 public TemporalRelationshipRuleManager(TaskEqualityRuleManager taskEqualityRuleManager, 140 ITaskFactory taskFactory, 141 ITaskBuilder taskBuilder) 138 142 { 139 143 super(); 140 this. nodeEqualityRuleManager = nodeEqualityRuleManager;141 this.task TreeNodeFactory = taskTreeNodeFactory;142 this.task TreeBuilder = taskTreeBuilder;144 this.taskEqualityRuleManager = taskEqualityRuleManager; 145 this.taskFactory = taskFactory; 146 this.taskBuilder = taskBuilder; 143 147 } 144 148 … … 146 150 * <p> 147 151 * initialized the temporal relationship rule manager by instantiating the known rules and 148 * providing them with a reference to the nodeequality manager or other information they need.152 * providing them with a reference to the task equality manager or other information they need. 149 153 * </p> 150 154 */ … … 156 160 //frameFilter.add(ICanvas.class); 157 161 158 treeScopeRules = new TemporalRelationshipRule[] {162 sessionScopeRules = new ISessionScopeRule[] { 159 163 new SequenceForTaskDetectionRule 160 ( nodeEqualityRuleManager, NodeEquality.SEMANTICALLY_EQUAL,161 task TreeNodeFactory, taskTreeBuilder),164 (taskEqualityRuleManager, TaskEquality.SEMANTICALLY_EQUAL, 165 taskFactory, taskBuilder), 162 166 /*new DefaultTaskSequenceDetectionRule 163 ( nodeEqualityRuleManager, NodeEquality.SYNTACTICALLY_EQUAL,164 task TreeNodeFactory, taskTreeBuilder),167 (taskEqualityRuleManager, NodeEquality.SYNTACTICALLY_EQUAL, 168 taskFactory, taskTreeBuilder), 165 169 new DefaultTaskSequenceDetectionRule 166 ( nodeEqualityRuleManager, NodeEquality.LEXICALLY_EQUAL,167 task TreeNodeFactory, taskTreeBuilder),*/170 (taskEqualityRuleManager, NodeEquality.LEXICALLY_EQUAL, 171 taskFactory, taskTreeBuilder),*/ 168 172 /*new TreeScopeWrapperRule 169 173 (new DefaultIterationDetectionRule 170 ( nodeEqualityRuleManager, NodeEquality.LEXICALLY_EQUAL,171 task TreeNodeFactory, taskTreeBuilder)),174 (taskEqualityRuleManager, NodeEquality.LEXICALLY_EQUAL, 175 taskFactory, taskTreeBuilder)), 172 176 new TreeScopeWrapperRule 173 177 (new DefaultIterationDetectionRule 174 ( nodeEqualityRuleManager, NodeEquality.SYNTACTICALLY_EQUAL,175 task TreeNodeFactory, taskTreeBuilder)),178 (taskEqualityRuleManager, NodeEquality.SYNTACTICALLY_EQUAL, 179 taskFactory, taskTreeBuilder)), 176 180 new TreeScopeWrapperRule 177 181 (new DefaultIterationDetectionRule 178 ( nodeEqualityRuleManager, NodeEquality.SEMANTICALLY_EQUAL,179 task TreeNodeFactory, taskTreeBuilder))*/182 (taskEqualityRuleManager, NodeEquality.SEMANTICALLY_EQUAL, 183 taskFactory, taskTreeBuilder))*/ 180 184 }; 181 185 182 186 //treeScopeRules.add(new DefaultGuiElementSequenceDetectionRule(frameFilter)); 183 187 184 nodeScopeRules = new TemporalRelationshipRule[] { 185 //new SequenceOnGuiElementDetectionRule(taskTreeNodeFactory, taskTreeBuilder), 186 //new EventSequenceOnSameTargetDetectionRule(taskTreeNodeFactory, taskTreeBuilder), 187 new TrackBarSelectionDetectionRule 188 (nodeEqualityRuleManager, taskTreeNodeFactory, taskTreeBuilder), 189 //new DefaultGuiEventSequenceDetectionRule(taskTreeNodeFactory, taskTreeBuilder), 188 taskScopeRules = new ITaskInstanceListScopeRule[] { 189 //new SequenceOnGuiElementDetectionRule(taskFactory, taskTreeBuilder), 190 //new EventSequenceOnSameTargetDetectionRule(taskFactory, taskTreeBuilder), 191 //new TrackBarSelectionDetectionRule(taskEqualityRuleManager, taskFactory, taskBuilder), 192 //new DefaultGuiEventSequenceDetectionRule(taskFactory, taskTreeBuilder), 190 193 }; 191 194 … … 194 197 /** 195 198 * <p> 196 * applies the known rules to the provided parent node. For the creation of further nodes,197 * the provided builder and node factory are utilized. The method expectes, that no more data199 * applies the known rules to the provided sessions. For the creation of further tasks, 200 * the provided builder and task factory are utilized. The method expects, that no more data 198 201 * is available and, therefore, finalizes the rule application. 199 202 * </p> 200 203 * 201 * @param nodeFactory the node factory to be used for instantiating new task tree nodes.202 */ 203 public void applyRules( ITaskTreeNode parent) {204 applyRules( parent, true);205 } 206 207 /** 208 * <p> 209 * applies the known rules to the provided parent node. For the creation of further nodes,210 * the provided builder and nodefactory are utilized. If the finalize parameter is true, the204 * @param taskFactory the task factory to be used for instantiating new tasks. 205 */ 206 public void applyRules(List<IUserSession> sessions) { 207 applyRules(sessionScopeRules, sessions, ""); 208 } 209 210 /** 211 * <p> 212 * applies the known rules to the provided parent task. For the creation of further tasks, 213 * the provided builder and task factory are utilized. If the finalize parameter is true, the 211 214 * rule application is finalized as far as possible without waiting for further data. If it is 212 215 * false, the rule application is broken up at the first rule returning, that its application 213 * would be feasible. 216 * would be feasible. The method calls itself for each parent task created through the rule 217 * application. In this case, the finalize parameter is always true. 214 218 * </p> 215 219 * 216 * @param parent the parent node to apply the rules on 217 * @param finalize used to indicate, if the rule application shall break up if a rule would 218 * be feasible if further data was available, or not. 219 */ 220 public void applyRules(ITaskTreeNode parent, boolean finalize) { 221 applyRules(treeScopeRules, parent, finalize, ""); 222 } 223 224 /** 225 * <p> 226 * applies the known rules to the provided parent node. For the creation of further nodes, 227 * the provided builder and node factory are utilized. If the finalize parameter is true, the 228 * rule application is finalized as far as possible without waiting for further data. If it is 229 * false, the rule application is broken up at the first rule returning, that its application 230 * would be feasible. The method calls itself for each parent node created through the rule 231 * application. In this case, the finalize parameter is always true. 232 * </p> 233 * 234 * @param parent the parent node to apply the rules on 220 * @param parent the parent task to apply the rules on 235 221 * @param finalize used to indicate, if the rule application shall break up if a rule would 236 222 * be feasible if further data was available, or not. … … 238 224 * on the recursion depth of calling this method. 239 225 */ 240 private int applyRules(TemporalRelationshipRule[] rules, 241 ITaskTreeNode parent, 242 boolean finalize, 243 String logIndent) 226 private int applyRules(ISessionScopeRule[] rules, 227 List<IUserSession> sessions, 228 String logIndent) 244 229 { 245 Console.traceln(Level.FINER, logIndent + "applying rules for " + parent); 230 Console.traceln 231 (Level.FINER, logIndent + "applying rules for " + sessions.size() + " sessions"); 246 232 247 233 int noOfRuleApplications = 0; 248 234 249 for ( TemporalRelationshipRule rule : rules) {235 for (ISessionScopeRule rule : rules) { 250 236 RuleApplicationResult result; 251 237 do { 252 Console.traceln(Level.FINER, logIndent + "trying rule " + rule + " on " + parent);253 result = rule.apply( parent, finalize);238 Console.traceln(Level.FINER, logIndent + "trying rule " + rule); 239 result = rule.apply(sessions); 254 240 255 241 if ((result != null) && 256 242 (result.getRuleApplicationStatus() == RuleApplicationStatus.FINISHED)) 257 243 { 258 Console.traceln 259 (Level.FINE, logIndent + "applied rule " + rule + " on " + parent); 244 Console.traceln(Level.FINE, logIndent + "applied rule " + rule); 260 245 noOfRuleApplications++; 261 246 262 247 //dumpTask(parent, ""); 263 248 264 for (ITask TreeNode newParent : result.getNewlyCreatedParentNodes()) {249 for (ITaskInstance newParent : result.getNewlyCreatedTaskInstances()) { 265 250 noOfRuleApplications += 266 applyRules( nodeScopeRules, newParent, true, logIndent + " ");251 applyRules(taskScopeRules, newParent, logIndent + " "); 267 252 } 268 253 } … … 271 256 (result.getRuleApplicationStatus() == RuleApplicationStatus.FINISHED)); 272 257 273 if ((!finalize) &&274 (result != null) &&275 (result.getRuleApplicationStatus() == RuleApplicationStatus.FEASIBLE))276 {277 // in this case, don't go on applying rules, which should not be applied yet278 break;279 }280 258 } 281 259 … … 289 267 290 268 /** 269 * <p> 270 * applies the known rules to the provided parent task. For the creation of further tasks, 271 * the provided builder and task factory are utilized. If the finalize parameter is true, the 272 * rule application is finalized as far as possible without waiting for further data. If it is 273 * false, the rule application is broken up at the first rule returning, that its application 274 * would be feasible. The method calls itself for each parent task created through the rule 275 * application. In this case, the finalize parameter is always true. 276 * </p> 277 * 278 * @param parent the parent task to apply the rules on 279 * @param finalize used to indicate, if the rule application shall break up if a rule would 280 * be feasible if further data was available, or not. 281 * @param logIndent simply used for logging purposes to indent the log messages depending 282 * on the recursion depth of calling this method. 283 */ 284 private int applyRules(ITaskInstanceListScopeRule[] rules, 285 ITaskInstanceList taskInstances, 286 String logIndent) 287 { 288 Console.traceln(Level.FINER, logIndent + "applying rules for " + taskInstances.size() + 289 " task instances"); 290 291 int noOfRuleApplications = 0; 292 293 for (ITaskInstanceListScopeRule rule : rules) { 294 RuleApplicationResult result; 295 do { 296 Console.traceln 297 (Level.FINER, logIndent + "trying rule " + rule + " on " + taskInstances); 298 result = rule.apply(taskInstances); 299 300 if ((result != null) && 301 (result.getRuleApplicationStatus() == RuleApplicationStatus.FINISHED)) 302 { 303 Console.traceln 304 (Level.FINE, logIndent + "applied rule " + rule + " on " + taskInstances); 305 noOfRuleApplications++; 306 307 //dumpTask(parent, ""); 308 309 for (ITaskInstance newParent : result.getNewlyCreatedTaskInstances()) { 310 noOfRuleApplications += 311 applyRules(taskScopeRules, newParent, logIndent + " "); 312 } 313 } 314 } 315 while ((result != null) && 316 (result.getRuleApplicationStatus() == RuleApplicationStatus.FINISHED)); 317 } 318 319 if (noOfRuleApplications <= 0) { 320 Console.traceln(Level.FINE, logIndent + "no rules applied --> no temporal " + 321 "relationship generated"); 322 } 323 324 return noOfRuleApplications; 325 } 326 327 /** 291 328 * 292 329 */ 293 /*private void dumpTask(ITask TreeNodetask, String indent) {330 /*private void dumpTask(ITask task, String indent) { 294 331 StringBuffer message = new StringBuffer(); 295 332 message.append(indent); … … 304 341 305 342 if ((task.getChildren() != null) && (task.getChildren().size() > 0)) { 306 for (ITask TreeNodechild : task.getChildren()) {343 for (ITask child : task.getChildren()) { 307 344 dumpTask(child, indent + " "); 308 345 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IEventTask.java
r1114 r1146 24 24 * @author 2011, last modified by $Author: $ 25 25 */ 26 public interface IEventTask extends ITask TreeNode{26 public interface IEventTask extends ITask { 27 27 28 28 /** -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IIteration.java
r1114 r1146 21 21 * @author 2012, last modified by $Author: patrick$ 22 22 */ 23 public interface IIteration extends I TemporalRelationship {23 public interface IIteration extends IMarkingTemporalRelationship { 24 24 25 25 /** -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IOptional.java
r1126 r1146 21 21 * @author 2012, last modified by $Author: patrick$ 22 22 */ 23 public interface IOptional extends I TemporalRelationship {23 public interface IOptional extends IMarkingTemporalRelationship { 24 24 25 25 /** -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ISelection.java
r1114 r1146 21 21 * @author 2012, last modified by $Author: patrick$ 22 22 */ 23 public interface ISelection extends I TemporalRelationship {23 public interface ISelection extends IStructuringTemporalRelationship { 24 24 25 25 /** -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ISequence.java
r1114 r1146 21 21 * @author 2012, last modified by $Author: patrick$ 22 22 */ 23 public interface ISequence extends I TemporalRelationship {23 public interface ISequence extends IStructuringTemporalRelationship { 24 24 25 25 /** -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskBuilder.java
r1126 r1146 21 21 * @author 2012, last modified by $Author: patrick$ 22 22 */ 23 public interface ITask TreeBuilder {23 public interface ITaskBuilder { 24 24 25 25 /** 26 * 26 * @param taskInstance 27 * @param child 27 28 */ 28 void addChild(I Sequence parent, ITaskTreeNode child);29 void addChild(ITaskInstance taskInstance, ITaskInstance child) throws IllegalArgumentException; 29 30 30 31 /** 32 * <p> 33 * TODO: comment 34 * </p> 31 35 * 36 * @param session 37 * @param taskInstance 32 38 */ 33 void add Child(ISequence parent, int index, ITaskTreeNode child);39 void addExecutedTask(IUserSession session, ITaskInstance taskInstance); 34 40 35 41 /** … … 38 44 * @param i 39 45 */ 40 void setChild(ISequence parent, int index, ITaskTreeNode child); 46 void addTaskInstance(ITaskInstanceList taskInstanceList, ITaskInstance taskInstance); 47 48 /** 49 * 50 * @param parent 51 * @param i 52 */ 53 void addTaskInstance(ITaskInstanceList taskInstanceList, int index, ITaskInstance taskInstance); 54 55 /** 56 * 57 * @param parent 58 * @param i 59 */ 60 void setTaskInstance(ITaskInstanceList taskInstanceList, int index, ITaskInstance taskInstance); 61 62 /** 63 * <p> 64 * TODO: comment 65 * </p> 66 * 67 * @param instance2 68 * @param task 69 */ 70 void setTask(ITaskInstance taskInstance, ITask task); 71 72 /** 73 * 74 */ 75 void addChild(ISequence parent, ITask child); 76 77 /** 78 * 79 */ 80 void addChild(ISequence parent, int index, ITask child); 81 82 /** 83 * 84 * @param parent 85 * @param i 86 */ 87 void setChild(ISequence parent, int index, ITask child); 41 88 42 89 /** … … 44 91 * @param task 45 92 */ 46 void addChild(ISelection parent, ITask TreeNodechild);93 void addChild(ISelection parent, ITask child); 47 94 48 95 /** … … 51 98 * @param newChild 52 99 */ 53 void set Child(IIteration iteration, ITaskTreeNodenewChild);100 void setMarkedTask(IIteration iteration, ITask newChild); 54 101 55 102 /** … … 58 105 * @param newChild 59 106 */ 60 void set Child(IOptional optional, ITaskTreeNodenewChild);107 void setMarkedTask(IOptional optional, ITask newChild); 61 108 62 109 /** … … 72 119 * @param i 73 120 */ 74 void removeChild(ISelection parent, ITaskTreeNode child); 121 void removeChild(ISelection parent, ITask child); 122 123 /** 124 * 125 * @param parent 126 * @param i 127 */ 128 void removeTaskInstance(ITaskInstanceList taskInstanceList, int index); 75 129 76 130 /** … … 79 133 * @param i 80 134 */ 81 void replaceChild(ISelection parent, ITask TreeNode oldChild, ITaskTreeNodenewChild);135 void replaceChild(ISelection parent, ITask oldChild, ITask newChild); 82 136 83 137 /** … … 86 140 * @param i 87 141 */ 88 void setDescription(ITask TreeNode node, String description);142 void setDescription(ITask task, String description); 89 143 90 144 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskFactory.java
r1126 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.treeifc; 16 16 17 import java.util.List; 18 17 19 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 18 20 import de.ugoe.cs.autoquest.eventcore.IEventType; … … 24 26 * @author 2012, last modified by $Author: patrick$ 25 27 */ 26 public interface ITaskTreeNodeFactory 27 { 28 public interface ITaskFactory { 28 29 29 /**30 *31 * @param eventType32 * @param eventTarget33 * @return34 */35 IEventTask createNewEventTask(IEventType eventType, IEventTarget eventTarget);30 /** 31 * 32 * @param eventType 33 * @param eventTarget 34 * @return 35 */ 36 IEventTask createNewEventTask(IEventType eventType, IEventTarget eventTarget); 36 37 37 /**38 *39 * @return40 */41 ISequence createNewSequence();38 /** 39 * 40 * @return 41 */ 42 ISequence createNewSequence(); 42 43 43 /**44 *45 * @return46 */47 IIteration createNewIteration();44 /** 45 * 46 * @return 47 */ 48 IIteration createNewIteration(); 48 49 49 /**50 *51 * @return52 */53 IOptional createNewOptional();50 /** 51 * 52 * @return 53 */ 54 IOptional createNewOptional(); 54 55 55 /**56 *57 * @return58 */59 ISelection createNewSelection();56 /** 57 * 58 * @return 59 */ 60 ISelection createNewSelection(); 60 61 61 /** 62 * 63 * @param rootSequence 64 * @return 65 */ 66 ITaskTree createTaskTree(ITaskTreeNode root); 62 /** 63 * 64 * @return 65 */ 66 ITaskInstance createNewTaskInstance(ITask task); 67 68 /** 69 * 70 * @return 71 */ 72 ITaskInstanceList createNewTaskInstanceList(); 73 74 /** 75 * 76 * @return 77 */ 78 IUserSession createUserSession(); 79 80 /** 81 * 82 * @param rootSequence 83 * @return 84 */ 85 ITaskModel createTaskModel(List<IUserSession> userSessions); 67 86 68 87 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskInstance.java
r1113 r1146 23 23 * @author 2011, last modified by $Author: $ 24 24 */ 25 public interface ITask TreeNode extends Cloneable{25 public interface ITaskInstance extends ITaskInstanceList { 26 26 27 27 /** 28 28 * 29 29 */ 30 public String getName();30 public List<ITaskInstance> getChildren(); 31 31 32 32 /** 33 33 * 34 34 */ 35 public String getDescription();35 public ITask getTask(); 36 36 37 37 /** 38 38 * 39 39 */ 40 public List<ITaskTreeNode> getChildren(); 41 42 /** 43 * 44 */ 45 public boolean equals(ITaskTreeNode taskTreeNode); 40 public boolean equals(ITaskInstance taskInstance); 46 41 47 42 /** … … 53 48 * 54 49 */ 55 public ITask TreeNode clone();56 50 public ITaskInstance clone(); 51 57 52 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskModel.java
r1114 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.treeifc; 16 16 17 import java.util.Map; 17 import java.io.Serializable; 18 import java.util.Collection; 19 import java.util.List; 18 20 19 21 /** … … 23 25 * @author 2012, last modified by $Author: patrick$ 24 26 */ 25 public interface ITask Tree extends Cloneable {27 public interface ITaskModel extends Cloneable, Serializable { 26 28 27 29 /** 28 30 * 29 31 */ 30 public ITaskTreeNode getRoot();32 public List<IUserSession> getUserSessions(); 31 33 32 34 /** 33 35 * 34 36 */ 35 public Map<ITaskTreeNode, ITaskTreeNodeInfo> getTaskMap();37 public Collection<ITask> getTasks(); 36 38 37 39 /** 38 40 * 39 41 */ 40 public ITaskTree clone(); 42 public ITaskInfo getTaskInfo(ITask task); 43 44 /** 45 * 46 */ 47 public ITaskModel clone(); 41 48 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITemporalRelationship.java
r1113 r1146 21 21 * @author 2012, last modified by $Author: patrick$ 22 22 */ 23 public interface ITemporalRelationship extends ITask TreeNode{23 public interface ITemporalRelationship extends ITask { 24 24 25 25 /** -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/EventTask.java
r1126 r1146 18 18 import de.ugoe.cs.autoquest.eventcore.IEventType; 19 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;21 20 22 21 /** … … 26 25 * @author 2011, last modified by $Author: $ 27 26 */ 28 public class EventTask extends TaskTreeNodeimplements IEventTask {27 class EventTask extends Task implements IEventTask { 29 28 29 /** */ 30 private static final long serialVersionUID = 1L; 31 30 32 /** */ 31 33 private IEventType eventType; … … 39 41 */ 40 42 EventTask(IEventType eventType, IEventTarget eventTarget) { 41 super(eventType.toString()); 42 super.setDescription("executed on " + eventTarget); 43 super.setDescription(eventType.toString() + " executed on " + eventTarget); 43 44 this.eventType = eventType; 44 45 this.eventTarget = eventTarget; … … 62 63 * (non-Javadoc) 63 64 * 64 * @see de.harms.ctte.Task#equals(de.harms.ctte.Task)65 */66 @Override67 public boolean equals(ITaskTreeNode task) {68 if (!(task instanceof IEventTask)) {69 return false;70 }71 72 IEventType otherType = ((IEventTask) task).getEventType();73 IEventTarget otherTarget = ((IEventTask) task).getEventTarget();74 75 if (((eventType == otherType) ||76 ((eventType != null) && (eventType.equals(otherType)))) &&77 ((eventTarget == otherTarget) ||78 ((eventTarget != null) && (eventTarget.equals(otherTarget)))))79 {80 return true;81 }82 83 return false;84 }85 86 /*87 * (non-Javadoc)88 *89 65 * @see de.harms.tasktrees.TreeNode#clone() 90 66 */ -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/Iteration.java
r1126 r1146 16 16 17 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 18 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional; 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 19 20 20 21 /** … … 24 25 * @author 2012, last modified by $Author: patrick$ 25 26 */ 26 public class Iteration extends TaskTreeNode implements IIteration { 27 class Iteration extends MarkingTemporalRelationship implements IIteration { 28 29 /** */ 30 private static final long serialVersionUID = 1L; 27 31 28 32 /** … … 30 34 */ 31 35 Iteration() { 32 super(" Iteration");36 super("iteration"); 33 37 } 34 38 35 /* 36 * (non-Javadoc) 37 * 38 * @see de.ugoe.cs.tasktree.treeifc.TaskTreeNode#addChild(TaskTreeNode) 39 /* (non-Javadoc) 40 * @see MarkingTemporalRelationship#setMarkedTask(ITask) 39 41 */ 40 42 @Override 41 public void addChild(ITaskTreeNode child) { 42 // adding more children is not allowed 43 throw new UnsupportedOperationException 44 ("iterations may not have a list of children. Use setChild() instead."); 45 } 46 47 /** 48 * TODO: comment 49 * 50 * @param selection 51 * @return 52 */ 53 public void setChild(ITaskTreeNode child) { 54 if (super.getChildren().size() > 0) { 55 super.removeChild(0); 43 protected void setMarkedTask(ITask markedTask) { 44 if (markedTask instanceof IIteration) { 45 throw new IllegalArgumentException 46 ("the marked task of an iteration must not be an iteration"); 56 47 } 57 super.addChild(child); 48 else if (markedTask instanceof IOptional) { 49 throw new IllegalArgumentException 50 ("the marked task of an iteration must not be an optional"); 51 } 52 53 super.setMarkedTask(markedTask); 58 54 } 59 55 -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/Optional.java
r1126 r1146 16 16 17 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional; 18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 19 19 20 20 /** … … 24 24 * @author 2012, last modified by $Author: patrick$ 25 25 */ 26 public class Optional extends TaskTreeNode implements IOptional { 26 class Optional extends MarkingTemporalRelationship implements IOptional { 27 28 /** */ 29 private static final long serialVersionUID = 1L; 27 30 28 31 /** … … 30 33 */ 31 34 Optional() { 32 super(" Optional");35 super("optionality"); 33 36 } 34 35 /* 36 * (non-Javadoc) 37 * 38 * @see de.ugoe.cs.tasktree.treeifc.TaskTreeNode#addChild(TaskTreeNode) 37 38 /* (non-Javadoc) 39 * @see MarkingTemporalRelationship#setMarkedTask(ITask) 39 40 */ 40 41 @Override 41 public void addChild(ITaskTreeNode child) { 42 // adding more children is not allowed 43 throw new UnsupportedOperationException 44 ("optionalities may not have a list of children. Use setChild() instead."); 45 } 46 47 /** 48 * TODO: comment 49 * 50 * @param selection 51 * @return 52 */ 53 public void setChild(ITaskTreeNode child) { 54 if (super.getChildren().size() > 0) { 55 super.removeChild(0); 42 protected void setMarkedTask(ITask markedTask) { 43 if (markedTask instanceof IOptional) { 44 throw new IllegalArgumentException 45 ("the marked task of an optional must not be an optional"); 56 46 } 57 super.addChild(child); 47 48 super.setMarkedTask(markedTask); 58 49 } 59 50 … … 67 58 return (Optional) super.clone(); 68 59 } 69 70 60 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/Selection.java
r1113 r1146 16 16 17 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 18 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 18 19 19 20 /** … … 23 24 * @author 2012, last modified by $Author: patrick$ 24 25 */ 25 public class Selection extends TaskTreeNode implements ISelection { 26 class Selection extends StructuringTemporalRelationship implements ISelection { 27 28 /** */ 29 private static final long serialVersionUID = 1L; 26 30 27 31 /** … … 31 35 */ 32 36 Selection() { 33 super(" Selection");37 super("selection"); 34 38 } 35 39 … … 44 48 } 45 49 50 /** 51 * <p> 52 * TODO: comment 53 * </p> 54 * 55 * @param i 56 * @param newChild 57 */ 58 public void addChild(ITask newChild) { 59 super.addChild(newChild); 60 super.setDescription("selection of " + newChild); 61 } 62 63 /** 64 * <p> 65 * TODO: comment 66 * </p> 67 * 68 * @param i 69 * @param newChild 70 */ 71 public void addChild(int index, ITask newChild) { 72 super.addChild(index, newChild); 73 super.setDescription("selection of " + newChild); 74 } 75 46 76 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/Sequence.java
r1113 r1146 23 23 * @author 2012, last modified by $Author: patrick$ 24 24 */ 25 public class Sequence extends TaskTreeNodeimplements ISequence {25 class Sequence extends StructuringTemporalRelationship implements ISequence { 26 26 27 /** */ 28 private static final long serialVersionUID = 1L; 29 27 30 /** 28 31 * TODO: comment … … 31 34 */ 32 35 Sequence() { 33 super("Sequence"); 34 } 35 36 /** 37 * TODO: comment 38 * 39 * @param name 40 */ 41 Sequence(String name) { 42 super(name); 36 super("sequence"); 43 37 } 44 38 -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/Task.java
r1126 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.treeimpl; 16 16 17 import java.util.Collections; 18 import java.util.LinkedList; 19 import java.util.List; 20 21 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 22 18 23 19 /** … … 27 23 * @author 2011, last modified by $Author: $ 28 24 */ 29 public class TaskTreeNode implements ITaskTreeNode { 25 class Task implements ITask { 26 27 /** */ 28 private static final long serialVersionUID = 1L; 29 30 30 /** */ 31 31 private static int temporalId = 0; 32 32 33 33 /** */ 34 private String name;34 private int id; 35 35 36 36 /** */ 37 37 private String description; 38 38 39 /** */40 private int id;41 42 /** children */43 private List<ITaskTreeNode> children;44 45 39 /** 46 40 * 47 41 */ 48 public TaskTreeNode(String name) { 49 this.name = name; 42 Task() { 50 43 id = getNewId(); 51 44 } … … 67 60 * @return Returns the name. 68 61 */ 69 public String getName() {70 return name;62 public int getId() { 63 return id; 71 64 } 72 65 … … 81 74 } 82 75 83 /**84 *85 */86 public synchronized List<ITaskTreeNode> getChildren() {87 if ((children == null) || (children.size() == 0)) {88 return new LinkedList<ITaskTreeNode>();89 }90 91 return Collections.unmodifiableList(children);92 }93 94 76 /* 95 77 * (non-Javadoc) … … 98 80 */ 99 81 @Override 100 public boolean equals(ITaskTreeNode taskTreeNode) { 101 if (!this.getClass().isInstance(taskTreeNode)) { 102 return false; 103 } 104 105 if (taskTreeNode.hashCode() != hashCode()) { 106 return false; 107 } 108 109 TaskTreeNode other = (TaskTreeNode) taskTreeNode; 110 111 if (id != other.id) { 112 return false; 113 } 114 115 if (!name.equals(other.name)) { 116 return false; 117 } 118 119 synchronized (other) { 120 if (children == null) { 121 return (other.children == null); 122 } 123 else if (other.children == null) { 124 return (children == null); 125 } 126 else if (other.children.size() != children.size()) { 127 return false; 128 } 129 130 for (int i = 0; i < children.size(); i++) { 131 if (!children.get(i).equals(other.children.get(i))) { 132 return false; 133 } 134 } 135 } 136 137 return true; 82 public final boolean equals(ITask task) { 83 // tasks are only equal if they are identical or if they have the same id 84 // (may happen, if they are cloned) 85 return (this == task) || (this.hashCode() == task.hashCode()); 138 86 } 139 87 … … 145 93 @Override 146 94 public synchronized int hashCode() { 147 return getClass().getSimpleName().hashCode();95 return id; 148 96 } 149 97 … … 156 104 public synchronized String toString() { 157 105 StringBuffer result = new StringBuffer(); 158 result.append(name); 159 result.append('('); 106 result.append("task "); 160 107 result.append(id); 161 108 162 109 if (description != null) { 163 result.append(" ,");110 result.append(" ("); 164 111 result.append(description); 112 result.append(')'); 165 113 } 166 114 167 if (children != null) { 168 result.append(", "); 169 result.append(children.size()); 170 result.append(" children"); 115 return result.toString(); 116 } 117 118 /* 119 * (non-Javadoc) 120 * 121 * @see java.lang.Object#clone() 122 */ 123 @Override 124 public synchronized ITask clone() { 125 Task clone = null; 126 try { 127 clone = (Task) super.clone(); 171 128 } 172 173 result.append(')'); 174 return result.toString(); 129 catch (CloneNotSupportedException e) { 130 // this should never happen. Therefore simply dump the exception 131 e.printStackTrace(); 132 } 133 134 return clone; 175 135 } 176 136 … … 185 145 } 186 146 187 /**188 *189 */190 synchronized void addChild(ITaskTreeNode child) {191 if (children == null) {192 children = new LinkedList<ITaskTreeNode>();193 }194 195 children.add(child);196 }197 198 /**199 *200 */201 synchronized void addChild(int index, ITaskTreeNode child) {202 if (children == null) {203 children = new LinkedList<ITaskTreeNode>();204 }205 206 children.add(index, child);207 }208 209 /**210 * TODO: comment211 *212 * @param i213 * @return214 */215 synchronized ITaskTreeNode removeChild(int index) {216 return children.remove(index);217 }218 219 /*220 * (non-Javadoc)221 *222 * @see java.lang.Object#clone()223 */224 @Override225 public synchronized ITaskTreeNode clone() {226 TaskTreeNode clone = null;227 try {228 clone = (TaskTreeNode) super.clone();229 230 if (children != null) {231 clone.children = new LinkedList<ITaskTreeNode>();232 233 for (ITaskTreeNode child : children) {234 clone.children.add(child.clone());235 }236 }237 238 }239 catch (CloneNotSupportedException e) {240 // this should never happen. Therefore simply dump the exception241 e.printStackTrace();242 }243 244 return clone;245 }246 247 147 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/TaskBuilder.java
r1126 r1146 17 17 import java.util.List; 18 18 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 19 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 20 21 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional; 21 22 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 22 23 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 23 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 25 29 26 30 /** … … 30 34 * @author 2012, last modified by $Author: patrick$ 31 35 */ 32 public class TaskTreeBuilder implements ITaskTreeBuilder { 36 public class TaskBuilder implements ITaskBuilder { 37 38 /* (non-Javadoc) 39 * @see ITaskBuilder#addChild(ITaskInstance, ITaskInstance) 40 */ 41 @Override 42 public void addChild(ITaskInstance parent, ITaskInstance child) throws IllegalArgumentException 43 { 44 if (!(parent instanceof TaskInstance)) { 45 throw new IllegalArgumentException 46 ("illegal type of task instance provided: " + parent.getClass()); 47 } 48 49 if (!(child instanceof TaskInstance)) { 50 throw new IllegalArgumentException 51 ("illegal type of task instance provided: " + parent.getClass()); 52 } 53 54 // check, that the correct number of children for the distinct types are added 55 ITask task = parent.getTask(); 56 57 if (task instanceof IEventTask) { 58 throw new IllegalArgumentException 59 ("can not add children to a task instance of an event task"); 60 } 61 else if (task instanceof ISelection) { 62 if (parent.getChildren().size() > 0) { 63 throw new IllegalArgumentException 64 ("the instance of a selection must have at most one child"); 65 } 66 } 67 else if (task instanceof IOptional) { 68 if (parent.getChildren().size() > 1) { 69 throw new IllegalArgumentException 70 ("the instance of an optional must have at most one child"); 71 } 72 } 73 /* else if (task instanceof IIteration) { 74 for (ITaskInstance childInstance : parent.getChildren()) { 75 if (!childInstance.getTask().equals(child.getTask())) { 76 throw new IllegalArgumentException 77 ("all children of an instance of an iteration must have exactly the " + 78 "same type"); 79 } 80 } 81 } 82 83 boolean foundChildTask = false; 84 if (parent.getTask() instanceof IStructuringTemporalRelationship) { 85 IStructuringTemporalRelationship parentTask = 86 (IStructuringTemporalRelationship) parent.getTask(); 87 88 for (ITask parentTaskChild : parentTask.getChildren()) { 89 if (parentTaskChild.equals(child.getTask())) { 90 foundChildTask = true; 91 break; 92 } 93 } 94 } 95 else if (parent.getTask() instanceof IMarkingTemporalRelationship) { 96 IMarkingTemporalRelationship parentTask = 97 (IMarkingTemporalRelationship) parent.getTask(); 98 99 foundChildTask = parentTask.getMarkedTask() != null ? 100 parentTask.getMarkedTask().equals(child.getTask()) : false; 101 } 102 103 if (!foundChildTask) { 104 throw new IllegalArgumentException 105 ("the task of the child instance to be added does not belong to the children " + 106 "of the task of the parent instance"); 107 }*/ 108 109 // finally, after all checks are positive, add the child 110 ((TaskInstance) parent).addChild(child); 111 } 112 113 /* (non-Javadoc) 114 * @see ITaskBuilder#addExecutedTask(IUserSession, ITaskInstance) 115 */ 116 @Override 117 public void addExecutedTask(IUserSession session, ITaskInstance taskInstance) { 118 if (!(session instanceof UserSession)) { 119 throw new IllegalArgumentException 120 ("illegal type of session provided: " + session.getClass()); 121 } 122 123 if (!(taskInstance instanceof TaskInstance)) { 124 throw new IllegalArgumentException 125 ("illegal type of task instance provided: " + taskInstance.getClass()); 126 } 127 128 ((UserSession) session).addExecutedTask(taskInstance); 129 } 130 131 /* (non-Javadoc) 132 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder#addTaskInstance(de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList, de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance) 133 */ 134 @Override 135 public void addTaskInstance(ITaskInstanceList taskInstanceList, ITaskInstance taskInstance) { 136 if (taskInstanceList instanceof TaskInstance) { 137 ((TaskInstance) taskInstanceList).addChild(taskInstance); 138 } 139 else if (taskInstanceList instanceof UserSession) { 140 ((UserSession) taskInstanceList).addExecutedTask(taskInstance); 141 } 142 else { 143 throw new IllegalArgumentException 144 ("illegal type of task instance list provided: " + taskInstanceList.getClass()); 145 } 146 } 147 148 /* (non-Javadoc) 149 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder#addTaskInstance(de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList, int, de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance) 150 */ 151 @Override 152 public void addTaskInstance(ITaskInstanceList taskInstanceList, 153 int index, 154 ITaskInstance taskInstance) 155 { 156 if (taskInstanceList instanceof TaskInstance) { 157 ((TaskInstance) taskInstanceList).addChild(index, taskInstance); 158 } 159 else if (taskInstanceList instanceof UserSession) { 160 ((UserSession) taskInstanceList).addExecutedTask(index, taskInstance); 161 } 162 else { 163 throw new IllegalArgumentException 164 ("illegal type of task instance list provided: " + taskInstanceList.getClass()); 165 } 166 } 167 168 /* (non-Javadoc) 169 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder#setTaskInstance(de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList, int, de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance) 170 */ 171 @Override 172 public void setTaskInstance(ITaskInstanceList taskInstanceList, 173 int index, 174 ITaskInstance taskInstance) 175 { 176 if (taskInstanceList instanceof TaskInstance) { 177 ((TaskInstance) taskInstanceList).removeChild(index); 178 ((TaskInstance) taskInstanceList).addChild(index, taskInstance); 179 } 180 else if (taskInstanceList instanceof UserSession) { 181 ((UserSession) taskInstanceList).removeExecutedTask(index); 182 ((UserSession) taskInstanceList).addExecutedTask(index, taskInstance); 183 } 184 else { 185 throw new IllegalArgumentException 186 ("illegal type of task instance list provided: " + taskInstanceList.getClass()); 187 } 188 } 189 190 /* (non-Javadoc) 191 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder#setTask(de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance, de.ugoe.cs.autoquest.tasktrees.treeifc.ITask) 192 */ 193 @Override 194 public void setTask(ITaskInstance taskInstance, ITask task) { 195 if (!(taskInstance instanceof TaskInstance)) { 196 throw new IllegalArgumentException 197 ("illegal type of task instance provided: " + taskInstance.getClass()); 198 } 199 200 ((TaskInstance) taskInstance).setTask(task); 201 } 33 202 34 203 /* … … 38 207 */ 39 208 @Override 40 public void addChild(ISequence parent, ITask TreeNodechild) {209 public void addChild(ISequence parent, ITask child) { 41 210 if (!(parent instanceof Sequence)) { 42 211 throw new IllegalArgumentException 43 ("illegal type of task tree node provided: " + parent.getClass());44 } 45 46 addChildInternal( parent, -1, child);212 ("illegal type of sequence provided: " + parent.getClass()); 213 } 214 215 addChildInternal((Sequence) parent, -1, child); 47 216 } 48 217 … … 53 222 */ 54 223 @Override 55 public void addChild(ISequence parent, int index, ITask TreeNodechild) {224 public void addChild(ISequence parent, int index, ITask child) { 56 225 if (!(parent instanceof Sequence)) { 57 226 throw new IllegalArgumentException 58 ("illegal type of task tree node provided: " + parent.getClass());59 } 60 61 addChildInternal( parent, index, child);227 ("illegal type of sequence provided: " + parent.getClass()); 228 } 229 230 addChildInternal((Sequence) parent, index, child); 62 231 } 63 232 … … 66 235 */ 67 236 @Override 68 public void setChild(ISequence parent, int index, ITask TreeNodechild) {237 public void setChild(ISequence parent, int index, ITask child) { 69 238 if (!(parent instanceof Sequence)) { 70 239 throw new IllegalArgumentException 71 ("illegal type of task tree node provided: " + parent.getClass());72 } 73 74 (( TaskTreeNode) parent).removeChild(index);75 addChildInternal( parent, index, child);240 ("illegal type of sequence provided: " + parent.getClass()); 241 } 242 243 ((Sequence) parent).removeChild(index); 244 addChildInternal((Sequence) parent, index, child); 76 245 } 77 246 … … 82 251 */ 83 252 @Override 84 public void addChild(ISelection parent, ITask TreeNodechild) {253 public void addChild(ISelection parent, ITask child) { 85 254 if (!(parent instanceof Selection)) { 86 255 throw new IllegalArgumentException 87 ("illegal type of task tree nodeprovided: " + parent.getClass());88 } 89 90 addChildInternal( parent, -1, child);256 ("illegal type of selection provided: " + parent.getClass()); 257 } 258 259 addChildInternal((Selection) parent, -1, child); 91 260 } 92 261 … … 97 266 */ 98 267 @Override 99 public void set Child(IIteration iteration, ITaskTreeNodenewChild) {268 public void setMarkedTask(IIteration iteration, ITask newChild) { 100 269 if (!(iteration instanceof Iteration)) { 101 270 throw new IllegalArgumentException … … 103 272 } 104 273 105 if (!(newChild instanceof Task TreeNode)) {106 throw new IllegalArgumentException 107 ("illegal type of task tree nodeprovided: " + newChild.getClass());108 } 109 110 ((Iteration) iteration).set Child(newChild);274 if (!(newChild instanceof Task)) { 275 throw new IllegalArgumentException 276 ("illegal type of task provided: " + newChild.getClass()); 277 } 278 279 ((Iteration) iteration).setMarkedTask(newChild); 111 280 } 112 281 … … 115 284 */ 116 285 @Override 117 public void set Child(IOptional optional, ITaskTreeNodenewChild) {286 public void setMarkedTask(IOptional optional, ITask newChild) { 118 287 if (!(optional instanceof Optional)) { 119 288 throw new IllegalArgumentException … … 121 290 } 122 291 123 if (!(newChild instanceof Task TreeNode)) {124 throw new IllegalArgumentException 125 ("illegal type of task tree nodeprovided: " + newChild.getClass());126 } 127 128 ((Optional) optional).set Child(newChild);292 if (!(newChild instanceof Task)) { 293 throw new IllegalArgumentException 294 ("illegal type of task provided: " + newChild.getClass()); 295 } 296 297 ((Optional) optional).setMarkedTask(newChild); 129 298 } 130 299 … … 136 305 @Override 137 306 public void removeChild(ISequence parent, int index) { 138 if (!(parent instanceof TaskTreeNode)) {139 throw new IllegalArgumentException 140 ("illegal type of task tree node provided: " + parent.getClass());141 } 142 143 (( TaskTreeNode) parent).removeChild(index);307 if (!(parent instanceof Sequence)) { 308 throw new IllegalArgumentException 309 ("illegal type of sequence provided: " + parent.getClass()); 310 } 311 312 ((Sequence) parent).removeChild(index); 144 313 } 145 314 … … 150 319 */ 151 320 @Override 152 public void removeChild(ISelection parent, ITask TreeNodechild) {153 if (!(parent instanceof TaskTreeNode)) {154 throw new IllegalArgumentException 155 ("illegal type of task tree nodeprovided: " + parent.getClass());156 } 157 158 List<ITask TreeNode> children = parent.getChildren();321 public void removeChild(ISelection parent, ITask child) { 322 if (!(parent instanceof Selection)) { 323 throw new IllegalArgumentException 324 ("illegal type of selection provided: " + parent.getClass()); 325 } 326 327 List<ITask> children = parent.getChildren(); 159 328 160 329 for (int i = 0; i < children.size(); i++) { … … 162 331 ((children.get(i) != null) && (children.get(i).equals(child)))) 163 332 { 164 (( TaskTreeNode) parent).removeChild(i);333 ((Selection) parent).removeChild(i); 165 334 break; 166 335 } … … 169 338 170 339 /* (non-Javadoc) 340 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder#removeTaskInstance(de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList, int) 341 */ 342 @Override 343 public void removeTaskInstance(ITaskInstanceList taskInstanceList, int index) { 344 if (taskInstanceList instanceof TaskInstance) { 345 ((TaskInstance) taskInstanceList).removeChild(index); 346 } 347 else if (taskInstanceList instanceof UserSession) { 348 ((UserSession) taskInstanceList).removeExecutedTask(index); 349 } 350 else { 351 throw new IllegalArgumentException 352 ("illegal type of task instance list provided: " + taskInstanceList.getClass()); 353 } 354 } 355 356 /* (non-Javadoc) 171 357 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder#replaceChild(de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection, de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode, de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode) 172 358 */ 173 359 @Override 174 public void replaceChild(ISelection parent, ITask TreeNode oldChild, ITaskTreeNodenewChild) {175 if (!(parent instanceof TaskTreeNode)) {176 throw new IllegalArgumentException 177 ("illegal type of task tree nodeprovided: " + parent.getClass());178 } 179 180 List<ITask TreeNode> children = parent.getChildren();360 public void replaceChild(ISelection parent, ITask oldChild, ITask newChild) { 361 if (!(parent instanceof Selection)) { 362 throw new IllegalArgumentException 363 ("illegal type of selection provided: " + parent.getClass()); 364 } 365 366 List<ITask> children = parent.getChildren(); 181 367 182 368 for (int i = 0; i < children.size(); i++) { … … 184 370 ((children.get(i) != null) && (children.get(i).equals(oldChild)))) 185 371 { 186 (( TaskTreeNode) parent).removeChild(i);187 (( TaskTreeNode) parent).addChild(i, newChild);372 ((Selection) parent).removeChild(i); 373 ((Selection) parent).addChild(i, newChild); 188 374 break; 189 375 } … … 197 383 */ 198 384 @Override 199 public void setDescription(ITask TreeNodeparent, String description) {200 if (!(parent instanceof Task TreeNode)) {201 throw new IllegalArgumentException 202 ("illegal type of task tree nodeprovided: " + parent.getClass());203 } 204 205 ((Task TreeNode) parent).setDescription(description);385 public void setDescription(ITask parent, String description) { 386 if (!(parent instanceof Task)) { 387 throw new IllegalArgumentException 388 ("illegal type of task provided: " + parent.getClass()); 389 } 390 391 ((Task) parent).setDescription(description); 206 392 } 207 393 … … 209 395 * 210 396 */ 211 private void addChildInternal( ITaskTreeNode parent, int index, ITaskTreeNodechild) {212 if (!(child instanceof Task TreeNode)) {213 throw new IllegalArgumentException 214 ("illegal type of task tree nodeprovided: " + child.getClass());397 private void addChildInternal(StructuringTemporalRelationship parent, int index, ITask child) { 398 if (!(child instanceof Task)) { 399 throw new IllegalArgumentException 400 ("illegal type of task provided: " + child.getClass()); 215 401 } 216 402 217 403 if (index > -1) { 218 ((TaskTreeNode) parent).addChild(index, child);404 parent.addChild(index, child); 219 405 } 220 406 else { 221 ((TaskTreeNode) parent).addChild(child);407 parent.addChild(child); 222 408 } 223 409 } -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/TaskFactory.java
r1126 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.treeimpl; 16 16 17 import java.util.List; 18 17 19 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 18 20 import de.ugoe.cs.autoquest.eventcore.IEventType; … … 22 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 23 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 27 32 28 33 /** … … 32 37 * @author 2012, last modified by $Author: patrick$ 33 38 */ 34 public class Task TreeNodeFactory implements ITaskTreeNodeFactory {39 public class TaskFactory implements ITaskFactory { 35 40 36 41 /* … … 82 87 } 83 88 84 /* 85 * (non-Javadoc) 86 * 87 * @see 88 * de.ugoe.cs.tasktree.treeifc.TaskTreeNodeFactory#createTaskTree(de.ugoe.cs.tasktree.treeifc 89 * .TaskTreeNode) 89 /* (non-Javadoc) 90 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory#createNewTaskInstance(ITask) 90 91 */ 91 92 @Override 92 public ITaskTree createTaskTree(ITaskTreeNode root) { 93 return new TaskTree(root); 93 public ITaskInstance createNewTaskInstance(ITask task) { 94 return new TaskInstance(task); 95 } 96 97 /* (non-Javadoc) 98 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory#createNewTaskInstanceList() 99 */ 100 @Override 101 public ITaskInstanceList createNewTaskInstanceList() { 102 return new TaskInstance(new Sequence()); 103 } 104 105 /* (non-Javadoc) 106 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory#createUserSession() 107 */ 108 @Override 109 public IUserSession createUserSession() { 110 return new UserSession(); 111 } 112 113 /* (non-Javadoc) 114 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory#createTaskModel(IUserSession) 115 */ 116 @Override 117 public ITaskModel createTaskModel(List<IUserSession> userSessions) { 118 return new TaskModel(userSessions); 94 119 } 95 120 -
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeimpl/TaskModel.java
r1132 r1146 15 15 package de.ugoe.cs.autoquest.tasktrees.treeimpl; 16 16 17 import java.util.Collection; 18 import java.util.Collections; 17 19 import java.util.HashMap; 20 import java.util.List; 18 21 import java.util.Map; 19 22 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 21 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 22 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeInfo; 23 import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship; 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInfo; 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 23 30 24 31 /** … … 28 35 * @author 2012, last modified by $Author: patrick$ 29 36 */ 30 public class TaskTree implements ITaskTree{37 class TaskModel implements ITaskModel { 31 38 32 /** the map of nodes*/33 private Map<ITaskTreeNode, ITaskTreeNodeInfo> taskMap;39 /** */ 40 private static final long serialVersionUID = 1L; 34 41 35 /** the root node of the task tree */ 36 private ITaskTreeNode rootNode; 42 /** the map of tasks */ 43 private List<IUserSession> userSessions; 44 45 /** the map of tasks */ 46 private Map<ITask, TaskInfo> taskMap = new HashMap<ITask, TaskInfo>(); 37 47 38 48 /** 39 * TODO: comment 40 * 49 * 41 50 */ 42 TaskTree(ITaskTreeNode rootNode) { 43 this.rootNode = rootNode; 51 TaskModel(List<IUserSession> userSessions) { 52 if ((userSessions == null) || (userSessions.size() == 0)) { 53 throw new IllegalArgumentException("user sessions must not be null"); 54 } 55 56 this.userSessions = userSessions; 57 58 for (IUserSession session : this.userSessions) { 59 for (ITaskInstance taskInstance : session) { 60 addTaskToMap(taskInstance.getTask()); 61 } 62 } 44 63 } 45 64 46 /* 47 * (non-Javadoc) 48 * 49 * @see de.ugoe.cs.tasktree.treeifc.TaskTree#getRoot() 65 66 /* (non-Javadoc) 67 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel#getUserSessions() 50 68 */ 51 69 @Override 52 public ITaskTreeNode getRoot() {53 return rootNode;70 public List<IUserSession> getUserSessions() { 71 return Collections.unmodifiableList(userSessions); 54 72 } 55 73 56 /* 57 * (non-Javadoc) 58 * 59 * @see de.ugoe.cs.tasktree.treeifc.TaskTree#getTaskMap() 74 75 /* (non-Javadoc) 76 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel#getTasks() 60 77 */ 61 78 @Override 62 public synchronized Map<ITaskTreeNode, ITaskTreeNodeInfo> getTaskMap() { 63 if (taskMap == null) { 64 taskMap = new HashMap<ITaskTreeNode, ITaskTreeNodeInfo>(); 65 addNodeToMap(rootNode, null); 66 } 67 return taskMap; 79 public Collection<ITask> getTasks() { 80 return Collections.unmodifiableCollection(taskMap.keySet()); 81 } 82 83 84 /* (non-Javadoc) 85 * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel#getTaskInfo(de.ugoe.cs.autoquest.tasktrees.treeifc.ITask) 86 */ 87 @Override 88 public ITaskInfo getTaskInfo(ITask task) { 89 return taskMap.get(task); 68 90 } 69 91 70 92 /** 71 * TODO: comment 72 * 73 * @param rootNode 93 * 74 94 */ 75 private void add NodeToMap(ITaskTreeNode node, ITaskTreeNode parent) {76 NodeInfo nodeInfo = (NodeInfo) taskMap.get(node);95 private void addTaskToMap(ITask task) { 96 TaskInfo taskInfo = taskMap.get(task); 77 97 78 if ( nodeInfo == null) {79 nodeInfo = new NodeInfo(node);80 taskMap.put( node, nodeInfo);98 if (taskInfo == null) { 99 taskInfo = new TaskInfo(task); 100 taskMap.put(task, taskInfo); 81 101 } 82 102 83 if (parent != null) { 84 // through first removing an existing parent it is assured, that a parent is recorded 85 // only once. This is needed, because parent may be reused in a tree as well, but we 86 // always iterate the whole tree 87 //nodeInfo.removeParent(parent); 88 nodeInfo.addParent(parent); 103 if (task instanceof IStructuringTemporalRelationship) { 104 for (ITask child : ((IStructuringTemporalRelationship) task).getChildren()) { 105 addTaskToMap(child); 106 } 89 107 } 90 91 for (ITaskTreeNode child : node.getChildren()) { 92 addNodeToMap(child, node); 108 else if (task instanceof IMarkingTemporalRelationship) { 109 addTaskToMap(((IMarkingTemporalRelationship) task).getMarkedTask()); 93 110 } 94 111 } … … 100 117 */ 101 118 @Override 102 public TaskTree clone() { 103 TaskTree clone = null; 104 try { 105 clone = (TaskTree) super.clone(); 106 107 clone.rootNode = rootNode.clone(); 108 109 // the clone will create the task map itself, when it is first retrieved 110 clone.taskMap = null; 111 112 } 113 catch (CloneNotSupportedException e) { 114 // this should never happen. Therefore simply dump the exception 115 e.printStackTrace(); 116 } 117 118 return clone; 119 public TaskModel clone() { 120 return new TaskModel(userSessions); 119 121 } 120 122 -
trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/tasktrees/TaskTreeChecker.java
r1123 r1146 17 17 import static org.junit.Assert.*; 18 18 19 import java.io.FileNotFoundException;20 import java.io.FileOutputStream;21 import java.io.PrintWriter;22 19 import java.util.ArrayList; 23 20 import java.util.HashMap; … … 33 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 34 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 35 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 36 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 37 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeInfo; 32 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 33 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 34 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 35 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 38 36 39 37 /** … … 56 54 57 55 /** 58 * TODO: comment 59 * 56 * 60 57 */ 61 58 public TaskTreeChecker() { … … 64 61 65 62 /** 66 * TODO: comment 67 * 63 * 68 64 */ 69 65 public TaskTreeChecker(boolean doTrace) { … … 74 70 * 75 71 */ 76 public void assertTaskTree(String taskTreeSpec, ITaskTree taskTree) { 77 Map<ITaskTreeNode, Integer> taskMapCopy = new HashMap<ITaskTreeNode, Integer>(); 78 79 for (Map.Entry<ITaskTreeNode, ITaskTreeNodeInfo> entry : taskTree.getTaskMap().entrySet()) { 80 if (entry.getValue().getNoOfOccurencesInTree() > 0) { 81 taskMapCopy.put(entry.getKey(), entry.getValue().getNoOfOccurencesInTree()); 82 } 83 else { 84 taskMapCopy.put(entry.getKey(), 1); 85 } 86 } 87 72 public void assertTaskInstanceList(String userSessionSpec, ITaskInstanceList taskInstances) { 88 73 if (doTrace) { 89 dumpTaskMap(taskMapCopy); 90 } 91 92 TaskSpec task = null; 93 94 Matcher taskMatcher = taskPattern.matcher(taskTreeSpec); 74 new TaskTreeEncoder().encode(taskInstances, System.err); 75 } 76 77 TaskSpec taskInstanceSpec = null; 78 79 Matcher taskMatcher = taskPattern.matcher(userSessionSpec); 80 81 Map<String, ITask> tasks = new HashMap<String, ITask>(); 95 82 96 83 while (taskMatcher.find()) { 97 84 98 task = parseTask(taskMatcher); 99 100 if (task != null) { 101 assertTaskAndChildrenInMapAndRemove(task, taskMapCopy); 102 } 103 } 104 105 assertTrue("more tasks in map, than expected", taskMapCopy.isEmpty()); 106 } 107 108 /** 109 * <p> 110 * TODO: comment 111 * </p> 112 * 113 * @param oracle 114 * @param result 115 */ 116 public void assertTaskNodesEqual(ITaskTreeNode expected, ITaskTreeNode checked) { 85 taskInstanceSpec = parseTaskInstance(taskMatcher); 86 87 if (taskInstanceSpec != null) { 88 assertTaskInstanceList(taskInstanceSpec, taskInstances, tasks); 89 } 90 } 91 } 92 93 /** 94 * 95 */ 96 public void assertTaskInstanceListsEqual(ITaskInstanceList expected, ITaskInstanceList checked) 97 { 117 98 if (expected == null) { 118 99 assertNull("null", checked); … … 123 104 assertEquals(expected.toString() + ": types do not match", 124 105 expected.getClass(), checked.getClass()); 125 assertEquals(expected.toString() + ": names do not match", 126 expected.getName(), checked.getName()); 127 128 List<ITaskTreeNode> expectedChildren = expected.getChildren(); 129 List<ITaskTreeNode> checkedChildren = checked.getChildren(); 106 107 if ((expected != null) && (expected.size() > 0)) { 108 assertNotNull(expected.toString() + ": children not there", checked); 109 assertEquals(expected.toString() + ": different number of children", 110 expected.size(), checked.size()); 111 112 Map<ITask, ITask> equalTasksMap = new HashMap<ITask, ITask>(); 113 for (int i = 0; i < expected.size(); i++) { 114 assertTaskInstancesEqual(expected.get(i), checked.get(i), equalTasksMap); 115 } 116 } 117 else { 118 assertTrue(expected.toString() + ": unexpected children", 119 (checked == null) || (checked.size() == 0)); 120 } 121 } 122 } 123 124 /** 125 * 126 */ 127 public void assertTaskInstancesEqual(ITaskInstance expected, ITaskInstance checked) { 128 Map<ITask, ITask> equalTasksMap = new HashMap<ITask, ITask>(); 129 assertTaskInstancesEqual(expected, checked, equalTasksMap); 130 } 131 132 /** 133 * 134 */ 135 private void assertTaskInstancesEqual(ITaskInstance expected, 136 ITaskInstance checked, 137 Map<ITask, ITask> equalTasksMap) 138 { 139 if (expected == null) { 140 assertNull("null", checked); 141 } 142 else { 143 assertNotNull(expected.toString(), checked); 144 145 assertEquals(expected.toString() + ": types do not match", 146 expected.getClass(), checked.getClass()); 147 148 if (equalTasksMap.containsKey(expected.getTask())) { 149 assertEquals(expected.toString() + ": tasks do not match", 150 checked.getTask(), equalTasksMap.get(expected.getTask())); 151 } 152 else { 153 equalTasksMap.put(expected.getTask(), checked.getTask()); 154 } 155 156 List<ITaskInstance> expectedChildren = expected.getChildren(); 157 List<ITaskInstance> checkedChildren = checked.getChildren(); 130 158 131 159 if ((expectedChildren != null) && (expectedChildren.size() > 0)) { … … 136 164 if (expected instanceof ISequence) { 137 165 for (int i = 0; i < expectedChildren.size(); i++) { 138 assertTask NodesEqual(expectedChildren.get(i), checkedChildren.get(i));166 assertTaskInstancesEqual(expectedChildren.get(i), checkedChildren.get(i)); 139 167 } 140 168 } … … 144 172 for (int j = 0; j < checkedChildren.size(); j++) { 145 173 try { 146 assertTask NodesEqual174 assertTaskInstancesEqual 147 175 (expectedChildren.get(i), checkedChildren.get(j)); 148 176 found = true; … … 166 194 167 195 /** 168 * TODO: comment169 196 * 170 * @param taskTree 171 */ 172 public void dumpAsCheckString(ITaskTree taskTree) { 173 dumpNodeAsCheckString(taskTree.getRoot(), new int[4], ""); 174 } 175 176 /** 177 * TODO: comment 178 * 179 * @param root 180 * @param string 181 */ 182 private void dumpNodeAsCheckString(ITaskTreeNode node, int[] typeCounters, String indent) { 183 System.out.print(" \""); 184 System.out.print(indent); 185 186 if (node instanceof ISequence) { 187 System.out.print("Sequence sequence"); 188 System.out.print(typeCounters[0]++); 189 System.out.println(" {\" +"); 190 } 191 else if (node instanceof IIteration) { 192 System.out.print("Iteration iteration"); 193 System.out.print(typeCounters[1]++); 194 System.out.println(" {\" +"); 195 } 196 else if (node instanceof ISelection) { 197 System.out.print("Selection selection"); 198 System.out.print(typeCounters[2]++); 199 System.out.println(" {\" +"); 200 } 201 else if (node instanceof IEventTask) { 202 if (((IEventTask) node).getEventType() instanceof TextInput) { 203 System.out.print("TextInputEvent textInput"); 204 System.out.print(typeCounters[3]++); 205 System.out.print(" \""); 206 System.out.print(((TextInput) ((IEventTask) node).getEventType()).getEnteredText()); 207 System.out.print("\""); 208 } 209 else { 210 System.out.print("Event "); 211 System.out.print(((IEventTask) node).getEventType().getName()); 212 } 213 System.out.print(" {}\" +"); 214 } 215 else { 216 fail("unknown type of node in task tree " + node); 217 } 218 219 for (ITaskTreeNode child : node.getChildren()) { 220 dumpNodeAsCheckString(child, typeCounters, indent + " "); 221 } 222 223 if (!(node instanceof IEventTask)) { 224 System.out.print(" \""); 225 System.out.print(indent); 226 System.out.print("}\" +"); 227 } 228 229 System.out.println(); 230 } 231 232 /** 233 * TODO: comment 234 * 235 * @param taskTree 236 */ 237 public void dumpFullTaskTree(ITaskTree taskTree) throws FileNotFoundException { 238 PrintWriter out = null; 239 try { 240 out = new PrintWriter(new FileOutputStream("taskTree.txt")); 241 dumpFullNode(taskTree.getRoot(), out, "", 0); 242 } 243 finally { 244 if (out != null) { 245 out.close(); 246 } 247 } 248 249 } 250 251 /** 252 * 253 */ 254 private void dumpFullNode(ITaskTreeNode node, PrintWriter out, String indent, int index) { 255 if (node instanceof ISequence) { 256 if (index > 0) { 257 out.println(); 258 } 259 out.print(indent); 260 out.print(node.toString()); 261 out.println(" {"); 262 } 263 else if (node instanceof IIteration) { 264 if (index > 0) { 265 out.println(); 266 } 267 out.print(indent); 268 out.print(node.toString()); 269 out.println(" {"); 270 } 271 else if (node instanceof ISelection) { 272 if (index > 0) { 273 out.println(); 274 } 275 out.print(indent); 276 out.print(node.toString()); 277 out.println(" {"); 278 } 279 else if (node instanceof IEventTask) { 280 out.print(indent); 281 out.print(((IEventTask) node).getEventType()); 282 out.print(" "); 283 out.print(((IEventTask) node).getEventTarget().getStringIdentifier()); 284 // if (((IEventTask) node).getEventTarget() instanceof IGUIElement) { 285 // out.print(" "); 286 // out.print(((IGUIElement) ((IEventTask) node).getEventTarget()).getSpecification()); 287 // } 288 } 289 else { 290 fail("unknown type of node in task tree " + node); 291 } 292 293 int i = 0; 294 for (ITaskTreeNode child : node.getChildren()) { 295 dumpFullNode(child, out, indent + " ", i++); 296 } 297 298 if (!(node instanceof IEventTask)) { 299 out.print(indent); 300 out.print("}"); 301 } 302 303 out.println(); 304 } 305 306 /** 307 * 308 */ 309 private TaskSpec parseTask(Matcher taskMatcher) { 197 */ 198 private TaskSpec parseTaskInstance(Matcher taskMatcher) { 310 199 if ("}".equals(taskMatcher.group(1))) { 311 200 throw new IllegalArgumentException("invalid task specification"); … … 338 227 List<TaskSpec> children = new ArrayList<TaskSpec>(); 339 228 while (taskMatcher.find() && !"}".equals(taskMatcher.group(0))) { 340 children.add(parseTask (taskMatcher));229 children.add(parseTaskInstance(taskMatcher)); 341 230 } 342 231 … … 352 241 * @param taskMapCopy 353 242 */ 354 private void assertTaskAndChildrenInMapAndRemove(TaskSpec task, 355 Map<ITaskTreeNode, Integer> taskMap) 243 private void assertTaskInstanceList(TaskSpec taskSpec, 244 ITaskInstanceList taskInstances, 245 Map<String, ITask> tasks) 356 246 { 357 for (Map.Entry<ITaskTreeNode, Integer> entry : taskMap.entrySet()) { 358 if (taskSpecEqualsTask(task, entry.getKey())) { 359 if (task.children != null) { 360 for (TaskSpec child : task.children) { 361 assertTaskAndChildrenInMapAndRemove(child, taskMap); 362 } 363 } 364 365 int count = taskMap.get(entry.getKey()); 366 if (count == 1) { 367 taskMap.remove(entry.getKey()); 368 } 369 else { 370 taskMap.put(entry.getKey(), count - 1); 371 } 372 return; 373 } 374 } 375 376 fail("expected task " + task.type + " " + task.name + " not included in task map"); 377 } 378 379 /** 380 * 381 */ 382 private boolean taskSpecEqualsTask(TaskSpec taskSpec, ITaskTreeNode task) { 247 if (doTrace) { 248 System.err.println("\ncomparing " + taskSpec.type + " with " + taskInstances + "\n"); 249 } 250 251 if ((taskInstances instanceof IUserSession) && (!"UserSession".equals(taskSpec.type))) { 252 fail("can not compare a task instance with a user session"); 253 } 254 else if ((!(taskInstances instanceof IUserSession)) && 255 (!"TaskInstances".equals(taskSpec.type))) 256 { 257 fail("can not compare a task instance with a task instance list"); 258 } 259 260 if (taskSpec.children.length != taskInstances.size()) { 261 fail("number of task instances in task instance list does not match"); 262 } 263 264 for (int i = 0; i < taskInstances.size(); i++) { 265 TaskSpec childSpec = taskSpec.children[i]; 266 assertTrue(taskSpecEqualsTaskInstance(childSpec, taskInstances.get(i), tasks)); 267 } 268 } 269 270 /** 271 * 272 */ 273 private boolean taskSpecEqualsTaskInstance(TaskSpec taskSpec, 274 ITaskInstance taskInstance, 275 Map<String, ITask> tasks) 276 { 383 277 if (doTrace) { 384 278 System.err.println("comparing " + taskSpec.name + " with"); 385 dumpTask(task, 0, ""); 386 } 387 279 new TaskTreeEncoder().encode(taskInstance, System.err); 280 } 281 282 ITask task = taskInstance.getTask(); 283 388 284 if (("Event".equals(taskSpec.type) && (!(task instanceof IEventTask))) || 389 285 ("TextInputEvent".equals(taskSpec.type) && … … 396 292 if (doTrace) { 397 293 System.err.println("task types do not match: " + taskSpec.type + " != " + 398 task.getClass().getSimpleName() + "\n");294 task.getClass().getSimpleName() + "\n"); 399 295 } 400 296 return false; … … 440 336 } 441 337 } 442 443 if (((taskSpec.children == null) && (task.getChildren().size() > 0)) || 444 ((taskSpec.children != null) && (taskSpec.children.length != task.getChildren().size()))) 338 339 // check the task name against the map 340 if (tasks.containsKey(taskSpec.name)) { 341 if (!tasks.get(taskSpec.name).equals(task)) { 342 if (doTrace) { 343 System.err.println("the task instance is not of the expected task: " + 344 taskSpec.name + " != " + task + "\n"); 345 } 346 return false; 347 } 348 } 349 else if (tasks.containsValue(task)) { 350 if (doTrace) { 351 System.err.println("the task of the task instance " + taskSpec.name + 352 " should be different to another one but it isn't\n"); 353 } 354 return false; 355 } 356 else { 357 tasks.put(taskSpec.name, task); 358 } 359 360 if (((taskSpec.children == null) && (taskInstance.getChildren().size() > 0)) || 361 ((taskSpec.children != null) && 362 (taskSpec.children.length != taskInstance.getChildren().size()))) 445 363 { 446 364 if (doTrace) { … … 448 366 ("numbers of children do not match: " + 449 367 (taskSpec.children == null ? "0" : taskSpec.children.length) + " != " + 450 (task.getChildren() == null ? "0" : task.getChildren().size()) + "\n"); 368 (taskInstance.getChildren() == null ? "0" : 369 taskInstance.getChildren().size()) + "\n"); 451 370 } 452 371 return false; 453 372 } 454 373 455 Iterator<ITask TreeNode> children = task.getChildren().iterator();374 Iterator<ITaskInstance> children = taskInstance.getChildren().iterator(); 456 375 if (taskSpec.children != null) { 457 376 for (TaskSpec child : taskSpec.children) { 458 if (!taskSpecEqualsTask (child, children.next())) {377 if (!taskSpecEqualsTaskInstance(child, children.next(), tasks)) { 459 378 if (doTrace) { 460 379 System.err.println("one of the children does not match\n"); … … 478 397 } 479 398 } 480 481 /**482 *483 */484 private void dumpTaskMap(Map<ITaskTreeNode, Integer> taskMap) {485 System.err.println();486 for (Map.Entry<ITaskTreeNode, Integer> entry : taskMap.entrySet()) {487 dumpTask(entry.getKey(), entry.getValue(), "");488 System.err.println();489 }490 }491 492 /**493 *494 */495 private void dumpTask(ITaskTreeNode task, int count, String indent) {496 System.err.print(indent);497 System.err.print(task);498 System.err.print(" ");499 System.err.print(task.getDescription());500 System.err.print(" ");501 502 if (count > 0) {503 System.err.print("(");504 System.err.print(count);505 System.err.print(" occurrences)");506 }507 508 System.err.println();509 510 if ((task.getChildren() != null) && (task.getChildren().size() > 0)) {511 for (ITaskTreeNode child : task.getChildren()) {512 dumpTask(child, 0, indent + " ");513 }514 }515 }516 399 517 400 /** 518 * TODO comment 519 * 520 * @version $Revision: $ $Date: $ 521 * @author 2011, last modified by $Author: $ 401 * 522 402 */ 523 403 private class TaskSpec { -
trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/tasktrees/TaskTreeDecoder.java
r1123 r1146 26 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 27 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder; 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 31 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 32 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 33 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 31 34 import de.ugoe.cs.autoquest.test.DummyGUIElement; 32 35 … … 37 40 * @author 2012, last modified by $Author: patrick$ 38 41 */ 39 public class TaskTree Instantiator {40 41 /** */ 42 private static Pattern task Pattern = Pattern.compile("([^{}]+)\\{|\\}");43 44 /** */ 45 private static Pattern task DetailsPattern =42 public class TaskTreeDecoder { 43 44 /** */ 45 private static Pattern taskInstancePattern = Pattern.compile("([^{}]+)\\{|\\}"); 46 47 /** */ 48 private static Pattern taskInstanceDetailsPattern = 46 49 Pattern.compile("\\s*(\\w*)\\s*([\\w\\(\\)\"]*)\\s*((\\w*)|(\".*\"))?"); 47 50 48 51 /** */ 49 private ITask TreeNodeFactory taskTreeNodeFactory;50 51 /** */ 52 private ITask TreeBuilder taskTreeBuilder;52 private ITaskFactory taskFactory; 53 54 /** */ 55 private ITaskBuilder taskBuilder; 53 56 54 57 /** */ 55 58 Map<String, IEventTarget> targets = new HashMap<String, IEventTarget>(); 56 59 60 /** */ 61 Map<String, ITask> tasks = new HashMap<String, ITask>(); 62 57 63 /** 58 64 * 59 65 */ 60 public TaskTreeInstantiator(ITaskTreeNodeFactory taskTreeNodeFactory, 61 ITaskTreeBuilder taskTreeBuilder) 62 { 66 public TaskTreeDecoder(ITaskFactory taskFactory, ITaskBuilder taskBuilder) { 63 67 super(); 64 this.task TreeNodeFactory = taskTreeNodeFactory;65 this.task TreeBuilder = taskTreeBuilder;68 this.taskFactory = taskFactory; 69 this.taskBuilder = taskBuilder; 66 70 } 67 71 … … 69 73 * 70 74 */ 71 public ITask TreeNode instantiateTaskTree(String taskTreeSpec) {72 ITask TreeNode task= null;73 74 Matcher taskMatcher = task Pattern.matcher(taskTreeSpec);75 public ITaskInstanceList decode(String taskTreeSpec) { 76 ITaskInstanceList taskInstanceList = null; 77 78 Matcher taskMatcher = taskInstancePattern.matcher(taskTreeSpec); 75 79 76 80 if (taskMatcher.find()) { 77 task = parseTask(taskMatcher);81 taskInstanceList = parseTaskInstanceList(taskMatcher); 78 82 } 79 83 … … 82 86 } 83 87 84 return task ;88 return taskInstanceList; 85 89 } 86 90 … … 88 92 * 89 93 */ 90 private ITask TreeNode parseTask(Matcher taskMatcher) {94 private ITaskInstanceList parseTaskInstanceList(Matcher taskMatcher) { 91 95 if ("}".equals(taskMatcher.group(1))) { 92 throw new IllegalArgumentException("invalid task specification");96 throw new IllegalArgumentException("invalid task instance list specification"); 93 97 } 94 98 95 99 String taskDetails = taskMatcher.group(1); 96 100 97 Matcher matcher = task DetailsPattern.matcher(taskDetails);101 Matcher matcher = taskInstanceDetailsPattern.matcher(taskDetails); 98 102 99 103 if (!matcher.find()) { … … 101 105 } 102 106 103 ITaskTreeNode task;104 105 107 String type = matcher.group(1); 106 108 107 String targetId = matcher.group(2); 108 if ((matcher.group(4) != null) && (!"".equals(matcher.group(4).trim()))) { 109 targetId += matcher.group(4).trim(); 110 } 111 112 IEventTarget target = targets.get(targetId); 113 114 if (target == null) { 115 target = new DummyGUIElement(targetId); 116 targets.put(targetId, target); 117 } 118 119 if ("Sequence".equals(type)) { 120 task = taskTreeNodeFactory.createNewSequence(); 121 } 122 else if ("Selection".equals(type)) { 123 task = taskTreeNodeFactory.createNewSelection(); 124 } 125 else if ("Iteration".equals(type)) { 126 task = taskTreeNodeFactory.createNewIteration(); 127 } 128 else if ("Optional".equals(type)) { 129 task = taskTreeNodeFactory.createNewOptional(); 109 ITaskInstanceList list; 110 111 if ("UserSession".equals(type)) { 112 list = taskFactory.createUserSession(); 113 } 114 else if ("TaskInstances".equals(type)) { 115 list = taskFactory.createNewTaskInstance(taskFactory.createNewSequence()); 130 116 } 131 117 else { 132 task = taskTreeNodeFactory.createNewEventTask(new StringEventType(type), target); 118 throw new IllegalArgumentException("unknown type of task instance list: " + type); 119 } 120 121 while (taskMatcher.find() && !"}".equals(taskMatcher.group(0))) { 122 ITaskInstance childInstance = parseTaskInstance(taskMatcher); 123 124 if (!(list instanceof IUserSession)) { 125 taskBuilder.addChild 126 ((ISequence) ((ITaskInstance) list).getTask(), childInstance.getTask()); 127 } 128 129 taskBuilder.addTaskInstance(list, childInstance); 130 } 131 132 return list; 133 } 134 135 /** 136 * 137 */ 138 private ITaskInstance parseTaskInstance(Matcher taskMatcher) { 139 if ("}".equals(taskMatcher.group(1))) { 140 throw new IllegalArgumentException("invalid task instance specification"); 141 } 142 143 String taskDetails = taskMatcher.group(1); 144 145 Matcher matcher = taskInstanceDetailsPattern.matcher(taskDetails); 146 147 if (!matcher.find()) { 148 throw new IllegalArgumentException("could not parse task details"); 149 } 150 151 String type = matcher.group(1); 152 String id = matcher.group(2); 153 154 ITask task = tasks.get(id); 155 156 if (task == null) { 157 if ("Sequence".equals(type)) { 158 task = taskFactory.createNewSequence(); 159 } 160 else if ("Selection".equals(type)) { 161 task = taskFactory.createNewSelection(); 162 } 163 else if ("Iteration".equals(type)) { 164 task = taskFactory.createNewIteration(); 165 } 166 else if ("Optional".equals(type)) { 167 task = taskFactory.createNewOptional(); 168 } 169 else { 170 IEventTarget target = targets.get(id); 171 172 if (target == null) { 173 target = new DummyGUIElement(id); 174 targets.put(id, target); 175 } 176 177 task = taskFactory.createNewEventTask(new StringEventType(type), target); 178 } 179 180 tasks.put(id, task); 133 181 } 134 182 135 183 if ((matcher.group(5) != null) && (!"".equals(matcher.group(5).trim()))) { 136 taskTreeBuilder.setDescription(task, matcher.group(5).trim()); 137 } 138 184 taskBuilder.setDescription(task, matcher.group(5).trim()); 185 } 186 187 ITaskInstance instance = taskFactory.createNewTaskInstance(task); 188 139 189 while (taskMatcher.find() && !"}".equals(taskMatcher.group(0))) { 190 ITaskInstance childInstance = parseTaskInstance(taskMatcher); 191 140 192 if (task instanceof ISequence) { 141 task TreeBuilder.addChild((ISequence) task, parseTask(taskMatcher));193 taskBuilder.addChild((ISequence) task, childInstance.getTask()); 142 194 } 143 195 else if (task instanceof ISelection) { 144 task TreeBuilder.addChild((ISelection) task, parseTask(taskMatcher));196 taskBuilder.addChild((ISelection) task, childInstance.getTask()); 145 197 } 146 198 else if (task instanceof IIteration) { 147 if (( task.getChildren() == null) || (task.getChildren().size() == 0)) {148 task TreeBuilder.setChild((IIteration) task, parseTask(taskMatcher));149 } 150 else {199 if (((IIteration) task).getMarkedTask() == null) { 200 taskBuilder.setMarkedTask((IIteration) task, childInstance.getTask()); 201 } 202 else if (!((IIteration) task).getMarkedTask().equals(childInstance.getTask())) { 151 203 throw new IllegalArgumentException 152 204 ("can not add more than one child to an iteration"); … … 154 206 } 155 207 else if (task instanceof IOptional) { 156 if (( task.getChildren() == null) || (task.getChildren().size() == 0)) {157 task TreeBuilder.setChild((IOptional) task, parseTask(taskMatcher));158 } 159 else {208 if (((IOptional) task).getMarkedTask() == null) { 209 taskBuilder.setMarkedTask((IOptional) task, childInstance.getTask()); 210 } 211 else if (!((IOptional) task).getMarkedTask().equals(childInstance.getTask())) { 160 212 throw new IllegalArgumentException 161 213 ("can not add more than one child to an optional"); … … 164 216 else { 165 217 throw new IllegalArgumentException("can not add children to something that is no " + 166 "sequence, selection, or iteration"); 167 } 168 } 169 170 return task; 218 "sequence, selection, iteration, or optional"); 219 } 220 221 taskBuilder.addChild(instance, childInstance); 222 } 223 224 return instance; 171 225 } 172 226 -
trunk/autoquest-ui-core/src/main/java/de/ugoe/cs/autoquest/commands/usability/CMDevaluateUsability.java
r927 r1146 18 18 19 19 import de.ugoe.cs.autoquest.CommandHelpers; 20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask Tree;20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 21 21 import de.ugoe.cs.autoquest.usability.UsabilityEvaluationManager; 22 22 import de.ugoe.cs.autoquest.usability.UsabilityEvaluationResult; … … 73 73 return; 74 74 } 75 if (!(dataObject instanceof ITask Tree)) {75 if (!(dataObject instanceof ITaskModel)) { 76 76 CommandHelpers.objectNotType(tasktreeName, "ITaskTree"); 77 77 return; 78 78 } 79 79 80 ITask Tree taskTree = (ITaskTree) dataObject;80 ITaskModel taskTree = (ITaskModel) dataObject; 81 81 82 82 UsabilityEvaluationResult result = -
trunk/autoquest-ui-core/src/main/java/de/ugoe/cs/autoquest/commands/usability/CMDgenerateTaskTree.java
r927 r1146 22 22 import de.ugoe.cs.autoquest.eventcore.Event; 23 23 import de.ugoe.cs.autoquest.tasktrees.manager.TaskTreeManager; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask Tree;24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 25 25 import de.ugoe.cs.util.console.Command; 26 26 import de.ugoe.cs.util.console.GlobalDataContainer; … … 84 84 sequences = (Collection<List<Event>>) dataObject; 85 85 86 ITask Tree taskTree = new TaskTreeManager().createTaskTree(sequences);86 ITaskModel taskModel = new TaskTreeManager().createTaskModel(sequences); 87 87 88 if (GlobalDataContainer.getInstance().addData(tasktreeName, task Tree)) {88 if (GlobalDataContainer.getInstance().addData(tasktreeName, taskModel)) { 89 89 CommandHelpers.dataOverwritten(sequencesName); 90 90 } -
trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ModelsTabComposite.java
r1094 r1146 23 23 import org.eclipse.swt.layout.GridData; 24 24 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask Tree;25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 26 26 import de.ugoe.cs.autoquest.usageprofiles.FirstOrderMarkovModel; 27 27 import de.ugoe.cs.autoquest.usageprofiles.IDotCompatible; … … 130 130 CommandExecuter.getInstance().exec(command); 131 131 } 132 else if (obj instanceof ITask Tree) {132 else if (obj instanceof ITaskModel) { 133 133 ShowTaskTreeDialog showTaskTreeDialog = new ShowTaskTreeDialog 134 (getShell(), SWT.NONE, (ITask Tree) obj, selectedStrings[0]);134 (getShell(), SWT.NONE, (ITaskModel) obj, selectedStrings[0]); 135 135 showTaskTreeDialog.open(); 136 136 } … … 291 291 for (String key : GlobalDataContainer.getInstance().getAllKeys()) { 292 292 if ((GlobalDataContainer.getInstance().getData(key) instanceof IStochasticProcess) || 293 (GlobalDataContainer.getInstance().getData(key) instanceof ITask Tree))293 (GlobalDataContainer.getInstance().getData(key) instanceof ITaskModel)) 294 294 { 295 295 modelList.add(key); -
trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowTaskTreeDialog.java
r1122 r1146 15 15 package de.ugoe.cs.autoquest.ui.swt; 16 16 17 import java.util.List; 18 17 19 import org.eclipse.swt.SWT; 20 import org.eclipse.swt.custom.SashForm; 18 21 import org.eclipse.swt.events.SelectionAdapter; 19 22 import org.eclipse.swt.events.SelectionEvent; … … 27 30 import org.eclipse.swt.widgets.TreeItem; 28 31 29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 32 import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship; 33 import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship; 34 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 35 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 36 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 37 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 38 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 31 39 32 40 import org.eclipse.swt.widgets.Label; … … 45 53 46 54 /** */ 47 private Tree tree; 48 49 /** */ 50 protected ITaskTree taskTree; 51 52 /** 53 * 54 */ 55 public ShowTaskTreeDialog(Shell parent, int style, ITaskTree taskTree, String taskTreeName) { 55 private Tree instanceTree; 56 57 /** */ 58 private Tree modelTree; 59 60 /** */ 61 protected ITaskModel taskModel; 62 63 /** 64 * 65 */ 66 public ShowTaskTreeDialog(Shell parent, int style, ITaskModel taskModel, String taskTreeName) { 56 67 super(parent, style); 57 setText("Task Tree" + taskTreeName);58 this.task Tree = taskTree;68 setText("Task Model " + taskTreeName); 69 this.taskModel = taskModel; 59 70 } 60 71 … … 83 94 84 95 shell.setLayout(new GridLayout(4, false)); 85 86 tree = new Tree(shell, SWT.BORDER | SWT.MULTI); 87 tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1)); 88 89 buildTree(); 96 97 SashForm sashForm = new SashForm(shell, SWT.VERTICAL); 98 sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1)); 99 100 instanceTree = new Tree(sashForm, SWT.BORDER | SWT.MULTI); 101 instanceTree.addSelectionListener(new SelectionAdapter() { 102 @Override 103 public void widgetSelected(SelectionEvent e) { 104 modelTree.removeAll(); 105 TreeItem[] selectedItems = instanceTree.getSelection(); 106 if ((selectedItems.length == 1) && 107 (selectedItems[0].getData() instanceof ITaskInstance)) 108 { 109 buildModelTree((ITaskInstance) selectedItems[0].getData()); 110 } 111 } 112 }); 113 114 buildInstanceTree(); 115 116 modelTree = new Tree(sashForm, SWT.BORDER | SWT.MULTI); 90 117 91 118 Button btnExpandAll = new Button(shell, SWT.NONE); … … 93 120 @Override 94 121 public void widgetSelected(SelectionEvent e) { 95 expandAll( tree, true);122 expandAll(instanceTree, true); 96 123 } 97 124 }); … … 102 129 @Override 103 130 public void widgetSelected(SelectionEvent e) { 104 expandAll( tree, false);131 expandAll(instanceTree, false); 105 132 } 106 133 }); … … 117 144 * 118 145 */ 119 private void buildTree() { 120 ITaskTreeNode root = taskTree.getRoot(); 121 122 TreeItem child = new TreeItem(tree, SWT.NULL); 123 child.setText(root.getName() + " (" + root.getDescription() + ")"); 124 child.setData(root); 125 buildGuiTree(child, root); 126 } 127 128 /** 129 * 130 */ 131 private void buildGuiTree(TreeItem currentParent, ITaskTreeNode node) { 132 if (node.getChildren() != null) { 133 134 for (ITaskTreeNode childTask : node.getChildren()) { 135 TreeItem child = new TreeItem(currentParent, SWT.NULL); 136 child.setText(childTask.getName() + " (" + childTask.getDescription() + ")"); 137 child.setData(childTask); 138 buildGuiTree(child, childTask); 139 } 146 private void buildInstanceTree() { 147 List<IUserSession> sessions = taskModel.getUserSessions(); 148 149 TreeItem root = new TreeItem(instanceTree, SWT.NULL); 150 root.setText(sessions.size() + " sessions"); 151 root.setData(sessions); 152 153 for (IUserSession session : sessions) { 154 buildInstanceTree(root, session); 155 } 156 } 157 158 /** 159 * 160 */ 161 private void buildInstanceTree(TreeItem currentParent, ITaskInstanceList taskInstanceList) { 162 TreeItem child = new TreeItem(currentParent, SWT.NULL); 163 child.setText(taskInstanceList.toString()); 164 child.setData(taskInstanceList); 165 166 for (ITaskInstanceList childTask : taskInstanceList) { 167 buildInstanceTree(child, childTask); 168 } 169 } 170 171 /** 172 * 173 */ 174 private void buildModelTree(ITaskInstance taskInstance) { 175 modelTree.removeAll(); 176 TreeItem root = new TreeItem(modelTree, SWT.NULL); 177 root.setText("model of instance " + taskInstance); 178 root.setData(taskInstance); 179 180 buildModelTree(taskInstance.getTask(), root); 181 expandAll(root, true); 182 } 183 184 /** 185 * 186 */ 187 private void buildModelTree(ITask task, TreeItem parent) { 188 TreeItem node = new TreeItem(parent, SWT.NULL); 189 node.setText(task.toString()); 190 node.setData(task); 191 192 if (task instanceof IStructuringTemporalRelationship) { 193 for (ITask subTask : ((IStructuringTemporalRelationship) task).getChildren()) { 194 buildModelTree(subTask, node); 195 } 196 } 197 else if (task instanceof IMarkingTemporalRelationship) { 198 buildModelTree(((IMarkingTemporalRelationship) task).getMarkedTask(), node); 140 199 } 141 200 }
Note: See TracChangeset
for help on using the changeset viewer.