3
3
import java .io .IOException ;
4
4
import java .util .ArrayList ;
5
5
import java .util .List ;
6
+ import java .util .Locale ;
6
7
import java .util .Map ;
7
8
import java .util .StringTokenizer ;
8
9
import java .util .regex .Pattern ;
14
15
import com .biglybt .core .metasearch .Result ;
15
16
import com .biglybt .core .subs .Subscription ;
16
17
import com .biglybt .core .subs .SubscriptionException ;
18
+ import com .biglybt .core .subs .SubscriptionResult ;
17
19
import com .biglybt .core .subs .SubscriptionResultFilter ;
18
20
import com .biglybt .core .subs .SubscriptionUtils ;
21
+ import com .biglybt .core .util .Debug ;
19
22
import com .biglybt .core .util .DisplayFormatters ;
20
23
import com .biglybt .core .util .SystemTime ;
21
24
import com .biglybt .core .util .TimeFormatter ;
117
120
maxAgeSecs = MapUtils .importLong (filters , "max_age" ,-1l );
118
121
119
122
String rawCategory = MapUtils .getMapString (filters ,"category" , null );
120
- if (rawCategory != null ) {
121
- categoryFilter = rawCategory .toLowerCase ();
123
+
124
+ if (rawCategory != null ){
125
+
126
+ categoryFilter = rawCategory .toLowerCase ( Locale .US );
122
127
}
123
128
124
129
} catch (Exception e ) {
361
366
}
362
367
363
368
types [i ] = type ;
364
- filters [i ] = filter ;
369
+ filters [i ] = filter . toLowerCase ( Locale . US ) ;
365
370
366
371
try {
367
- patterns [i ] = Pattern .compile ( filter .trim ());
372
+ patterns [i ] = Pattern .compile ( filter .trim (), Pattern . CASE_INSENSITIVE | Pattern . UNICODE_CASE );
368
373
369
374
}catch ( Throwable e ){
370
375
393
398
394
399
throws SubscriptionException
395
400
{
401
+ try {
402
+ SubscriptionResult [] results = subs .getHistory ().getResults ( false );
403
+
404
+ List <String > to_remove = new ArrayList <>();
405
+
406
+ for ( SubscriptionResult result : results ){
407
+
408
+ if ( isFiltered ( result .getFilterableResult ())){
409
+
410
+ to_remove .add ( result .getID ());
411
+ }
412
+ }
413
+
414
+ if ( !to_remove .isEmpty ()){
415
+
416
+ subs .getHistory ().removeResults ( to_remove .toArray ( new String [ to_remove .size ()]));
417
+ }
418
+ }catch ( Throwable e ){
419
+
420
+ Debug .out ( e );
421
+ }
422
+
396
423
Map map = JSONUtils .decodeJSON ( subs .getJSON ());
397
424
398
425
Map filters = new JSONObject ();
470
497
return ( res );
471
498
}
472
499
473
- private String [] importStrings (Map filters ,String key ,String separator ) throws IOException {
500
+ private String []
501
+ importStrings (
502
+ Map filters ,String key ,String separator )
503
+
504
+ throws IOException
505
+ {
474
506
String rawStringFilter = MapUtils .getMapString (filters ,key ,null );
475
- if (rawStringFilter != null ) {
507
+
508
+ if ( rawStringFilter != null ) {
509
+
476
510
StringTokenizer st = new StringTokenizer (rawStringFilter ,separator );
511
+
477
512
String [] stringFilter = new String [st .countTokens ()];
513
+
478
514
for (int i = 0 ; i < stringFilter .length ; i ++) {
479
- stringFilter [i ] = st .nextToken ().toLowerCase ();
515
+
516
+ stringFilter [i ] = st .nextToken ();
480
517
}
481
518
return stringFilter ;
482
519
}
@@ -504,9 +541,14 @@ private String[] importStrings(Map filters,String key,String separator) throws I
504
541
map .put ( key , encoded );
505
542
}
506
543
507
- public Result [] filter (Result [] results ) {
544
+ public Result []
545
+ filter (
546
+ Result [] results )
547
+ {
508
548
List <Result > filteredResults = new ArrayList <>(results .length );
549
+
509
550
for (int i = 0 ; i < results .length ; i ++) {
551
+
510
552
Result result = results [i ];
511
553
512
554
if ( !isFiltered ( result )){
@@ -520,6 +562,7 @@ public Result[] filter(Result[] results) {
520
562
return fResults ;
521
563
}
522
564
565
+
523
566
public boolean
524
567
isFiltered (
525
568
FilterableResult result )
@@ -546,7 +589,7 @@ public Result[] filter(Result[] results) {
546
589
return ( false );
547
590
}
548
591
549
- public boolean
592
+ private boolean
550
593
isFilteredSupport (
551
594
FilterableResult result )
552
595
{
@@ -559,7 +602,7 @@ public Result[] filter(Result[] results) {
559
602
return ( true );
560
603
}
561
604
562
- name = name .toLowerCase ();
605
+ name = name .toLowerCase ( Locale . US );
563
606
564
607
String [] names = { name };
565
608
@@ -597,7 +640,7 @@ public Result[] filter(Result[] results) {
597
640
if ( category == null || category .isEmpty ()){
598
641
categories = new String [0 ];
599
642
}else {
600
- categories = new String []{ category .toLowerCase () };
643
+ categories = new String []{ category .toLowerCase ( Locale . US ) };
601
644
}
602
645
}
603
646
matches = categories ;
@@ -611,7 +654,7 @@ public Result[] filter(Result[] results) {
611
654
}else {
612
655
tags = new String [temp .length ];
613
656
for ( int k =0 ;k <temp .length ;k ++){
614
- tags [k ] = temp [k ].toLowerCase ();
657
+ tags [k ] = temp [k ].toLowerCase ( Locale . US );
615
658
}
616
659
}
617
660
}
0 commit comments