package fr.neamar.kiss.dataprovider;
import java.util.ArrayList;
import java.util.regex.Pattern;
import fr.neamar.kiss.R;
import fr.neamar.kiss.loader.LoadSettingsPojos;
import fr.neamar.kiss.pojo.Pojo;
import fr.neamar.kiss.pojo.SettingsPojo;
public class SettingsProvider extends Provider<SettingsPojo> {
private String settingName;
@Override
public void reload() {
this.initialize(new LoadSettingsPojos(this));
settingName = this.getString(R.string.settings_prefix).toLowerCase();
}
public ArrayList<Pojo> getResults(String query) {
ArrayList<Pojo> results = new ArrayList<>();
int relevance;
String settingNameLowerCased;
for (SettingsPojo setting : pojos) {
relevance = 0;
settingNameLowerCased = setting.nameNormalized;
if (settingNameLowerCased.startsWith(query))
relevance = 10;
else if (settingNameLowerCased.contains(" " + query))
relevance = 5;
else if (settingName.startsWith(query)) {
// Also display for a search on "settings" for instance
relevance = 4;
}
if (relevance > 0) {
setting.displayName = setting.name.replaceFirst(
"(?i)(" + Pattern.quote(query) + ")", "{$1}");
setting.relevance = relevance;
results.add(setting);
}
}
return results;
}
public Pojo findById(String id) {
for (Pojo pojo : pojos) {
if (pojo.id.equals(id)) {
pojo.displayName = pojo.name;
return pojo;
}
}
return null;
}
}