@@ -421,6 +421,114 @@ public void shouldNotHandleDataByElseNestedSourceIfDataBelongingToEntityIsRuledB
421
421
);
422
422
}
423
423
424
+ // https://github.com/hagbeck/metafacture-sandbox/tree/master/else-nested-entities
425
+ @ Test
426
+ public void shouldHandleUseCaseSandboxElseNestedEntities () {
427
+ assertMorph (receiver ,
428
+ "<rules>" +
429
+ "<entity name='85640' flushWith='85640.3' reset='true'>" +
430
+ "<data source='85640.u' name='u'>" +
431
+ "<contains string='hdl.handle.net/2003/' />" +
432
+ "<replace pattern='http://' with='https://' />" +
433
+ "</data>" +
434
+ "<data source='85640.u' name='u'>" +
435
+ "<contains string='doi.org/10.17877/' />" +
436
+ "<replace pattern='http://' with='https://' />" +
437
+ "<replace pattern='dx.doi.org' with='doi.org' />" +
438
+ "</data>" +
439
+ "<data source='85640.x' name='x' />" +
440
+ "<data source='85640.3' name='3' />" +
441
+ "</entity>" +
442
+ "<entity name='8564 ' flushWith='8564 .3' reset='true'>" +
443
+ "<data source='8564 .u' name='u'>" +
444
+ "<contains string='hdl.handle.net/2003/' />" +
445
+ "<replace pattern='http://' with='https://' />" +
446
+ "</data>" +
447
+ "<data source='8564 .u' name='u'>" +
448
+ "<contains string='doi.org/10.17877/' />" +
449
+ "<replace pattern='http://' with='https://' />" +
450
+ "<replace pattern='dx.doi.org' with='doi.org' />" +
451
+ "</data>" +
452
+ "<data source='8564 .x' name='x' />" +
453
+ "<data source='8564 .3' name='3' />" +
454
+ "</entity>" +
455
+ "<data source='_elseNested' />" +
456
+ "</rules>" ,
457
+ i -> {
458
+ i .startRecord ("ID1687931" );
459
+ i .literal ("leader" , "00564nam a2200024 c 4500" );
460
+ i .literal ("001" , "1687931" );
461
+ i .literal ("007" , "|| ||||||||||||||||||||" );
462
+ i .literal ("008" , "||||||nuuuuuuuu|||||| | |||||||||||und||" );
463
+ i .startEntity ("035 " );
464
+ i .literal ("a" , "(UNION_SEAL)HT019953476" );
465
+ i .endEntity ();
466
+ i .startEntity ("24500" );
467
+ i .literal ("a" , "Design and analysis of an asymmetric mutation operator" );
468
+ i .literal ("c" , "Thomas Jansen and Dirk Sudholt" );
469
+ i .endEntity ();
470
+ i .startEntity ("8564 " );
471
+ i .literal ("z" , "Freie Internetressource" );
472
+ i .endEntity ();
473
+ i .startEntity ("85640" );
474
+ i .literal ("u" , "http://hdl.handle.net/2003/22116" );
475
+ i .literal ("x" , "Resolving-System" );
476
+ i .literal ("3" , "Volltext" );
477
+ i .endEntity ();
478
+ i .startEntity ("85640" );
479
+ i .literal ("u" , "http://dx.doi.org/10.17877/DE290R-14123" );
480
+ i .literal ("x" , "Resolving-System" );
481
+ i .literal ("3" , "Volltext" );
482
+ i .endEntity ();
483
+ i .startEntity ("9801 " );
484
+ i .literal ("e" , "HBZ" );
485
+ i .endEntity ();
486
+ i .startEntity ("997 " );
487
+ i .literal ("a" , "20190130" );
488
+ i .endEntity ();
489
+ i .startEntity ("9984 " );
490
+ i .literal ("z" , "Freie Internetressource" );
491
+ i .endEntity ();
492
+ },
493
+ o -> {
494
+ o .get ().startRecord ("ID1687931" );
495
+ o .get ().literal ("leader" , "00564nam a2200024 c 4500" );
496
+ o .get ().literal ("001" , "1687931" );
497
+ o .get ().literal ("007" , "|| ||||||||||||||||||||" );
498
+ o .get ().literal ("008" , "||||||nuuuuuuuu|||||| | |||||||||||und||" );
499
+ o .get ().startEntity ("035 " );
500
+ o .get ().literal ("a" , "(UNION_SEAL)HT019953476" );
501
+ o .get ().endEntity ();
502
+ o .get ().startEntity ("24500" );
503
+ o .get ().literal ("a" , "Design and analysis of an asymmetric mutation operator" );
504
+ o .get ().literal ("c" , "Thomas Jansen and Dirk Sudholt" );
505
+ o .get ().endEntity ();
506
+ o .get ().startEntity ("8564 " );
507
+ o .get ().literal ("z" , "Freie Internetressource" );
508
+ o .get ().endEntity ();
509
+ o .get ().startEntity ("85640" );
510
+ o .get ().literal ("u" , "https://hdl.handle.net/2003/22116" );
511
+ o .get ().literal ("x" , "Resolving-System" );
512
+ o .get ().literal ("3" , "Volltext" );
513
+ o .get ().endEntity ();
514
+ o .get ().startEntity ("85640" );
515
+ o .get ().literal ("u" , "https://doi.org/10.17877/DE290R-14123" );
516
+ o .get ().literal ("x" , "Resolving-System" );
517
+ o .get ().literal ("3" , "Volltext" );
518
+ o .get ().endEntity ();
519
+ o .get ().startEntity ("9801 " );
520
+ o .get ().literal ("e" , "HBZ" );
521
+ o .get ().endEntity ();
522
+ o .get ().startEntity ("997 " );
523
+ o .get ().literal ("a" , "20190130" );
524
+ o .get ().endEntity ();
525
+ o .get ().startEntity ("9984 " );
526
+ o .get ().literal ("z" , "Freie Internetressource" );
527
+ o .get ().endEntity ();
528
+ }
529
+ );
530
+ }
531
+
424
532
425
533
@ Test
426
534
public void shouldMatchCharacterWithQuestionMarkWildcard () {
0 commit comments