sort best matching results

This commit is contained in:
REAndroid 2023-04-18 21:03:27 +02:00
parent 59d5279b7b
commit 83083c58d4

View File

@ -49,7 +49,10 @@ public class ReferenceResolver {
} }
public List<Entry> resolveWithConfig(int referenceId, ResConfig resConfig){ public List<Entry> resolveWithConfig(int referenceId, ResConfig resConfig){
return resolveAll(referenceId, new ConfigFilter(resConfig)); ConfigFilter configFilter = new ConfigFilter(resConfig);
List<Entry> results = resolveAll(referenceId, configFilter);
results.sort(configFilter);
return results;
} }
public List<Entry> resolveAll(int referenceId){ public List<Entry> resolveAll(int referenceId){
return resolveAll(referenceId, (Predicate<Entry>)null); return resolveAll(referenceId, (Predicate<Entry>)null);
@ -112,7 +115,7 @@ public class ReferenceResolver {
return results; return results;
} }
public static class ConfigFilter implements Predicate<Entry>{ public static class ConfigFilter implements Predicate<Entry>, Comparator<Entry>{
private final ResConfig config; private final ResConfig config;
public ConfigFilter(ResConfig config){ public ConfigFilter(ResConfig config){
this.config = config; this.config = config;
@ -125,5 +128,17 @@ public class ReferenceResolver {
} }
return resConfig.isEqualOrMoreSpecificThan(this.config); return resConfig.isEqualOrMoreSpecificThan(this.config);
} }
@Override
public int compare(Entry entry1, Entry entry2) {
ResConfig config1 = entry1.getResConfig();
ResConfig config2 = entry1.getResConfig();
if (config.equals(config1)){
return -1;
}
if(config.equals(config2)){
return 1;
}
return 0;
}
} }
} }